merge from the tiny trunk addons
bzr revid: mga@tinyerp.com-20081127085857-m9cs53x8d5elg923
This commit is contained in:
@@ -59,7 +59,8 @@
|
||||
"project/project_report.xml",
|
||||
"product_view.xml",
|
||||
"account_assert_test.xml",
|
||||
"process/invoice_process.xml",
|
||||
"process/customer_invoice_process.xml",
|
||||
"process/supplier_invoice_process.xml",
|
||||
"process/statement_process.xml",
|
||||
],
|
||||
"translations" : {
|
||||
|
||||
@@ -1032,23 +1032,10 @@ class account_move(osv.osv):
|
||||
}, context, check=False)
|
||||
ok = False
|
||||
if ok:
|
||||
obj_line=self.browse(cr, uid, ids[0])
|
||||
for move in self.browse(cr, uid, ids, context):
|
||||
for obj_line in move.line_id:
|
||||
#create analytic lines
|
||||
if obj_line.analytic_account_id:
|
||||
vals_lines={
|
||||
'name': obj_line.name,
|
||||
'date': obj_line.date,
|
||||
'account_id': obj_line.analytic_account_id.id,
|
||||
'unit_amount':obj_line.quantity,
|
||||
'amount': obj_line.debit or obj_line.credit,
|
||||
'general_account_id': obj_line.account_id.id,
|
||||
'journal_id': obj_line.journal_id.analytic_journal_id.id,
|
||||
'ref': obj_line.ref,
|
||||
'move_id':obj_line.id
|
||||
}
|
||||
self.pool.get('account.analytic.line').create(cr,uid,vals_lines)
|
||||
list_ids = []
|
||||
for tmp in move.line_id:
|
||||
list_ids.append(tmp.id)
|
||||
self.pool.get('account.move.line').create_analytic_lines(cr, uid, list_ids, context)
|
||||
return ok
|
||||
account_move()
|
||||
|
||||
|
||||
@@ -58,6 +58,34 @@ class account_move_line(osv.osv):
|
||||
del data[f]
|
||||
return data
|
||||
|
||||
def create_analytic_lines(self, cr, uid, ids, context={}):
|
||||
for obj_line in self.browse(cr, uid, ids, context):
|
||||
if obj_line.analytic_account_id:
|
||||
amt = (obj_line.credit or 0.0) - (obj_line.debit or 0.0)
|
||||
vals_lines={
|
||||
'name': obj_line.name,
|
||||
'date': obj_line.date,
|
||||
'account_id': obj_line.analytic_account_id.id,
|
||||
'unit_amount':obj_line.quantity,
|
||||
'product_id': obj_line.product_id and obj_line.product_id.id or False,
|
||||
'product_uom_id': obj_line.product_uom_id and obj_line.product_uom_id.id or False,
|
||||
'amount': amt,
|
||||
'general_account_id': obj_line.account_id.id,
|
||||
'journal_id': obj_line.journal_id.analytic_journal_id.id,
|
||||
'ref': obj_line.ref,
|
||||
'move_id':obj_line.id
|
||||
}
|
||||
new_id = self.pool.get('account.analytic.line').create(cr,uid,vals_lines)
|
||||
return True
|
||||
|
||||
def _default_get_move_form_hook(self, cursor, user, data):
|
||||
'''Called in the end of default_get method for manual entry in account_move form'''
|
||||
if data.has_key('analytic_account_id'):
|
||||
del(data['analytic_account_id'])
|
||||
if data.has_key('account_tax_id'):
|
||||
del(data['account_tax_id'])
|
||||
return data
|
||||
|
||||
def _default_get(self, cr, uid, fields, context={}):
|
||||
# Compute simple values
|
||||
data = super(account_move_line, self).default_get(cr, uid, fields, context)
|
||||
@@ -86,6 +114,7 @@ class account_move_line(osv.osv):
|
||||
s = -total_new
|
||||
data['debit'] = s>0 and s or 0.0
|
||||
data['credit'] = s<0 and -s or 0.0
|
||||
data = self._default_get_move_form_hook(cr, uid, data)
|
||||
return data
|
||||
# Ends: Manual entry from account.move form
|
||||
|
||||
@@ -278,6 +307,8 @@ class account_move_line(osv.osv):
|
||||
_columns = {
|
||||
'name': fields.char('Name', size=64, required=True),
|
||||
'quantity': fields.float('Quantity', digits=(16,2), help="The optional quantity expressed by this line, eg: number of product sold. The quantity is not a legal requirement but is very usefull for some reports."),
|
||||
'product_uom_id': fields.many2one('product.uom', 'UoM'),
|
||||
'product_id': fields.many2one('product.product', 'Product'),
|
||||
'debit': fields.float('Debit', digits=(16,2)),
|
||||
'credit': fields.float('Credit', digits=(16,2)),
|
||||
'account_id': fields.many2one('account.account', 'Account', required=True, ondelete="cascade", domain=[('type','<>','view'), ('type', '<>', 'closed')], select=2),
|
||||
@@ -863,7 +894,7 @@ class account_move_line(osv.osv):
|
||||
'account_tax_id': False,
|
||||
'tax_code_id': tax[tax_code],
|
||||
'tax_amount': tax[tax_sign] * abs(tax['amount']),
|
||||
'account_id': tax[account_id],
|
||||
'account_id': tax[account_id] or vals['account_id'],
|
||||
'credit': tax['amount']<0 and -tax['amount'] or 0.0,
|
||||
'debit': tax['amount']>0 and tax['amount'] or 0.0,
|
||||
}
|
||||
|
||||
@@ -247,10 +247,14 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Account Journal">
|
||||
<field name="name" select="1"/>
|
||||
<field name="active" select="1"/>
|
||||
<field name="code" select="1"/>
|
||||
<field name="type"/>
|
||||
<group colspan="4" col="6">
|
||||
<field name="name" select="1"/>
|
||||
<field name="code" select="1"/>
|
||||
<field name="active" select="1"/>
|
||||
<field name="type"/>
|
||||
<field name="refund_journal" attrs="{'readonly':[('type','=','general'),('type','=','cash'),('type','=','situation')]}"/>
|
||||
</group>
|
||||
|
||||
<notebook colspan="4">
|
||||
<page string="General Information">
|
||||
<field name="view_id"/>
|
||||
@@ -853,6 +857,7 @@
|
||||
<field name="ref"/>
|
||||
<field name="debit" sum="Total Debit"/>
|
||||
<field name="credit" sum="Total Credit"/>
|
||||
<field name="analytic_account_id"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
@@ -171,6 +171,18 @@ your own chart of account.
|
||||
<field model="account.account" name="default_debit_account_id" search="[('type','=','receivable')]"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
<record id="refund_sales_journal" model="account.journal">
|
||||
<field name="name">x Sales Credit Note Journal</field>
|
||||
<field name="code">SCNJ</field>
|
||||
<field name="type">sale</field>
|
||||
<field name="refund_journal">True</field>
|
||||
<field name="view_id" ref="account_journal_view"/>
|
||||
<field name="sequence_id" ref="sequence_sale_journal"/>
|
||||
<field model="account.account" name="default_credit_account_id" search="[('type','=','receivable')]"/>
|
||||
<field model="account.account" name="default_debit_account_id" search="[('type','=','receivable')]"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<record id="expenses_journal" model="account.journal">
|
||||
<field name="name">x Expenses Journal</field>
|
||||
<field name="code">EXJ</field>
|
||||
@@ -181,6 +193,17 @@ your own chart of account.
|
||||
<field model="account.account" name="default_credit_account_id" search="[('type','=','payable')]"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
<record id="refund_expenses_journal" model="account.journal">
|
||||
<field name="name">x Expenses Credit Notes Journal</field>
|
||||
<field name="code">ECNJ</field>
|
||||
<field name="type">purchase</field>
|
||||
<field name="refund_journal">True</field>
|
||||
<field name="view_id" ref="account_journal_view"/>
|
||||
<field name="sequence_id" ref="sequence_purchase_journal"/>
|
||||
<field model="account.account" name="default_debit_account_id" search="[('type','=','payable')]"/>
|
||||
<field model="account.account" name="default_credit_account_id" search="[('type','=','payable')]"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<record id="bank_journal" model="account.journal">
|
||||
<field name="name">x Bank Journal</field>
|
||||
@@ -192,6 +215,16 @@ your own chart of account.
|
||||
<field model="account.account" name="default_credit_account_id" ref="cash"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
<record id="check_journal" model="account.journal">
|
||||
<field name="name">x Checks Journal</field>
|
||||
<field name="code">CHK</field>
|
||||
<field name="type">cash</field>
|
||||
<field name="view_id" ref="account_journal_bank_view"/>
|
||||
<field name="sequence_id" ref="sequence_journal"/>
|
||||
<field model="account.account" name="default_debit_account_id" ref="cash"/>
|
||||
<field model="account.account" name="default_credit_account_id" ref="cash"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Product income and expense accounts, default parameters
|
||||
|
||||
@@ -611,6 +611,8 @@ class account_invoice(osv.osv):
|
||||
'tax_amount': x.get('tax_amount', False),
|
||||
'ref':x.get('ref',False),
|
||||
'quantity':x.get('quantity',1.00),
|
||||
'product_id':x.get('product_id', False),
|
||||
'product_uom_id':x.get('uos_id',False),
|
||||
'analytic_account_id':x.get('account_analytic_id',False),
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
<record id="process_process_invoiceworkflow0" model="process.process">
|
||||
<field eval=""""Customer Invoice flow for services companies."""" name="note"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval=""""Customer Invoice Workflow"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_analytic0" model="process.node">
|
||||
<field name="menu_id" ref="account.account_analytic_def_account"/>
|
||||
<field name="model_id" ref="account.model_account_analytic_account"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Analytic"""" name="name"/>
|
||||
<field eval=""""Analytic costs to reinvoice purchases, timesheets, ..."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field name="subflow_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'close')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_draftinvoices0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_invoice_draft"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Draft Invoices"""" name="name"/>
|
||||
<field eval=""""Proposed invoice to be checked, validated and printed"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_invoiceinvoice0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_finance_invoice"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Invoice"""" name="name"/>
|
||||
<field eval=""""Have a number and entries are generated"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_accountingentries0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_move_line_form"/>
|
||||
<field name="model_id" ref="account.model_account_move"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Accounting Entries"""" name="name"/>
|
||||
<field eval=""""Validated accounting entries."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_bankstatement0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
|
||||
<field name="model_id" ref="account.model_account_bank_statement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Bank Statement"""" name="name"/>
|
||||
<field eval=""""Statement encoding produces payment entries"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_paymententries0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_move_line_form"/>
|
||||
<field name="model_id" ref="account.model_account_move_line"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Payment Entries"""" name="name"/>
|
||||
<field eval=""""Can be draft or validated"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'valid')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_reconciliation0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_move_line_search"/>
|
||||
<field name="model_id" ref="account.model_account_move_reconcile"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Reconciliation"""" name="name"/>
|
||||
<field eval=""""Reconciliation of entries from invoice(s) and payment(s)"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='valid'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_paidinvoice0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree1"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Paid invoice"""" name="name"/>
|
||||
<field eval=""""Paid invoice when reconciled."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='paid'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="res_roles_invoice0" model="res.roles">
|
||||
<field eval=""""Invoice"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<record id="account.t5" model="workflow.transition">
|
||||
<field name="role_id" ref="res_roles_invoice0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_analyticinvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""analytic Invoice"""" name="name"/>
|
||||
<field eval=""""From analytic accounts, Create invoice."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_draftinvoices0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_analytic0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_customerinvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Customer Invoice"""" name="name"/>
|
||||
<field eval=""""Number of entries are generated"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_invoiceinvoice0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_draftinvoices0"/>
|
||||
<field eval="[(6,0,[ref('account.t5')])]" name="transition_ids"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_validentries0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Valid Entries"""" name="name"/>
|
||||
<field eval=""""Valid entries from invoice"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_accountingentries0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_invoiceinvoice0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_entriesreconcile0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Entries Reconcile"""" name="name"/>
|
||||
<field eval=""""Reconcile Entries."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_reconciliation0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_accountingentries0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_statemententries0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Statement Entries"""" name="name"/>
|
||||
<field eval=""""From statement, create entries"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_paymententries0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_bankstatement0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_paymentreconcile0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Payment Reconcile"""" name="name"/>
|
||||
<field eval=""""Reconcilate the entries from payment"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_reconciliation0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_paymententries0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_reconcilepaid0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Reconcile Paid"""" name="name"/>
|
||||
<field eval=""""Paid invoice when reconciled."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_paidinvoice0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_reconciliation0"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Action
|
||||
-->
|
||||
|
||||
<record id="process_transition_action_createentries0" model="process.transition.action">
|
||||
<field eval=""""action_move_create"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Create entry"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_customerinvoice0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -26,6 +26,17 @@
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_manually0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
|
||||
<field name="model_id" ref="account.model_account_bank_statement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Manually"""" name="name"/>
|
||||
<field eval=""""Encode manually the statement"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_statementworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_importinvoice0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
|
||||
@@ -43,47 +54,24 @@
|
||||
<field name="model_id" ref="account.model_account_bank_statement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Draft statement"""" name="name"/>
|
||||
<field eval=""""Set starting and ending balance if bank statement"""" name="note"/>
|
||||
<field eval=""""Set starting and ending balance for control"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_statementworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_confirmedstatement0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_bank_statement_tree"/>
|
||||
<field name="model_id" ref="account.model_account_bank_statement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Confirmed statement"""" name="name"/>
|
||||
<field eval=""""Confirmed with/with out Reconciliation and Real balance=Computed balance"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_statementworkflow0"/>
|
||||
<field eval=""""object.state=='confirm'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_node_accountingstatemententries0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_move_line_search"/>
|
||||
<field name="model_id" ref="account.model_account_move_line"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Accounting Statement"""" name="name"/>
|
||||
<field eval=""""Accounting entries can be draft or validated"""" name="note"/>
|
||||
<field eval=""""Accounting entries at statement's confirmation"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_statementworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'valid')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_reconciliationofentries0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_move_line_search"/>
|
||||
<field name="model_id" ref="account.model_account_move_line"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Reconciliation of Entries"""" name="name"/>
|
||||
<field eval=""""Reconcilation of the entries with invoice."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_statementworkflow0"/>
|
||||
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='valid'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
@@ -95,6 +83,15 @@
|
||||
<field model="process.node" name="target_node_id" ref="process_node_draftstatement0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_electronicfile0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_invoicemanually0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Manually statement"""" name="name"/>
|
||||
<field eval=""""Encode manually statement comes into the draft statement"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_draftstatement0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_manually0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_invoiceimport0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
@@ -110,28 +107,10 @@
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Confirm statement from draft"""" name="name"/>
|
||||
<field eval=""""Confirm statement with/without reconciliation from draft statement"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_confirmedstatement0"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_accountingstatemententries0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_draftstatement0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_confirmaccountingentries0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Confirm Accounting entries"""" name="name"/>
|
||||
<field eval=""""After confirming statement, it creates Entries and its entry lines"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_accountingstatemententries0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_confirmedstatement0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_accountentryreconcile0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Account entry reconcile"""" name="name"/>
|
||||
<field eval=""""Reconciliation of entries of accounting entries"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_reconciliationofentries0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_accountingstatemententries0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_statemententries0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
@@ -141,9 +120,11 @@
|
||||
<field model="process.node" name="source_node_id" ref="process_node_bankstatement0"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Action
|
||||
-->
|
||||
|
||||
<!--
|
||||
Process Action
|
||||
-->
|
||||
|
||||
|
||||
<record id="process_transition_action_draftconfirmstatement0" model="process.transition.action">
|
||||
<field eval=""""button_confirm"""" name="action"/>
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
<record id="process_process_supplierinvoiceworkflow0" model="process.process">
|
||||
<field eval=""""Supplier Invoice flow for services companies."""" name="note"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval=""""Supplier Invoice Workflow"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_supplieranalytic0" model="process.node">
|
||||
<field name="menu_id" ref="account.account_analytic_def_account"/>
|
||||
<field name="model_id" ref="account.model_account_analytic_account"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Analytic"""" name="name"/>
|
||||
<field eval=""""Analytic costs to reinvoice purchases, timesheets, ..."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'close')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_supplierdraftinvoices0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_invoice_draft"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Draft Invoices"""" name="name"/>
|
||||
<field eval=""""Pre-generated invoice from control"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_supplierinvoiceinvoice0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_finance_invoice"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Invoice"""" name="name"/>
|
||||
<field eval=""""Have a number and entries are generated"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_supplierbankstatement0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
|
||||
<field name="model_id" ref="account.model_account_bank_statement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Bank Statement"""" name="name"/>
|
||||
<field eval=""""Statement encoding produces payment entries"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_supplieraccountingentries0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_move_line_form"/>
|
||||
<field name="model_id" ref="account.model_account_move"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Accounting Entries"""" name="name"/>
|
||||
<field eval=""""Validated accounting entries."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_supplierpaymentorder0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_move_line_search"/>
|
||||
<field name="model_id" ref="account.model_account_move_line"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Payment Order"""" name="name"/>
|
||||
<field eval=""""Select invoices you want to pay and manages advances"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_supplierreconciliation0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_move_line_search"/>
|
||||
<field name="model_id" ref="account.model_account_move_reconcile"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Reconciliation"""" name="name"/>
|
||||
<field eval=""""Reconciliation of entries from invoice(s) and payment(s)"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval=""""object.state=='valid'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_supplierpaidinvoice0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree1"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Paid invoice"""" name="name"/>
|
||||
<field eval=""""Paid invoice when reconciled."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval=""""object.state=='paid'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_supplieranalyticinvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""analytic Invoice"""" name="name"/>
|
||||
<field eval=""""From analytic accounts, Create invoice."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_supplierdraftinvoices0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplieranalytic0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_suppliercustomerinvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Customer Invoice"""" name="name"/>
|
||||
<field eval=""""Number of entries are generated"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_supplierinvoiceinvoice0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplierdraftinvoices0"/>
|
||||
<field eval="[(6,0,[ref('account.t5')])]" name="transition_ids"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_suppliervalidentries0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Valid Entries"""" name="name"/>
|
||||
<field eval=""""Valid entries from invoice"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_supplieraccountingentries0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplierinvoiceinvoice0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_supplierentriesreconcile0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Entries Reconcile"""" name="name"/>
|
||||
<field eval=""""Reconcile Entries."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_supplierreconciliation0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplieraccountingentries0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_paymentorderbank0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Payment Reconcilation"""" name="name"/>
|
||||
<field eval=""""Reconcilation of entries from payment order."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_supplierbankstatement0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplierpaymentorder0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_paymentorderreconcilation0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Payment Reconcilation"""" name="name"/>
|
||||
<field eval=""""Reconcilation of entries from payment order."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_supplierreconciliation0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplierbankstatement0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_supplierreconcilepaid0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Reconcile Paid"""" name="name"/>
|
||||
<field eval=""""Paid invoice when reconciled."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_supplierpaidinvoice0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplierreconciliation0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -280,28 +280,29 @@ class account_move_line(osv.osv):
|
||||
'analytics_id':fields.many2one('account.analytic.plan.instance','Analytic Distribution'),
|
||||
}
|
||||
|
||||
def _analytic_update(self, cr, uid, ids, context):
|
||||
if self.called:
|
||||
self.called=False
|
||||
return False
|
||||
def _default_get_move_form_hook(self, cursor, user, data):
|
||||
data = super(account_move_line, self)._default_get_move_form_hook(cursor, user, data)
|
||||
if data.has_key('analytics_id'):
|
||||
del(data['analytics_id'])
|
||||
return data
|
||||
|
||||
obj_line=self.pool.get('account.analytic.line')
|
||||
|
||||
for line in self.browse(cr, uid, ids, context):
|
||||
def create_analytic_lines(self, cr, uid, ids, context={}):
|
||||
super(account_move_line, self).create_analytic_lines(cr, uid, ids, context)
|
||||
for line in self.browse(cr, uid, ids, context):
|
||||
if line.analytics_id:
|
||||
toremove = obj_line.search(cr, uid, [('move_id','=',line.id)], context=context)
|
||||
toremove = self.pool.get('account.analytic.line').search(cr, uid, [('move_id','=',line.id)], context=context)
|
||||
if toremove:
|
||||
obj_line.unlink(cr, uid, toremove, context=context)
|
||||
|
||||
obj_line.unlink(cr, uid, toremove, context=context)
|
||||
for line2 in line.analytics_id.account_ids:
|
||||
val = (line.debit or 0.0) - (line.credit or 0.0)
|
||||
val = (line.credit or 0.0) - (line.debit or 0.0)
|
||||
amt=val * (line2.rate/100)
|
||||
al_vals={
|
||||
'name': line.name,
|
||||
'date': line.date,
|
||||
'unit_amount':1,
|
||||
'product_id':12,
|
||||
'account_id': line2.analytic_account_id.id,
|
||||
'unit_amount': line.quantity,
|
||||
'product_id': line.product_id and line.product_id.id or False,
|
||||
'product_uom_id': line.product_uom_id and line.product_uom_id.id or False,
|
||||
'amount': amt,
|
||||
'general_account_id': line.account_id.id,
|
||||
'move_id': line.id,
|
||||
@@ -309,25 +310,7 @@ class account_move_line(osv.osv):
|
||||
'ref': line.ref,
|
||||
}
|
||||
ali_id=self.pool.get('account.analytic.line').create(cr,uid,al_vals)
|
||||
self.called=True
|
||||
return True
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True):
|
||||
self.called=False
|
||||
if ('analytics_id' in vals) and (not vals['analytics_id']):
|
||||
for line in self.browse(cr, uid, ids, context):
|
||||
toremove = self.pool.get('account.analytic.line').search(cr, uid, [('move_id','=',line.id)], context=context)
|
||||
if toremove:
|
||||
self.pool.get('account.analytic.line').unlink(cr, uid, toremove, context=context)
|
||||
result = super(account_move_line, self).write(cr, uid, ids, vals, context, check, update_check)
|
||||
self._analytic_update(cr, uid, ids, context)
|
||||
return result
|
||||
|
||||
def create(self, cr, uid, vals, context=None, check=True):
|
||||
self.called=False
|
||||
result = super(account_move_line, self).create(cr, uid, vals, context, check)
|
||||
self._analytic_update(cr, uid, [result], context)
|
||||
return result
|
||||
return True
|
||||
|
||||
account_move_line()
|
||||
|
||||
|
||||
@@ -17,6 +17,27 @@
|
||||
</record>
|
||||
|
||||
|
||||
<record model="ir.ui.view" id="view_account_move_form_inherit">
|
||||
<field name="name">account.move.form.inherit</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="account.view_move_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="analytic_account_id" position="replace">
|
||||
<field name="analytics_id" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="account.journal_col11" model="account.journal.column">
|
||||
<field eval=""""Analytic Distribution"""" name="name"/>
|
||||
<field eval="11" name="sequence"/>
|
||||
<field name="view_id" ref="account.account_journal_view"/>
|
||||
<field eval="0" name="required"/>
|
||||
<field eval=""""analytics_id"""" name="field"/>
|
||||
<field eval="0" name="readonly"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_move_line_form_inherit">
|
||||
<field name="name">account.move.line.form.inherit</field>
|
||||
<field name="model">account.move.line</field>
|
||||
@@ -29,17 +50,6 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_move_line_tree_inherit">
|
||||
<field name="name">account.move.line.tree.inherit</field>
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="inherit_id" ref="account.view_move_line_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="move_id" position="after">
|
||||
<field name="analytics_id" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Replace analytic_id with analytics_id in account.invoice.line -->
|
||||
|
||||
@@ -68,6 +78,7 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- views for account.analytic.plan.instance -->
|
||||
<record model="ir.ui.view" id="account_analytic_plan_instance_form">
|
||||
<field name="name">account.analytic.plan.instance.form</field>
|
||||
<field name="model">account.analytic.plan.instance</field>
|
||||
@@ -88,7 +99,6 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="ir.ui.view" id="account_analytic_plan_instance_tree">
|
||||
<field name="name">account.analytic.plan.instance.tree</field>
|
||||
<field name="model">account.analytic.plan.instance</field>
|
||||
|
||||
@@ -41,7 +41,7 @@ form = '''<?xml version="1.0"?>
|
||||
</form>'''
|
||||
|
||||
fields = {
|
||||
'file': {'string':'Select a PDF File', 'type':'binary','required':True,'filters':['*.pdf']},
|
||||
'file': {'string':'Select a PDF File', 'type':'binary','required':True,'filters':'*.pdf'},
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +82,7 @@ class report_custom(report_int):
|
||||
obj_user=pool.get('res.users').browse(cr,uid,uid)
|
||||
self.list['printing_user']=obj_user.name
|
||||
self.list['company_name']=obj_user.company_id.name
|
||||
self.list['company_country']=obj_user.company_id.partner_id.country
|
||||
self.list['company_vat']=obj_user.company_id.partner_id.vat
|
||||
self.list['printing_time']=time.strftime('%H:%M:%S')
|
||||
self.list['printing_date']=time.strftime('%D')
|
||||
|
||||
@@ -40,14 +40,15 @@
|
||||
|
||||
Pay attention that this module converts the existing addresses into "addresses + contacts". It means that some fields of the addresses will be missing (like the contact name), since these are supposed to be defined in an other object.
|
||||
""",
|
||||
"depends" : ["base"],
|
||||
"depends" : ["base", "process"],
|
||||
"init_xml" : [],
|
||||
"demo_xml" : [
|
||||
"base_contact_demo.xml"
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
'base_contact_view.xml'
|
||||
'base_contact_view.xml',
|
||||
"process/base_contact_process.xml"
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
|
||||
@@ -116,9 +116,9 @@ class res_partner_job(osv.osv):
|
||||
_order = 'sequence_contact'
|
||||
_columns = {
|
||||
'name': fields.related('address_id','partner_id', type='many2one', relation='res.partner', string='Partner'),
|
||||
'address_id':fields.many2one('res.partner.address','Address', required=True),
|
||||
'contact_id':fields.many2one('res.partner.contact','Contact', required=True),
|
||||
'function_id': fields.many2one('res.partner.function','Job Title', required=True),
|
||||
'address_id':fields.many2one('res.partner.address','Address'),
|
||||
'contact_id':fields.many2one('res.partner.contact','Contact', required=True, ondelete='cascade'),
|
||||
'function_id': fields.many2one('res.partner.function','Job Title'),
|
||||
'sequence_contact':fields.integer('Sequence (Contact)',help='order of importance of this address in the list of addresses of the linked contact'),
|
||||
'sequence_partner':fields.integer('Sequence (Partner)',help='order of importance of this job title in the list of job title of the linked partner'),
|
||||
'email': fields.char('E-Mail', size=240),
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
<record id="process_process_basecontactworkflow0" model="process.process">
|
||||
<field eval=""""base_contact workflow"""" name="name"/>
|
||||
<field eval=""""Base contact flow for services companies."""" name="note"/>
|
||||
<field eval="1" name="active"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process node
|
||||
-->
|
||||
|
||||
<record id="process_node_contacts0" model="process.node">
|
||||
<field name="menu_id" ref="base_contact.menu_partner_contact_form"/>
|
||||
<field name="model_id" ref="base_contact.model_res_partner_contact"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""People you work with."""" name="note"/>
|
||||
<field eval=""""Contacts"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_basecontactworkflow0"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_partners0" model="process.node">
|
||||
<field name="menu_id" ref="base.menu_partner_form"/>
|
||||
<field name="model_id" ref="base.model_res_partner"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Companies you work with."""" name="note"/>
|
||||
<field eval=""""Partners"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_basecontactworkflow0"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_function0" model="process.node">
|
||||
<field name="menu_id" ref="base_contact.menu_action_res_partner_job"/>
|
||||
<field name="model_id" ref="base_contact.model_res_partner_job"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Jobs at a same partner address."""" name="note"/>
|
||||
<field eval=""""Function"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_basecontactworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_addresses0" model="process.node">
|
||||
<field name="menu_id" ref="base.menu_partner_address_form"/>
|
||||
<field name="model_id" ref="base.model_res_partner_address"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Working and private addresses."""" name="note"/>
|
||||
<field eval=""""Addresses"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_basecontactworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_contacttofunction0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Contact to function"""" name="name"/>
|
||||
<field eval=""""Defines contacts and functions."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_function0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_contacts0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_functiontoaddress0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Function to address"""" name="name"/>
|
||||
<field eval=""""Define functions and address."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_addresses0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_function0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_partnertoaddress0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Partner to address"""" name="name"/>
|
||||
<field eval=""""Define partners and their addresses."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_addresses0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_partners0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -232,6 +232,21 @@ class base_module_record(osv.osv):
|
||||
del result[v]
|
||||
return result
|
||||
|
||||
def _create_function(self, cr, uid, doc, model, name, record_id):
|
||||
print 'Create Function', model, name, record_id
|
||||
|
||||
record = doc.createElement('function')
|
||||
record.setAttribute("name", name)
|
||||
record.setAttribute("model", model)
|
||||
record_list = [record]
|
||||
|
||||
value = doc.createElement('value')
|
||||
value.setAttribute('eval', '[ref(\'%s\')]' % (record_id, ))
|
||||
value.setAttribute('model', model)
|
||||
|
||||
record.appendChild(value)
|
||||
return record_list, False
|
||||
|
||||
def _generate_object_xml(self, cr, uid, rec, recv, doc, result=None):
|
||||
record_list = []
|
||||
noupdate = False
|
||||
@@ -245,6 +260,16 @@ class base_module_record(osv.osv):
|
||||
noupdate = noupdate or update
|
||||
record_list += record
|
||||
|
||||
elif rec[4] in ('menu_create',):
|
||||
for id in rec[5]:
|
||||
id,update = self._get_id(cr, uid, rec[3], id)
|
||||
noupdate = noupdate or update
|
||||
if not id:
|
||||
continue
|
||||
record,update = self._create_function(cr, uid, doc, rec[3], rec[4], id)
|
||||
noupdate = noupdate or update
|
||||
record_list += record
|
||||
|
||||
elif rec[4]=='create':
|
||||
id = self._create_id(cr, uid, rec[3],rec[5])
|
||||
record,noupdate = self._create_record(cr, uid, doc, rec[3], rec[5], id)
|
||||
|
||||
@@ -306,7 +306,7 @@ from
|
||||
|
||||
def _aggregation_error(self, cr, uid, ids):
|
||||
aggregate_columns = ('int','float')
|
||||
apply_functions = ('sum','min','max','avg')
|
||||
apply_functions = ('sum','min','max','avg','count')
|
||||
this_objs = self.browse(cr, uid, ids)
|
||||
for obj in this_objs:
|
||||
for fld in obj.field_ids:
|
||||
@@ -349,7 +349,7 @@ class report_creator_field(osv.osv):
|
||||
'sequence': fields.integer('Sequence'),
|
||||
'field_id': fields.many2one('ir.model.fields', 'Field'),
|
||||
'report_id': fields.many2one('base_report_creator.report','Report', on_delete='cascade'),
|
||||
'group_method': fields.selection([('group','Grouped'),('sum','Sum'),('min','Minimum'),('max','Maximum'),('avg','Average')], 'Grouping Method', required=True),
|
||||
'group_method': fields.selection([('group','Grouped'),('sum','Sum'),('min','Minimum'),('count','Count'),('max','Maximum'),('avg','Average')], 'Grouping Method', required=True),
|
||||
'graph_mode': fields.selection([('','/'),('x','X Axis'),('y','Y Axis')], 'Graph Mode'),
|
||||
'calendar_mode': fields.selection([('','/'),('date_start','Starting Date'),('date_end','Ending Date'),('date_delay','Delay'),('color','Uniq Colors')], 'Calendar Mode'),
|
||||
}
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
from osv import osv
|
||||
from osv import fields
|
||||
|
||||
def mult_add(i, j):
|
||||
"""Sum each digits of the multiplication of i and j."""
|
||||
return reduce(lambda x, y: x + int(y), str(i*j), 0)
|
||||
|
||||
class res_partner(osv.osv):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
@@ -78,7 +78,7 @@ meetings, eso.
|
||||
# "crm_phonecall_data.xml",
|
||||
# "crm_phonecall_menu.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"process/crm_configuration_process.xml",
|
||||
# "process/crm_configuration_process.xml",
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
|
||||
@@ -1,106 +1,132 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
<record id="process_process_contractworkflow0" model="process.process">
|
||||
<field eval=""""Contracts flow for services companies."""" name="note"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval=""""Contract Workflow"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_leads0" model="process.node">
|
||||
<field name="model_id" ref="crm.model_crm_case"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Leads"""" name="name"/>
|
||||
<field eval=""""Premier Contact Leads"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_opportunities0" model="process.node">
|
||||
<field name="model_id" ref="crm.model_crm_case"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Opportunities"""" name="name"/>
|
||||
<field eval=""""Business Opportunities"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_accord0" model="process.node">
|
||||
<field name="model_id" ref="crm.model_crm_case"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Accord"""" name="name"/>
|
||||
<field eval=""""Accord Client Contract"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval=""""object.state=='done'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_contractanalytic0" model="process.node">
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Contract Analytic"""" name="name"/>
|
||||
<field eval=""""Analytic Accounts"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_contractpricelist0" model="process.node">
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Contract Pricelist"""" name="name"/>
|
||||
<field eval=""""Contract Volume (pricelist)"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_leadopportunity0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Lead Opportunity"""" name="name"/>
|
||||
<field eval=""""Creating business opportunities from leads"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_opportunities0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_leads0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_opportunitiesaccord0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Opportunities Accord"""" name="name"/>
|
||||
<field eval=""""When leads are confirmed"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_accord0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_opportunities0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_accordanalytic0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Accord Analytic"""" name="name"/>
|
||||
<field eval=""""Goes into the Analytic"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_contractanalytic0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_accord0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_accordpricelist0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Accord Pricelist"""" name="name"/>
|
||||
<field eval=""""Goes into the Pricelist"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_contractpricelist0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_accord0"/>
|
||||
</record>
|
||||
<field eval=""""Contracts flow for services companies."""" name="note"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval=""""Contract Workflow"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_leads0" model="process.node">
|
||||
<field name="menu_id" ref="crm_configuration.menu_crm_case_categ0_act_leads_all"/>
|
||||
<field name="model_id" ref="crm.model_crm_case"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Leads"""" name="name"/>
|
||||
<field eval=""""Very first contact with new prospect"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_partner0" model="process.node">
|
||||
<field name="menu_id" ref="base.menu_partner_form"/>
|
||||
<field name="model_id" ref="base.model_res_partner"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Partner"""" name="name"/>
|
||||
<field eval=""""Convert to prospect to business partner"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_opportunities0" model="process.node">
|
||||
<field name="menu_id" ref="crm_configuration.menu_crm_case_categ0_act_oppor11"/>
|
||||
<field name="model_id" ref="crm.model_crm_case"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Opportunities"""" name="name"/>
|
||||
<field eval=""""When a real project/opportunity is detected"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_meeting0" model="process.node">
|
||||
<field name="menu_id" ref="crm_configuration.menu_crm_case_category_act_meetings"/>
|
||||
<field name="model_id" ref="crm.model_crm_case"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Meeting"""" name="name"/>
|
||||
<field eval=""""Schedule a normal or phone meeting"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_contractanalytic0" model="process.node">
|
||||
<field name="menu_id" ref="account.account_analytic_def_account"/>
|
||||
<field name="model_id" ref="account.model_account_analytic_account"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Analytic account"""" name="name"/>
|
||||
<field eval=""""Reflect the contract made with customer"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_contractpricelist0" model="process.node">
|
||||
<field name="menu_id" ref="product.menu_product_pricelist_action2"/>
|
||||
<field name="model_id" ref="product.model_product_pricelist"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Contract Pricelist"""" name="name"/>
|
||||
<field eval=""""Contract Volume (pricelist)"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_contractworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_leadopportunity0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Lead Opportunity"""" name="name"/>
|
||||
<field eval=""""Creating business opportunities from leads"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_opportunities0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_leads0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_leadpartner0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Lead Partner"""" name="name"/>
|
||||
<field eval=""""Prospect is converting to business partner"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_partner0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_leads0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_opportunitymeeting0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Opportunity Meeting"""" name="name"/>
|
||||
<field eval=""""Normal or phone meeting for opportunity"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_meeting0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_opportunities0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_opportunitypricelist0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Opportunity Pricelist"""" name="name"/>
|
||||
<field eval=""""Opporunity convert to the Pricelist"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_contractpricelist0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_opportunities0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_opportunityanalytic0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Opportunity Analytic"""" name="name"/>
|
||||
<field eval=""""Analytic Account"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_contractanalytic0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_opportunities0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -113,8 +113,8 @@
|
||||
<field name="title" select="1"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="create_uid" select="1"/>
|
||||
<field name="create_date" select="1"/>
|
||||
<field name="create_uid" select="2"/>
|
||||
<field name="create_date" select="2"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Attachment">
|
||||
@@ -125,7 +125,7 @@
|
||||
</group>
|
||||
<group col="2" colspan="2">
|
||||
<separator string="Attached To" colspan="2"/>
|
||||
<field name="res_model" select="1" readonly="1"/>
|
||||
<field name="res_model" select="2" readonly="1"/>
|
||||
<field name="res_id" readonly="1"/>
|
||||
</group>
|
||||
<separator string="Preview" colspan="4"/>
|
||||
@@ -151,7 +151,7 @@
|
||||
<group colspan="2" col="2">
|
||||
<separator string="File Information" colspan="2"/>
|
||||
<field name="file_size" readonly="1"/>
|
||||
<field name="parent_id" readonly="1"/>
|
||||
<field name="parent_id" readonly="1" select="2"/>
|
||||
</group>
|
||||
</page><page string="Notes">
|
||||
<field colspan="4" name="description" nolabel="1"/>
|
||||
|
||||
@@ -2,20 +2,30 @@ import threading
|
||||
import ftpserver
|
||||
import authorizer
|
||||
import abstracted_fs
|
||||
import netsvc
|
||||
|
||||
PORT = 8021
|
||||
HOST = ''
|
||||
|
||||
class ftp_server(threading.Thread):
|
||||
def run(self):
|
||||
autho = authorizer.authorizer()
|
||||
ftpserver.FTPHandler.authorizer = autho
|
||||
ftpserver.max_cons = 300
|
||||
ftpserver.max_cons_per_ip = 50
|
||||
ftpserver.FTPHandler.abstracted_fs = abstracted_fs.abstracted_fs
|
||||
address = (HOST, PORT)
|
||||
ftpd = ftpserver.FTPServer(address, ftpserver.FTPHandler)
|
||||
ftpd.serve_forever()
|
||||
def log(self, level, message):
|
||||
logger = netsvc.Logger()
|
||||
logger.notifyChannel('FTP', level, message)
|
||||
|
||||
def run(self):
|
||||
autho = authorizer.authorizer()
|
||||
ftpserver.FTPHandler.authorizer = autho
|
||||
ftpserver.max_cons = 300
|
||||
ftpserver.max_cons_per_ip = 50
|
||||
ftpserver.FTPHandler.abstracted_fs = abstracted_fs.abstracted_fs
|
||||
|
||||
ftpserver.log = lambda msg: self.log(netsvc.LOG_INFO, msg)
|
||||
ftpserver.logline = lambda msg: None
|
||||
ftpserver.logerror = lambda msg: self.log(netsvc.LOG_ERROR, msg)
|
||||
|
||||
address = (HOST, PORT)
|
||||
ftpd = ftpserver.FTPServer(address, ftpserver.FTPHandler)
|
||||
ftpd.serve_forever()
|
||||
|
||||
ds = ftp_server()
|
||||
ds.start()
|
||||
|
||||
@@ -12,6 +12,10 @@ import netsvc
|
||||
import os
|
||||
from service import security
|
||||
|
||||
def log(message):
|
||||
logger = netsvc.Logger()
|
||||
logger.notifyChannel('DMS', netsvc.LOG_ERROR, message)
|
||||
|
||||
class file_wrapper(StringIO.StringIO):
|
||||
def __init__(self, sstr='', ressource_id=False, dbname=None, uid=1, name=''):
|
||||
StringIO.StringIO.__init__(self, sstr)
|
||||
@@ -68,15 +72,25 @@ class abstracted_fs:
|
||||
def db_list(self):
|
||||
s = netsvc.LocalService('db')
|
||||
result = s.list()
|
||||
self.db_name_list=[]
|
||||
self.db_name_list = []
|
||||
for db_name in result:
|
||||
db = pooler.get_db_only(db_name)
|
||||
cr = db.cursor()
|
||||
cr.execute("select id from ir_module_module where name like 'document%' and state='installed' ")
|
||||
res=cr.fetchone()
|
||||
if res and len(res):
|
||||
self.db_name_list.append(db_name)
|
||||
cr.close()
|
||||
db, cr = None, None
|
||||
try:
|
||||
db = pooler.get_db_only(db_name)
|
||||
cr = db.cursor()
|
||||
cr.execute("SELECT 1 FROM pg_class WHERE relkind = 'r' AND relname = 'ir_module_module'")
|
||||
if not cr.fetchone():
|
||||
continue
|
||||
|
||||
cr.execute("select id from ir_module_module where name like 'document%' and state='installed' ")
|
||||
res = cr.fetchone()
|
||||
if res and len(res):
|
||||
self.db_name_list.append(db_name)
|
||||
finally:
|
||||
if cr is not None:
|
||||
cr.close()
|
||||
if db is not None:
|
||||
pooler.close_db(db_name)
|
||||
return self.db_name_list
|
||||
|
||||
# Ok
|
||||
@@ -210,7 +224,7 @@ class abstracted_fs:
|
||||
s = file_wrapper('', cid, cr.dbname, uid, )
|
||||
return s
|
||||
except Exception,e:
|
||||
print e
|
||||
log(e)
|
||||
raise OSError(1, 'Operation not permited.')
|
||||
|
||||
# Ok
|
||||
@@ -305,7 +319,7 @@ class abstracted_fs:
|
||||
pool.get('document.directory').create(cr, uid, val)
|
||||
cr.commit()
|
||||
except Exception,e:
|
||||
print e
|
||||
log(e)
|
||||
raise OSError(1, 'Operation not permited.')
|
||||
|
||||
|
||||
@@ -344,7 +358,6 @@ class abstracted_fs:
|
||||
for db in self.db_list():
|
||||
result.append(false_node(db))
|
||||
return result
|
||||
print path.children()
|
||||
return path.children()
|
||||
|
||||
# Ok
|
||||
@@ -495,7 +508,7 @@ class abstracted_fs:
|
||||
else:
|
||||
raise OSError(1, 'Operation not permited.')
|
||||
except Exception,err:
|
||||
print err
|
||||
log(err)
|
||||
raise OSError(1,'Operation not permited.')
|
||||
|
||||
|
||||
|
||||
@@ -1754,7 +1754,6 @@ class FTPHandler(asynchat.async_chat):
|
||||
- (file) file: the file[-like] object to send (if any).
|
||||
"""
|
||||
if self.data_channel:
|
||||
print 'DATA', data
|
||||
self.respond("125 Data connection already open. Transfer starting.")
|
||||
if file:
|
||||
self.data_channel.file_obj = file
|
||||
@@ -2075,10 +2074,8 @@ class FTPHandler(asynchat.async_chat):
|
||||
self.fs.close_cr(data)
|
||||
data = ''
|
||||
if listing:
|
||||
print listing
|
||||
listing.sort()
|
||||
data = '\r\n'.join(listing) + '\r\n'
|
||||
print data
|
||||
self.log('OK NLST "%s". Transfer starting.' %line)
|
||||
self.push_dtp_data(data)
|
||||
|
||||
|
||||
@@ -17,9 +17,11 @@
|
||||
-->
|
||||
|
||||
<record id="process_node_jobshiring0" model="process.node">
|
||||
<!--<field name="menu_id" ref="crm_configuration.menu_crm_case_categ0_act11"/>
|
||||
<field name="model_id" ref="crm.model_crm_case"/> -->
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Jobs hiring"""" name="name"/>
|
||||
<field eval=""""Jobs hiring to new employees"""" name="note"/>
|
||||
<field eval=""""Process to search, interview and evaluate new candidates"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_employeecontractworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
@@ -54,11 +56,20 @@
|
||||
<field name="process_id" ref="process_process_employeecontractworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
|
||||
<record id="process_transition_employeeuser0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Openerp user"""" name="name"/>
|
||||
<field eval=""""Create openerp user"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_openerpuser0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_employee0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_employeejob0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
@@ -76,7 +87,6 @@
|
||||
<field model="process.node" name="target_node_id" ref="process_node_employeecontact0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_employee0"/>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
<record id="group_hr_manager" model="res.groups">
|
||||
<field name="name">Human Resources / Manager</field>
|
||||
</record>
|
||||
|
||||
<record id="group_hr_user" model="res.groups">
|
||||
<field name="name">Human Resources / User</field>
|
||||
</record>
|
||||
|
||||
@@ -28,10 +28,11 @@
|
||||
"depends" : ["base","hr",],
|
||||
"demo_xml" : ["hr_attendance_demo.xml"],
|
||||
"update_xml" : [
|
||||
"security/hr_security.xml",
|
||||
"hr_attendance_view.xml",
|
||||
"hr_attendance_wizard.xml",
|
||||
"hr_attendance_report.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"security/ir.model.access.csv"
|
||||
],
|
||||
"active": False,
|
||||
"installable": True,
|
||||
|
||||
@@ -48,7 +48,8 @@
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
<menuitem id="menu_hr_attendance" name="Attendances" parent="hr.menu_hr_root"/>
|
||||
<menuitem id="menu_hr_attendance" name="Attendances" parent="hr.menu_hr_root"
|
||||
groups="group_hr_attendance"/>
|
||||
<menuitem action="open_view_attendance" id="menu_open_view_attendance"
|
||||
parent="menu_hr_attendance" groups="hr.group_hr_manager"/>
|
||||
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
<wizard id="si_so" model="hr.employee" name="hr.si_so" string="Sign in / Sign out"/>
|
||||
<wizard id="wizard_attendance_error" keyword="client_print_multi" model="hr.employee" name="hr.timesheet.attendance.report" string="Print Attendance Error Report"/>
|
||||
|
||||
<menuitem action="si_so" id="menu_si_so" parent="menu_hr_attendance" type="wizard"/>
|
||||
<menuitem action="si_so" id="menu_si_so" parent="menu_hr_attendance" type="wizard"
|
||||
groups="group_hr_attendance"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<record id="group_hr_attendance" model="res.groups">
|
||||
<field name="name">Human Resources / Attendances User</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -48,6 +48,7 @@
|
||||
"hr_expense_workflow.xml",
|
||||
"hr_expense_view.xml",
|
||||
"hr_expense_report.xml",
|
||||
"process/hr_expense_process.xml"
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
|
||||
@@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
<record id="process_process_expenseworkflow0" model="process.process">
|
||||
<field eval=""""Expense flow for services companies."""" name="note"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval=""""Expense Workflow"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_draftexpenses0" model="process.node">
|
||||
<field name="menu_id" ref="menu_expense_all"/>
|
||||
<field name="model_id" ref="model_hr_expense_expense"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Draft Expenses"""" name="name"/>
|
||||
<field eval=""""Employee encode all his expenses"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_expenseworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_confirmedexpenses0" model="process.node">
|
||||
<field name="menu_id" ref="menu_expense_all"/>
|
||||
<field name="model_id" ref="model_hr_expense_expense"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Confirmed Expenses"""" name="name"/>
|
||||
<field eval=""""The employee validates his expense sheet"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_expenseworkflow0"/>
|
||||
<field eval=""""object.state=='confirm'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_refused0" model="process.node">
|
||||
<field name="menu_id" ref="menu_expense_all"/>
|
||||
<field name="model_id" ref="model_hr_expense_expense"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Refused"""" name="name"/>
|
||||
<field eval=""""The direct manager refuses the sheet.Reset as draft."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_expenseworkflow0"/>
|
||||
<field eval=""""object.state=='canceled'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_approved0" model="process.node">
|
||||
<field name="menu_id" ref="menu_expense_all"/>
|
||||
<field name="model_id" ref="model_hr_expense_expense"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Approved"""" name="name"/>
|
||||
<field eval=""""The direct manager approves the sheet"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_expenseworkflow0"/>
|
||||
<field eval=""""object.state=='accepted'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_supplierinvoice0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree2"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Supplier Invoice"""" name="name"/>
|
||||
<field eval=""""The accoutant validates the sheet"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_expenseworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_reimbursement0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree2"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Reimbursement"""" name="name"/>
|
||||
<field eval=""""The accoutant reimburse the expenses"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_expenseworkflow0"/>
|
||||
<field eval=""""object.state=='paid'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_reinvoicing0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree1"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Reinvoicing"""" name="name"/>
|
||||
<field eval=""""Some costs may be reinvoices to the customer"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_expenseworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_confirmexpense0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Confirm expense"""" name="name"/>
|
||||
<field eval=""""Expense is confirmed."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_confirmedexpenses0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_draftexpenses0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_refuseexpense0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Refuse expense"""" name="name"/>
|
||||
<field eval=""""Expense is refused."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_refused0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_confirmedexpenses0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_approveexpense0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Approve expense"""" name="name"/>
|
||||
<field eval=""""Expense is approved."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_approved0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_confirmedexpenses0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_approveinvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Supplier Invoice"""" name="name"/>
|
||||
<field eval=""""Creates supplier invoice."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_supplierinvoice0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_approved0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_reimburseexpense0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Reimburse expense"""" name="name"/>
|
||||
<field eval=""""After creating invoice, reimburse expenses"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_reimbursement0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplierinvoice0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_reimbursereinvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Reinvoice"""" name="name"/>
|
||||
<field eval=""""Create Customer invoice"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_reinvoicing0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_reimbursement0"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition Action
|
||||
-->
|
||||
|
||||
<record id="process_transition_action_confirm0" model="process.transition.action">
|
||||
<field eval=""""expense_confirm"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Confirm"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_confirmexpense0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_refuse0" model="process.transition.action">
|
||||
<field eval=""""expense_canceled"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Refuse"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_refuseexpense0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_accept0" model="process.transition.action">
|
||||
<field eval=""""expense_accept"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Accept"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_approveexpense0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_supplierinvoice0" model="process.transition.action">
|
||||
<field eval=""""action_invoice_create"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Invoice"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_approveinvoice0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -2,43 +2,177 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="process_node_secretariatsocial0" model="process.node">
|
||||
<field name="menu_id" ref="hr_holidays.menu_open_ask_holidays"/>
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
<record id="process_process_holidaysworkflow0" model="process.process">
|
||||
<field eval=""""Holidays Workflow"""" name="name"/>
|
||||
<field eval=""""Holidays flow for service company."""" name="note"/>
|
||||
<field eval="1" name="active"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_holidaysdefinition0" model="process.node">
|
||||
<field name="menu_id" ref="hr_holidays.menu_action_my_holiday_available"/>
|
||||
<field name="model_id" ref="hr_holidays.model_hr_holidays_per_user"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Encoding of annual available holidays."""" name="note"/>
|
||||
<field eval=""""Holidays Definition"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_holidaysworkflow0"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_holidaysrequest0" model="process.node">
|
||||
<field name="menu_id" ref="hr_holidays.menu_action_my_holiday"/>
|
||||
<field name="model_id" ref="hr_holidays.model_hr_holidays"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Secretariat Social"""" name="name"/>
|
||||
<field eval=""""Secretariat social"""" name="note"/>
|
||||
<field name="process_id" ref="hr.process_process_employeecontractworkflow0"/>
|
||||
<field eval=""""Employee fills in a request for holidays"""" name="note"/>
|
||||
<field eval=""""Holidays Request"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_holidaysworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
</record>
|
||||
|
||||
<record id="process_node_refused0" model="process.node">
|
||||
<field name="menu_id" ref="hr_holidays.menu_action_my_holiday_refuse"/>
|
||||
<field name="model_id" ref="hr_holidays.model_hr_holidays"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""His manager refuses the request"""" name="note"/>
|
||||
<field eval=""""Refused"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_holidaysworkflow0"/>
|
||||
<field eval=""""object.state=='refuse'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_approved0" model="process.node">
|
||||
<field name="menu_id" ref="hr_holidays.menu_action_my_holiday_validate"/>
|
||||
<field name="model_id" ref="hr_holidays.model_hr_holidays"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""His manager approves the request"""" name="note"/>
|
||||
<field eval=""""Approved"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_holidaysworkflow0"/>
|
||||
<field eval=""""object.state=='validate'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_calendar0" model="process.node">
|
||||
<field name="menu_id" ref="hr_holidays.menu_action_my_holiday_validate"/>
|
||||
<field name="model_id" ref="hr_holidays.model_hr_holidays"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""The holiday is set in the calendar"""" name="note"/>
|
||||
<field eval=""""Calendar"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_holidaysworkflow0"/>
|
||||
<field eval=""""object.state=='validate'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_holidays0" model="process.node">
|
||||
<field name="menu_id" ref="hr_holidays.menu_open_ask_holidays"/>
|
||||
<field name="model_id" ref="hr_holidays.model_hr_holidays"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Holidays"""" name="name"/>
|
||||
<field eval=""""Employee Get holidays"""" name="note"/>
|
||||
<field eval=""""Encode number of available holidays"""" name="note"/>
|
||||
<field name="process_id" ref="hr.process_process_employeecontractworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'validate', 'confirm', 'refuse', 'cancel')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_employeesocial0" model="process.transition">
|
||||
<record id="process_node_legaldeclaration0" model="process.node">
|
||||
<field name="menu_id" ref="hr_holidays.menu_open_ask_holidays"/>
|
||||
<field name="model_id" ref="hr_holidays.model_hr_holidays"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Legal Declaration"""" name="name"/>
|
||||
<field eval=""""Document to declare new employee"""" name="note"/>
|
||||
<field name="process_id" ref="hr.process_process_employeecontractworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
|
||||
<record id="process_transition_employeedeclaration0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Employee Social"""" name="name"/>
|
||||
<field eval=""""Social Activity"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_secretariatsocial0"/>
|
||||
<field eval=""""Employee Declaration"""" name="name"/>
|
||||
<field eval=""""Document for employee"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_legaldeclaration0"/>
|
||||
<field model="process.node" name="source_node_id" ref="hr.process_node_employee0"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_holidaysdefrequest0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Holidays def Request"""" name="name"/>
|
||||
<field eval=""""If holidays available, employee can take it and fill it."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_holidaysrequest0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_holidaysdefinition0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_refusedrequest0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Refused Request"""" name="name"/>
|
||||
<field eval=""""Request is refused."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_refused0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_holidaysrequest0" />
|
||||
</record>
|
||||
|
||||
<record id="process_transition_approvedrequest0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Approved Request"""" name="name"/>
|
||||
<field eval=""""Request is approved."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_approved0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_holidaysrequest0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_setholiday0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Set Holiday"""" name="name"/>
|
||||
<field eval=""""Holiday is set in the calendar."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_calendar0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_approved0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_employeeholidays0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Employee Holidays"""" name="name"/>
|
||||
<field eval=""""Employee get holidays"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_holidays0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_secretariatsocial0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_legaldeclaration0"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition Action
|
||||
-->
|
||||
|
||||
<record id="process_transition_action_confirm0" model="process.transition.action">
|
||||
<field eval=""""holidays_confirm"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Confirm"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_holidaysdefrequest0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_reufse0" model="process.transition.action">
|
||||
<field eval=""""holidays_refuse"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Reufse"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_refusedrequest0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_validate0" model="process.transition.action">
|
||||
<field eval=""""holidays_validate"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Validate"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_approvedrequest0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
<field name="name"/>
|
||||
<field name="total_attendance"/>
|
||||
<field name="total_attendance" groups="hr_attendance.group_hr_attendance"/>
|
||||
<field name="total_timesheet"/>
|
||||
<field name="total_difference"/>
|
||||
<field name="total_difference" groups="hr_attendance.group_hr_attendance"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -58,8 +58,8 @@
|
||||
<field name="sheet_id" select="1"/>
|
||||
<field name="name" select="1"/>
|
||||
<field name="total_timesheet"/>
|
||||
<field name="total_attendance"/>
|
||||
<field name="total_difference"/>
|
||||
<field name="total_attendance" groups="hr_attendance.group_hr_attendance"/>
|
||||
<field name="total_difference" groups="hr_attendance.group_hr_attendance"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -74,8 +74,8 @@
|
||||
<field name="sheet_id"/>
|
||||
<field name="name"/>
|
||||
<field name="total_timesheet" sum="Total Timesheet"/>
|
||||
<field name="total_attendance" sum="Total Attendance"/>
|
||||
<field name="total_difference" sum="Total Difference"/>
|
||||
<field name="total_attendance" sum="Total Attendance" groups="hr_attendance.group_hr_attendance"/>
|
||||
<field name="total_difference" sum="Total Difference" groups="hr_attendance.group_hr_attendance"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -102,21 +102,21 @@
|
||||
<button icon="gtk-media-next" name="date_next" string="" type="object"/>
|
||||
</group>
|
||||
|
||||
<field colspan="3" context="name=date_current,user_id=user_id" height="100" name="attendances_ids" nolabel="1">
|
||||
<field colspan="3" context="name=date_current,user_id=user_id" height="100" name="attendances_ids" nolabel="1" groups="hr_attendance.group_hr_attendance">
|
||||
<tree string="Attendances">
|
||||
<field name="name"/>
|
||||
<field name="action"/>
|
||||
<field invisible="1" name="employee_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
<group col="1" colspan="1">
|
||||
<group col="1" colspan="1" groups="hr_attendance.group_hr_attendance">
|
||||
<button name="sign_in" string="Sign In" type="object"/>
|
||||
<button name="sign_out" string="Sign Out" type="object"/>
|
||||
</group>
|
||||
|
||||
|
||||
<field name="state_attendance"/>
|
||||
<field name="total_attendance_day" widget="float_time"/>
|
||||
<field name="state_attendance" groups="hr_attendance.group_hr_attendance"/>
|
||||
<field name="total_attendance_day" widget="float_time" groups="hr_attendance.group_hr_attendance"/>
|
||||
<field colspan="4" context="date=date_current,user_id=user_id" domain="[('name','=',date_current)]" name="timesheet_ids" nolabel="1">
|
||||
<tree editable="top" string="Timesheet">
|
||||
<field invisible="1" name="date"/>
|
||||
@@ -140,9 +140,9 @@
|
||||
<field colspan="4" name="period_ids" nolabel="1">
|
||||
<tree colors="red:total_difference<=0.1;blue:total_difference>=0.1" string="Period">
|
||||
<field name="name"/>
|
||||
<field name="total_attendance" widget="float_time"/>
|
||||
<field name="total_attendance" widget="float_time" groups="hr_attendance.group_hr_attendance"/>
|
||||
<field name="total_timesheet" widget="float_time"/>
|
||||
<field name="total_difference" widget="float_time"/>
|
||||
<field name="total_difference" widget="float_time" groups="hr_attendance.group_hr_attendance"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="total_attendance" widget="float_time"/>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"author" : "Tiny",
|
||||
"category" : "Generic Modules/Association",
|
||||
"depends" : [
|
||||
"base", "product", "account",
|
||||
"base", "product", "account","process"
|
||||
],
|
||||
"demo_xml" : [
|
||||
#"demo_data.xml",
|
||||
@@ -36,7 +36,8 @@
|
||||
],
|
||||
"update_xml" : [
|
||||
"security/ir.model.access.csv",
|
||||
"membership_view.xml","membership_wizard.xml"
|
||||
"membership_view.xml","membership_wizard.xml",
|
||||
"process/membership_process.xml"
|
||||
],
|
||||
"active" : False,
|
||||
"installable" : True,
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
<record id="process_process_membershipworkflow0" model="process.process">
|
||||
<field eval=""""Membership workflow"""" name="name"/>
|
||||
<field eval=""""Membership flow for services companies."""" name="note"/>
|
||||
<field eval="1" name="active"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_membershipproduct0" model="process.node">
|
||||
<field name="menu_id" ref="membership.menu_membership_products"/>
|
||||
<field name="model_id" ref="product.model_product_product"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Define membership product."""" name="note"/>
|
||||
<field eval=""""Membership product"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_membershipworkflow0"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_waitingmember0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree1"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Draft invoice for membership."""" name="note"/>
|
||||
<field eval=""""Waiting member"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_membershipworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_invoicedmember0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree1"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Open invoice."""" name="note"/>
|
||||
<field eval=""""Invoiced member"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_membershipworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_paidmember0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree1"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Membership invoice paid."""" name="note"/>
|
||||
<field eval=""""Paid member"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_membershipworkflow0"/>
|
||||
<field eval=""""object.state=='paid'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_setassociation0" model="process.node">
|
||||
<field name="menu_id" ref="membership.menu_members"/>
|
||||
<field name="model_id" ref="base.model_res_partner"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Set an associate member of partner."""" name="note"/>
|
||||
<field eval=""""Set association"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_membershipworkflow0"/>
|
||||
<field eval=""""object.state=='paid'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_associatedmember0" model="process.node">
|
||||
<field name="menu_id" ref="membership.menu_members"/>
|
||||
<field name="model_id" ref="base.model_res_partner"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Member is associated."""" name="note"/>
|
||||
<field eval=""""Associated member"""" name="name"/>
|
||||
<field name="process_id" ref="process_process_membershipworkflow0"/>
|
||||
<field eval=""""object.state=='associated'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_producttomember0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Product to member"""" name="name"/>
|
||||
<field eval=""""Define product for membership."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_waitingmember0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_membershipproduct0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_waitingtoinvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Waiting to invoice"""" name="name"/>
|
||||
<field eval=""""Draft invoice is now open."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_invoicedmember0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_waitingmember0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_create0" model="process.transition.action">
|
||||
<field eval=""""invoice_open"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Create"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_waitingtoinvoice0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_invoicetopaid0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Invoice to paid"""" name="name"/>
|
||||
<field eval=""""Invoice is be paid."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_paidmember0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_invoicedmember0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_invoicetoassociate0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""invoice to associate"""" name="name"/>
|
||||
<field eval=""""Invoiced member may be Associated member."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_associatedmember0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_invoicedmember0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_associationpartner0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Association Partner"""" name="name"/>
|
||||
<field eval=""""Associated partner."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_associatedmember0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_setassociation0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -25,7 +25,7 @@
|
||||
"author" : "Tiny",
|
||||
"website" : "http://tinyerp.com/module_mrp.html",
|
||||
"category" : "Generic Modules/Production",
|
||||
"depends" : ["stock", "hr", "purchase", "product", "process"],
|
||||
"depends" : ["stock", "hr", "purchase", "product","process"],
|
||||
"description": """
|
||||
This is the base module to manage the manufacturing process in Tiny ERP.
|
||||
|
||||
|
||||
+27
-3
@@ -285,7 +285,7 @@ class mrp_bom(osv.osv):
|
||||
'workcenter_id': wc.id,
|
||||
'sequence': level,
|
||||
'cycle': cycle,
|
||||
'hour': wc_use.hour_nbr + (wc.time_start+wc.time_stop+cycle*wc.time_cycle) * (wc.time_efficiency or 1.0),
|
||||
'hour': float(wc_use.hour_nbr + (wc.time_start+wc.time_stop+cycle*wc.time_cycle) * (wc.time_efficiency or 1.0)),
|
||||
})
|
||||
for bom2 in bom.bom_lines:
|
||||
res = self._bom_explode(cr, uid, bom2, factor, properties, addthis=True, level=level+10)
|
||||
@@ -361,6 +361,24 @@ class mrp_production(osv.osv):
|
||||
res[production['id']]=move.sale_line_id and move.sale_line_id.order_id.client_order_ref or False
|
||||
return res
|
||||
|
||||
def _production_calc(self, cr, uid, ids, prop, unknow_none, context={}):
|
||||
result = {}
|
||||
for prod in self.browse(cr, uid, ids, context=context):
|
||||
result[prod.id] = {
|
||||
'hour_total': 0.0,
|
||||
'cycle_total': 0.0,
|
||||
}
|
||||
for wc in prod.workcenter_lines:
|
||||
result[prod.id]['hour_total'] += wc.hour
|
||||
result[prod.id]['cycle_total'] += wc.cycle
|
||||
return result
|
||||
|
||||
def _production_date(self, cr, uid, ids, prop, unknow_none, context={}):
|
||||
result = {}
|
||||
for prod in self.browse(cr, uid, ids, context=context):
|
||||
result[prod.id] = prod.date_planned[:10]
|
||||
return result
|
||||
|
||||
def _sale_name_calc(self, cr, uid, ids, prop, unknow_none, unknow_dict):
|
||||
return self._get_sale_order(cr,uid,ids,field_name='name')
|
||||
|
||||
@@ -383,11 +401,13 @@ class mrp_production(osv.osv):
|
||||
'location_dest_id': fields.many2one('stock.location', 'Finnished Products Location', required=True,
|
||||
help="Location where the system will stock the finnished products."),
|
||||
|
||||
'date_planned_date': fields.function(_production_date, method=True, type='date', string='Planned Date'),
|
||||
'date_planned': fields.datetime('Scheduled date', required=True, select=1),
|
||||
'date_start': fields.datetime('Start Date'),
|
||||
'date_finnished': fields.datetime('End Date'),
|
||||
|
||||
'bom_id': fields.many2one('mrp.bom', 'Bill of Material', domain=[('bom_id','=',False)]),
|
||||
'routing_id': fields.many2one('mrp.routing', string='Routing', on_delete='set null'),
|
||||
|
||||
'picking_id': fields.many2one('stock.picking', 'Packing list', readonly=True,
|
||||
help="This is the internal picking list take bring the raw materials to the production plan."),
|
||||
@@ -399,6 +419,9 @@ class mrp_production(osv.osv):
|
||||
'workcenter_lines': fields.one2many('mrp.production.workcenter.line', 'production_id', 'Workcenters Utilisation'),
|
||||
|
||||
'state': fields.selection([('draft','Draft'),('picking_except', 'Packing Exception'),('confirmed','Waiting Goods'),('ready','Ready to Produce'),('in_production','In Production'),('cancel','Canceled'),('done','Done')],'Status', readonly=True),
|
||||
'hour_total': fields.function(_production_calc, method=True, type='float', string='Total Hours', multi='workorder'),
|
||||
'cycle_total': fields.function(_production_calc, method=True, type='float', string='Total Cycles', multi='workorder'),
|
||||
|
||||
'sale_name': fields.function(_sale_name_calc, method=True, type='char', string='Sale Name'),
|
||||
'sale_ref': fields.function(_sale_ref_calc, method=True, type='char', string='Sale Ref'),
|
||||
}
|
||||
@@ -449,8 +472,9 @@ class mrp_production(osv.osv):
|
||||
if not bom_point:
|
||||
bom_id = self.pool.get('mrp.bom')._bom_find(cr, uid, production.product_id.id, production.product_uom.id, properties)
|
||||
if bom_id:
|
||||
self.write(cr, uid, [production.id], {'bom_id': bom_id})
|
||||
bom_point = self.pool.get('mrp.bom').browse(cr, uid, [bom_id])[0]
|
||||
bom_point = self.pool.get('mrp.bom').browse(cr, uid, bom_id)
|
||||
routing_id = bom_point.routing_id.id or False
|
||||
self.write(cr, uid, [production.id], {'bom_id': bom_id, 'routing_id': routing_id})
|
||||
|
||||
if not bom_id:
|
||||
raise osv.except_osv('Error', "Couldn't find bill of material for product")
|
||||
|
||||
+56
-20
@@ -377,9 +377,11 @@
|
||||
<tree colors="red:date_planned<current_date and state not in ('done','cancel')" string="Production orders">
|
||||
<field name="name"/>
|
||||
<field name="product_id"/>
|
||||
<field name="product_qty"/>
|
||||
<field name="product_qty" sum="Total Qty"/>
|
||||
<field name="date_planned"/>
|
||||
<field name="date_finnished"/>
|
||||
<field name="routing_id" groups="base.group_extended"/>
|
||||
<field name="hour_total" sum="Total Hours" groups="base.group_extended"/>
|
||||
<field name="cycle_total" sum="Total Cycles" groups="base.group_extended"/>
|
||||
<field name="origin"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
@@ -392,31 +394,49 @@
|
||||
<field name="type">calendar</field>
|
||||
<field eval="2" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<calendar color="product_id" date_start="date_planned" string="Production Orders">
|
||||
<calendar color="routing_id" date_start="date_planned" string="Production Orders">
|
||||
<field name="origin"/>
|
||||
<field name="name"/>
|
||||
<field name="product_id"/>
|
||||
<field name="product_qty"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="view_production_gantt" model="ir.ui.view">
|
||||
<field name="name">mrp.production.gantt</field>
|
||||
<field name="model">mrp.production</field>
|
||||
<field name="type">gantt</field>
|
||||
<field name="arch" type="xml">
|
||||
<gantt color="product_id" date_delay="hour_total" date_start="date_planned" string="Productions">
|
||||
<level object="mrp.routing" link="routing_id" domain="[]">
|
||||
<field name="product_id"/>
|
||||
<field name="origin"/>
|
||||
</level>
|
||||
</gantt>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="ir.ui.view" id="view_production_graph">
|
||||
<field name="name">mrp.production.graph</field>
|
||||
<field name="model">mrp.production</field>
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Production orders" type="bar">
|
||||
<field name="product_id"/>
|
||||
<field name="product_qty" operator="+"/>
|
||||
<field name="date_planned_date"/>
|
||||
<field name="hour_total" operator="+"/>
|
||||
<field name="cycle_total" operator="+"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
<wizard
|
||||
string="Change Product Qty."
|
||||
model="mrp.production"
|
||||
name="change_production_qty"
|
||||
id="mrp.wizard_change_production_qty"
|
||||
keyword="client_action_multi"
|
||||
multi="True"/>
|
||||
<wizard
|
||||
string="Change Product Qty."
|
||||
model="mrp.production"
|
||||
name="change_production_qty"
|
||||
id="mrp.wizard_change_production_qty"
|
||||
keyword="client_action_multi"
|
||||
multi="True"/>
|
||||
<record id="mrp_production_form_view" model="ir.ui.view">
|
||||
<field name="name">mrp.production.form</field>
|
||||
<field name="model">mrp.production</field>
|
||||
@@ -426,7 +446,7 @@
|
||||
<group colspan="4" col="7">
|
||||
<field name="name" select="1"/>
|
||||
<field name="date_planned" select="1"/>
|
||||
<field name="priority" groups="base.group_extended"/>
|
||||
<field name="origin" select="1"/>
|
||||
<newline/>
|
||||
<field name="product_id" on_change="product_id_change(product_id)" select="1"/>
|
||||
<field name="product_qty"/>
|
||||
@@ -443,7 +463,7 @@
|
||||
<field name="location_src_id" select="2" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/>
|
||||
<field name="location_dest_id" domain="[('usage','=','internal')]"/>
|
||||
<field name="bom_id" select="2" domain="[('product_id','=',product_id),('bom_id','=',False)]"/>
|
||||
<field name="origin" select="1"/>
|
||||
<field name="routing_id" groups="base.group_extended" select="1"/>
|
||||
<newline/>
|
||||
<field colspan="4" name="move_lines" nolabel="1" widget="one2many_list"/>
|
||||
<group col="9" colspan="4">
|
||||
@@ -467,6 +487,8 @@
|
||||
<field colspan="4" name="workcenter_lines" nolabel="1" widget="one2many_list"/>
|
||||
</page>
|
||||
<page string="Extra Information">
|
||||
<field name="priority" groups="base.group_extended"/>
|
||||
<newline/>
|
||||
<field name="date_start" select="2"/>
|
||||
<field name="date_finnished"/>
|
||||
<field name="picking_id"/>
|
||||
@@ -483,17 +505,31 @@
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.production</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,calendar,graph</field>
|
||||
<field name="view_mode">tree,form,calendar,graph,gantt</field>
|
||||
<field name="view_id" eval="False"/>
|
||||
</record>
|
||||
<menuitem action="mrp_production_action" id="menu_mrp_production_action" parent="menu_mrp_root"/>
|
||||
|
||||
<record id="mrp_production_action2_gantt" model="ir.actions.act_window">
|
||||
<field name="name">Production Orders Planning</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.production</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">gantt,tree,form,calendar,graph</field>
|
||||
<field name="domain">[('state','in',('ready','confirmed','in_production'))]</field>
|
||||
</record>
|
||||
<menuitem
|
||||
action="mrp_production_action2_gantt"
|
||||
id="menu_production_orders_start_gantt"
|
||||
parent="menu_mrp_production_action"
|
||||
sequence="20"/>
|
||||
|
||||
<record id="mrp_production_action2" model="ir.actions.act_window">
|
||||
<field name="name">Production Orders To Start</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.production</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,calendar,graph</field>
|
||||
<field name="view_mode">tree,form,calendar,graph,gantt</field>
|
||||
<field name="domain">[('state','=','ready')]</field>
|
||||
</record>
|
||||
<menuitem action="mrp_production_action2" id="menu_production_orders_start" parent="menu_mrp_production_action"/>
|
||||
@@ -502,7 +538,7 @@
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.production</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,calendar,graph</field>
|
||||
<field name="view_mode">tree,form,calendar,graph,gantt</field>
|
||||
<field name="domain">[('state','=','in_production')]</field>
|
||||
</record>
|
||||
<menuitem action="mrp_production_action3" id="menu_mrp_production_action3" parent="menu_mrp_production_action"/>
|
||||
@@ -511,7 +547,7 @@
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.production</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,calendar,graph</field>
|
||||
<field name="view_mode">tree,form,calendar,graph,gantt</field>
|
||||
<field name="domain">[('state','=','confirmed')]</field>
|
||||
</record>
|
||||
<menuitem action="mrp_production_action4" id="menu_production_orders_waiting4" parent="mrp.menu_mrp_production_action"/>
|
||||
@@ -521,7 +557,7 @@
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.production</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form,tree,calendar,graph</field>
|
||||
<field name="view_mode">form,tree,calendar,graph,gantt</field>
|
||||
</record>
|
||||
<menuitem action="mrp_production_new" id="menu_production_orders_new" parent="mrp.menu_mrp_production_action"/>
|
||||
|
||||
|
||||
@@ -15,6 +15,16 @@
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_purchaseprocure0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_procurement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Procurements"""" name="name"/>
|
||||
<field eval=""""Procurement orders"""" name="note"/>
|
||||
<field name="process_id" ref="purchase.process_process_purchaseworkflow0"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_minimumstockrule0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_action_orderpoint_form"/>
|
||||
<field name="model_id" ref="mrp.model_stock_warehouse_orderpoint"/>
|
||||
@@ -25,26 +35,34 @@
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_billofmaterial0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_bom_form_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_bom"/>
|
||||
<record id="process_node_routing0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_routing_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_routing"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Bill of Material"""" name="name"/>
|
||||
<field eval=""""Defines Bill of materials"""" name="note"/>
|
||||
<field eval=""""Routing"""" name="name"/>
|
||||
<field eval=""""Define a routing to describe the manufacturing steps."""" name="note"/>
|
||||
<field name="process_id" ref="product.process_process_productworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_procurements0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_procurement"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Procurements"""" name="name"/>
|
||||
<field eval=""""Procurement Orders"""" name="note"/>
|
||||
<field name="process_id" ref="purchase.process_process_purchaseworkflow0"/>
|
||||
<field name="subflow_id" ref="process_process_procurementworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting') """" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
<record id="process_node_billofmaterial0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_bom_form_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_bom"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Bill of Materials"""" name="name"/>
|
||||
<field eval=""""Define the product structure, with sub-products and/or components."""" name="note"/>
|
||||
<field name="process_id" ref="product.process_process_productworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_mrpminimumstockrule0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_action_orderpoint_form"/>
|
||||
<field name="model_id" ref="mrp.model_stock_warehouse_orderpoint"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Minimum Stock Rule"""" name="name"/>
|
||||
<field eval=""""Procurement is created if the product quantity is lower than the minimum limit."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_procurementworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_productionorder0" model="process.node">
|
||||
@@ -80,40 +98,40 @@
|
||||
<field eval=""""object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting') """" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_maketoorder0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_procurement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Make to order"""" name="name"/>
|
||||
<field eval=""""If Procurement is make to order"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_procurementworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting') """" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_node_maketostock0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_procurement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Make to stock"""" name="name"/>
|
||||
<field eval=""""If Procurement is make to stock"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_procurementworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting') """" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_procurement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Make to stock"""" name="name"/>
|
||||
<field eval=""""If Procurement is make to stock"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_procurementworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting') """" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_subcontracting0" model="process.node">
|
||||
<field name="menu_id" ref="purchase.menu_purchase_order_draft"/>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Subcontracting"""" name="name"/>
|
||||
<field eval=""""Procure method is purchase"""" name="note"/>
|
||||
<field eval=""""Request For Quotation"""" name="name"/>
|
||||
<field eval=""""A purchase order is created for a sub-contracting demand."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_procurementworkflow0"/>
|
||||
<field name="subflow_id" ref="purchase.process_process_purchaseworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_stockablemaketostock0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_procurement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Make to Stock"""" name="name"/>
|
||||
<field eval=""""The system waits for requested products in stock."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_procurementworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting') """" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_stockableproduct0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
@@ -126,7 +144,7 @@
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_stockablemaketostock0" model="process.node">
|
||||
<record id="process_node_stockablestock0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_procurement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
@@ -152,8 +170,8 @@
|
||||
<field name="menu_id" ref="purchase.menu_purchase_order_draft"/>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Stockable request"""" name="name"/>
|
||||
<field eval=""""If procure method is purchase"""" name="note"/>
|
||||
<field eval=""""Request For Quotation"""" name="name"/>
|
||||
<field eval=""""A Request for Quotation is created and sent to the supplier."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_procurementworkflow0"/>
|
||||
<field name="subflow_id" ref="purchase.process_process_purchaseworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
@@ -164,14 +182,14 @@
|
||||
<field name="menu_id" ref="mrp.menu_mrp_production_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_production"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Stock produce"""" name="name"/>
|
||||
<field eval=""""If procure method is produce"""" name="note"/>
|
||||
<field eval=""""Production Order"""" name="name"/>
|
||||
<field eval=""""Production orders are created for the product manufacturing."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_procurementworkflow0"/>
|
||||
<field name="subflow_id" ref="process_process_procurementworkflow0"/>
|
||||
<field eval=""""object.state=='confirmed'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
@@ -183,6 +201,33 @@
|
||||
<record id="mrp.trans_draft_confirm" model="workflow.transition">
|
||||
<field name="role_id" ref="res_roles_mrp0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_purchaseprocure0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Procurement Purchase"""" name="name"/>
|
||||
<field eval=""""Procurement convert into the draft purchase order."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="purchase.process_node_draftpurchaseorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_purchaseprocure0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_billofmaterialrouting0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Material routing"""" name="name"/>
|
||||
<field eval=""""An entry is being made from billing material to routing."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_routing0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_billofmaterial0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_stockruleproduct" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Stock Rule Product"""" name="name"/>
|
||||
<field eval=""""From minimum stock rules, it goes for procure product."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_procureproducts0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_mrpminimumstockrule0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_productionprocurement0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
@@ -207,10 +252,10 @@
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Service make to order"""" name="name"/>
|
||||
<field eval=""""If product type is service and procure method is Make to order"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_maketoorder0"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_stockablemaketoorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_serviceproduct0"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_servicemaketostock0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
@@ -219,17 +264,7 @@
|
||||
<field model="process.node" name="target_node_id" ref="process_node_maketostock0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_serviceproduct0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_ordersubcontracting0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Order Subcontracting"""" name="name"/>
|
||||
<field eval=""""If procure method is Make to order and supply method is buy"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_subcontracting0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_maketoorder0"/>
|
||||
<field eval="[(6,0,[ref('mrp.trans_draft_confirm')])]" name="transition_ids"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_procurementstockable0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
@@ -239,6 +274,15 @@
|
||||
<field model="process.node" name="source_node_id" ref="process_node_procureproducts0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_stockablestock0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Stockable product stock"""" name="name"/>
|
||||
<field eval=""""If Product type is Stockable and procure method is make to stock"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_stockablestock0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_stockableproduct0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_stockablemaketostock0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
@@ -247,22 +291,22 @@
|
||||
<field model="process.node" name="target_node_id" ref="process_node_stockablemaketostock0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_stockableproduct0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_stockablemaketoorder0" model="process.transition">
|
||||
|
||||
<record id="process_transition_stockablestockrequest0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Stockable make to order"""" name="name"/>
|
||||
<field eval=""""If Product type is Stockable and procure method is Make to order"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_stockablemaketoorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_stockableproduct0"/>
|
||||
<field eval=""""Stockable stock request"""" name="name"/>
|
||||
<field eval=""""If Product type is Stockable and procure method is make to stock"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_stockablerequest0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_stockablestock0"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_stockableorderrequest0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Stockable Order Request"""" name="name"/>
|
||||
<field eval=""""If Procure method is Make to order and supply method is buy"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_stockablerequest0"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_subcontracting0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_stockablemaketoorder0"/>
|
||||
<field eval="[(6,0,[ref('mrp.trans_draft_confirm')])]" name="transition_ids"/>
|
||||
</record>
|
||||
@@ -273,19 +317,10 @@
|
||||
<field eval=""""Stockable Order Production"""" name="name"/>
|
||||
<field eval=""""If Procure method is Make to order and supply method is produce"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_stockableproduction0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_stockablemaketoorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_stockablestock0"/>
|
||||
<field eval="[(6,0,[ref('mrp.trans_draft_confirm')])]" name="transition_ids"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_procurementtopurchase0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""procurement to purchase"""" name="name"/>
|
||||
<field eval=""""After procurementing order , it comes into the Draft Purchase Order"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="purchase.process_node_draftpurchaseorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_procurements0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_producttostockrules0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
@@ -304,15 +339,6 @@
|
||||
<field model="process.node" name="source_node_id" ref="product.process_node_product0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_bomtook0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Bom to Ok"""" name="name"/>
|
||||
<field eval=""""Set status of Bill of material to ok"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="product.process_node_statusok0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_billofmaterial0"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Condition
|
||||
-->
|
||||
@@ -335,34 +361,6 @@
|
||||
Process Action
|
||||
-->
|
||||
|
||||
<record id="process_transition_action_procurementpurchaseorder0" model="process.transition.action">
|
||||
<field eval=""""action_po_assign"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Purchase"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_procurementtopurchase0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_orderconfirmsubcontracting0" model="process.transition.action">
|
||||
<field eval=""""action_confirm"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Confirm"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_ordersubcontracting0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_ordercancelsubcontracting0" model="process.transition.action">
|
||||
<field eval=""""action_cancel"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Cancel"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_ordersubcontracting0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_runprocurement0" model="process.transition.action">
|
||||
<field eval=""""write({'state':'exception'})"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Run Procurement"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_ordersubcontracting0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_stockableconfirmrequest0" model="process.transition.action">
|
||||
<field eval=""""action_confirm"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
@@ -404,6 +402,6 @@
|
||||
<field eval=""""Run Procurement"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_stockableorderproduction0"/>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
+34
-35
@@ -188,41 +188,40 @@ class mrp_procurement(osv.osv):
|
||||
while ids:
|
||||
ids=orderpoint_obj.search(cr,uid,[],offset=offset,limit=100)
|
||||
for op in orderpoint_obj.browse(cr, uid, ids):
|
||||
try:
|
||||
prods = location_obj._product_virtual_get(cr, uid,
|
||||
op.location_id.id, [op.product_id.id],
|
||||
{'uom': op.product_uom.id})[op.product_id.id]
|
||||
if prods < op.product_min_qty:
|
||||
qty = max(op.product_min_qty, op.product_max_qty)-prods
|
||||
reste = qty % op.qty_multiple
|
||||
if reste>0:
|
||||
qty += op.qty_multiple-reste
|
||||
newdate = DateTime.now() + DateTime.RelativeDateTime(
|
||||
days=op.product_id.seller_delay)
|
||||
if op.product_id.supply_method == 'buy':
|
||||
location_id = op.warehouse_id.lot_input_id
|
||||
elif op.product_id.supply_method == 'produce':
|
||||
location_id = op.warehouse_id.lot_stock_id
|
||||
else:
|
||||
continue
|
||||
proc_id = procurement_obj.create(cr, uid, {
|
||||
'name': 'OP:'+str(op.id),
|
||||
'date_planned': newdate.strftime('%Y-%m-%d'),
|
||||
'product_id': op.product_id.id,
|
||||
'product_qty': qty,
|
||||
'product_uom': op.product_uom.id,
|
||||
'location_id': op.warehouse_id.lot_input_id.id,
|
||||
'procure_method': 'make_to_order',
|
||||
'origin': op.name
|
||||
})
|
||||
wf_service.trg_validate(uid, 'mrp.procurement', proc_id,
|
||||
'button_confirm', cr)
|
||||
wf_service.trg_validate(uid, 'mrp.procurement', proc_id,
|
||||
'button_check', cr)
|
||||
orderpoint_obj.write(cr, uid, [op.id],
|
||||
{'procurement_id': proc_id})
|
||||
except Exception, e:
|
||||
report.append('OP %d:\n%s\n' % (op.id, str(e)))
|
||||
if op.procurement_id and op.procurement_id.purchase_id and op.procurement_id.purchase_id.state in ('draft','confirmed'):
|
||||
continue
|
||||
prods = location_obj._product_virtual_get(cr, uid,
|
||||
op.location_id.id, [op.product_id.id],
|
||||
{'uom': op.product_uom.id})[op.product_id.id]
|
||||
if prods < op.product_min_qty:
|
||||
qty = max(op.product_min_qty, op.product_max_qty)-prods
|
||||
reste = qty % op.qty_multiple
|
||||
if reste>0:
|
||||
qty += op.qty_multiple-reste
|
||||
newdate = DateTime.now() + DateTime.RelativeDateTime(
|
||||
days=op.product_id.seller_delay)
|
||||
if op.product_id.supply_method == 'buy':
|
||||
location_id = op.warehouse_id.lot_input_id
|
||||
elif op.product_id.supply_method == 'produce':
|
||||
location_id = op.warehouse_id.lot_stock_id
|
||||
else:
|
||||
continue
|
||||
proc_id = procurement_obj.create(cr, uid, {
|
||||
'name': 'OP:'+str(op.id),
|
||||
'date_planned': newdate.strftime('%Y-%m-%d'),
|
||||
'product_id': op.product_id.id,
|
||||
'product_qty': qty,
|
||||
'product_uom': op.product_uom.id,
|
||||
'location_id': op.warehouse_id.lot_input_id.id,
|
||||
'procure_method': 'make_to_order',
|
||||
'origin': op.name
|
||||
})
|
||||
wf_service.trg_validate(uid, 'mrp.procurement', proc_id,
|
||||
'button_confirm', cr)
|
||||
wf_service.trg_validate(uid, 'mrp.procurement', proc_id,
|
||||
'button_check', cr)
|
||||
orderpoint_obj.write(cr, uid, [op.id],
|
||||
{'procurement_id': proc_id})
|
||||
offset += len(ids)
|
||||
if use_new_cursor:
|
||||
cr.commit()
|
||||
|
||||
@@ -54,7 +54,7 @@ class mrp_production_workcenter_line(osv.osv):
|
||||
}
|
||||
_defaults = {
|
||||
'state': lambda *a: 'draft',
|
||||
'delay': lambda *a: '0 Days 00 hrs and 00 mins'
|
||||
'delay': lambda *a: 0.0
|
||||
}
|
||||
|
||||
def modify_production_order_state(self,cr,uid,ids,action):
|
||||
|
||||
@@ -29,38 +29,16 @@
|
||||
|
||||
<record id="process_node_supplier0" model="process.node">
|
||||
<field name="menu_id" ref="product.menu_products"/>
|
||||
<field name="model_id" ref="product.model_product_product"/>
|
||||
<field name="model_id" ref="product.model_product_supplierinfo"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Supplier"""" name="name"/>
|
||||
<field eval=""""Defines the list of supplier"""" name="note"/>
|
||||
<field eval=""""Supplier Info"""" name="name"/>
|
||||
<field eval=""""Product suppliers, with their product name, price, etc."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_productworkflow0"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_statusok0" model="process.node">
|
||||
<field name="menu_id" ref="product.menu_products"/>
|
||||
<field name="model_id" ref="product.model_product_product"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Status ok"""" name="name"/>
|
||||
<field eval=""""Set Status OK"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_productworkflow0"/>
|
||||
<field eval=""""object.state=='sellable'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_endlifecycle0" model="process.node">
|
||||
<field name="menu_id" ref="product.menu_products"/>
|
||||
<field name="model_id" ref="product.model_product_product"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""End lifecycle"""" name="name"/>
|
||||
<field eval=""""End Of lifecycle"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_productworkflow0"/>
|
||||
<field eval=""""object.state=='end'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_supplierofproduct0" model="process.transition">
|
||||
@@ -72,23 +50,5 @@
|
||||
<field model="process.node" name="source_node_id" ref="process_node_product0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_suppliertook0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Supplier to ok"""" name="name"/>
|
||||
<field eval=""""Set the status of list of supplier to ok"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_statusok0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_supplier0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_oktoend0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Ok to End"""" name="name"/>
|
||||
<field eval=""""End of lifecycle after Ok"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_endlifecycle0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_statusok0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -300,7 +300,7 @@ class product_template(osv.osv):
|
||||
|
||||
def _check_uom(self, cursor, user, ids):
|
||||
for product in self.browse(cursor, user, ids):
|
||||
if product.uom_id.id <> product.uom_po_id.id:
|
||||
if product.uom_id.category_id.id <> product.uom_po_id.category_id.id:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</record>
|
||||
|
||||
<record id="process_node_opentask0" model="process.node">
|
||||
<field name="menu_id" ref="menu_tasks_yours_prog"/>
|
||||
<!-- <field name="menu_id" ref="project.menu_action_view_task6"/> -->
|
||||
<field name="model_id" ref="project.model_project_task"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Open task"""" name="name"/>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<field name="active" select="2"/>
|
||||
<field name="planned_hours" widget="float_time"/>
|
||||
<field name="effective_hours" widget="float_time"/>
|
||||
<field name="category_id" select="2"/>
|
||||
<field name="category_id" select="2" context="{'default_name':name}"/>
|
||||
<newline/>
|
||||
<separator colspan="4" string="Project's members"/>
|
||||
<field colspan="4" name="members" nolabel="1"/>
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_tasks0" model="process.node">
|
||||
<record id="process_node_procuretasktask0" model="process.node">
|
||||
<field name="menu_id" ref="project.menu_action_view_task"/>
|
||||
<field name="model_id" ref="project.model_project_task"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Tasks"""" name="name"/>
|
||||
<field eval=""""In case you sell services on sale order (task subflow)"""" name="note"/>
|
||||
<field eval=""""Task"""" name="name"/>
|
||||
<field eval=""""For each product, on type service and on order"""" name="note"/>
|
||||
<field name="process_id" ref="sale.process_process_salesworkflow0"/>
|
||||
<field name="subflow_id" ref="project.process_process_tasksworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
@@ -33,35 +33,24 @@
|
||||
<field name="menu_id" ref="project.menu_action_view_task"/>
|
||||
<field name="model_id" ref="project.model_project_task"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Procure task"""" name="name"/>
|
||||
<field eval=""""If Procure method is produce"""" name="note"/>
|
||||
<field eval=""""Task"""" name="name"/>
|
||||
<field eval=""""A task is created to provide the service."""" name="note"/>
|
||||
<field name="process_id" ref="mrp.process_process_procurementworkflow0"/>
|
||||
<field name="subflow_id" ref="project.process_process_tasksworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Condition
|
||||
-->
|
||||
|
||||
<record id="process_condition_conditiontask0" model="process.condition">
|
||||
<field name="model_id" ref="product.model_product_template"/>
|
||||
<field name="node_id" ref="process_node_tasks0"/>
|
||||
<field eval=""""object.type=='service'"""" name="model_states"/>
|
||||
<field eval=""""condition_task"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_task0" model="process.transition">
|
||||
<record id="process_transition_procuretask0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Task"""" name="name"/>
|
||||
<field eval=""""When you select any product's type as a 'service' after confiming sale order, it will create a task of product."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_tasks0"/>
|
||||
<field model="process.node" name="source_node_id" ref="sale.process_node_saleorder0"/>
|
||||
<field eval=""""Procure Task"""" name="name"/>
|
||||
<field eval=""""if product type is 'service' then it creates the task."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_procuretasktask0"/>
|
||||
<field model="process.node" name="source_node_id" ref="sale.process_node_saleprocurement0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_createtask0" model="process.transition">
|
||||
@@ -79,7 +68,7 @@
|
||||
<field eval=""""Order Task"""" name="name"/>
|
||||
<field eval=""""If procure method is Make to order and supply method is produce"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_procuretask0"/>
|
||||
<field model="process.node" name="source_node_id" ref="mrp.process_node_maketoorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="mrp.process_node_stockablemaketoorder0"/>
|
||||
<field eval="[(6,0,[ref('mrp.trans_draft_confirm')])]" name="transition_ids"/>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Purchase Order"""" name="name"/>
|
||||
<field eval=""""After confirming purchase order, it is approved by supplier."""" name="note"/>
|
||||
<field name="process_id" ref="account.process_process_invoiceworkflow0"/>
|
||||
<field eval=""""When controlling invoice from orders"""" name="note"/>
|
||||
<field name="process_id" ref="account.process_process_supplierinvoiceworkflow0"/>
|
||||
<field name="subflow_id" ref="process_process_purchaseworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
@@ -32,19 +32,30 @@
|
||||
<field name="menu_id" ref="purchase.menu_purchase_order_draft"/>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Draft Purchase Order"""" name="name"/>
|
||||
<field eval=""""Proposed by the system or manually"""" name="note"/>
|
||||
<field eval=""""Request for Quotation"""" name="name"/>
|
||||
<field eval=""""Request for quotation is proposed by the system."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_purchaseworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_draftpurchaseorder1" model="process.node">
|
||||
<field name="menu_id" ref="purchase.menu_purchase_order_draft"/>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Request for Quotation"""" name="name"/>
|
||||
<field eval=""""Encoded manually by the user."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_purchaseworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_confirmpurchaseorder0" model="process.node">
|
||||
<field name="menu_id" ref="purchase.menu_purchase_form_action3"/>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Confirm Purchase Order"""" name="name"/>
|
||||
<field eval=""""The user confirm he wants to purchase"""" name="note"/>
|
||||
<field eval=""""Confirmed Purchase"""" name="name"/>
|
||||
<field eval=""""Purchase order is confirmed by the user."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_purchaseworkflow0"/>
|
||||
<field eval=""""object.state=='confirmed'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
@@ -54,8 +65,8 @@
|
||||
<field name="menu_id" ref="purchase.menu_purchase_form_action4"/>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Approve Purchase Order"""" name="name"/>
|
||||
<field eval=""""The supplier confirms he can deliver"""" name="note"/>
|
||||
<field eval=""""Approved Purchase"""" name="name"/>
|
||||
<field eval=""""Purchase order is approved by supplier."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_purchaseworkflow0"/>
|
||||
<field eval=""""object.state=='approved'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
@@ -65,8 +76,8 @@
|
||||
<field name="menu_id" ref="account.menu_action_invoice_tree8"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Invoice Control"""" name="name"/>
|
||||
<field eval=""""Draft invoices are pre-generated for control."""" name="note"/>
|
||||
<field eval=""""Draft Invoice"""" name="name"/>
|
||||
<field eval=""""Pre-generated supplier invoice to control based on order"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_purchaseworkflow0"/>
|
||||
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
@@ -77,8 +88,8 @@
|
||||
<field name="menu_id" ref="stock.menu_action_picking_tree4"/>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Packing list"""" name="name"/>
|
||||
<field eval=""""Pre-generated in draft for control"""" name="note"/>
|
||||
<field eval=""""Incoming Products"""" name="name"/>
|
||||
<field eval=""""Packing is created for the products reception control."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_purchaseworkflow0"/>
|
||||
<field eval=""""object.state=='assigned'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
@@ -88,14 +99,32 @@
|
||||
<field name="menu_id" ref="account.menu_finance_invoice"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Invoice after packing"""" name="name"/>
|
||||
<field eval=""""In case you control based on delivery"""" name="note"/>
|
||||
<field eval=""""Draft Invoice"""" name="name"/>
|
||||
<field eval=""""Supplier Invoice pre-generated on receptions for control"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_purchaseworkflow0"/>
|
||||
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
|
||||
<!--
|
||||
Process Condition
|
||||
-->
|
||||
|
||||
<record id="process_condition_conditionorigin" model="process.condition">
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field name="node_id" ref="process_node_draftpurchaseorder1"/>
|
||||
<field eval=""""object.origin==''"""" name="model_states"/>
|
||||
<field eval=""""condition_origin"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<record id="process_condition_conditioninvoicemanual" model="process.condition">
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field name="node_id" ref="process_node_invoicecontrol0"/>
|
||||
<field eval=""""object.invoice_method=='manual'"""" name="model_states"/>
|
||||
<field eval=""""condition_invoice_manual"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
@@ -122,6 +151,15 @@
|
||||
<field eval="[(6,0,[ref('purchase.trans_draft_confirmed')])]" name="transition_ids"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_confirmingpurchaseorder1" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Confirming Purchase"""" name="name"/>
|
||||
<field eval=""""Confirm Purchase order from Request for quotation without origin"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_confirmpurchaseorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_draftpurchaseorder1"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_approvingpurchaseorder0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
@@ -164,7 +202,7 @@
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Purchase Invoice"""" name="name"/>
|
||||
<field eval=""""After Purchase order , Create invoice."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="account.process_node_draftinvoices0"/>
|
||||
<field model="process.node" name="target_node_id" ref="account.process_node_supplierdraftinvoices0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_purchaseorder0"/>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -1,161 +1,188 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
Process
|
||||
-->
|
||||
|
||||
|
||||
<record id="process_process_salesworkflow0" model="process.process">
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="'From the quotation to the delivery and invoices.'" name="note"/>
|
||||
<field eval="'Sales Workflow'" name="name"/>
|
||||
<field eval=""""Sales flow for services companies."""" name="note"/>
|
||||
<field eval=""""Sales Workflow"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
|
||||
<record id="process_node_order0" model="process.node">
|
||||
<field name="menu_id" ref="sale.menu_sale_order"/>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field eval="'subflow'" name="kind"/>
|
||||
<field eval="'Order'" name="name"/>
|
||||
<field eval="'After confirming order, Create the invoice.'" name="note"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Order"""" name="name"/>
|
||||
<field eval=""""After confirming order, Create the invoice."""" name="note"/>
|
||||
<field name="process_id" ref="account.process_process_invoiceworkflow0"/>
|
||||
<field name="subflow_id" ref="process_process_salesworkflow0"/>
|
||||
<field name="model_states">object.state=='draft'</field>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_node_saleorderprocurement0" model="process.node">
|
||||
<field name="menu_id" ref="sale.menu_sale_order"/>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field eval="'subflow'" name="kind"/>
|
||||
<field eval="'Sale Order Procurement'" name="name"/>
|
||||
<field eval="'Procurement for each line'" name="note"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Sale Order Procurement"""" name="name"/>
|
||||
<field eval=""""Procurement for each line"""" name="note"/>
|
||||
<field name="process_id" ref="mrp.process_process_procurementworkflow0"/>
|
||||
<field name="subflow_id" ref="process_process_salesworkflow0"/>
|
||||
<field name="model_states">object.state in ('draft','waiting_date','manual','progress','shipping_except','invoice_except','done','cancel')</field>
|
||||
<field eval=""""object.state in ('draft', 'waiting_date', 'manual', 'progress', 'shipping_except', 'invoice_except', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_node_quotation0" model="process.node">
|
||||
<field name="menu_id" ref="sale.menu_action_order_tree10"/>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field eval="'state'" name="kind"/>
|
||||
<field eval="'Quotation'" name="name"/>
|
||||
<field eval="'Quotations are sales order in draft state.'" name="note"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Ok"""" name="name"/>
|
||||
<field eval=""""Quotation (A sale order in draft state)"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_salesworkflow0"/>
|
||||
<field name="model_states">object.state=='draft'</field>
|
||||
<field eval="1" name="flow_start"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_saleorder0" model="process.node">
|
||||
<field name="menu_id" ref="sale.menu_action_order_tree9"/>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field eval="'Sale Order'" name="name"/>
|
||||
<field eval="'Confirmed by the customer.'" name="note"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Ok"""" name="name"/>
|
||||
<field eval=""""Ok"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_salesworkflow0"/>
|
||||
<field name="model_states">object.state in ('waiting_date','manual','progress')</field>
|
||||
<field eval=""""object.state=='manual'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_saleprocurement0" model="process.node">
|
||||
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
|
||||
<field name="model_id" ref="mrp.model_mrp_procurement"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Procurement"""" name="name"/>
|
||||
<field eval=""""One procurement for each product."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_salesworkflow0"/>
|
||||
<field eval=""""object.state=='confirmed'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_packinglist0" model="process.node">
|
||||
<field name="menu_id" ref="stock.menu_picking_waiting"/>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field eval="'Packing List'" name="name"/>
|
||||
<field eval="'The worker have to pack the requested products.'" name="note"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Outgoing Products"""" name="name"/>
|
||||
<field eval=""""Packing OUT is created for stockable products."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_salesworkflow0"/>
|
||||
<field name="model_states">object.state in ('assigned', 'confirmed')</field>
|
||||
<field eval=""""object.state in ('assigned', 'confirmed')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_deliveryorder0" model="process.node">
|
||||
<field name="menu_id" ref="stock.menu_picking_waiting_delivery"/>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field eval="'state'" name="kind"/>
|
||||
<field eval="'Delivery Order'" name="name"/>
|
||||
<field eval="'The delivery order document, when boxes leaves the warehouse.'" name="note"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Delivery Order"""" name="name"/>
|
||||
<field eval=""""Delivery, from the warehouse to the customer."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_salesworkflow0"/>
|
||||
<field name="model_states">object.state in ('done')</field>
|
||||
<field eval=""""object.state in ('done', 'assigned')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_invoice0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_invoice_draft"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval="'subflow'" name="kind"/>
|
||||
<field eval="'Invoice'" name="name"/>
|
||||
<field eval="'Invoice based on the sale order.'" name="note"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Draft Invoice"""" name="name"/>
|
||||
<field eval=""""Draft customer invoice, to be reviewed by accountant."""" name="note"/>
|
||||
<field name="process_id" ref="process_process_salesworkflow0"/>
|
||||
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_invoiceafterdelivery0" model="process.node">
|
||||
<field name="menu_id" ref="account.menu_invoice_draft"/>
|
||||
<field name="model_id" ref="account.model_account_invoice"/>
|
||||
<field eval="'subflow'" name="kind"/>
|
||||
<field eval="'Invoice on Packing'" name="name"/>
|
||||
<field eval="'In case you invoice based on packings'" name="note"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Draft Invoice"""" name="name"/>
|
||||
<field eval=""""Invoice based on packing lists"""" name="note"/>
|
||||
<field name="process_id" ref="process_process_salesworkflow0"/>
|
||||
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
Process Condition
|
||||
-->
|
||||
|
||||
<record id="process_condition_conditionafterdelivery0" model="process.condition">
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="node_id" ref="process_node_invoiceafterdelivery0"/>
|
||||
<field name="model_states">object.order_policy=='postpaid'</field>
|
||||
<field eval="'condition_after_delivery'" name="name"/>
|
||||
<field eval=""""object.order_policy=='postpaid'"""" name="model_states"/>
|
||||
<field eval=""""condition_after_delivery"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
|
||||
<record id="res_roles_salesman0" model="res.roles">
|
||||
<field eval="'Salesman'" name="name"/>
|
||||
<field eval=""""Salesman"""" name="name"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="sale.trans_draft_router" model="workflow.transition">
|
||||
<field name="role_id" ref="res_roles_salesman0"/>
|
||||
</record>
|
||||
|
||||
<record id="sale.trans_wait_invoice_invoice_manual" model="workflow.transition">
|
||||
|
||||
<record id="sale.trans_wait_invoice_invoice_manual" model="workflow.transition">
|
||||
<field name="role_id" ref="res_roles_salesman0"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_confirmquotation0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval="'Confirm Quotation'" name="name"/>
|
||||
<field eval="'Whenever confirm button is clicked, the draft state is moved to manual. that is, quotation is moved to sale order.'" name="note"/>
|
||||
<field eval=""""Confirm Quotation"""" name="name"/>
|
||||
<field eval=""""Whenever confirm button is clicked, the draft state is moved to manual. that is, quotation is moved to sale order."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_saleorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_quotation0"/>
|
||||
<field eval="[(6,0,[ref('sale.trans_draft_router')])]" name="transition_ids"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_packing0" model="process.transition">
|
||||
|
||||
<record id="process_transition_saleprocurement0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval="'Packing'" name="name"/>
|
||||
<field eval="'Packing list is created when the Assign button is being clicked after confirming the sale order. This transaction moves the sale order to packing list.'" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_packinglist0"/>
|
||||
<field eval=""""Sale Procurement"""" name="name"/>
|
||||
<field eval=""""Procurement is created after confirmation of sale order."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_saleprocurement0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_saleorder0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_packing0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Packing"""" name="name"/>
|
||||
<field eval=""""Packing list is created when 'Assign' is being clicked after confirming the sale order. This transaction moves the sale order to packing list."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_packinglist0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_saleprocurement0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_deliver0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval="'Deliver'" name="name"/>
|
||||
<field eval="'Confirming the packing list moves them to delivery order. This can be done by clicking on the Validate button.'" name="note"/>
|
||||
<field eval=""""Deliver"""" name="name"/>
|
||||
<field eval=""""Confirming the packing list moves them to delivery order. This can be done by clicking on 'Validate' button."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_deliveryorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_packinglist0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_invoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval="'Invoice'" name="name"/>
|
||||
<field eval="'Invoice is created when Create Invoice is being clicked after confirming the sale order. This transaction moves the sale order to invoices.'" name="note"/>
|
||||
<field eval=""""Invoice"""" name="name"/>
|
||||
<field eval=""""Invoice is created when 'Create Invoice' is being clicked after confirming the sale order. This transaction moves the sale order to invoices."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_invoice0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_saleorder0"/>
|
||||
<field eval="[(6,0,[ref('sale.trans_wait_invoice_invoice_manual')])]" name="transition_ids"/>
|
||||
@@ -163,103 +190,103 @@
|
||||
|
||||
<record id="process_transition_invoiceafterdelivery0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval="'Invoice after delivery'" name="name"/>
|
||||
<field eval="'When you select Shipping Ploicy = Automatic Invoice after delivery , it will automatic create after delivery.'" name="note"/>
|
||||
<field eval=""""Invoice after delivery"""" name="name"/>
|
||||
<field eval=""""When you select Shipping Ploicy = 'Automatic Invoice after delivery' , it will automatic create after delivery."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_invoiceafterdelivery0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_deliveryorder0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_packinglist0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_saleprocurement0" model="process.transition">
|
||||
|
||||
<record id="process_transition_saleorderprocurement0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval="'Sale Procurement'" name="name"/>
|
||||
<field eval="'In sale order , procuerement for each line and it comes into the procurement order'" name="note"/>
|
||||
<field eval=""""Sale Procurement"""" name="name"/>
|
||||
<field eval=""""In sale order , procuerement for each line and it comes into the procurement order"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="mrp.process_node_procureproducts0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_saleorderprocurement0"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_saleinvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval="'Sale Invoice'" name="name"/>
|
||||
<field eval="'Confirm sale order and Create invoice.'" name="note"/>
|
||||
<field eval=""""Sale Invoice"""" name="name"/>
|
||||
<field eval=""""Confirm sale order and Create invoice."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="account.process_node_draftinvoices0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_order0"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
Process Action
|
||||
-->
|
||||
|
||||
|
||||
<record id="process_transition_action_confirm0" model="process.transition.action">
|
||||
<field eval="'action_wait'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Confirm'" name="name"/>
|
||||
<field eval=""""action_wait"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Confirm"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_confirmquotation0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_cancel0" model="process.transition.action">
|
||||
<field eval="'action_cancel'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Cancel'" name="name"/>
|
||||
<field eval=""""action_cancel"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Cancel"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_confirmquotation0"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_action_assign0" model="process.transition.action">
|
||||
<field eval="'action_assign'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Assign'" name="name"/>
|
||||
<field eval=""""action_assign"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Assign"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_packing0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_forceassignation0" model="process.transition.action">
|
||||
<field eval="'force_assign'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Force Assignation'" name="name"/>
|
||||
<field eval=""""force_assign"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Force Assignation"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_packing0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_cancel1" model="process.transition.action">
|
||||
<field eval="'action_cancel'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Cancel'" name="name"/>
|
||||
<field eval=""""action_cancel"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Cancel"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_packing0"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_action_cancelassignation0" model="process.transition.action">
|
||||
<field eval="'cancel_assign'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Cancel Assignation'" name="name"/>
|
||||
<field eval=""""cancel_assign"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Cancel Assignation"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_deliver0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_validate0" model="process.transition.action">
|
||||
<field eval="'test_finnished'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Validate'" name="name"/>
|
||||
<field eval=""""test_finnished"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Validate"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_deliver0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_cancel2" model="process.transition.action">
|
||||
<field eval="'action_cancel'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Cancel'" name="name"/>
|
||||
<field eval=""""action_cancel"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Cancel"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_deliver0"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="process_transition_action_createinvoice0" model="process.transition.action">
|
||||
<field eval="'action_invoice_create'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Create Invoice'" name="name"/>
|
||||
<field eval=""""action_invoice_create"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Create Invoice"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_invoice0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_action_cancelorder0" model="process.transition.action">
|
||||
<field eval="'action_cancel'" name="action"/>
|
||||
<field eval="'object'" name="state"/>
|
||||
<field eval="'Cancel Order'" name="name"/>
|
||||
|
||||
<record id="process_transition_action_cancelorder0" model="process.transition.action">
|
||||
<field eval=""""action_cancel"""" name="action"/>
|
||||
<field eval=""""object"""" name="state"/>
|
||||
<field eval=""""Cancel Order"""" name="name"/>
|
||||
<field name="transition_id" ref="process_transition_invoice0"/>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
<field name="user_id"/>
|
||||
<field name="order_policy"/>
|
||||
<field groups="base.group_extended" name="origin"/>
|
||||
<field groups="base.group_extended" name="invoice_quantity" attrs="{'readonly':[('order_policy','=','picking')]}"/>
|
||||
<field groups="base.group_extended" name="invoice_quantity" attrs="{'readonly':[('order_policy','=','prepaid')]}"/>
|
||||
<field name="payment_term"/>
|
||||
<separator colspan="4" string="Notes"/>
|
||||
<field colspan="4" name="note" nolabel="1"/>
|
||||
|
||||
@@ -2,25 +2,55 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="process_node_contractsale0" model="process.node">
|
||||
<field name="menu_id" ref="sale.menu_sale_order"/>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Contract Sale"""" name="name"/>
|
||||
<field eval=""""Contract Command (sale)"""" name="note"/>
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
<record id="process_node_crmquotation0" model="process.node">
|
||||
<field name="menu_id" ref="sale.menu_action_order_tree10"/>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Quotation"""" name="name"/>
|
||||
<field eval=""""Convert opportunity to quotation"""" name="note"/>
|
||||
<field name="process_id" ref="crm_configuration.process_process_contractworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'manual', 'waiting_date', 'progress', 'shipping_except', 'invoice_except', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="0" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_accordsale0" model="process.transition">
|
||||
<record id="process_node_crmopportunity0" model="process.node">
|
||||
<field name="menu_id" ref="crm_configuration.menu_crm_case_categ0_act_oppor11"/>
|
||||
<field name="model_id" ref="crm.model_crm_case"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""CRM Opportunity"""" name="name"/>
|
||||
<field eval=""""The CRM Opportunity can lead to a quotation."""" name="note"/>
|
||||
<field name="process_id" ref="sale.process_process_salesworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'done', 'cancel')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
<record id="process_transition_crmopportunityquotation" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Accord Sale"""" name="name"/>
|
||||
<field eval=""""Goes into the Sale"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_contractsale0"/>
|
||||
<field model="process.node" name="source_node_id" ref="crm_configuration.process_node_accord0"/>
|
||||
<field eval=""""Crm opportunity quotation"""" name="name"/>
|
||||
<field eval=""""Opportunity goes into the quotation"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="sale.process_node_quotation0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_crmopportunity0"/>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<record id="process_transition_opportunityquotation0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Opportunity Quotation"""" name="name"/>
|
||||
<field eval=""""Opportunity convert into quotation"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="process_node_crmquotation0"/>
|
||||
<field model="process.node" name="source_node_id" ref="crm_configuration.process_node_opportunities0"/>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -42,6 +42,7 @@
|
||||
"report_stock_view.xml",
|
||||
"security/stock_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"process/stock_process.xml"
|
||||
],
|
||||
"active": False,
|
||||
"installable": True
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="process_node_packinginvoice0" model="process.node">
|
||||
<field name="menu_id" ref="stock.menu_picking_waiting"/>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Out Packing"""" name="name"/>
|
||||
<field eval=""""Invoice based on deliveries"""" name="note"/>
|
||||
<field name="process_id" ref="account.process_process_invoiceworkflow0"/>
|
||||
<field eval=""""object.state in ('assigned', 'confirmed')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_node_productrecept0" model="process.node">
|
||||
<field name="menu_id" ref="stock.menu_picking_waiting"/>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field eval=""""subflow"""" name="kind"/>
|
||||
<field eval=""""Product Recept"""" name="name"/>
|
||||
<field eval=""""Control invoices on receptions"""" name="note"/>
|
||||
<field name="process_id" ref="account.process_process_supplierinvoiceworkflow0"/>
|
||||
<field eval=""""object.state in ('draft', 'open', 'pending', 'close')"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_productrecept0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Product recept invoice"""" name="name"/>
|
||||
<field eval=""""Create invoice from product recept"""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="account.process_node_supplierdraftinvoices0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_productrecept0"/>
|
||||
</record>
|
||||
|
||||
<record id="process_transition_packinginvoice0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
<field eval=""""Packing Invoice"""" name="name"/>
|
||||
<field eval=""""From Packing list, Create invoice."""" name="note"/>
|
||||
<field model="process.node" name="target_node_id" ref="account.process_node_draftinvoices0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_packinginvoice0"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -101,7 +101,7 @@ class stock_location(osv.osv):
|
||||
'child_ids': fields.one2many('stock.location', 'location_id', 'Contains'),
|
||||
|
||||
'chained_location_id': fields.many2one('stock.location', 'Chained Location If Fixed'),
|
||||
'chained_location_type': fields.selection([('','None'),('customer', 'Customer'),('fixed','Fixed Location')],
|
||||
'chained_location_type': fields.selection([('none','None'),('customer', 'Customer'),('fixed','Fixed Location')],
|
||||
'Chained Location Type', required=True),
|
||||
'chained_auto_packing': fields.selection(
|
||||
[('auto','Automatic Move'), ('manual','Manual Operation'),('transparent','Automatic No Step Added')],
|
||||
@@ -128,7 +128,7 @@ class stock_location(osv.osv):
|
||||
'active': lambda *a: 1,
|
||||
'usage': lambda *a: 'internal',
|
||||
'allocation_method': lambda *a: 'fifo',
|
||||
'chained_location_type': lambda *a: '',
|
||||
'chained_location_type': lambda *a: 'none',
|
||||
'chained_auto_packing': lambda *a: 'manual',
|
||||
'posx': lambda *a: 0,
|
||||
'posy': lambda *a: 0,
|
||||
|
||||
@@ -492,7 +492,7 @@
|
||||
<field name="priority" eval="2"/>
|
||||
<field name="arch" type="xml">
|
||||
<calendar string="Calendar View" date_start="min_date" date_stop="max_date" color="address_id">
|
||||
<field name="name"/>
|
||||
<field name="origin"/>
|
||||
<field name="type"/>
|
||||
<field name="address_id"/>
|
||||
</calendar>
|
||||
@@ -804,8 +804,8 @@
|
||||
<form string="Packing list">
|
||||
<group col="6" colspan="4">
|
||||
<field name="address_id" select="2"/>
|
||||
<field name="name" select="1" readonly="1"/>
|
||||
<field name="min_date" select="2"/>
|
||||
<field name="name" select="1" readonly="1"/>
|
||||
<field name="invoice_state"/>
|
||||
<field name="backorder_id" select="2" readonly="1"/>
|
||||
<field name="origin" select="2" readonly="1"/>
|
||||
@@ -1217,16 +1217,16 @@
|
||||
<field name="location_id" select="1"/>
|
||||
<field name="location_dest_id" select="1"/>
|
||||
<field colspan="4" name="product_id" select="1"/>
|
||||
<field name="product_qty" select="1"/>
|
||||
<field name="product_uom" select="1"/>
|
||||
<field colspan="4" name="name" select="1"/>
|
||||
<field name="product_qty" select="2"/>
|
||||
<field name="product_uom" select="2"/>
|
||||
<field colspan="4" name="name" select="2"/>
|
||||
<field name="date"/>
|
||||
<field name="date_planned"/>
|
||||
<field name="priority"/>
|
||||
<field name="address_id" select="1" context="{'context_display':'partner'}"/>
|
||||
<field name="address_id" select="2" context="{'context_display':'partner'}"/>
|
||||
<newline/>
|
||||
<field name="prodlot_id" select="1" context="{'location_id':location_id, 'product_id':product_id}" domain="[('product_id','=',product_id)]" on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
|
||||
<field name="tracking_id" select="1"/>
|
||||
<field name="prodlot_id" select="2" context="{'location_id':location_id, 'product_id':product_id}" domain="[('product_id','=',product_id)]" on_change="onchange_lot_id(prodlot_id,product_qty, location_id)"/>
|
||||
<field name="tracking_id" select="2"/>
|
||||
<field name="picking_id"/>
|
||||
<newline/>
|
||||
<label/>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"version" : "1.0",
|
||||
"author" : "Tiny",
|
||||
"website" : "http://tinyerp.com/module_sale.html",
|
||||
"depends" : ["delivery"],
|
||||
"depends" : ["delivery", "stock"],
|
||||
"category" : "Generic Modules/Sales & Purchases",
|
||||
"description": """
|
||||
When you send or deliver goods, this module automatically launch
|
||||
|
||||
Reference in New Issue
Block a user