[MERGE]: Merge with lp:openobject-trunk-dev-addons2
bzr revid: ksa@tinyerp.co.in-20101013133522-7zysi31o1bcc3yni
This commit is contained in:
@@ -45,7 +45,7 @@
|
||||
<field name="account_type"/>
|
||||
<field name="currency_id" widget="selection" groups="base.group_extended"/>
|
||||
</form>
|
||||
<tree editable="bottom" string="">
|
||||
<tree editable="bottom" string="Your bank and cash accounts">
|
||||
<field name="acc_name"/>
|
||||
<field name="account_type"/>
|
||||
<field name="currency_id" widget="selection" groups="base.group_extended"/>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
Invoices
|
||||
-->
|
||||
@@ -209,8 +208,8 @@
|
||||
<field name="state"/>
|
||||
<field name="residual"/>
|
||||
<group col="6" colspan="4">
|
||||
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
|
||||
<button name="invoice_cancel" states="draft,proforma2,sale,open" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
|
||||
<button name="%(action_account_invoice_refund)d" type='action' string='Refund' states='open,paid' icon="gtk-execute"/>
|
||||
<button name="%(action_account_state_open)d" type='action' string='Re-Open' states='paid' icon="gtk-convert" groups="base.group_no_one"/>
|
||||
<button name="invoice_open" states="draft,proforma2" string="Approve" icon="terp-camera_test"/>
|
||||
@@ -434,6 +433,7 @@
|
||||
<field name="help">Most of customer invoices are automatically generated in draft mode by OpenERP flows, following a purchase order for instance. Review, confirm or cancel, pay or refund your customers' invoices here. A manual invoice can be created here.</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_invoice_tree1_view1" model="ir.actions.act_window.view">
|
||||
<field eval="1" name="sequence"/>
|
||||
<field name="view_mode">tree</field>
|
||||
@@ -446,6 +446,7 @@
|
||||
<field name="view_id" ref="invoice_form"/>
|
||||
<field name="act_window_id" ref="action_invoice_tree1"/>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_invoice_tree1" id="menu_action_invoice_tree1" parent="menu_finance_receivables"/>
|
||||
|
||||
<record id="action_invoice_tree2" model="ir.actions.act_window">
|
||||
|
||||
@@ -480,8 +480,8 @@
|
||||
<field name="balance_end_real"/>
|
||||
<field name="balance_end" invisible="1"/>
|
||||
<field name="state"/>
|
||||
<button type="object" string="Confirm" name="button_confirm_bank" states="draft" icon="terp-camera_test"/>
|
||||
<button type="object" string="Cancel" name="button_cancel" states="confirm" icon="gtk-cancel"/>
|
||||
<button type="object" string="Confirm" name="button_confirm_bank" states="draft" icon="terp-camera_test"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -562,9 +562,9 @@
|
||||
<group col="8" colspan="4">
|
||||
<field name="state"/>
|
||||
<field name="balance_end"/>
|
||||
<button name="button_cancel" states="confirm" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
<button name="button_dummy" states="draft" string="Compute" type="object" icon="terp-stock_format-scientific"/>
|
||||
<button name="button_confirm_bank" states="draft" string="Confirm" type="object" icon="terp-camera_test"/>
|
||||
<button name="button_cancel" states="confirm" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
@@ -594,9 +594,9 @@
|
||||
<group col="8" colspan="4">
|
||||
<field name="state"/>
|
||||
<field name="balance_end"/>
|
||||
<button name="button_cancel" states="confirm" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
<button name="button_dummy" states="draft" string="Compute" type="object" icon="terp-stock_format-scientific"/>
|
||||
<button name="button_confirm_bank" states="draft" string="Confirm" type="object" icon="terp-camera_test"/>
|
||||
<button name="button_cancel" states="confirm" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
@@ -1331,8 +1331,8 @@
|
||||
<field name="narration" colspan="4" nolabel="1" height="50"/>
|
||||
<group col="4" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button name="button_validate" states="draft" string="Approve" type="object" icon="terp-camera_test"/>
|
||||
<button name="button_cancel" states="posted" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
<button name="button_validate" states="draft" string="Approve" type="object" icon="terp-camera_test"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
@@ -1482,9 +1482,9 @@
|
||||
<group col="7" colspan="4">
|
||||
<field name="state"/>
|
||||
<field name="balance_end"/>
|
||||
<button name="button_cancel" states="confirm" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
<button name="button_dummy" states="draft" string="Compute" icon="terp-stock_format-scientific"/>
|
||||
<button name="button_confirm" states="draft" string="Confirm" type="object" icon="terp-camera_test"/>
|
||||
<button name="button_cancel" states="confirm" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
@@ -2467,9 +2467,9 @@
|
||||
<field name="balance_end_real"/>
|
||||
<field name="balance_end"/>
|
||||
<field name="state"/>
|
||||
<button type="object" string="Cancel" name="button_cancel" states="confirm" icon="gtk-cancel"/>
|
||||
<button type="object" string="Open" name="button_open" states="draft" icon="terp-camera_test"/>
|
||||
<button type="object" string="Confirm" name="button_confirm_bank" states="open" icon="terp-gtk-go-back-rtl"/>
|
||||
<button type="object" string="Cancel" name="button_cancel" states="confirm" icon="gtk-cancel"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -2569,9 +2569,9 @@
|
||||
</group>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" colspan="4"/>
|
||||
<button name="button_cancel" states="confirm,open" string="Cancel" icon="terp-gtk-stop" type="object" groups="base.group_extended"/>
|
||||
<button name="button_confirm_cash" states="open" string="Close CashBox" icon="terp-dialog-close" type="object"/>
|
||||
<button name="button_open" states="draft" string="Open CashBox" icon="terp-document-new" type="object"/>
|
||||
<button name="button_cancel" states="confirm,open" string="Cancel" icon="terp-gtk-stop" type="object" groups="base.group_extended"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -58,8 +58,7 @@
|
||||
<newline/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
|
||||
<filter string="Partner" icon="terp-personal" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Account" name="Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>
|
||||
<filter string="General Account" icon="terp-folder-green" context="{'group_by':'general_account_id'}"/>
|
||||
@@ -67,6 +66,8 @@
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
|
||||
<filter string="Product UOM" icon="terp-mrp" context="{'group_by':'product_uom_id'}"/>
|
||||
<separator orientation="vertical" groups="base.group_multi_company"/>
|
||||
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Day" icon="terp-go-today" context="{'group_by':'day'}"/>
|
||||
<filter string="Month" name="Month" icon="terp-go-month" context="{'group_by':'month'}"/>
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
<form string="Cancel Selected Invoices">
|
||||
<separator string="Cancel Selected Invoices" colspan="4"/>
|
||||
<group colspan="4" col="6">
|
||||
<button icon="terp-dialog-close" special="cancel" string="Close"/>
|
||||
<button icon="gtk-cancel" string="Cancel Invoices" name="invoice_cancel" type="object" default_focus="1"/>
|
||||
<button icon="terp-dialog-close" special="cancel" string="Close"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -147,10 +147,10 @@
|
||||
</field>
|
||||
<field name="state" select="1"/>
|
||||
<group col="4" colspan="2">
|
||||
<button string="Cancel" name="cancel" states="confirm,validate" type="workflow" icon="gtk-cancel"/>
|
||||
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-apply" />
|
||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-ok"/>
|
||||
<button string="Done" name="done" states="validate" type="workflow" icon="gtk-jump-to" />
|
||||
<button string="Cancel" name="cancel" states="confirm,validate" type="workflow" icon="gtk-cancel"/>
|
||||
<button name="draft" states="cancel" string="Reset to Draft" type="workflow" icon="terp-stock_effects-object-colorize"/>
|
||||
</group>
|
||||
|
||||
|
||||
@@ -77,9 +77,9 @@
|
||||
<group col="10" colspan="4">
|
||||
<field name="state"/>
|
||||
<button name="cancel_voucher" string="Cancel" states="draft,proforma" icon="gtk-cancel"/>
|
||||
<button name="cancel_voucher" string="Cancel" type="object" states="posted" icon="terp-stock_effects-object-colorize" confirm="Are you sure to unreconcile this record ?"/>
|
||||
<button name="proforma_voucher" string="Post" states="draft" icon="terp-camera_test"/>
|
||||
<button name="action_cancel_draft" type="object" states="cancel" string="Set to Draft" icon="terp-stock_effects-object-colorize"/>
|
||||
<button name="cancel_voucher" string="Cancel" type="object" states="posted" icon="terp-stock_effects-object-colorize" confirm="Are you sure to unreconcile this record ?"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -187,7 +187,7 @@ class account_analytic_account(osv.osv):
|
||||
'credit': fields.function(_credit_calc, method=True, type='float', string='Credit'),
|
||||
'quantity': fields.function(_quantity_calc, method=True, type='float', string='Quantity'),
|
||||
'quantity_max': fields.float('Maximum Quantity', help='Sets the higher limit of quantity of hours.'),
|
||||
'partner_id': fields.many2one('res.partner', 'Associated Partner'),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||
'contact_id': fields.many2one('res.partner.address', 'Contact'),
|
||||
'user_id': fields.many2one('res.users', 'Account Manager'),
|
||||
'date_start': fields.date('Date Start'),
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
</group>
|
||||
<separator string="" colspan="4"/>
|
||||
<field name="state"/>
|
||||
<button name="close" states="draft" string="Create Invoices" type="object" colspan="2" icon="gtk-yes"/>
|
||||
<button name="close" states="draft" string="Create Invoices" type="object" colspan="2" icon="terp-gtk-go-back-rtl"/>
|
||||
</page>
|
||||
<page string="Accounting" >
|
||||
<group colspan="4" col="4">
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<group colspan="4" col="6">
|
||||
<label string=" " colspan="2"/>
|
||||
<button icon="gtk-close" special="cancel" string="Close"/>
|
||||
<button icon="gtk-yes" string="Create invoices" name="makeInvoices" type="object"/>
|
||||
<button icon="terp-gtk-go-back-rtl" string="Create invoices" name="makeInvoices" type="object"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<group colspan="2" col="2"/>
|
||||
<group colspan="2" col="2">
|
||||
<button icon="gtk-close" special="cancel" string="Close"/>
|
||||
<button icon="gtk-yes" string="Create invoices" name="makeInvoices" type="object"/>
|
||||
<button icon="terp-gtk-go-back-rtl" string="Create invoices" name="makeInvoices" type="object"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -313,6 +313,11 @@
|
||||
<separator colspan="4" string="" />
|
||||
<group col="5" colspan="4">
|
||||
<field name="state" select="2" />
|
||||
<button name="do_cancel"
|
||||
string="Cancel"
|
||||
states="tentative,confirmed"
|
||||
type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="do_tentative"
|
||||
states="confirmed,cancelled"
|
||||
string="Uncertain"
|
||||
@@ -323,11 +328,6 @@
|
||||
states="tentative,cancelled"
|
||||
type="object"
|
||||
icon="gtk-apply" />
|
||||
<button name="do_cancel"
|
||||
string="Cancel"
|
||||
states="tentative,confirmed"
|
||||
type="object"
|
||||
icon="gtk-cancel" />
|
||||
</group>
|
||||
</page>
|
||||
<page string="Invitation Detail">
|
||||
@@ -475,7 +475,7 @@
|
||||
<separator orientation="vertical" />
|
||||
<filter string="Date" icon="terp-go-month"
|
||||
domain="[]" context="{'group_by':'date'}" />
|
||||
|
||||
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -157,6 +157,8 @@
|
||||
name="Sales Dashboard" parent="board.menu_dasboard"
|
||||
action="open_board_crm"
|
||||
sequence="1"
|
||||
id="menu_board_crm" icon="terp-graph"/>
|
||||
id="menu_board_crm" icon="terp-graph"
|
||||
groups="base.group_sale_salesman"/>
|
||||
<menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="0" groups="base.group_sale_salesman,base.group_sale_manager,base.group_system,base.group_partner_manager" action="open_board_crm"/>
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<field name="date" string="Start Date" required="1"
|
||||
on_change="onchange_dates(date,duration,False,allday)" />
|
||||
<field name="duration" widget="float_time"
|
||||
on_change="onchange_dates(date,duration,False,allday)" />
|
||||
on_change="onchange_dates(date,duration,False,allday)" readonly="1" />
|
||||
<field name="date_deadline" string="End Date" required="1"
|
||||
on_change="onchange_dates(date,False,date_deadline)" />
|
||||
<field name="location" />
|
||||
@@ -244,6 +244,9 @@
|
||||
<field name="state" groups="base.group_extended"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="show_as" invisible="1" string="Show time as"/>
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_reset" string="Reset to Unconfirmed"
|
||||
states="open,done,cancel" type="object"
|
||||
icon="gtk-convert" />
|
||||
@@ -253,9 +256,6 @@
|
||||
<button name="case_close" string="Done"
|
||||
states="open" type="object"
|
||||
icon="gtk-jump-to" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open" type="object"
|
||||
icon="gtk-cancel" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -41,10 +41,10 @@
|
||||
states="draft,open,pending" icon="gtk-redo"
|
||||
name="action_make_meeting" type="object" />
|
||||
<field name="state"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_close" string="Held" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -106,6 +106,9 @@
|
||||
<separator colspan="4" />
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="1" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
@@ -117,9 +120,6 @@
|
||||
<button name="case_reset" string="Reset to Draft"
|
||||
states="done,cancel" type="object"
|
||||
icon="gtk-convert" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
invisible="context.get('invisible_section', True)" />
|
||||
<field name="user_id" />
|
||||
<field name="state" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
@@ -39,9 +42,6 @@
|
||||
<button name="case_escalate" string="Escalate"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-go-up" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
</tree>
|
||||
</field>
|
||||
<field name="meeting_ids" colspan="4" nolabel="1" context="{'default_partner_id': active_id}">
|
||||
@@ -59,10 +59,10 @@
|
||||
<field name="categ_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="state"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_close" string="Held" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
|
||||
@@ -53,6 +53,9 @@
|
||||
<field name="categ_id" string="Type" select="1"/>
|
||||
<field name="stage_id" invisible="1"/>
|
||||
<field name="state"/>
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
@@ -62,9 +65,6 @@
|
||||
<button name="case_close" string="Close"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-close" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_reset" string="Reset to Draft"
|
||||
states="done,cancel" type="object" icon="gtk-convert" />
|
||||
</tree>
|
||||
@@ -129,6 +129,9 @@
|
||||
<separator colspan="4" string=""/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
@@ -138,9 +141,6 @@
|
||||
<button name="case_close" string="Done"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-jump-to" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_reset"
|
||||
string="Reset to Draft" states="done,cancel"
|
||||
type="object" icon="gtk-convert" />
|
||||
|
||||
@@ -54,6 +54,9 @@
|
||||
<field name="user_id" />
|
||||
<field name="state" />
|
||||
<field name="partner_id" invisible="1"/>
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
@@ -66,9 +69,6 @@
|
||||
<button name="case_close" string="Done"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-close" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_reset" string="Reset to Draft"
|
||||
states="done,cancel" type="object" icon="gtk-convert" />
|
||||
</tree>
|
||||
@@ -115,6 +115,9 @@
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state"/>
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
@@ -128,9 +131,6 @@
|
||||
<button name="case_close" string="Done"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-close" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_reset"
|
||||
string="Reset to Draft" states="done,cancel"
|
||||
type="object" icon="gtk-convert" />
|
||||
|
||||
@@ -69,6 +69,9 @@
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button name="case_cancel"
|
||||
states="draft,open,pending" string="Cancel"
|
||||
type="object" icon="gtk-cancel" />
|
||||
<button name="case_open"
|
||||
states="draft,pending" string="Open"
|
||||
type="object" icon="gtk-go-forward" />
|
||||
@@ -82,9 +85,6 @@
|
||||
<button name="case_close"
|
||||
states="open,draft,pending" string="Close"
|
||||
type="object" icon="gtk-jump-to" />
|
||||
<button name="case_cancel"
|
||||
states="draft,open,pending" string="Cancel"
|
||||
type="object" icon="gtk-cancel" />
|
||||
<button name="case_reset"
|
||||
states="done,cancel"
|
||||
string="Reset to Draft" type="object"
|
||||
@@ -187,6 +187,9 @@
|
||||
<field name="section_id"/>
|
||||
<field name="priority"/>
|
||||
<field name="state"/>
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
@@ -200,9 +203,6 @@
|
||||
<button name="case_close" string="Done"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-close" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_reset" string="Reset to Draft"
|
||||
states="done,cancel" type="object" icon="gtk-convert" />
|
||||
</tree>
|
||||
|
||||
@@ -100,6 +100,9 @@
|
||||
invisible="context.get('invisible_section', True)" />
|
||||
<field name="user_id" />
|
||||
<field name="state" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
@@ -113,9 +116,6 @@
|
||||
<button name="case_escalate" string="Escalate"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-go-up" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
|
||||
@@ -16,9 +16,7 @@
|
||||
<action
|
||||
string="New Files"
|
||||
name="%(document.action_view_all_document_tree1)d"
|
||||
view_mode="tree"
|
||||
domain="[('name','=',time.strftime('%%Y')),('month','=',time.strftime('%%m'))]"/>
|
||||
|
||||
view_mode="tree,form"/>
|
||||
<action
|
||||
string="File Size by Month"
|
||||
name="%(document.action_view_size_month)d"
|
||||
@@ -28,7 +26,8 @@
|
||||
<action
|
||||
string="Files by Resource Type"
|
||||
name="%(document.action_view_document_by_resourcetype_graph)d"
|
||||
view_mode="graph,tree"/>
|
||||
view_mode="graph,tree"
|
||||
/>
|
||||
|
||||
<action
|
||||
string="Files by Partner"
|
||||
|
||||
@@ -95,6 +95,7 @@ class document_file(osv.osv):
|
||||
# fields used for file storage
|
||||
'store_fname': fields.char('Stored Filename', size=200),
|
||||
}
|
||||
_order = "create_date desc"
|
||||
|
||||
def __get_def_directory(self, cr, uid, context=None):
|
||||
dirobj = self.pool.get('document.directory')
|
||||
|
||||
@@ -29,7 +29,7 @@ from tools.translate import _
|
||||
class document_directory(osv.osv):
|
||||
_name = 'document.directory'
|
||||
_description = 'Directory'
|
||||
_order = 'name desc'
|
||||
_order = 'name'
|
||||
_columns = {
|
||||
'name': fields.char('Name', size=64, required=True, select=1),
|
||||
'write_date': fields.datetime('Date Modified', readonly=True),
|
||||
@@ -49,8 +49,7 @@ class document_directory(osv.osv):
|
||||
('ressource','Folders per resource'),
|
||||
],
|
||||
'Type', required=True, select=1,
|
||||
help="Defines directory's behaviour."),
|
||||
|
||||
help="Each directory can either have the type Static or be linked to another resource. A static directory, as with Operating Systems, is the classic directory that can contain a set of files. The directories linked to systems resources automatically possess sub-directories for each of resource types defined in the parent directory."),
|
||||
'ressource_type_id': fields.many2one('ir.model', 'Resource model',
|
||||
help="Select an object here and there will be one folder per record of that resource."),
|
||||
'resource_field': fields.many2one('ir.model.fields', 'Name field', help='Field to be used as name on resource directories. If empty, the "name" will be used.'),
|
||||
@@ -197,6 +196,7 @@ class document_directory(osv.osv):
|
||||
Return a tuple (node_dir, remaining_path)
|
||||
"""
|
||||
return (nodes.node_database(context=ncontext), uri)
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
if not default:
|
||||
default ={}
|
||||
|
||||
@@ -148,6 +148,7 @@
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="user_id"/>
|
||||
<field name="storage_id"/>
|
||||
<field name="create_date"/>
|
||||
<field name="write_date"/>
|
||||
</tree>
|
||||
@@ -291,7 +292,7 @@
|
||||
<field name="parent_id" />
|
||||
<field name="user_id">
|
||||
<filter icon="terp-personal"
|
||||
domain="[('user_id','=', False)]"
|
||||
domain="[('user_id','=',uid)]"
|
||||
help="Filter on my documents" />
|
||||
</field>
|
||||
<field name="partner_id"/>
|
||||
@@ -333,7 +334,7 @@
|
||||
<field name="res_model">ir.attachment</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="search_view_id" ref="view_attach_filter"/>
|
||||
<field name="help">Documents give your access to all attached documents; it's a repository of all attached documents (mails, documents attached to a project, etc.)</field>
|
||||
<field name="help">The Documents repository gives you access to all attachments, such as mails, project documents, invoices etc.</field>
|
||||
</record>
|
||||
<menuitem name="Documents" id="menu_document_doc" parent="knowledge.menu_document" sequence="0"/>
|
||||
<menuitem
|
||||
@@ -403,12 +404,11 @@
|
||||
src_model="res.partner"
|
||||
groups="base.group_extended"/>
|
||||
|
||||
<act_window
|
||||
context="{'search_default_parent_id': [active_id]}"
|
||||
id="zoom_directory" name="Related Documents"
|
||||
<act_window
|
||||
domain="[('parent_id', '=', active_id)]"
|
||||
id="zoom_directory" name="Related Documents"
|
||||
res_model="ir.attachment"
|
||||
src_model="document.directory"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ class report_document_user(osv.osv):
|
||||
'user_id':fields.integer('Owner', readonly=True),
|
||||
'user':fields.char('User',size=64,readonly=True),
|
||||
'directory': fields.char('Directory',size=64,readonly=True),
|
||||
'datas_fname': fields.char('File Name',size=64,readonly=True),
|
||||
'create_date': fields.datetime('Date Created', readonly=True),
|
||||
'change_date': fields.datetime('Modified Date', readonly=True),
|
||||
'file_size': fields.integer('File Size', readonly=True),
|
||||
@@ -52,6 +53,7 @@ class report_document_user(osv.osv):
|
||||
u.name as user,
|
||||
count(*) as nbr,
|
||||
d.name as directory,
|
||||
f.datas_fname as datas_fname,
|
||||
f.create_date as create_date,
|
||||
f.file_size as file_size,
|
||||
min(d.type) as type,
|
||||
@@ -59,11 +61,13 @@ class report_document_user(osv.osv):
|
||||
FROM ir_attachment f
|
||||
left join document_directory d on (f.parent_id=d.id and d.name<>'')
|
||||
inner join res_users u on (f.user_id=u.id)
|
||||
group by to_char(f.create_date, 'YYYY'), to_char(f.create_date, 'MM'),d.name,f.parent_id,d.type,f.create_date,f.user_id,f.file_size,u.name,d.type,f.write_date
|
||||
group by to_char(f.create_date, 'YYYY'), to_char(f.create_date, 'MM'),d.name,f.parent_id,d.type,f.create_date,f.user_id,f.file_size,u.name,d.type,f.write_date,f.datas_fname
|
||||
)
|
||||
""")
|
||||
report_document_user()
|
||||
|
||||
|
||||
|
||||
class report_files_partner(osv.osv):
|
||||
_name = "report.files.partner"
|
||||
_description = "Files details by Partners"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<field name="name" select="1"/>
|
||||
<field name="user" select="1"/>
|
||||
<field name="directory" select="1"/>
|
||||
<field name="datas_fname" select="1"/>
|
||||
<field name="file_size"/>
|
||||
<field name="create_date"/>
|
||||
</form>
|
||||
@@ -25,10 +26,11 @@
|
||||
<tree string="Files">
|
||||
<field name="name" select="1"/>
|
||||
<field name="month" select="1"/>
|
||||
<field name="user" select="1"/>
|
||||
<field name="directory" select="1"/>
|
||||
<field name="file_size"/>
|
||||
<field name="create_date"/>
|
||||
<field name="user" select="1" invisible="1"/>
|
||||
<field name="directory" select="1" invisible="1"/>
|
||||
<field name="file_size" invisible="1"/>
|
||||
<field name="create_date" invisible="1"/>
|
||||
<field name="nbr"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -60,8 +62,8 @@
|
||||
<field name="name">All Users files</field>
|
||||
<field name="res_model">report.document.user</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="context">{'search_default_user': 'user_id'}</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{'group_by': ['name','month']}</field>
|
||||
<field name="search_view_id" ref="view_report_document_user_search"/>
|
||||
</record>
|
||||
|
||||
@@ -112,30 +114,18 @@
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Files by Resource Type" type="pie">
|
||||
<field name="type" />
|
||||
<!-- <field name="file_size" operator="+"/>-->
|
||||
<field name="nbr" operator="+"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- <record model="ir.ui.view" id="view_document_by_resourcetype_tree">-->
|
||||
<!-- <field name="name">report.document.resource.tree.view</field>-->
|
||||
<!-- <field name="model">report.document.user</field>-->
|
||||
<!-- <field name="type">tree</field>-->
|
||||
<!-- <field name="arch" type="xml">-->
|
||||
<!-- <tree string="Files by Resource Type">-->
|
||||
<!-- <field name="type" />-->
|
||||
<!-- <field name="nbr"/>-->
|
||||
<!-- </tree>-->
|
||||
<!-- </field>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<record model="ir.actions.act_window" id="action_view_document_by_resourcetype_graph">
|
||||
<field name="name">Files by Resource Type</field>
|
||||
<field name="res_model">report.document.user</field>
|
||||
<field name="view_id" ref="view_document_by_resourcetype_graph"></field>
|
||||
<field name="view_id" ref="view_document_by_resourcetype_graph"/>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_mode">graph,tree</field>
|
||||
</record>
|
||||
|
||||
<!--***************************************************************************************-->
|
||||
@@ -150,7 +140,7 @@
|
||||
<field name="file_size" operator="+"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_size_month_tree">
|
||||
<field name="name">report.document.user.tree</field>
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
!python {model: ir.attachment}: |
|
||||
from document_ftp import test_easyftp as te
|
||||
ftp = te.get_ftp_folder(cr, uid, self, 'Documents')
|
||||
ftp.mkd("Test-Folder2")
|
||||
ftp.mkd("Test-Folder3")
|
||||
# TODO move
|
||||
-
|
||||
I remove the 'Test-Folder3'
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Browse Document">
|
||||
<separator string="Browse Document" colspan="4"/>
|
||||
<field name="url" widget="url" colspan="4"/>
|
||||
<field name="url" widget="url" colspan="4" width="250"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="4" colspan="4">
|
||||
<label string="" colspan="2"/>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
name="Human Resources"
|
||||
parent="base.dashboard"/>
|
||||
|
||||
<!-- This board view will be complete by other hr_* modules-->
|
||||
<!-- This board view will be complete by other hr_* modules-->
|
||||
<record id="board_hr_form" model="ir.ui.view">
|
||||
<field name="name">board.hr.form</field>
|
||||
<field name="model">board.board</field>
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@ class hr_job(osv.osv):
|
||||
'requirements': fields.text('Requirements'),
|
||||
'department_id': fields.many2one('hr.department', 'Department'),
|
||||
'company_id': fields.many2one('res.company', 'Company'),
|
||||
'state': fields.selection([('open', 'Open'),('old', 'Old'),('recruit', 'In Recruitement')], 'State', readonly=True, required=True),
|
||||
'state': fields.selection([('open', 'In Position'),('old', 'Old'),('recruit', 'In Recruitement')], 'State', readonly=True, required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'expected_employees': 1,
|
||||
|
||||
@@ -16,5 +16,10 @@
|
||||
<field name="name">Widower</field>
|
||||
</record>
|
||||
|
||||
<record id="employee" model="hr.employee">
|
||||
<field name="name">Administrator</field>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -340,10 +340,10 @@
|
||||
</page>
|
||||
</notebook>
|
||||
<group col="6" colspan="4">
|
||||
<field name="state"/>
|
||||
<button name="job_recruitement" string="In Recruitement" states="open" type="object" icon="gtk-go-forward"/>
|
||||
<button name="job_open" string="Open" states="old,recruit" type="object" icon="terp-camera_test"/>
|
||||
<button name="job_old" string="Old" states="open,recruit" type="object" icon="gtk-cancel"/>
|
||||
<field name="state"/>
|
||||
<button name="job_recruitement" string="In Recruitement" states="open" type="object" icon="gtk-go-forward"/>
|
||||
<button name="job_open" string="In Position" states="old,recruit" type="object" icon="terp-camera_test"/>
|
||||
<button name="job_old" string="Mark as Old" states="open,recruit" type="object" icon="gtk-cancel"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -48,10 +48,6 @@ class hr_installer(osv.osv_memory):
|
||||
'hr_payroll_account': fields.boolean('Payroll Accounting',
|
||||
help="Generic Payroll system Integrated with Accountings."),
|
||||
}
|
||||
_defaults = {
|
||||
'hr_holidays': True,
|
||||
'hr_expense': True,
|
||||
}
|
||||
hr_installer()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -52,11 +52,11 @@
|
||||
<search string="Hr Attendance Search">
|
||||
<filter icon="terp-stock_align_left_24" string="My Attendances" domain="[('employee_id.user_id.id', '=', uid)]" />
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-go-today" string="Today" domain="[('name::date','=',current_date)]" />
|
||||
<filter icon="terp-go-today" string="Today" name="today" domain="[('name::date','=',current_date)]" />
|
||||
<separator orientation="vertical"/>
|
||||
<field name="employee_id" />
|
||||
<field name="name" />
|
||||
<field name="action" />
|
||||
<field name="employee_id"/>
|
||||
<field name="name"/>
|
||||
<field name="action"/>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter name="employee" string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
|
||||
@@ -72,7 +72,7 @@
|
||||
<field name="res_model">hr.attendance</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{"search_default_employee":1}</field>
|
||||
<field name="context">{"search_default_today":1}</field>
|
||||
<field name="search_view_id" ref="view_hr_attendance_filter" />
|
||||
<field name="help">Time Tracking functionality aims to manage employee's attendances on the basis of the actions (Sign in/Sign out) performed by them. You can also link this to an attendance machine using OpenERP's webservices features.</field>
|
||||
</record>
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
<menuitem id="menu_hr_attendance" name="Attendances" parent="hr.menu_hr_root" sequence="4"/>
|
||||
|
||||
<menuitem action="open_view_attendance" id="menu_open_view_attendance" parent="menu_hr_attendance" sequence="3"/>
|
||||
<menuitem action="open_view_attendance" id="menu_open_view_attendance" parent="menu_hr_attendance" sequence="20"/>
|
||||
|
||||
<record id="edit_attendance_reason" model="ir.ui.view">
|
||||
<field name="name">hr.action.reason.form</field>
|
||||
@@ -116,7 +116,9 @@
|
||||
<field name="view_id" ref="view_attendance_reason"/>
|
||||
</record>
|
||||
|
||||
<menuitem sequence="2" id="hr.menu_open_view_attendance_reason_new_config" parent="hr.menu_hr_configuration" name="Attendances" />
|
||||
<menuitem
|
||||
sequence="2" id="hr.menu_open_view_attendance_reason_new_config" parent="hr.menu_hr_configuration" name="Attendances"
|
||||
groups="base.group_extended"/>
|
||||
<menuitem action="open_view_attendance_reason" id="menu_open_view_attendance_reason" parent="hr.menu_open_view_attendance_reason_new_config"/>
|
||||
|
||||
<record id="hr_attendance_employee" model="ir.ui.view">
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<page string="Miscellaneous">
|
||||
<group colspan="2" col="2">
|
||||
<separator string="Personal Info" colspan="2"/>
|
||||
<field name="bank_account"/>
|
||||
<field name="bank_account_id"/>
|
||||
<field name="place_of_birth"/>
|
||||
<field name="children"/>
|
||||
</group>
|
||||
|
||||
@@ -14,19 +14,14 @@
|
||||
<record id="board_hr_evaluation_form" model="ir.ui.view">
|
||||
<field name="name">board.hr.evaluation.form</field>
|
||||
<field name="model">board.board</field>
|
||||
<field name="inherit_id" ref="hr.board_hr_form"/>
|
||||
<field name="inherit_id" ref="hr.board_hr_form"/>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/hpaned/child1" position="inside">
|
||||
<action colspan="4" height="220" name="%(act_hr_evaluation_tree)d" string="My Evaluation Remaining" width="510"/>
|
||||
</xpath>
|
||||
<xpath expr="/form/hpaned/child1" position="inside">
|
||||
<action colspan="4" height="220" name="%(act_hr_evaluation_tree)d" string="My Evaluation Remaining" width="510"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem
|
||||
action="hr.open_board_hr"
|
||||
icon="terp-graph"
|
||||
id="base.menu_hr_project"
|
||||
parent="base.menu_hr_dasboard"
|
||||
sequence="4"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
<record id="board_hr_expense_form" model="ir.ui.view">
|
||||
<field name="name">board.hr.expense.form</field>
|
||||
<field name="model">board.board</field>
|
||||
<field name="inherit_id" ref="hr.board_hr_form"/>
|
||||
<field name="inherit_id" ref="hr.board_hr_form"/>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/hpaned/child1" position="inside">
|
||||
<action colspan="4" height="220" name="%(action_my_expense)d" string="My Expenses" />
|
||||
</xpath>
|
||||
<xpath expr="/form/hpaned/child1" position="inside">
|
||||
<action colspan="4" height="220" name="%(action_my_expense)d" string="My Expenses" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -145,12 +145,12 @@
|
||||
<field name="date" select='1'/>
|
||||
<field name="department_id" widget="selection" string="Department" context="{'invisible_department': False}">
|
||||
<filter icon="terp-personal+" context="{'invisible_department': False}" domain="[('department_id','=',context.get('department_id',False))]" help="My Department"/>
|
||||
</field>
|
||||
<field name="name" select='1'/>
|
||||
<field name="user_id" string="User" invisible="True">
|
||||
<filter icon="terp-personal+" domain="[('department_id','=',context.get('department_id',False))]"
|
||||
string="Expenses of My Department"/>
|
||||
</field>
|
||||
</field>
|
||||
</group>
|
||||
<newline />
|
||||
<group expand="0" string="Group By...">
|
||||
@@ -168,7 +168,7 @@
|
||||
<field name="name">Expenses</field>
|
||||
<field name="res_model">hr.expense.expense</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="context">{"search_default_user_id":uid,"search_default_department_id": department_id,"search_default_this":1}</field>
|
||||
<field name="context">{"search_default_user_id":uid}</field>
|
||||
<field name="search_view_id" ref="view_hr_expense_filter"/>
|
||||
<field name="help">The OpenERP expenses management module allows you to track the full flow. Every month, the employees record their expenses. At the end of the month, their managers validates the expenses sheets which creates costs on projects/analytic accounts. The accountant validates the proposed entries and the employee can be reimbursed. You can also reinvoice the customer at the end of the flow.</field>
|
||||
</record>
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
'security/ir.model.access.csv',
|
||||
'hr_holidays_workflow.xml',
|
||||
'hr_holidays_view.xml',
|
||||
'hr_holidays_data.xml',
|
||||
'hr_holidays_wizard.xml',
|
||||
'hr_holidays_report.xml',
|
||||
'report/hr_holidays_report_view.xml',
|
||||
|
||||
@@ -22,36 +22,36 @@
|
||||
<record id="board_hr_holidays_form" model="ir.ui.view">
|
||||
<field name="name">board.hr.holidays.form</field>
|
||||
<field name="model">board.board</field>
|
||||
<field name="inherit_id" ref="hr.board_hr_form"/>
|
||||
<field name="inherit_id" ref="hr.board_hr_form"/>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/hpaned/child1" position="inside">
|
||||
<action colspan="4" height="220" name="%(action_view_holiday_status_board)d" string="My Leaves"/>
|
||||
</xpath>
|
||||
<xpath expr="/form/hpaned/child1" position="inside">
|
||||
<action colspan="4" height="220" name="%(action_view_holiday_status_board)d" string="My Leaves"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Need to merge in above view -->
|
||||
<!-- Need to merge in above view -->
|
||||
|
||||
<record id="action_hr_holidays_leaves_by_month" model="ir.actions.act_window">
|
||||
<field name="name">Leaves by Month</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">available.holidays.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree</field>
|
||||
<field name="domain">[('user_id','=',uid)]</field>
|
||||
<record id="action_hr_holidays_leaves_by_month" model="ir.actions.act_window">
|
||||
<field name="name">Leaves by Month</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">available.holidays.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree</field>
|
||||
<field name="domain">[('user_id','=',uid)]</field>
|
||||
<field name="context">{'group_by_no_leaf':1,'group_by':['month']}</field>
|
||||
<field name="view_id" ref="hr_holidays.view_hr_available_holidays_report_graph"/>
|
||||
</record>
|
||||
<record id="board_hr_holidays_leave_by_month_form" model="ir.ui.view">
|
||||
<field name="view_id" ref="hr_holidays.view_hr_available_holidays_report_graph"/>
|
||||
</record>
|
||||
<record id="board_hr_holidays_leave_by_month_form" model="ir.ui.view">
|
||||
<field name="name">board.hr.holidays.leave.month.form</field>
|
||||
<field name="model">board.board</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="hr.board_hr_form"/>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="hr.board_hr_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/hpaned/child2" position="inside">
|
||||
<action colspan="4" height="220" name="%(action_hr_holidays_leaves_by_month)d" string="Leaves by Month" />
|
||||
</xpath>
|
||||
<xpath expr="/form/hpaned/child2" position="inside">
|
||||
<action colspan="4" height="220" name="%(action_hr_holidays_leaves_by_month)d" string="Leaves by Month" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
@@ -110,9 +110,9 @@ class hr_holidays_status(osv.osv):
|
||||
|
||||
# To do: we can add remaining_leaves_category field to display remaining leaves for particular type
|
||||
_columns = {
|
||||
'name': fields.char('Name', size=64, required=True, translate=True),
|
||||
'name': fields.char('Leave Type', size=64, required=True, translate=True),
|
||||
'categ_id': fields.many2one('crm.case.categ', 'Meeting Category', domain="[('object_id.model', '=', 'crm.meeting')]", help='If you link this type of leave with a category in the CRM, it will synchronize each leave asked with a case in this category, to display it in the company shared calendar for example.'),
|
||||
'color_name': fields.selection([('red', 'Red'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Departement'),
|
||||
'color_name': fields.selection([('red', 'Red'),('blue','Blue'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Departement'),
|
||||
'limit': fields.boolean('Allow to Override Limit', help='If you tick this checkbox, the system will allow, for this section, the employees to take more leaves than the available ones.'),
|
||||
'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the leave type without removing it."),
|
||||
'max_leaves': fields.function(_user_left_days, method=True, string='Maximum Leaves Allowed', help='This value is given by the sum of all holidays requests with a positive value.', multi='user_left_days'),
|
||||
@@ -162,7 +162,7 @@ class hr_holidays(osv.osv):
|
||||
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
|
||||
'department_id':fields.related('employee_id', 'department_id', string='Department', type='many2one', relation='hr.department', readonly=True, store=True),
|
||||
'category_id': fields.many2one('hr.employee.category', "Category", help='Category Of employee'),
|
||||
'holiday_type': fields.selection([('employee','By Employee'),('category','By Employee Category')], 'Allocation Type', help='By Employee: Allocation/Request for individual Employee, By Employee Category: Allocation/Request for group of employees in category'),
|
||||
'holiday_type': fields.selection([('employee','By Employee'),('category','By Employee Category')], 'Allocation Type', help='By Employee: Allocation/Request for individual Employee, By Employee Category: Allocation/Request for group of employees in category', required=True),
|
||||
'manager_id2': fields.many2one('hr.employee', 'Second Approval', readonly=True, help='This area is automaticly filled by the user who validate the leave with second level (If Leave type need second validation)')
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- Casual leave -->
|
||||
<record model="hr.holidays.status" id="holiday_status_cl">
|
||||
<field name="name">Casual Leave</field>
|
||||
<field name="double_validation">True</field>
|
||||
<field name="color_name">black</field>
|
||||
</record>
|
||||
|
||||
<!-- Legal Holidays -->
|
||||
<record model="hr.holidays.status" id="holiday_status_sl">
|
||||
<field name="name">Legal Holidays</field>
|
||||
<field name="color_name">blue</field>
|
||||
</record>
|
||||
|
||||
<!-- Sick leave -->
|
||||
<record model="hr.holidays.status" id="holiday_status_sl">
|
||||
<field name="name">Sick Leave</field>
|
||||
<field name="limit">True</field>
|
||||
<field name="color_name">red</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -2,13 +2,6 @@
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Casual leave -->
|
||||
<record model="hr.holidays.status" id="holiday_status_cl">
|
||||
<field name="name">Casual Leave</field>
|
||||
<field name="double_validation">True</field>
|
||||
<field name="color_name">black</field>
|
||||
</record>
|
||||
|
||||
<record model="hr.holidays" id="hr_holidays_employee1_allocation_cl">
|
||||
<field name="name">Casual Leave for Fabien Pinckaers</field>
|
||||
<field name="holiday_status_id" ref="holiday_status_cl"/>
|
||||
@@ -27,13 +20,6 @@
|
||||
<field name="employee_id" ref="hr.employee1"/>
|
||||
</record>
|
||||
|
||||
<!-- Sick leave -->
|
||||
<record model="hr.holidays.status" id="holiday_status_sl">
|
||||
<field name="name">Sick Leave</field>
|
||||
<field name="limit">True</field>
|
||||
<field name="color_name">red</field>
|
||||
</record>
|
||||
|
||||
<record model="hr.holidays" id="hr_holidays_employee1_sl">
|
||||
<field name="name">Doctor Appointment</field>
|
||||
<field name="holiday_status_id" ref="holiday_status_sl"/>
|
||||
|
||||
@@ -15,10 +15,15 @@
|
||||
<filter icon="terp-check" domain="[('state','=','draft')]" string="To Confirm"/>
|
||||
<filter icon="terp-camera_test" domain="[('state','=','confirm')]" string="To Approve"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="This Month" icon="terp-go-month" name="This Month"
|
||||
<filter string="This Month" icon="terp-go-month" name="This Month"
|
||||
domain="[('date_from','<=', time.strftime('%%Y-%%m-%%d')), ('date_from','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="employee_id">
|
||||
<filter icon="terp-personal"
|
||||
name="my_leaves"
|
||||
domain="[('employee_id.user_id','=', uid)]"
|
||||
help="My Leaves" />
|
||||
</field>
|
||||
<field name="department_id" widget="selection">
|
||||
<filter icon="terp-personal+" help="My Department Holidays"
|
||||
domain="[('department_id.manager_id','=',uid)]" />
|
||||
@@ -32,14 +37,14 @@
|
||||
</group>
|
||||
<newline />
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
|
||||
<filter name="group_employee" string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
|
||||
<filter string="Manager" icon="terp-personal" domain="[]" context="{'group_by':'manager_id'}"/>
|
||||
<filter string="Department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id','set_visible':True}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'holiday_status_id'}"
|
||||
<separator orientation="vertical"/>
|
||||
<filter name="group_type" string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'holiday_status_id'}"
|
||||
default="context.get('report', False)"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -89,9 +94,9 @@
|
||||
<field name="notes" nolabel="1" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="state" colspan="2"/>
|
||||
<group colspan="2">
|
||||
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
|
||||
<group colspan="2" col="6">
|
||||
<button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
|
||||
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
|
||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
|
||||
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
|
||||
@@ -112,7 +117,7 @@
|
||||
<form string="Allocation Request">
|
||||
<group col="8" colspan="4">
|
||||
<field name="name" />
|
||||
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" string="Allocation Type"/>
|
||||
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" string="Allocation Type" groups="base.group_extended"/>
|
||||
<group attrs="{'invisible':[('holiday_type','=','category')]}">
|
||||
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')]}"/>
|
||||
</group>
|
||||
@@ -133,11 +138,11 @@
|
||||
<newline/>
|
||||
<field name="state" colspan="2"/>
|
||||
<group colspan="2">
|
||||
<button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
|
||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
|
||||
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
|
||||
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
|
||||
<button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
|
||||
</group>
|
||||
</page>
|
||||
@@ -161,11 +166,11 @@
|
||||
<field name="user_id" invisible="1"/>
|
||||
<!--field name="type"/-->
|
||||
<field name="state"/>
|
||||
<button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
|
||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
|
||||
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
|
||||
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
|
||||
<button string="Cancel" name="cancel" states="validate,refuse" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -191,10 +196,10 @@
|
||||
<newline/>
|
||||
<field name="state" colspan="2"/>
|
||||
<group colspan="2">
|
||||
<button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel"/>
|
||||
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
|
||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
|
||||
<button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no"/>
|
||||
<button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel"/>
|
||||
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
</page>
|
||||
@@ -221,10 +226,10 @@
|
||||
<field name="manager_id" invisible="1"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="state"/>
|
||||
<button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
|
||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
|
||||
<button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
|
||||
<button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -248,10 +253,10 @@
|
||||
<field name="user_id" invisible="1"/>
|
||||
<!--field name="type"/-->
|
||||
<field name="state"/>
|
||||
<button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes" groups="base.group_hr_user,base.group_hr_manager"/>
|
||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_manager"/>
|
||||
<button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no" groups="base.group_hr_manager"/>
|
||||
<button string="Cancel" name="cancel" states="validate,refuse,validate1" type="workflow" icon="gtk-cancel" groups="base.group_hr_manager"/>
|
||||
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" groups="base.group_hr_manager"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -269,7 +274,7 @@
|
||||
<field name="res_model">hr.holidays</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="edit_holiday_new"/>
|
||||
<field name="context">{"search_default_department_id": department_id}</field>
|
||||
<field name="context">{"search_default_department_id": department_id, "search_default_my_leaves": 1}</field>
|
||||
<field name="domain">[('type','=','remove')]</field>
|
||||
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
||||
<field name="help">Leaves requests can be recorded by employees and validated by their managers. Once a leave request is validated it appears automatically in the agenda of the employee. You can define several allowance types (paid holidays, sickness, etc) and manage allowances per type.</field>
|
||||
@@ -303,7 +308,7 @@
|
||||
<field name="name">Allocation Requests</field>
|
||||
<field name="res_model">hr.holidays</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="context">{'search_default_user_id':uid,'type':'add',"search_default_department_id": department_id}</field>
|
||||
<field name="context">{"search_default_my_leaves": 1,'type':'add',"search_default_department_id": department_id}</field>
|
||||
<field name="domain">[('type','=','add')]</field>
|
||||
<field name="view_id" ref="allocation_leave_new"/>
|
||||
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
||||
@@ -331,7 +336,7 @@
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" eval="view_holiday_simple"/>
|
||||
<field name="context">{'allocation_type':'company', 'report':True,"search_default_department_id": department_id}</field>
|
||||
<field name="context">{'search_default_my_leaves': 1, 'search_default_group_type': 1}</field>
|
||||
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
||||
</record>
|
||||
|
||||
@@ -349,12 +354,15 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Leave Type">
|
||||
<field colspan="4" name="name" />
|
||||
<field name="limit"/>
|
||||
<field name="active"/>
|
||||
<field name="categ_id" widget="selection"/>
|
||||
<field name="color_name"/>
|
||||
<field name="double_validation" />
|
||||
<group colspan="4" col="6">
|
||||
<field name="name" />
|
||||
<field name="color_name"/>
|
||||
<field name="categ_id" widget="selection" groups="base.group_extended"/>
|
||||
<newline/>
|
||||
<field name="limit"/>
|
||||
<field name="double_validation"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<field name="res_model">hr.holidays.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,graph</field>
|
||||
<field name="context">{"search_default_user_id": uid, 'search_default_month':1, 'search_default_Employee':1,'search_default_department':1,"search_default_Validated":1, 'group_by':[], 'group_by_no_leaf':1} </field>
|
||||
<field name="context">{'search_default_Employee':1,'search_default_department':1,"search_default_Validated":1, 'group_by':[], 'group_by_no_leaf':1} </field>
|
||||
<field name="search_view_id" ref="view_hr_holidays_report_search"/>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -985,11 +985,11 @@
|
||||
</notebook>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state"/>
|
||||
<button string="Cancel" name="cancel_sheet" icon="gtk-cancel" states="draft,hr_check,accont_check,confirm" type="object"/>
|
||||
<button string="Compute" name="compute_sheet" states="new" icon="terp-document-new" type="object"/>
|
||||
<button string="Verify Sheet" icon="gtk-ok" name="verify_sheet" states="draft" type="object"/>
|
||||
<button string="Complete HR Checking" icon="gtk-apply" name="final_verify_sheet" type="object" states="hr_check"/>
|
||||
<button string="Pay Salary" icon="gtk-apply" name="process_sheet" states="confirm" type="object" />
|
||||
<button string="Cancel" name="cancel_sheet" icon="gtk-cancel" states="draft,hr_check,accont_check,confirm" type="object"/>
|
||||
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert" />
|
||||
</group>
|
||||
</form>
|
||||
|
||||
@@ -33,6 +33,29 @@ class hr_employee(osv.osv):
|
||||
'product_id': fields.many2one('product.product', 'Product', help="Specifies employee's designation as a product with type 'service'."),
|
||||
'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal')
|
||||
}
|
||||
|
||||
def _getAnalyticJournal(self, cr, uid, context=None):
|
||||
md = self.pool.get('ir.model.data')
|
||||
try:
|
||||
result = md.get_object_reference(cr, uid, 'hr_timesheet', 'analytic_journal')
|
||||
return result[1]
|
||||
except ValueError, e:
|
||||
pass
|
||||
return False
|
||||
|
||||
def _getEmployeeProduct(self, cr, uid, context=None):
|
||||
md = self.pool.get('ir.model.data')
|
||||
try:
|
||||
result = md.get_object_reference(cr, uid, 'hr_timesheet', 'product_consultant')
|
||||
return result[1]
|
||||
except ValueError, e:
|
||||
pass
|
||||
return False
|
||||
|
||||
_defaults = {
|
||||
'journal_id' : _getAnalyticJournal,
|
||||
'product_id' : _getEmployeeProduct
|
||||
}
|
||||
hr_employee()
|
||||
|
||||
|
||||
|
||||
@@ -6,5 +6,17 @@
|
||||
<field name="name">Timesheet Journal</field>
|
||||
<field name="type">general</field>
|
||||
</record>
|
||||
|
||||
<record id="product_consultant" model="product.product">
|
||||
<field name="list_price">75.0</field>
|
||||
<field name="standard_price">30.0</field>
|
||||
<field name="uom_id" ref="product.uom_hour"/>
|
||||
<field name="uom_po_id" ref="product.uom_hour"/>
|
||||
<field name="name">Service on Timesheet</field>
|
||||
<field name="categ_id" ref="product.cat0"/>
|
||||
<field name="type">service</field>
|
||||
<field eval="False" name="purchase_ok"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -2,20 +2,6 @@
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="product_consultant" model="product.product">
|
||||
<field name="default_code">DEV</field>
|
||||
<field name="list_price">75.0</field>
|
||||
<field name="standard_price">30.0</field>
|
||||
<field name="uom_id" ref="product.uom_hour"/>
|
||||
<field name="uom_po_id" ref="product.uom_hour"/>
|
||||
<field name="name">Consultancy - Senior Developer</field>
|
||||
<field name="categ_id" ref="product.product_category_10"/>
|
||||
<field name="type">service</field>
|
||||
<field name="supply_method">produce</field>
|
||||
<field name="procure_method">make_to_order</field>
|
||||
<field eval="False" name="purchase_ok"/>
|
||||
</record>
|
||||
|
||||
<!-- complete our example employee -->
|
||||
<record id="hr.employee1" model="hr.employee">
|
||||
<field name="product_id" ref="product_consultant"/>
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
|
||||
<menuitem id="menu_project_working_hours" parent="base.menu_project_management_time_tracking" action="act_hr_timesheet_line_evry1_all_form"/>
|
||||
<menuitem id="menu_hr_working_hours" parent="hr_attendance.menu_hr_time_tracking" action="act_hr_timesheet_line_evry1_all_form"/>
|
||||
<menuitem id="menu_partner_invc" parent="base.menu_project_management_time_tracking" action="account.action_invoice_tree1"/>
|
||||
|
||||
<record id="hr_timesheet_employee_extd_form" model="ir.ui.view">
|
||||
<field name="name">hr.timesheet.employee.extd_form</field>
|
||||
@@ -111,7 +112,7 @@
|
||||
<page string="Categories" position="after">
|
||||
<page string="Timesheets">
|
||||
<field name="product_id" domain="[('type','=','service')]"/>
|
||||
<field name="journal_id"/>
|
||||
<field name="journal_id" widget="selection"/>
|
||||
</page>
|
||||
</page>
|
||||
</field>
|
||||
|
||||
@@ -63,7 +63,8 @@ class account_analytic_account(osv.osv):
|
||||
|
||||
_inherit = "account.analytic.account"
|
||||
_columns = {
|
||||
'pricelist_id' : fields.many2one('product.pricelist', 'Sale Pricelist'),
|
||||
'pricelist_id' : fields.many2one('product.pricelist', 'Sale Pricelist',
|
||||
help="The product to invoice is defined on the employee form, the price will be deduced by this pricelist on the product."),
|
||||
'amount_max': fields.float('Max. Invoice Price'),
|
||||
'amount_invoiced': fields.function(_invoiced_calc, method=True, string='Invoiced Amount',
|
||||
help="Total invoiced"),
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<filter name="others" position="after">
|
||||
<separator orientation="vertical"/>
|
||||
<filter name="to_invoice" string="To Invoice" context="{'to_invoice': 1}" domain="[('invoice_id','=',False),('to_invoice','<>',False)]" icon="terp-sale"/>
|
||||
<filter name="to_invoice" string="To Invoice" context="{'to_invoice': 1}" domain="[('invoice_id','=',False),('to_invoice','<>',False)]" icon="terp-dolar"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
<!-- Menus -->
|
||||
<record id="action_hr_analytic_timesheet_open_tree" model="ir.actions.act_window">
|
||||
<field name="name">Costs to Invoice</field>
|
||||
<field name="name">Bill Tasks Works</field>
|
||||
<field name="res_model">account.analytic.line</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
|
||||
@@ -35,31 +35,14 @@ class hr_timesheet_invoice_create(osv.osv_memory):
|
||||
_name = 'hr.timesheet.invoice.create'
|
||||
_description = 'Create invoice from timesheet'
|
||||
_columns = {
|
||||
'accounts': fields.many2many('account.analytic.account', 'invoice_id', 'account_id', 'Analytic Accounts', required=True),
|
||||
'date': fields.boolean('Date', help='The real date of each work will be displayed on the invoice'),
|
||||
'time': fields.boolean('Time spent', help='The time of each work done will be displayed on the invoice'),
|
||||
'name': fields.boolean('Description', help='The detail of each work done will be displayed on the invoice'),
|
||||
'price': fields.boolean('Cost', help='The cost of each work done will be displayed on the invoice. You probably don\'t want to check this'),
|
||||
'product': fields.many2one('product.product', 'Product', help='Complete this field only if you want to force to use a specific product. Keep empty to use the real product that comes from the cost.'),
|
||||
}
|
||||
|
||||
def _get_accounts(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if not len(context['active_ids']):
|
||||
return {}
|
||||
#Checking whether the analytic line is invoiced or not
|
||||
analytic_line_obj = self.pool.get('account.analytic.line').browse(cr, uid, context['active_ids'], context=context)
|
||||
for obj_acc in analytic_line_obj:
|
||||
if obj_acc.invoice_id and obj_acc.invoice_id.state !='cancel':
|
||||
raise osv.except_osv(_('Warning'),_('The analytic entry "%s" is already invoiced!')%(obj_acc.name,))
|
||||
|
||||
cr.execute("SELECT distinct(account_id) from account_analytic_line where id IN %s",(tuple(context['active_ids']),))
|
||||
account_ids = cr.fetchall()
|
||||
return [x[0] for x in account_ids]
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'accounts': _get_accounts,
|
||||
'date': lambda *args: 1,
|
||||
'name': lambda *args: 1
|
||||
}
|
||||
@@ -82,12 +65,17 @@ class hr_timesheet_invoice_create(osv.osv_memory):
|
||||
result = mod_obj._get_id(cr, uid, 'account', 'view_account_invoice_filter')
|
||||
res = mod_obj.read(cr, uid, result, ['res_id'], context=context)
|
||||
data = self.read(cr, uid, ids, [], context=context)[0]
|
||||
account_ids = data['accounts']
|
||||
|
||||
account_ids = {}
|
||||
for line in self.pool.get('account.analytic.line').browse(cr, uid, context['active_ids'], context=context):
|
||||
account_ids[line.account_id.id] = True
|
||||
|
||||
account_ids = account_ids.keys() #data['accounts']
|
||||
for account in analytic_account_obj.browse(cr, uid, account_ids, context=context):
|
||||
partner = account.partner_id
|
||||
if (not partner) or not (account.pricelist_id):
|
||||
raise osv.except_osv(_('Analytic Account incomplete'),
|
||||
_('Please fill in the Associate Partner and Sale Pricelist fields in the Analytic Account:\n%s') % (account.name,))
|
||||
_('Please fill in the Partner or Customer and Sale Pricelist fields in the Analytic Account:\n%s') % (account.name,))
|
||||
|
||||
if not partner.address:
|
||||
raise osv.except_osv(_('Partner incomplete'),
|
||||
@@ -190,7 +178,7 @@ class hr_timesheet_invoice_create(osv.osv_memory):
|
||||
invoice_line_obj.create(cr, uid, curr_line, context=context)
|
||||
cr.execute("update account_analytic_line set invoice_id=%s WHERE account_id = %s and id IN %s" ,(last_invoice, account.id, tuple(context['active_ids'])))
|
||||
|
||||
invoice_obj.button_reset_taxes(cr, uid, [last_invoice], context)
|
||||
invoice_obj.button_reset_taxes(cr, uid, [last_invoice], context)
|
||||
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
act_obj = self.pool.get('ir.actions.act_window')
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<separator colspan="4"/>
|
||||
<group col="2" colspan="4">
|
||||
<button special="cancel" string="Cancel" icon='gtk-cancel'/>
|
||||
<button name="do_create" string="Create Invoices" colspan="1" type="object" icon="gtk-execute"/>
|
||||
<button name="do_create" string="Create Invoices" colspan="1" type="object" icon="terp-gtk-go-back-rtl"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
@@ -46,4 +46,4 @@
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
|
||||
@@ -10,23 +10,23 @@
|
||||
<form string="Invoice analytic lines">
|
||||
<notebook colspan="4">
|
||||
<page string="Billing Data">
|
||||
<separator string="Do you want to show details of work in invoice ?" colspan="4"/>
|
||||
<field name="date"/>
|
||||
<field name="time"/>
|
||||
<field name="name"/>
|
||||
<field name="price"/>
|
||||
<separator string="Force to use a specific product" colspan="4"/>
|
||||
<field name="product"/>
|
||||
</page>
|
||||
<page string="Filter on Accounts" groups="base.group_extended">
|
||||
<separator string="Choose accounts you want to invoice" colspan="4"/>
|
||||
<field name="accounts" colspan="4" nolabel="1"/>
|
||||
<group col="4" colspan="4">
|
||||
<separator string="Do you want to show details of work in invoice ?" colspan="4"/>
|
||||
<field name="date"/>
|
||||
<field name="time"/>
|
||||
<field name="name"/>
|
||||
<field name="price" groups="base.group_extended"/>
|
||||
</group>
|
||||
<group col="2" colspan="4" groups="base.group_extended">
|
||||
<separator string="Force to use a specific product" colspan="4" />
|
||||
<field name="product"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
<separator colspan="4"/>
|
||||
<group col="2" colspan="4">
|
||||
<button special="cancel" string="Cancel" icon='gtk-cancel'/>
|
||||
<button name="do_create" string="Create Invoices" colspan="1" type="object" icon="gtk-execute"/>
|
||||
<button name="do_create" string="Create Invoices" colspan="1" type="object" icon="terp-gtk-go-back-rtl"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -53,7 +53,6 @@ The validation can be configured in the company:
|
||||
'hr_timesheet_sheet_view.xml',
|
||||
'hr_timesheet_workflow.xml',
|
||||
'process/hr_timesheet_sheet_process.xml',
|
||||
'report/timesheet_report_view.xml',
|
||||
'board_hr_timesheet_view.xml',
|
||||
'report/hr_timesheet_report_view.xml',
|
||||
'wizard/hr_timesheet_current_view.xml',
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting" sequence="0" groups="base.group_system,base.group_hr_manager,base.group_hr_user"/>
|
||||
<menuitem
|
||||
id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting"
|
||||
sequence="0" groups="base.group_hr_manager"/>
|
||||
<menuitem
|
||||
action="hr.open_board_hr"
|
||||
icon="terp-graph"
|
||||
@@ -9,16 +11,6 @@
|
||||
parent="base.menu_hr_dasboard"
|
||||
sequence="4"/>
|
||||
|
||||
<record id="action_timesheet_report_all" model="ir.actions.act_window">
|
||||
<field name="name">Timesheets by Month</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">timesheet.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree</field>
|
||||
<field name="domain">[('user_id','=',uid), ('month', '=' , time.strftime('%m')), ('year', '=', time.strftime('%Y'))]</field>
|
||||
<field name="view_id" ref="hr_timesheet_sheet.view_timesheet_report_graph"/>
|
||||
</record>
|
||||
|
||||
<record id="action_hr_timesheet_sheet_graph" model="ir.actions.act_window">
|
||||
<field name="name">Timesheets</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
@@ -28,39 +20,6 @@
|
||||
<field name="view_id" ref="hr_timesheet_sheet.hr_timesheet_sheet_graph"/>
|
||||
</record>
|
||||
|
||||
<record id="view_employee_attendance_graph" model="ir.ui.view">
|
||||
<field name="name">Employee Attendance Graph</field>
|
||||
<field name="model">timesheet.report</field>
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Employee Attendances" type="bar">
|
||||
<field name="user_id" />
|
||||
<field name="total_attendance" operator="+"/>
|
||||
<field name="total_timesheet" operator="+"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_employee_attendance_graph" model="ir.actions.act_window">
|
||||
<field name="name">Employee Attendance Graph</field>
|
||||
<field name="res_model">timesheet.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph</field>
|
||||
<field name="view_id" ref="view_employee_attendance_graph"/>
|
||||
</record>
|
||||
|
||||
<record id="board_hr_timesheet_form" model="ir.ui.view">
|
||||
<field name="name">board.hr.timesheet.form</field>
|
||||
<field name="model">board.board</field>
|
||||
<field name="inherit_id" ref="hr.board_hr_manager_form"/>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/hpaned/child2" position="inside">
|
||||
<action colspan="4" height="220" name="%(action_employee_attendance_graph)d" string="Employee Attendances" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_timesheet_sheet_tree" model="ir.ui.view">
|
||||
<field name="name">hr.timesheet.sheet.tree.simplified.board</field>
|
||||
<field name="model">hr_timesheet_sheet.sheet</field>
|
||||
|
||||
@@ -19,7 +19,5 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import timesheet_report
|
||||
import hr_timesheet_report
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import tools
|
||||
from osv import fields,osv
|
||||
|
||||
class timesheet_report(osv.osv):
|
||||
_name = "timesheet.report"
|
||||
_description = "Timesheet"
|
||||
_auto = False
|
||||
_columns = {
|
||||
'year': fields.char('Year',size=64,required=False, readonly=True),
|
||||
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
|
||||
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
|
||||
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
|
||||
'day': fields.char('Day', size=128, readonly=True),
|
||||
'name': fields.char('Description', size=64,readonly=True),
|
||||
'product_id' : fields.many2one('product.product', 'Product'),
|
||||
'general_account_id' : fields.many2one('account.account', 'General Account', readonly=True),
|
||||
'employee_id': fields.many2one('hr.employee', 'Employee',readonly=True),
|
||||
'to_invoice': fields.many2one('hr_timesheet_invoice.factor', 'Type of Invoicing',readonly=True),
|
||||
'account_id': fields.many2one('account.analytic.account', 'Analytic Account',readonly=True),
|
||||
'nbr': fields.integer('#Nbr',readonly=True),
|
||||
'total_diff': fields.float('#Total Diff',readonly=True),
|
||||
'total_timesheet': fields.float('#Total Timesheet',readonly=True),
|
||||
'total_attendance': fields.float('#Total Attendance',readonly=True),
|
||||
'company_id': fields.many2one('res.company', 'Company',readonly=True),
|
||||
'department_id':fields.many2one('hr.department','Department',readonly=True),
|
||||
'date_from': fields.date('Date from',readonly=True,),
|
||||
'date_to': fields.date('Date to',readonly=True),
|
||||
'date_current': fields.date('Current date', required=True),
|
||||
'state' : fields.selection([
|
||||
('new', 'New'),
|
||||
('draft','Draft'),
|
||||
('confirm','Confirmed'),
|
||||
('done','Done')], 'State', readonly=True),
|
||||
'quantity': fields.float('#Quantity',readonly=True),
|
||||
'cost': fields.float('#Cost',readonly=True),
|
||||
}
|
||||
|
||||
def init(self, cr):
|
||||
tools.drop_view_if_exists(cr, 'timesheet_report')
|
||||
cr.execute("""
|
||||
create or replace view timesheet_report as (
|
||||
select
|
||||
min(aal.id) as id,
|
||||
htss.date_current,
|
||||
htss.name,
|
||||
htss.date_from,
|
||||
htss.date_to,
|
||||
to_char(htss.date_current,'YYYY') as year,
|
||||
to_char(htss.date_current,'MM') as month,
|
||||
to_char(htss.date_current, 'YYYY-MM-DD') as day,
|
||||
count(*) as nbr,
|
||||
aal.unit_amount as quantity,
|
||||
aal.amount as cost,
|
||||
aal.account_id,
|
||||
aal.product_id,
|
||||
(SELECT sum(day.total_difference)
|
||||
FROM hr_timesheet_sheet_sheet AS sheet
|
||||
LEFT JOIN hr_timesheet_sheet_sheet_day AS day
|
||||
ON (sheet.id = day.sheet_id
|
||||
AND day.name = sheet.date_current) where sheet.id=htss.id) as total_diff,
|
||||
(SELECT sum(day.total_timesheet)
|
||||
FROM hr_timesheet_sheet_sheet AS sheet
|
||||
LEFT JOIN hr_timesheet_sheet_sheet_day AS day
|
||||
ON (sheet.id = day.sheet_id
|
||||
AND day.name = sheet.date_current) where sheet.id=htss.id) as total_timesheet,
|
||||
(SELECT sum(day.total_attendance)
|
||||
FROM hr_timesheet_sheet_sheet AS sheet
|
||||
LEFT JOIN hr_timesheet_sheet_sheet_day AS day
|
||||
ON (sheet.id = day.sheet_id
|
||||
AND day.name = sheet.date_current) where sheet.id=htss.id) as total_attendance,
|
||||
aal.to_invoice,
|
||||
aal.general_account_id,
|
||||
htss.employee_id as employee_id,
|
||||
htss.company_id,
|
||||
htss.department_id,
|
||||
htss.state
|
||||
from hr_timesheet_sheet_sheet as htss
|
||||
left join hr_analytic_timesheet as hat ON (hat.create_uid=htss.create_uid)
|
||||
left join account_analytic_line as aal ON (hat.line_id=aal.id)
|
||||
group by
|
||||
to_char(htss.date_current,'YYYY'),
|
||||
to_char(htss.date_current,'MM'),
|
||||
to_char(htss.date_current, 'YYYY-MM-DD'),
|
||||
aal.account_id,
|
||||
htss.date_from,
|
||||
htss.date_to,
|
||||
aal.unit_amount,
|
||||
aal.amount,
|
||||
htss.date_current,
|
||||
aal.to_invoice,
|
||||
aal.product_id,
|
||||
aal.general_account_id,
|
||||
htss.name,
|
||||
htss.company_id,
|
||||
htss.state,
|
||||
htss.id,
|
||||
htss.department_id,
|
||||
htss.employee_id
|
||||
|
||||
)
|
||||
""")
|
||||
timesheet_report()
|
||||
@@ -1,126 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="view_timesheet_report_graph" model="ir.ui.view">
|
||||
<field name="name">timesheet.report.graph</field>
|
||||
<field name="model">timesheet.report</field>
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Timesheet" type="bar">
|
||||
<field name="employee_id" />
|
||||
<field name="quantity" operator = "+"/>
|
||||
<field name="state" group = "True"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_timesheet_report_tree" model="ir.ui.view">
|
||||
<field name="name">timesheet.report.tree</field>
|
||||
<field name="model">timesheet.report</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree colors="blue:state in ('draft');black:state in ('confirm','new');gray:state in('cancel')" string="Timesheet">
|
||||
<field name="date_current" invisible="1"/>
|
||||
<field name="name" invisible="1"/>
|
||||
<field name="employee_id" invisible="1"/>
|
||||
<field name="date_from" invisible="1"/>
|
||||
<field name="date_to" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="department_id" invisible="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="to_invoice" invisible="1"/>
|
||||
<field name="product_id" invisible="1"/>
|
||||
<field name="account_id" invisible="1" groups="analytic.group_analytic_accounting"/>
|
||||
<field name="general_account_id" invisible="1"/>
|
||||
<field name="year" invisible="1"/>
|
||||
<field name="day" invisible="1"/>
|
||||
<field name="month" invisible="1"/>
|
||||
<field name="total_attendance" sum="#Total Attendance"/>
|
||||
<field name="total_timesheet" sum="#Total Timesheet"/>
|
||||
<field name="total_diff" sum="#Total Diff"/>
|
||||
<field name="quantity" sum="#Quantity"/>
|
||||
<field name="cost" sum="#Cost"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_timesheet_report_search" model="ir.ui.view">
|
||||
<field name="name">timesheet.report.search</field>
|
||||
<field name="model">timesheet.report</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Timesheet">
|
||||
<group col="10" colspan="12">
|
||||
<filter icon="terp-go-year" string=" Year "
|
||||
domain="[('date_current','<=', time.strftime('%%Y-%%m-%%d')),('date_current','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Timesheet in current year"/>
|
||||
<filter icon="terp-go-month" string=" Month "
|
||||
name="month"
|
||||
domain="[('date_current','<=', time.strftime('%%Y-%%m-%%d')), ('date_current','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Timesheet in current month"/>
|
||||
<filter icon="terp-go-month"
|
||||
string=" Month-1 "
|
||||
domain="[('date_current','<=', (datetime.date (int(time.strftime('%%Y')), datetime.date.today().month, 1) - datetime.timedelta (days = 1)).strftime('%%Y-%%m-%%d')),('date_current','>',(datetime.date (int(time.strftime('%%Y')), datetime.date.today().month-1, 1)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Timesheet of last month"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-document-new"
|
||||
string="Draft"
|
||||
domain="[('state','=','draft')]"/>
|
||||
<filter icon="terp-camera_test"
|
||||
string="Confirmed"
|
||||
domain="[('state','=','confirm')]"/>
|
||||
<filter icon="terp-dialog-close"
|
||||
string="Done"
|
||||
domain="[('state','=','done')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="account_id" groups="analytic.group_analytic_accounting"/>
|
||||
<field name="user_id" />
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Extended Filters..." groups="base.group_extended">
|
||||
<field name="general_account_id"/>
|
||||
<field name="to_invoice" widget="selection"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="product_id"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="department_id" widget="selection"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
<newline/>
|
||||
<field name="date_to"/>
|
||||
<field name="date_from"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="1" string="Group By...">
|
||||
<filter string="Employee" name="Employee_id" icon="terp-personal" context="{'group_by':'employee_id'}"/>
|
||||
<filter string="Department" icon="terp-personal+" context="{'group_by':'department_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Type of Invoicing" icon="terp-stock_symbol-selection" context="{'group_by':'to_invoice'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Analytic Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>
|
||||
<filter string="General Account" icon="terp-folder-orange" context="{'group_by':'general_account_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Group by day of date"/>
|
||||
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}" help="Group by month of date"/>
|
||||
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Group by year of date"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_timesheet_report_stat_all" model="ir.actions.act_window">
|
||||
<field name="name">Timesheet Sheet Analysis</field>
|
||||
<field name="res_model">timesheet.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,graph</field>
|
||||
<field name="context">{'search_default_month':1,'search_default_Employee_id':1,'group_by_no_leaf':1,'group_by':[]}</field>
|
||||
<field name="search_view_id" ref="view_timesheet_report_search"/>
|
||||
</record>
|
||||
<menuitem action="action_timesheet_report_stat_all" id="menu_timesheet_report_all"
|
||||
parent="hr_timesheet.menu_hr_reporting_timesheet" sequence="1" groups="base.group_hr_manager"/>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -5,7 +5,6 @@
|
||||
"access_hr_timesheet_sheet_sheet_day","hr_timesheet_sheet.sheet.day","model_hr_timesheet_sheet_sheet_day","base.group_hr_user",1,1,1,1
|
||||
"access_hr_timesheet_sheet_sheet_account","hr_timesheet_sheet.sheet.account","model_hr_timesheet_sheet_sheet_account","base.group_hr_user",1,1,1,1
|
||||
"access_hr_timesheet_report","hr.timesheet.report","model_hr_timesheet_report","base.group_hr_manager",1,1,1,1
|
||||
"access_timesheet_report_employee","timesheet.report.employee","model_timesheet_report","base.group_hr_user",1,1,1,1
|
||||
"access_hr_analytic_timesheet_system_user","hr.analytic.timesheet.system.user","model_hr_analytic_timesheet","base.group_user",1,0,0,0
|
||||
"access_hr_timesheet_sheet_sheet_day","hr.timesheet.sheet.sheet.day.user","model_hr_timesheet_sheet_sheet_day","base.group_user",1,0,0,0
|
||||
"access_model_hr_analytic_timesheet","hr.analytic.timesheet","model_hr_analytic_timesheet","project.group_project_finance_user",1,1,0,0
|
||||
|
||||
|
@@ -65,7 +65,7 @@
|
||||
</record>
|
||||
|
||||
<menuitem name="Configuration" parent="base.menu_tools"
|
||||
id="base.menu_lunch_survey_root" sequence="20" groups="base.group_system"/>
|
||||
id="base.menu_lunch_survey_root" sequence="20" groups="base.group_tool_manager"/>
|
||||
|
||||
<menuitem name="Ideas" parent="base.menu_lunch_survey_root" id="menu_ideas" sequence="3"/>
|
||||
|
||||
@@ -90,7 +90,8 @@
|
||||
|
||||
<menuitem name="Give Vote" parent="menu_ideas1"
|
||||
id="menu_give_vote"
|
||||
action="action_idea_select"/>
|
||||
action="action_idea_select"
|
||||
groups="base.group_tool_user"/>
|
||||
|
||||
|
||||
<!-- Open Ideas Action -->
|
||||
@@ -382,12 +383,12 @@
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree</field>
|
||||
</record>
|
||||
<menuitem name="Reporting" parent="base.menu_tools" id="base.menu_lunch_reporting" sequence="6"/>
|
||||
<menuitem name="Reporting" parent="base.menu_tools" id="base.menu_lunch_reporting" sequence="6" groups="base.group_tool_manager,base.group_tool_user"/>
|
||||
|
||||
<menuitem name="Idea" parent="base.menu_lunch_reporting" id="menu_idea_reporting" sequence="3"/>
|
||||
|
||||
<menuitem name="Vote Statistics" parent="menu_idea_reporting"
|
||||
id="menu_idea_vote_stat" action="action_idea_vote_stat" groups="base.group_tool_manager,base.group_tool_user,base.group_system"/>
|
||||
id="menu_idea_vote_stat" action="action_idea_vote_stat" groups="base.group_tool_user"/>
|
||||
|
||||
<!-- Vote For Idea Action -->
|
||||
<record model="ir.actions.act_window" id="action_idea_vote">
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
<field name="context">{'search_default_User':1,'search_default_State':1,'group_by_no_leaf':1,'group_by':[]}</field>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_report_vote_all" id="menu_report_vote_all" parent="menu_idea_reporting" sequence="1" groups="base.group_tool_manager,base.group_system"/>
|
||||
<menuitem action="action_report_vote_all" id="menu_report_vote_all" parent="menu_idea_reporting" sequence="1" groups="base.group_tool_manager"/>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="base.group_sale_salesman" model="res.groups">
|
||||
<field name="name">Sales / User</field>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="base.group_tool_manager">
|
||||
<field name="name">Tools / Manager</field>
|
||||
</record>
|
||||
@@ -13,7 +9,6 @@
|
||||
<field name="name">Tools / User</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
|
||||
@@ -1,26 +1,8 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_idea_category","idea.category","model_idea_category","base.group_user",1,1,1,1
|
||||
"access_idea_idea","idea.idea","model_idea_idea","base.group_user",1,1,1,1
|
||||
"access_idea_vote","idea.vote","model_idea_vote","base.group_user",1,1,1,1
|
||||
"access_idea_vote_stat","idea.vote.stat","model_idea_vote_stat","base.group_user",1,1,1,1
|
||||
"access_idea_category_system","idea.category system","model_idea_category","base.group_system",1,1,1,1
|
||||
"access_idea_comment","idea.comment","model_idea_comment","base.group_system",1,1,1,1
|
||||
"access_idea_comment_base_user","idea.comment.base.user","model_idea_comment","base.group_user",1,1,1,1
|
||||
"access_report_vote","report.vote","model_report_vote","base.group_user",1,1,1,1
|
||||
"access_idea_idea_sale_salesman","idea.idea.sale","model_idea_idea","base.group_sale_salesman",1,1,1,1
|
||||
"access_idea_vote_sale_salesman","idea.vote.sale","model_idea_vote","base.group_sale_salesman",1,1,1,1
|
||||
"access_idea_category_user","idea.category user","model_idea_category","base.group_tool_user",1,1,1,1
|
||||
"access_idea_idea_user","idea.idea user","model_idea_idea","base.group_tool_user",1,1,1,1
|
||||
"access_idea_vote_user","idea.vote user","model_idea_vote","base.group_tool_user",1,1,1,1
|
||||
"access_idea_category_manager","idea.category manager","model_idea_category","base.group_tool_manager",1,1,1,1
|
||||
"access_idea_idea_manager","idea.idea manager","model_idea_idea","base.group_tool_manager",1,1,1,1
|
||||
"access_idea_vote_manager","idea.vote manager","model_idea_vote","base.group_tool_manager",1,1,1,1
|
||||
"access_idea_vote_stat_user","idea.vote.stat user","model_idea_vote_stat","base.group_tool_user",1,1,1,1
|
||||
"access_idea_comment_user","idea.comment user","model_idea_comment","base.group_tool_user",1,1,1,1
|
||||
"access_report_vote_manager","report.vote manager","model_report_vote","base.group_tool_manager",1,1,1,1
|
||||
"access_idea_idea_system","idea.idea system","model_idea_idea","base.group_system",1,0,0,0
|
||||
"access_idea_vote_system","idea.vote system","model_idea_vote","base.group_system",1,0,0,0
|
||||
"access_report_vote_system","report.vote system","model_report_vote","base.group_system",1,0,0,0
|
||||
"access_idea_vote_stat_manager","idea.vote.stat manager","model_idea_vote_stat","base.group_tool_manager",1,1,1,1
|
||||
"access_idea_vote_stat_system","idea.vote.stat system","model_idea_vote_stat","base.group_system",1,1,1,1
|
||||
"access_idea_comment_manager","idea.comment.manager","model_idea_comment","base.group_tool_manager",1,1,1,1
|
||||
|
||||
|
@@ -6,14 +6,14 @@
|
||||
id="menu_lunch" sequence="1" />
|
||||
|
||||
<menuitem name="Reporting" parent="base.menu_tools"
|
||||
id="base.menu_lunch_reporting" sequence="6" groups="base.group_system,base.group_tool_manager"/>
|
||||
id="base.menu_lunch_reporting" sequence="6" groups="base.group_tool_manager"/>
|
||||
|
||||
<menuitem name="Lunch Orders"
|
||||
parent="base.menu_lunch_reporting"
|
||||
id="menu_lunch_reporting_order" sequence="1" />
|
||||
|
||||
<menuitem name="Configuration" parent="base.menu_tools"
|
||||
id="base.menu_lunch_survey_root" sequence="20" groups="base.group_system"/>
|
||||
id="base.menu_lunch_survey_root" sequence="20" groups="base.group_tool_manager"/>
|
||||
|
||||
<menuitem name="Lunch" parent="base.menu_lunch_survey_root"
|
||||
id="menu_lunch_category_root_configuration" sequence="1" />
|
||||
|
||||
@@ -1,20 +1,8 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_lunch_category","lunch.category","model_lunch_category","base.group_user",1,1,1,1
|
||||
"access_lunch_product","lunch.product","model_lunch_product","base.group_user",1,1,1,1
|
||||
"access_lunch_cashbox","lunch.cashbox","model_lunch_cashbox","base.group_user",1,1,1,1
|
||||
"access_lunch_order","lunch.order","model_lunch_order","base.group_user",1,1,1,1
|
||||
"access_report_lunch_amount","report.lunch.amount","model_report_lunch_amount","base.group_user",1,1,1,1
|
||||
"access_lunch_order_sale_salesman","lunch.order.sale","model_lunch_order","base.group_sale_salesman",1,1,1,1
|
||||
"access_lunch_order_user","lunch.order user","model_lunch_order","base.group_tool_user",1,1,1,1
|
||||
"access_lunch_order_manager","lunch.order manager","model_lunch_order","base.group_tool_manager",1,1,1,1
|
||||
"access_lunch_cashmove_user","lunch.cashmove user","model_lunch_cashmove","base.group_tool_user",1,1,1,1
|
||||
"access_lunch_cashmove_manager","lunch.cashmove manager","model_lunch_cashmove","base.group_tool_manager",1,1,1,1
|
||||
"access_report_lunch_amount_manager","report.lunch.amount manager","model_report_lunch_amount","base.group_tool_manager",1,1,1,1
|
||||
"access_lunch_category_system","lunch.category system","model_lunch_category","base.group_system",1,1,1,1
|
||||
"access_lunch_product_system","lunch.product system","model_lunch_product","base.group_system",1,1,1,1
|
||||
"access_lunch_cashbox_system","lunch.cashbox system","model_lunch_cashbox","base.group_system",1,1,1,1
|
||||
"access_lunch_order_system","lunch.order system","model_lunch_order","base.group_system",1,0,0,0
|
||||
"access_lunch_cashmove_system","lunch.cashmove system","model_lunch_cashmove","base.group_system",1,0,0,0
|
||||
"access_lunch_category_manager","lunch.category.user","model_lunch_category","base.group_tool_user",1,1,1,1
|
||||
"access_report_lunch_order_manager","report.lunch.order manager","model_report_lunch_order","base.group_tool_manager",1,1,1,1
|
||||
"access_lunch_product_user","lunch.product user","model_lunch_product","base.group_tool_user",1,1,1,1
|
||||
"access_lunch_cashbox_user","lunch.cashbox user","model_lunch_cashbox","base.group_tool_user",1,1,1,1
|
||||
|
||||
|
@@ -2,9 +2,6 @@
|
||||
<openerp>
|
||||
<data noupdate="0">
|
||||
|
||||
<record id="base.group_sale_salesman" model="res.groups">
|
||||
<field name="name">Sales / User</field>
|
||||
</record>
|
||||
<record model="res.groups" id="base.group_tool_manager">
|
||||
<field name="name">Tools / Manager</field>
|
||||
</record>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<act_window id="action_lunch_order_cancel_values"
|
||||
key2="client_action_multi" name="Cancel Order"
|
||||
res_model="lunch.order.cancel" src_model="lunch.order"
|
||||
view_mode="form" target="new" view_type="form" groups="base.group_tool_manager"/>
|
||||
view_mode="form" target="new" view_type="form"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<act_window id="action_lunch_order_confirm_values"
|
||||
key2="client_action_multi" name="Confirm Order"
|
||||
res_model="lunch.order.confirm" src_model="lunch.order"
|
||||
view_mode="form" target="new" view_type="form" groups="base.group_tool_manager"/>
|
||||
view_mode="form" target="new" view_type="form"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -36,10 +36,10 @@
|
||||
<separator string="" colspan="4" />
|
||||
<group col="10" colspan="4">
|
||||
<field name="state" readonly="1" />
|
||||
<button name="state_cancel_set" string="Cancel" states="running" icon="terp-gtk-stop"/>
|
||||
<button name="state_running_set" string="Run" states="draft,done,cancelled" icon="gtk-apply"/>
|
||||
<button name="state_draft_set" string="Set to Draft" states="done,cancelled" icon="gtk-convert"/>
|
||||
<button name="state_done_set" string="Close" states="running" icon="terp-dialog-close"/>
|
||||
<button name="state_cancel_set" string="Cancel" states="running" icon="terp-gtk-stop"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
@@ -161,9 +161,9 @@
|
||||
<separator string="" colspan="4"/>
|
||||
<group col="6" colspan="4">
|
||||
<field name="state" readonly="1"/>
|
||||
<button name="state_cancel_set" string="Cancel" states="running" icon="terp-gtk-stop"/>
|
||||
<button name="state_running_set" string="Run" states="draft" icon="gtk-apply"/>
|
||||
<button name="state_done_set" string="Close" states="running" icon="terp-dialog-close"/>
|
||||
<button name="state_cancel_set" string="Cancel" states="running" icon="terp-gtk-stop"/>
|
||||
<button name="state_draft_set" string="Set to Draft" states="done,cancelled" icon="gtk-convert"/>
|
||||
</group>
|
||||
</form>
|
||||
@@ -382,9 +382,9 @@
|
||||
<separator string="" colspan="4"/>
|
||||
<group colspan="4" col="11">
|
||||
<field name="state" readonly="True"/>
|
||||
<button string="Cancel" states="todo,exception" name="button_cancel" type="object" icon="terp-gtk-stop"/>
|
||||
<button string="Reset" states="exception,cancelled" name="button_draft" type="object" icon="gtk-undo"/>
|
||||
<button string="Process" states="todo" name="process" type="object" icon="terp-gtk-go-back-rtl"/>
|
||||
<button string="Cancel" states="todo,exception" name="button_cancel" type="object" icon="terp-gtk-stop"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -604,7 +604,7 @@
|
||||
|
||||
<field colspan="2" name="move_lines2" nolabel="1" domain="[('state','in', ('done', 'cancel'))]"
|
||||
widget="one2many_list" mode="tree,form" height="275">
|
||||
<tree colors="red:scrapped==True;blue:state in('draft');black:state in('picking_except','confirmed','ready','in_production');gray:state in('cancel','done') " string="Consumed Products" editable="bottom">
|
||||
<tree colors="red:scrapped==True;blue:state in('draft');black:state in('picking_except','confirmed','ready','in_production');gray:state in('cancel') " string="Consumed Products" editable="bottom">
|
||||
<field name="product_id" readonly="1"/>
|
||||
<field name="product_qty" readonly="1" string="Qty"/>
|
||||
<field name="product_uom" readonly="1" string="UOM" widget="selection"/>
|
||||
@@ -627,12 +627,12 @@
|
||||
<separator colspan="4"/>
|
||||
<group col="9" colspan="4">
|
||||
<field name="state"/>
|
||||
<button name="button_cancel" states="draft,ready,confirmed,in_production,picking_except" string="Cancel" icon="gtk-stop"/>
|
||||
<button name="action_compute" states="draft" string="Compute Data" type="object" icon="terp-stock_format-scientific"/>
|
||||
<button name="button_confirm" states="draft" string="Confirm Production" icon="gtk-apply"/>
|
||||
<button name="button_produce" states="ready" string="Start Production" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="%(act_mrp_product_produce)d" states="in_production" string="Produce" icon="gtk-ok" type="action"/>
|
||||
<button name="force_production" states="confirmed,picking_except" string="Force Reservation" type="object" icon="gtk-jump-to"/>
|
||||
<button name="button_cancel" states="draft,ready,confirmed,in_production,picking_except" string="Cancel" icon="gtk-stop"/>
|
||||
<button name="button_recreate" states="picking_except" string="Recreate Picking" icon="terp-document-new"/>
|
||||
</group>
|
||||
</page>
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
<xpath expr="/form/notebook/page/field[@name='workcenter_lines']/form/field[@name='hour']" position="after">
|
||||
<group colspan="8" col="8">
|
||||
<field name="state"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop" help="Cancel Order"/>
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert" help="Set to Draft"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="terp-gtk-jump-to-ltr" help="Start Working"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause" help="Resume Work Order"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop" help="Cancel Order"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause" help="Pause Work Order"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="terp-dialog-close" help="Finish Order"/>
|
||||
</group>
|
||||
@@ -32,10 +32,10 @@
|
||||
<field name="inherit_id" ref="mrp.mrp_production_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/notebook/page/field[@name='workcenter_lines']/tree/field[@name='hour']" position="after">
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop"/>
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="terp-dialog-close"/>
|
||||
<field name="state"/>
|
||||
@@ -114,10 +114,10 @@
|
||||
<separator string="" colspan="4"/>
|
||||
<group colspan="8" col="8">
|
||||
<field name="state"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop"/>
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="terp-dialog-close"/>
|
||||
</group>
|
||||
|
||||
@@ -2,24 +2,24 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_repair_order_tree" model="ir.ui.view">
|
||||
<field name="name">mrp.repair.tree</field>
|
||||
<field name="model">mrp.repair</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Repairs order" colors="gray:state in ('done','cancel');black:state not in ('done','cancel');blue:state=='draft'">
|
||||
<field name="name" select="1" />
|
||||
<field name="product_id" select="1" />
|
||||
<field name="move_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="address_id"/>
|
||||
<field name="location_id"/>
|
||||
<field name="location_dest_id"/>
|
||||
<field name="guarantee_limit"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_repair_order_tree" model="ir.ui.view">
|
||||
<field name="name">mrp.repair.tree</field>
|
||||
<field name="model">mrp.repair</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Repairs order" colors="gray:state in ('done','cancel');black:state not in ('done','cancel');blue:state=='draft'">
|
||||
<field name="name" select="1" />
|
||||
<field name="product_id" select="1" />
|
||||
<field name="move_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="address_id"/>
|
||||
<field name="location_id"/>
|
||||
<field name="location_dest_id"/>
|
||||
<field name="guarantee_limit"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_repair_order_form" model="ir.ui.view">
|
||||
<field name="name">mrp.repair.form</field>
|
||||
@@ -177,30 +177,30 @@
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Reair Orders">
|
||||
<group col='4' colspan='4'>
|
||||
<filter icon="terp-document-new" string="Quotations" domain="[('state','=','draft')]"/>
|
||||
<group col='4' colspan='4'>
|
||||
<filter icon="terp-document-new" string="Quotations" domain="[('state','=','draft')]"/>
|
||||
<filter icon="terp-check" string="Confirmed" domain="[('state','=','confirmed')]" name="current" />
|
||||
<filter icon="terp-emblem-important" string="Ready To Repair" domain="[('state','=','ready')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-dolar" string="invoiced" domain="[('invoiced','=',True)]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name"/>
|
||||
<field name="product_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="state" />
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="10" col="8" groups="base.group_extended">
|
||||
<filter string="Partner" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<field name="name"/>
|
||||
<field name="product_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="state" />
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="10" col="8">
|
||||
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'guarantee_limit'}"/>
|
||||
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'guarantee_limit'}" help="Guarantee limit"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<button icon="gtk-stop" special="cancel"
|
||||
string="Cancel" />
|
||||
<button name="make_invoices" string="Create Invoice"
|
||||
colspan="1" type="object" icon="terp-dolar" />
|
||||
colspan="1" type="object" icon="terp-gtk-go-back-rtl" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -180,7 +180,8 @@ global new_con_country
|
||||
new_con_country= ""
|
||||
global new_con_state
|
||||
new_con_state= ""
|
||||
|
||||
global search_country
|
||||
search_country = None
|
||||
|
||||
def check():
|
||||
server = NewConn.getitem('_server')
|
||||
@@ -955,10 +956,6 @@ def SetDefaultContact(txtProcessor,*args):
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.control_id,name)
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0],email)
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[2],new_con_state)
|
||||
state_val = NewConn.FindCountryForState(str(state_ref))
|
||||
if state_val == None:
|
||||
new_con_country = country
|
||||
new_con_country = state_val
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[3],new_con_country)
|
||||
new_con_country = ""
|
||||
new_con_state = ""
|
||||
@@ -1101,19 +1098,14 @@ def GetDefaultEmail(txtProcessor,*args):
|
||||
state_ref = state_n
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[0], ustr(partner_ref))
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[10], ustr(state_ref))
|
||||
state_val = NewConn.FindCountryForState(str(state_ref))
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[11], ustr(country_ref))
|
||||
partner_ref = ""
|
||||
country_ref = ""
|
||||
state_ref = ""
|
||||
new_con_country = ""
|
||||
new_con_state = ""
|
||||
if state_val == None:
|
||||
country_ref = country_n
|
||||
country_ref = state_val
|
||||
if country_ref == None:
|
||||
country_ref = ""
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[11], ustr(country_ref))
|
||||
|
||||
if not b:
|
||||
return
|
||||
#Acquiring control of the text box
|
||||
@@ -1174,6 +1166,8 @@ def GetDefaultEmail(txtProcessor,*args):
|
||||
|
||||
if val[0] == 'country_id' and val[1] != False :
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[11], ustr(val[1][1]))
|
||||
global search_country
|
||||
search_country = ustr(val[1][1])
|
||||
|
||||
if val[0] == 'phone' and val[1] != False :
|
||||
win32gui.SetDlgItemText(txtProcessor.window.hwnd, txtProcessor.other_ids[5], ustr(val[1]))
|
||||
@@ -1237,6 +1231,8 @@ def SearchPartner(btnProcessor,*args):
|
||||
|
||||
if val[0] == 'country_id' and val[1] != False :
|
||||
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[12], ustr(val[1][1]))
|
||||
global search_country
|
||||
search_country = ustr(val[1][1])
|
||||
|
||||
if val[0] == 'phone' and val[1] != False :
|
||||
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[6], ustr(val[1]))
|
||||
@@ -1543,12 +1539,14 @@ def SelectCountryFromList(btnProcessor,*args):
|
||||
sel_text = nombre[0:size]
|
||||
global country_ref
|
||||
global new_con_country
|
||||
global search_country
|
||||
if str(sel_text).strip() == "":
|
||||
win32ui.MessageBox("Invalid country selected.","Search Country")
|
||||
return
|
||||
try:
|
||||
country_ref = str(sel_text)
|
||||
new_con_country = str(sel_text)
|
||||
search_country = str(sel_text)
|
||||
except Exception,e:
|
||||
pass
|
||||
win32gui.EndDialog(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
|
||||
@@ -1565,13 +1563,15 @@ def SearchState(btnProcessor, *args):
|
||||
if not b:
|
||||
return
|
||||
try :
|
||||
global new_con_country
|
||||
global search_country
|
||||
search_state = win32gui.GetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0])
|
||||
if not search_state:
|
||||
win32ui.MessageBox("Please enter state name to search for.", "Search Fed.State", flag_excl)
|
||||
return
|
||||
#Searching the contact.
|
||||
hwndList = win32gui.GetDlgItem(btnProcessor.window.hwnd, btnProcessor.other_ids[1])
|
||||
states = list(NewConn.GetStates(search_state))
|
||||
states = list(NewConn.GetStates(search_state, search_country))
|
||||
win32gui.SendMessage(hwndList, commctrl.LVM_DELETEALLITEMS)
|
||||
if not states:
|
||||
win32gui.SetDlgItemText(btnProcessor.window.hwnd, btnProcessor.other_ids[0],"<enter text to search>")
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -317,7 +317,7 @@ END
|
||||
IDD_SELECT_STATE DIALOGEX 0, 0, 220, 250
|
||||
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_CONTEXTHELP
|
||||
CAPTION "Search Country"
|
||||
CAPTION "Search Fed. State"
|
||||
FONT 8, "Tahoma", 400, 0, 0x0
|
||||
BEGIN
|
||||
|
||||
|
||||
@@ -295,9 +295,7 @@ class XMLRpcConn(object):
|
||||
startCut = message_id.find("<")
|
||||
endCut = message_id.find(">")
|
||||
message_id = message_id[startCut:endCut+1]
|
||||
|
||||
email.replace_header('Message-Id',message_id)
|
||||
win32ui.MessageBox(str(email),"Mail ")
|
||||
id = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'email.server.tools','process_email',section, str(email))
|
||||
if id > 0:
|
||||
flag = True
|
||||
@@ -467,7 +465,6 @@ class XMLRpcConn(object):
|
||||
|
||||
|
||||
def GetCountry(self, country_search=''):
|
||||
import win32ui
|
||||
conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object')
|
||||
ids=[]
|
||||
obj_list=[]
|
||||
@@ -480,11 +477,17 @@ class XMLRpcConn(object):
|
||||
obj_list.sort(lambda x, y: cmp(x[1],y[1]))
|
||||
return obj_list
|
||||
|
||||
def GetStates(self, state_search=''):
|
||||
def GetStates(self, state_search='', country=None):
|
||||
import win32ui
|
||||
conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object')
|
||||
ids=[]
|
||||
obj_list=[]
|
||||
ids = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'res.country.state','search',[('name','ilike',ustr(state_search))])
|
||||
ids = []
|
||||
c_id = []
|
||||
obj_list = []
|
||||
if country == None:
|
||||
ids = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'res.country.state','search',[('name','ilike',ustr(state_search))])
|
||||
if not country == None:
|
||||
c_id = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'res.country','search',[('name','=',ustr(country))])
|
||||
ids = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'res.country.state','search',[('name','ilike',ustr(state_search)),('country_id','=',c_id[0])])
|
||||
if ids:
|
||||
ids.sort()
|
||||
for id in ids:
|
||||
|
||||
@@ -72,9 +72,9 @@
|
||||
<field colspan="4" name="message" readonly="1"/>
|
||||
<field name="state" readonly="1"/>
|
||||
<group col="7" colspan="2">
|
||||
<button name="button_cancel" states="draft,exception,waiting" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="button_confirm" states="draft" string="Confirm" icon="gtk-apply"/>
|
||||
<button name="button_restart" states="exception" string="Retry" icon="gtk-convert"/>
|
||||
<button name="button_cancel" states="draft,exception,waiting" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="button_check" states="confirmed" string="Run Procurement" icon="gtk-media-play"/>
|
||||
</group>
|
||||
</page>
|
||||
|
||||
@@ -308,6 +308,7 @@ class product_template(osv.osv):
|
||||
'uos_coeff' : lambda *a: 1.0,
|
||||
'mes_type' : lambda *a: 'fixed',
|
||||
'categ_id' : _default_category,
|
||||
'type' : lambda *a: 'consu',
|
||||
}
|
||||
|
||||
def _check_uom(self, cursor, user, ids):
|
||||
|
||||
@@ -9,10 +9,8 @@
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Product">
|
||||
<filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/>
|
||||
<filter icon="terp-accessories-archiver" string="Consumable"
|
||||
domain="[('type','=', 'consumable')]"/>
|
||||
<filter string="Stockable" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]"/>
|
||||
<filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/>
|
||||
<filter string="Consumable/Stockable" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="To Sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
|
||||
<filter string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]" />
|
||||
|
||||
@@ -88,16 +88,10 @@
|
||||
<child1>
|
||||
<action colspan="4" height="100" name="%(action_view_task_tree)d" string="My Open Tasks" width="510"/>
|
||||
<action colspan="4" height="100" name="%(action_view_delegate_task_tree)d" string="My Delegated Tasks" width="510"/>
|
||||
</child1>
|
||||
</child1>
|
||||
<child2>
|
||||
<vpaned>
|
||||
<child1>
|
||||
<action colspan="4" height="100" name="%(project.action_project_vs_planned_total_hours_graph)d" string="My Projects: Planned vs Total Hours" />
|
||||
</child1>
|
||||
<child2>
|
||||
<action colspan="4" height="100" name="%(project.action_project_vs_remaining_hours_graph)d" string="My Remaining Hours by Project" />
|
||||
</child2>
|
||||
</vpaned>
|
||||
<action colspan="4" height="100" name="%(project.action_project_vs_planned_total_hours_graph)d" string="My Projects: Planned vs Total Hours" />
|
||||
<action colspan="4" height="100" name="%(project.action_project_vs_remaining_hours_graph)d" string="My Remaining Hours by Project" />
|
||||
</child2>
|
||||
</hpaned>
|
||||
</form>
|
||||
|
||||
@@ -637,6 +637,7 @@ class task(osv.osv):
|
||||
if context is None:
|
||||
context = {}
|
||||
request = self.pool.get('res.request')
|
||||
|
||||
for task in self.browse(cr, uid, ids, context=context):
|
||||
project = task.project_id
|
||||
if project and project.warn_manager and project.user_id.id and (project.user_id.id != uid):
|
||||
@@ -651,6 +652,7 @@ class task(osv.osv):
|
||||
})
|
||||
|
||||
self.write(cr, uid, [task.id], {'state': 'open'})
|
||||
|
||||
return True
|
||||
|
||||
def do_cancel(self, cr, uid, ids, *args):
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
name="Project" sequence="10"
|
||||
groups="group_project_manager,group_project_user,base.group_system,group_project_finance_user"/>
|
||||
|
||||
<menuitem id="menu_project_management" name="Project Management" parent="base.menu_main_pm" sequence="1"/>
|
||||
<menuitem id="menu_project_management" name="Project" parent="base.menu_main_pm" sequence="1"/>
|
||||
<menuitem id="menu_definitions" name="Configuration" parent="base.menu_main_pm" sequence="60" groups="base.group_system,group_project_finance_user"/>
|
||||
|
||||
<!-- Project -->
|
||||
@@ -27,7 +27,7 @@
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Administration">
|
||||
<group col="2" colspan="2">
|
||||
<group col="2" colspan="2" groups="base.group_extended">
|
||||
<separator colspan="2" string="Scheduling"/>
|
||||
<field name="priority"/>
|
||||
<field name="active"/>
|
||||
@@ -46,11 +46,11 @@
|
||||
<separator colspan="4"/>
|
||||
<group col="9" colspan="8">
|
||||
<field name="state" select="1" readonly="1"/>
|
||||
<button name="set_template" string="Set as Template" type="object" states="open" icon="gtk-convert"/>
|
||||
<button name="set_cancel" string="Cancel" type="object" states="open,pending" icon="gtk-cancel"/>
|
||||
<button name="set_template" string="Set as Template" type="object" states="open" icon="gtk-convert" groups="base.group_extended"/>
|
||||
<button name="set_open" string="Reactivate Project" type="object" states="pending,cancelled,close" icon="gtk-ok"/>
|
||||
<button name="set_pending" string="Pending" type="object" states="open" icon="gtk-media-pause"/>
|
||||
<button name="set_done" string="Done" type="object" states="open,pending" icon="terp-dialog-close"/>
|
||||
<button name="set_cancel" string="Cancel" type="object" states="open,pending" icon="gtk-cancel"/>
|
||||
<button name="reset_project" string="Reset as Project" type="object" states="template" icon="gtk-convert"/>
|
||||
<button
|
||||
string="New Project Based on Template"
|
||||
@@ -67,16 +67,18 @@
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page groups="base.group_extended" string="Partner Info">
|
||||
<field colspan="4" name="partner_id" on_change="onchange_partner_id(partner_id)" select="1"/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="contact_id" string="Contact Address"/>
|
||||
<page string="Billing" groups="account.group_account_invoice">
|
||||
<field colspan="4" name="partner_id" on_change="onchange_partner_id(partner_id)" select="1" string="Customer"/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="contact_id" string="Invoice Address"/>
|
||||
<field name="warn_customer"/>
|
||||
<newline/>
|
||||
<separator colspan="2" string="Mail Header"/>
|
||||
<separator colspan="2" string="Mail Footer"/>
|
||||
<field name="warn_header" nolabel="1" colspan="2"/>
|
||||
<field name="warn_footer" nolabel="1" colspan="2"/>
|
||||
<group col="3" colspan="4">
|
||||
<group colspan="4" col="4" groups="base.group_extended">
|
||||
<separator colspan="2" string="Mail Header"/>
|
||||
<separator colspan="2" string="Mail Footer"/>
|
||||
<field name="warn_header" nolabel="1" colspan="2"/>
|
||||
<field name="warn_footer" nolabel="1" colspan="2"/>
|
||||
</group>
|
||||
<group col="3" colspan="4" groups="base.group_extended">
|
||||
<separator string="Automatic variables for headers and footer. Use exactly the same notation." colspan="4"/>
|
||||
<label string="Task: %%(name)s"/>
|
||||
<label string="User: %%(user_id)s"/>
|
||||
@@ -242,13 +244,13 @@
|
||||
<newline/>
|
||||
<group col="11" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
<button name="do_draft" states="open" string="Draft" type="object" icon="gtk-indent"/>
|
||||
<button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute"/>
|
||||
<button name="%(action_project_task_reevaluate)d" states="done,cancelled" string="Reactivate" type="action" icon="gtk-convert" context="{'button_reactivate':True}" />
|
||||
<button name="do_pending" states="open" string="Pending" type="object" icon="gtk-media-pause"/>
|
||||
<button groups="base.group_extended" name="%(action_project_task_delegate)d" states="pending,open" string="Delegate" type="action" icon="gtk-sort-descending"/>
|
||||
<button name="action_close" states="pending,open" string="Done" type="object" icon="terp-dialog-close"/>
|
||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
</group>
|
||||
</page>
|
||||
<page groups="base.group_extended" string="Delegations">
|
||||
@@ -323,10 +325,10 @@
|
||||
<field name="date_end" invisible="1"/>
|
||||
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
|
||||
<field name="state" invisible="context.get('set_visible',False)"/>
|
||||
<button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/>
|
||||
<button groups="base.group_extended" name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-sort-descending" help="For changing to delegate state"/>
|
||||
<button name="action_close" states="draft,pending,open" string="Done" type="object" icon="gtk-apply" help="For changing to done state"/>
|
||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
|
||||
<button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/>
|
||||
<button groups="base.group_extended" name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-sort-descending" help="For changing to delegate state"/>
|
||||
<button name="action_close" states="draft,pending,open" string="Done" type="object" icon="terp-dialog-close" help="For changing to done state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -378,7 +380,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Task Edition">
|
||||
<group col="20" colspan="4">
|
||||
<filter string="Current" domain="[('state','in',('open','draft'))]" name="current" help="Draft, In Progress and Pending Tasks" icon="terp-check" default="1"/>
|
||||
<filter string="Current" domain="[('state','in',('open','draft'))]" name="current" help="Draft and In Progress tasks" icon="terp-check" default="1"/>
|
||||
<filter string="In Progress" domain="[('state','=','open')]" help="In Progress Tasks" icon="terp-camera_test"/>
|
||||
<filter string="Pending" domain="[('state','=','pending')]" context="{'show_delegated':False}" help="Pending Tasks" icon="terp-gtk-media-pause"/>
|
||||
<separator orientation="vertical"/>
|
||||
|
||||
@@ -89,7 +89,7 @@ class report_project_task_user(osv.osv):
|
||||
planned_hours as hours_planned,
|
||||
(extract('epoch' from (t.date_end-t.create_date)))/(3600*24) as closing_days,
|
||||
(extract('epoch' from (t.date_start-t.create_date)))/(3600*24) as opening_days,
|
||||
(extract('epoch' from (t.date_deadline-t.date_end)))/(3600*24) as delay_endings_days
|
||||
abs((extract('epoch' from (t.date_deadline-t.date_end)))/(3600*24)) as delay_endings_days
|
||||
FROM project_task t
|
||||
|
||||
GROUP BY
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
<field name="project_id">
|
||||
<filter icon="terp-folder-blue"
|
||||
string="My Projects"
|
||||
help="My Projects" domain="[('project_id','=',uid)]"/>
|
||||
help="My Projects" domain="[('project_id.user_id','=',uid)]"/>
|
||||
</field>
|
||||
|
||||
<field name="user_id" widget="selection">
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<field name="groups" eval="[(6, 0, [ref('group_project_manager')])]"/>
|
||||
<field name="domain_force">[('members','in',[user.id])]</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="ir.rule" id="project_user_rule">
|
||||
<field name="name" >Projects According to Members</field>
|
||||
<field name="model_id" ref="model_project_project"/>
|
||||
|
||||
@@ -13,19 +13,20 @@
|
||||
<field name="user_id" colspan="4"/>
|
||||
<field name="planned_hours" widget="float_time" colspan="4"/>
|
||||
<field name="name" colspan="4"/>
|
||||
<field name="new_task_description" colspan="4" />
|
||||
<separator string="New Task Description" colspan="4"/>
|
||||
<field name="new_task_description" colspan="4" nolabel="1"/>
|
||||
</group>
|
||||
<group colspan="2" col="2">
|
||||
<separator string="Validation Task" colspan="4"/>
|
||||
<field name="planned_hours_me" widget="float_time" colspan="4"/>
|
||||
<field name="prefix" string="Validatation Task Title" colspan="4"/>
|
||||
<field name="prefix" string="Validation Task Title" colspan="4"/>
|
||||
<field name="state" colspan="4"/>
|
||||
</group>
|
||||
<separator string="" colspan="4"/>
|
||||
<group colspan="2" col="2">
|
||||
</group>
|
||||
<group colspan="2" col="2">
|
||||
<button icon="gtk-close" special="cancel" string="_Cancel"/>
|
||||
<button icon="gtk-cancel" special="cancel" string="_Cancel"/>
|
||||
<button icon="gtk-ok" name="delegate" string="_Delegate" type="object"/>
|
||||
</group>
|
||||
</form>
|
||||
|
||||
@@ -108,7 +108,7 @@ class project_task(osv.osv):
|
||||
tt = timebox_obj.browse(cr, uid, timebox_obj.search(cr,uid,[]))
|
||||
search_extended ='''<newline/><group col="%d" expand="1" string="%s" groups="project_gtd.group_project_getting">''' % (len(tt)+7,_('Getting Things Done'))
|
||||
search_extended += '''<filter domain="[('timebox_id','=', False)]" context="{'set_editable':True,'set_visible':True,'gtd_visible':True,'user_invisible':True}" icon="gtk-new" help="Undefined Timebox" string="%s"/>''' % (_('Inbox'),)
|
||||
search_extended += '''<filter context="{'set_editable':True,'set_visible':True,'gtd_visible':True,'user_invisible':True}" icon="gtk-new" help="Undefined Timebox" string="%s"/>''' % (_('GTD'),)
|
||||
search_extended += '''<filter context="{'set_editable':True,'set_visible':True,'gtd_visible':True,'user_invisible':True}" icon="gtk-new" string="%s"/>''' % (_('GTD'),)
|
||||
search_extended += '''<separator orientation="vertical"/>'''
|
||||
for time in tt:
|
||||
if time.icon:
|
||||
|
||||
@@ -170,7 +170,7 @@ class project_issue(crm.crm_case, osv.osv):
|
||||
progress = task_pool._hours_get(cr, uid, [issue.task_id.id], field_names, args, context=context)[issue.task_id.id]['progress']
|
||||
res[issue.id] = {'progress' : progress}
|
||||
return res
|
||||
|
||||
|
||||
_columns = {
|
||||
'id': fields.integer('ID'),
|
||||
'name': fields.char('Issue', size=128, required=True),
|
||||
@@ -201,7 +201,7 @@ class project_issue(crm.crm_case, osv.osv):
|
||||
'canal_id': fields.many2one('res.partner.canal', 'Channel', help="The channels represent the different communication modes available with the customer." \
|
||||
" With each commercial opportunity, you can indicate the canall which is this opportunity source."),
|
||||
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('object_id.model', '=', 'crm.project.bug')]"),
|
||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Severity'),
|
||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
|
||||
'version_id': fields.many2one('project.issue.version', 'Version'),
|
||||
'partner_name': fields.char("Employee's Name", size=64),
|
||||
'partner_mobile': fields.char('Mobile', size=32),
|
||||
@@ -254,6 +254,7 @@ class project_issue(crm.crm_case, osv.osv):
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
task_obj = self.pool.get('project.task')
|
||||
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
@@ -297,6 +298,7 @@ class project_issue(crm.crm_case, osv.osv):
|
||||
'nodestroy': True
|
||||
}
|
||||
|
||||
|
||||
def _convert(self, cr, uid, ids, xml_id, context=None):
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
id2 = data_obj._get_id(cr, uid, 'project_issue', xml_id)
|
||||
@@ -313,7 +315,6 @@ class project_issue(crm.crm_case, osv.osv):
|
||||
def convert_to_bug(self, cr, uid, ids, context=None):
|
||||
return self._convert(cr, uid, ids, 'bug_categ', context=context)
|
||||
|
||||
|
||||
def next_type(self, cr, uid, ids, *args):
|
||||
for task in self.browse(cr, uid, ids):
|
||||
typeid = task.type_id.id
|
||||
@@ -336,10 +337,11 @@ class project_issue(crm.crm_case, osv.osv):
|
||||
self.write(cr, uid, task.id, {'type_id': index and types[index-1] or False})
|
||||
return True
|
||||
|
||||
|
||||
def onchange_task_id(self, cr, uid, ids, task_id, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
result = {}
|
||||
result = {}
|
||||
if not task_id:
|
||||
return {'value':{}}
|
||||
task = self.pool.get('project.task').browse(cr, uid, task_id, context)
|
||||
@@ -464,7 +466,7 @@ class project_issue(crm.crm_case, osv.osv):
|
||||
@param **args: Return Dictionary of Keyword Value
|
||||
"""
|
||||
return True
|
||||
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
if not context:
|
||||
context={}
|
||||
|
||||
@@ -84,10 +84,10 @@
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" />
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_close" string="Close" states="open,draft,pending" type="object" icon="terp-dialog-close"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
</group>
|
||||
@@ -191,9 +191,9 @@
|
||||
<field name="assigned_to"/>
|
||||
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
|
||||
<field name="state"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward" help="To Do"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
@@ -290,9 +290,9 @@
|
||||
<field name="version_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="state"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
||||
@@ -326,6 +326,19 @@
|
||||
# Project
|
||||
# ------------------------------------------------------
|
||||
|
||||
<record id="project.view_project_resource_form1" model="ir.ui.view">
|
||||
<field name="name">Project Resource Calendar View</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="priority" position="before">
|
||||
<field name="resource_calendar_id"/>
|
||||
</field>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_project_form_inherited" model="ir.ui.view">
|
||||
<field name="name">project.project.form.inherited</field>
|
||||
<field name="model">project.project</field>
|
||||
@@ -333,7 +346,6 @@
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="priority" position="before">
|
||||
<field name="resource_calendar_id"/>
|
||||
<field name="project_escalation_id"/>
|
||||
<field name="reply_to"/>
|
||||
</field>
|
||||
|
||||
@@ -91,8 +91,8 @@ class project_phase(osv.osv):
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
model_data_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
|
||||
return model_data_obj.read(cr, uid, [model_data_id], ['res_id'])[0]['res_id']
|
||||
|
||||
def _compute(self, cr, uid, ids,field_name, arg, context=None):
|
||||
|
||||
def _compute(self, cr, uid, ids, field_name, arg, context=None):
|
||||
res = {}
|
||||
if not ids:
|
||||
return res
|
||||
@@ -143,7 +143,7 @@ class project_phase(osv.osv):
|
||||
project_id = project_obj.browse(cr, uid, project, context=context)
|
||||
result['date_start'] = project_id.date_start
|
||||
return {'value': result}
|
||||
|
||||
|
||||
def onchange_days(self, cr, uid, ids, project, context=None):
|
||||
result = {}
|
||||
for id in ids:
|
||||
@@ -219,7 +219,7 @@ class project_phase(osv.osv):
|
||||
cal_id = resource_obj.browse(cr, uid, resource_id[0], context=context).calendar_id.id
|
||||
if cal_id:
|
||||
calendar_id = cal_id
|
||||
|
||||
|
||||
avg_hours = uom_obj._compute_qty(cr, uid, phase.product_uom.id, phase.duration, default_uom_id)
|
||||
# Change the date_start and date_end
|
||||
# for previous and next phases respectively based on valid condition
|
||||
@@ -232,7 +232,7 @@ class project_phase(osv.osv):
|
||||
if prv_phase.id == phase.id:
|
||||
continue
|
||||
self._check_date_start(cr, uid, prv_phase, dt_start, context=context)
|
||||
|
||||
|
||||
if vals.get('date_end', False) and vals['date_end'] > phase.date_end:
|
||||
dt_end = datetime.strptime(vals['date_end'], '%Y-%m-%d')
|
||||
work_times = resource_calendar_obj.interval_min_get(cr, uid, calendar_id, dt_end, avg_hours or 0.0, resource_id and resource_id[0] or False)
|
||||
@@ -242,7 +242,7 @@ class project_phase(osv.osv):
|
||||
if next_phase.id == phase.id:
|
||||
continue
|
||||
self._check_date_end(cr, uid, next_phase, dt_end, context=context)
|
||||
|
||||
|
||||
return res
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
@@ -293,7 +293,7 @@ class project_phase(osv.osv):
|
||||
Schedule phase with the start date till all the next phases are completed.
|
||||
@param: start_dsate : start date for the phase
|
||||
@param: calendar_id : working calendar of the project
|
||||
"""
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
resource_pool = self.pool.get('resource.resource')
|
||||
@@ -304,7 +304,7 @@ class project_phase(osv.osv):
|
||||
for phase in self.browse(cr, uid, ids, context=context):
|
||||
if not phase.responsible_id:
|
||||
raise osv.except_osv(_('No responsible person assigned !'),_("You must assign a responsible person for phase '%s' !") % (phase.name,))
|
||||
|
||||
|
||||
phase_resource_obj = resource_pool.generate_resources(cr, uid, [phase.responsible_id.id], calendar_id, context=context)
|
||||
avg_hours = uom_pool._compute_qty(cr, uid, phase.product_uom.id, phase.duration, default_uom_id)
|
||||
duration = str(avg_hours) + 'H'
|
||||
@@ -369,7 +369,7 @@ class project_phase(osv.osv):
|
||||
if not start_date and phase.project_id.date_start:
|
||||
start_date = phase.project_id.date_start
|
||||
if not start_date:
|
||||
start_date = datetime.now().strftime("%Y-%m-%d")
|
||||
start_date = datetime.now().strftime("%Y-%m-%d")
|
||||
resources = resources_list.get(phase.id, [])
|
||||
calendar_id = phase.project_id.resource_calendar_id.id
|
||||
task_ids = map(lambda x : x.id, (filter(lambda x : x.state in ['open', 'draft', 'pending'] , phase.task_ids)))
|
||||
@@ -396,7 +396,7 @@ class project_resource_allocation(osv.osv):
|
||||
'user_id': fields.related('resource_id', 'user_id', type='many2one', relation="res.users", string='User'),
|
||||
'date_start': fields.date('Start Date', help="Starting Date"),
|
||||
'date_end': fields.date('End Date', help="Ending Date"),
|
||||
'useability': fields.float('Usability', help="Usability of this resource for this project phase in percentage (=50%)"),
|
||||
'useability': fields.float('Availability', help="Availability of this resource for this project phase in percentage (=50%)"),
|
||||
}
|
||||
_defaults = {
|
||||
'useability': 100,
|
||||
@@ -458,19 +458,19 @@ class project(osv.osv):
|
||||
resource_pool = self.pool.get('resource.resource')
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
|
||||
resources_list = self.generate_members(cr, uid, ids, context=context)
|
||||
return_msg = {}
|
||||
for project in self.browse(cr, uid, ids, context=context):
|
||||
start_date = project.date_start
|
||||
if not start_date:
|
||||
start_date = datetime.now().strftime("%Y-%m-%d")
|
||||
start_date = datetime.now().strftime("%Y-%m-%d")
|
||||
resources = resources_list.get(project.id, [])
|
||||
calendar_id = project.resource_calendar_id.id
|
||||
task_ids = task_pool.search(cr, uid, [('project_id', '=', project.id),
|
||||
('state', 'in', ['draft', 'open', 'pending'])
|
||||
])
|
||||
|
||||
|
||||
|
||||
if task_ids:
|
||||
task_pool.generate_schedule(cr, uid, task_ids, resources, calendar_id, start_date, context=context)
|
||||
@@ -481,7 +481,7 @@ class project(osv.osv):
|
||||
else:
|
||||
return_msg["warning"] = return_msg["warning"] + "\n" + warning_msg
|
||||
|
||||
return return_msg
|
||||
return return_msg
|
||||
|
||||
project()
|
||||
|
||||
@@ -504,7 +504,7 @@ class project_task(osv.osv):
|
||||
_columns = {
|
||||
'phase_id': fields.many2one('project.phase', 'Project Phase'),
|
||||
}
|
||||
|
||||
|
||||
def generate_schedule(self, cr, uid, ids, resources, calendar_id, start_date, context=None):
|
||||
"""
|
||||
Schedule the tasks according to resource available and priority.
|
||||
@@ -554,10 +554,10 @@ class project_task(osv.osv):
|
||||
if task_resource.__name__ == task_resource:
|
||||
real_resource = task_resource
|
||||
break
|
||||
|
||||
|
||||
task = create_tasks(task_number, hours, priorty, real_resource)
|
||||
task_number += 1
|
||||
|
||||
|
||||
|
||||
face_projects = Task.BalancedProject(Project)
|
||||
loop_no = 0
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<!--
|
||||
<!--
|
||||
This Demo data file includes Users, Human Resources, Projects and it' members list, Phases and Resources,Tasks allocation and also run scheduling of phase and tasks.
|
||||
-->
|
||||
<!-- Users -->
|
||||
|
||||
|
||||
<record id="res_users_analyst" model="res.users">
|
||||
<field name="name">Phuong</field>
|
||||
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]" name="groups_id"/>
|
||||
@@ -91,8 +91,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
|
||||
<field name="name">Project Finacial Manager</field>
|
||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Projects -->
|
||||
<record id="project_integrate_openerp" model="project.project">
|
||||
@@ -101,12 +101,12 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
|
||||
<field name="type">normal</field>
|
||||
<field name="description">Integrate an Sale and Warehouse Management.</field>
|
||||
<field eval="[(6, 0, [
|
||||
ref('res_users_analyst'),
|
||||
ref('res_users_project_manager'),
|
||||
ref('res_users_technical_leader'),
|
||||
ref('res_users_developer'),
|
||||
ref('res_users_designer'),
|
||||
ref('res_users_tester'),
|
||||
ref('res_users_analyst'),
|
||||
ref('res_users_project_manager'),
|
||||
ref('res_users_technical_leader'),
|
||||
ref('res_users_developer'),
|
||||
ref('res_users_designer'),
|
||||
ref('res_users_tester'),
|
||||
ref('res_users_finacial_manager')])]" name="members"/>
|
||||
<field name="user_id" ref="res_users_project_manager"/>
|
||||
<field name="name">Integrate an Sale and Warehouse Management.</field>
|
||||
@@ -213,7 +213,7 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
|
||||
<field name="resource_id" ref="resource_project_manager"/>
|
||||
<field name="phase_id" ref="project_phase_5"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="resource_allocation_9" model="project.resource.allocation">
|
||||
<field name="resource_id" ref="resource_analyst"/>
|
||||
<field name="phase_id" ref="project_phase_6"/>
|
||||
|
||||
@@ -81,9 +81,9 @@
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="20">
|
||||
<filter name="resource" string="Resource" icon="terp-folder-blue" domain="[]" context="{'group_by':'resource_id'}"/>
|
||||
<filter name="resource" string="Resource" icon="terp-personal" domain="[]" context="{'group_by':'resource_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Project" icon="terp-project" domain="[]" context="{'group_by':'project_id'}"/>
|
||||
<filter string="Project" icon="terp-folder-blue" domain="[]" context="{'group_by':'project_id'}"/>
|
||||
<filter string="Phase" icon="terp-project" domain="[]" context="{'group_by':'phase_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
@@ -110,22 +110,18 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Project Phase">
|
||||
<group colspan="8" col="7">
|
||||
<group colspan="8">
|
||||
<field name="name" select="1"/>
|
||||
<field name="total_hours"/>
|
||||
<field name="project_id" on_change="onchange_project(project_id)" colspan="2"/>
|
||||
<field name="responsible_id" colspan="2"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group colspan="2">
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<group colspan="6" col="6">
|
||||
<group colspan="6" col="6" >
|
||||
<field name="name" select="1"/>
|
||||
<field name="project_id" on_change="onchange_project(project_id)"/>
|
||||
<field name="responsible_id"/>
|
||||
</group>
|
||||
<group colspan="6" col="6">
|
||||
<field name="date_start"/>
|
||||
<field name="duration" on_change="onchange_days(project_id)" />
|
||||
<field name="product_uom" nolabel="1" domain="[('category_id.name', '=', 'Working Time')]"/>
|
||||
<field name="date_end"/>
|
||||
</group>
|
||||
<group colspan="2">
|
||||
<field name="duration" on_change="onchange_days(project_id)"/>
|
||||
<field name="product_uom" nolabel="1" domain="[('category_id.name', '=', 'Working Time')]"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Resource Allocation">
|
||||
@@ -146,11 +142,11 @@
|
||||
<separator string="" colspan="4"/>
|
||||
<group col="12" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button string="Cancel" name="set_cancel" states="draft,open,pending" icon="gtk-cancel"/>
|
||||
<button string="Draft" name="set_draft" states="open" icon="gtk-indent"/>
|
||||
<button string="Pending" name="set_pending" states="open" icon="gtk-media-pause"/>
|
||||
<button string="Done" name="set_done" states="pending,open" icon="terp-dialog-close"/>
|
||||
<button string="Start Phase" name="set_open" states="pending,draft" icon="gtk-execute"/>
|
||||
<button string="Cancel" name="set_cancel" states="draft,open,pending" icon="gtk-cancel"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Task Detail">
|
||||
@@ -275,7 +271,7 @@
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="20" groups="base.group_extended">
|
||||
<filter string="User" icon="terp-personal" domain="[]" context="{'group_by':'responsible_id'}"/>
|
||||
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'responsible_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Project" icon="terp-folder-blue" domain="[]" context="{'group_by':'project_id'}" name="project"/>
|
||||
<separator orientation="vertical"/>
|
||||
@@ -292,7 +288,7 @@
|
||||
<field name="res_model">project.phase</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">gantt,tree,form,calendar</field>
|
||||
<field name="context">{'search_default_responsible_id':uid}</field>
|
||||
<field name="context">{'search_default_responsible_id':uid,'group_by':'project_id'}</field>
|
||||
<field name="search_view_id" ref="view_project_phase_search"/>
|
||||
<field name="help">You can subdivide your larger projects into several phases. For each phase, you can define your resources allocation (humans or engine), describe de differend task and link your phase with previous and next one, add constraints date and scheduling. A gantt view of your project phase is also available from this menu. Gantt view is a graphically draw of the project plan; it includes any task dependencies by visually adjusting task durations and priorities, and by linking tasks to each other.</field>
|
||||
</record>
|
||||
@@ -302,7 +298,7 @@
|
||||
<field name="res_model">project.phase</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,calendar</field>
|
||||
<field name="context">{'search_default_responsible_id':uid}</field>
|
||||
<field name="context">{'search_default_responsible_id':uid,'group_by':'project_id'}</field>
|
||||
<field name="search_view_id" ref="view_project_phase_search"/>
|
||||
</record>
|
||||
|
||||
@@ -311,8 +307,8 @@
|
||||
# Project
|
||||
# ------------------------------------------------------
|
||||
|
||||
<record id="view_phase_project_form1" model="ir.ui.view">
|
||||
<field name="name">phase.project.form1</field>
|
||||
<record id="project.view_project_resource_form1" model="ir.ui.view">
|
||||
<field name="name">Project Resource Calendar View</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
@@ -327,7 +323,7 @@
|
||||
# ------------------------------------------------------
|
||||
# Project Task
|
||||
# ------------------------------------------------------
|
||||
|
||||
|
||||
<record id="view_phase_task_form2" model="ir.ui.view">
|
||||
<field name="name">phase.task.form2</field>
|
||||
<field name="model">project.task</field>
|
||||
@@ -349,8 +345,8 @@
|
||||
<field name="phase_id" select="1"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</record>
|
||||
|
||||
<act_window
|
||||
id="project_phase_task_list"
|
||||
name="Related Tasks"
|
||||
|
||||
@@ -104,14 +104,13 @@
|
||||
<field colspan="4" name="description" nolabel="1" attrs="{'readonly':[('state','=','done')]}" widget="text_wiki"/>
|
||||
<group col="11" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
<button name="do_draft" states="open" string="Draft" type="object" icon="gtk-indent"/>
|
||||
<button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute"/>
|
||||
<button name="do_reopen" states="done,cancelled" string="Reactivate" type="object" icon="gtk-convert"/>
|
||||
<button name="do_pending" states="open" string="Pending" type="object" icon="gtk-media-pause"/>
|
||||
<button groups="base.group_extended" name="%(project.action_project_task_delegate)d" states="pending,open" string="Delegate" type="action" icon="gtk-sort-descending"/>
|
||||
<button name="%(project.action_project_task_close)d" states="pending,open" string="Done" type="action" icon="gtk-jump-to"/>
|
||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel"/>
|
||||
|
||||
</group>
|
||||
</page>
|
||||
<page groups="base.group_extended" string="Extra Info" attrs="{'readonly':[('state','=','done')]}">
|
||||
@@ -139,12 +138,12 @@
|
||||
<group col="6" colspan="4">
|
||||
<field name="state" select="1"
|
||||
readonly="1" />
|
||||
<button name="action_cancel" states="draft,open"
|
||||
string="Cancel" type="object" icon="gtk-cancel" />
|
||||
<button name="action_open" states="draft"
|
||||
string="Open" type="object" icon="gtk-yes" />
|
||||
<button name="action_done" states="open"
|
||||
string="Done" type="object" icon="gtk-jump-to" />
|
||||
<button name="action_cancel" states="draft,open"
|
||||
string="Cancel" type="object" icon="gtk-cancel" />
|
||||
<button name="action_draft" states="done,cancel"
|
||||
string="Reset to Draft" type="object" icon="gtk-convert" />
|
||||
</group>
|
||||
@@ -277,8 +276,6 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Planning statistics">
|
||||
<group col="10" colspan="4">
|
||||
<filter icon="gtk-execute" string="My" domain="[('user_id','=',uid),('planning_id.state','<>','cancel')]" help="My Plannings Statistics"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="planning_id" select="1"/>
|
||||
<field name="user_id" select="1"/>
|
||||
<field name="account_id" select="1" groups="analytic.group_analytic_accounting"/>
|
||||
@@ -300,6 +297,10 @@
|
||||
parent="hr.menu_hr_reporting" />
|
||||
<menuitem action="action_account_analytic_planning_stat_form"
|
||||
id="menu_report_account_analytic_planning_stat" parent="next_id_85" />
|
||||
<menuitem action="action_account_analytic_planning_stat_form"
|
||||
icon="terp-graph"
|
||||
id="menu_board_planning"
|
||||
parent="project.next_id_86"/>
|
||||
|
||||
<!-- Analytic account Form -->
|
||||
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
'project_scrum_report.xml',
|
||||
'wizard/project_scrum_backlog_create_task_view.xml',
|
||||
'wizard/project_scrum_backlog_merger_view.xml',
|
||||
'wizard/project_scrum_postpone_view.xml',
|
||||
"wizard/project_scrum_email_view.xml",
|
||||
'project_scrum_view.xml',
|
||||
'wizard/project_scrum_backlog_sprint_view.xml',
|
||||
'process/project_scrum_process.xml',
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<field name="model">project.scrum.sprint</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Scrum Sprint">
|
||||
<tree string="Sprints">
|
||||
<field name="name"/>
|
||||
<field name="project_id"/>
|
||||
<field name="scrum_master_id"/>
|
||||
@@ -14,7 +14,6 @@
|
||||
<field name="date_start"/>
|
||||
<field name="progress" widget="progressbar"/>
|
||||
<field name="effective_hours" sum="Effective hours" widget="float_time"/>
|
||||
<!-- field name="planned_hours" sum="Planned hours" widget="float_time"/> -->
|
||||
<field name="expected_hours" sum="Expected hours" widget="float_time"/>
|
||||
<field name="state"/>
|
||||
<button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-jump-to"/>
|
||||
@@ -26,8 +25,46 @@
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_task_progress_graph" model="ir.ui.view">
|
||||
<field name="name">project.task.graph</field>
|
||||
<field name="model">project.task</field>
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Task Progress" type="bar">
|
||||
<field name="sprint_id"/>
|
||||
<field name="effective_hours" operator="+"/>
|
||||
<field name="planned_hours" operator="+"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_view_task_progress_graph" model="ir.actions.act_window">
|
||||
<field name="name">Task Progress</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph</field>
|
||||
<field name="view_id" ref="view_task_progress_graph"/>
|
||||
</record>
|
||||
|
||||
<record id="view_backlog_progress_graph" model="ir.ui.view">
|
||||
<field name="name">project.scrum.sprint.graph</field>
|
||||
<field name="model">project.scrum.product.backlog</field>
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Backlog Progress" type="bar">
|
||||
<field name="sprint_id"/>
|
||||
<field name="effective_hours" operator="+"/>
|
||||
<field name="expected_hours" operator="+"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_view_backlog_progress_graph" model="ir.actions.act_window">
|
||||
<field name="name">Backlog Progress</field>
|
||||
<field name="res_model">project.scrum.product.backlog</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph</field>
|
||||
</record>
|
||||
<record id="action_sprint_all_dashboard_tree" model="ir.actions.act_window">
|
||||
<field name="name">Sprint's List</field>
|
||||
<field name="name">Sprints</field>
|
||||
<field name="res_model">project.scrum.sprint</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
@@ -41,8 +78,12 @@
|
||||
<form string="My Board">
|
||||
<hpaned>
|
||||
<child1>
|
||||
<action colspan="4" height="220" name="%(action_sprint_all_dashboard_tree)d" string="Sprints" width="510"/>
|
||||
<action colspan="4" height="220" name="%(action_sprint_all_dashboard_tree)d" string="Sprints" width="510"/>
|
||||
</child1>
|
||||
<child2>
|
||||
<action colspan="4" height="220" name="%(action_view_task_progress_graph)d" string="Task Progress" width="510"/>
|
||||
<action colspan="4" height="220" name="%(action_view_backlog_progress_graph)d" string="Backlog Progress" width="510"/>
|
||||
</child2>
|
||||
</hpaned>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -43,7 +43,7 @@ project_scrum_project()
|
||||
class project_scrum_sprint(osv.osv):
|
||||
_name = 'project.scrum.sprint'
|
||||
_description = 'Project Scrum Sprint'
|
||||
|
||||
_order = 'date_start'
|
||||
def _compute(self, cr, uid, ids, fields, arg, context=None):
|
||||
res = {}.fromkeys(ids, 0.0)
|
||||
progress = {}
|
||||
|
||||
@@ -1,26 +1,153 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Resource: project.project -->
|
||||
|
||||
<record id="scrum_project_1" model="project.project">
|
||||
<!-- FIXME !!! -->
|
||||
<field name="tasks">[24, 25, 28, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 36, 38]</field>
|
||||
<field model="res.users" name="manager" search="[('login','=','demo')]"/>
|
||||
<field name="expected_hours">156.0</field>
|
||||
<field name="name">OpenERP - dev branch</field>
|
||||
<field model="res.users" name="product_owner_id" search="[('login','=','demo')]"/>
|
||||
</record>
|
||||
|
||||
<!-- Resource: project_scrum.sprint -->
|
||||
|
||||
<record id="scrum_sprint_0" model="project.scrum.sprint">
|
||||
<field name="date_stop">2005-12-20</field>
|
||||
<field name="name">Sprint for V3.2.0</field>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
|
||||
<record id="scrum_sprint_0" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 1</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-06-01')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-06-15')"></field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_1" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 2</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-06-16')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-06-30')"></field>
|
||||
<field name="expected_hours">100.0</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_2" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 3</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-07-01')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-07-15')"></field>
|
||||
<field name="expected_hours">89.0</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_3" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 4</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-07-16')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-07-31')"></field>
|
||||
<field name="expected_hours">125.0</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_4" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 5</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-08-01')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-08-15')"></field>
|
||||
<field name="expected_hours">178.0</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_5" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 6</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-08-16')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-08-31')"></field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="expected_hours">200.0</field>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_6" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 7</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-09-01')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-09-15')"></field>
|
||||
<field name="expected_hours">175.0</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_7" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 8</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-09-16')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-09-30')"></field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field name="expected_hours">122.0</field>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_8" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 9</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-10-01')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-10-15')"></field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_9" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 10</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-10-16')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-10-31')"></field>
|
||||
<field name="expected_hours">78.0</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_10" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 11</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-11-01')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-11-15')"></field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_11" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 12</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-11-16')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-11-30')"></field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_12" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 13</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-12-1')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-12-15')"></field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_sprint_13" model="project.scrum.sprint">
|
||||
<field name="name">Sprint 14</field>
|
||||
<field name="date_start" eval="time.strftime('%Y-12-16')"></field>
|
||||
<field name="date_stop" eval="time.strftime('%Y-12-31')"></field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="product_owner_id" ref="base.user_root"/>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
@@ -33,61 +160,107 @@
|
||||
<field name="note">This new system will enable you to migrate automatically from an old version of OpenERP to a new one. This system will migrate not only the OpenERP system but also the customers particularities. This happens without any kind of script or programming. It has been possible to carry out such a system thanks to the descriptive approach of OpenERP components. </field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="state">done</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_1" model="project.scrum.product.backlog">
|
||||
<field name="priority">3</field>
|
||||
<field name="name">New accounting module</field>
|
||||
<field name="expected_hours">111.0</field>
|
||||
<field name="note">The accounting module of OpenERP (financial accounting and management accounting) is being reshaped. New functionalities will be added: intangible assets, a new way of presenting ledgers and bookings, new stock valuation calculation, and lots of predefined reports. </field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="sprint_id" ref="scrum_sprint_1"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_2" model="project.scrum.product.backlog">
|
||||
<field name="priority">3</field>
|
||||
<field name="name">Automated Plugin System to install/uninstall modules</field>
|
||||
<field name="expected_hours">4.0</field>
|
||||
<field name="note">We have to develop a plug-in system which will enable to install/remove modules. The basic version of OpenERP will include only the required minimum, and you will select the modules thanks to the plug-in manager. This allows you to limit your system to your real needs: quality management, localisations, project and service management, marketing campaigns, and so on... </field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="sprint_id" ref="scrum_sprint_2"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_3" model="project.scrum.product.backlog">
|
||||
<field name="name">Review all terms</field>
|
||||
<field name="expected_hours">8.0</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="sprint_id" ref="scrum_sprint_3"/>
|
||||
<field name="state">done</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_4" model="project.scrum.product.backlog">
|
||||
<field name="name">Bugfixes</field>
|
||||
<field name="expected_hours">6.0</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="sprint_id" ref="scrum_sprint_4"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_5" model="project.scrum.product.backlog">
|
||||
<field name="name">Test for 3.2.0 Publishing</field>
|
||||
<field name="expected_hours">5.0</field>
|
||||
<field name="note">Test OpenERP to release stable 3.2.0 version. (may be 3.2.0-pre1 ?)</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="note">Test OpenERP to release stable 3.2.0 version. (may be 3.2.0-pre1 eval="time.strftime('%Y-%m-05 12:01:01')"?)</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_5"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_6" model="project.scrum.product.backlog">
|
||||
<field name="name">Reshape the complete menu</field>
|
||||
<field name="expected_hours">4.0</field>
|
||||
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="sprint_id" ref="scrum_sprint_6"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
|
||||
<record id="scrum_product_backlog_7" model="project.scrum.product.backlog">
|
||||
<field name="name">Editable Trees</field>
|
||||
<field name="expected_hours">12.0</field>
|
||||
<field name="note">Editable trees in list and one2many_list widgets.</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="sprint_id" ref="scrum_sprint_7"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
|
||||
<record id="scrum_product_backlog_8" model="project.scrum.product.backlog">
|
||||
<field name="name">Reshape the complete menu</field>
|
||||
<field name="expected_hours">3.0</field>
|
||||
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_8"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
|
||||
<record id="scrum_product_backlog_9" model="project.scrum.product.backlog">
|
||||
<field name="name">Analysis Product phase</field>
|
||||
<field name="expected_hours">10.0</field>
|
||||
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_9"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
|
||||
<record id="scrum_product_backlog_10" model="project.scrum.product.backlog">
|
||||
<field name="name">Rearrange the Menu</field>
|
||||
<field name="expected_hours">9.0</field>
|
||||
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_10"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
|
||||
<record id="scrum_product_backlog_11" model="project.scrum.product.backlog">
|
||||
<field name="name">Complete change in list view</field>
|
||||
<field name="expected_hours">8.0</field>
|
||||
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_11"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
|
||||
<record id="scrum_product_backlog_12" model="project.scrum.product.backlog">
|
||||
<field name="name">Reshape the complete menu</field>
|
||||
<field name="expected_hours">2.0</field>
|
||||
<field name="note">Set rule for Tax according to 2010-2011 Rules</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_12"/>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
</record>
|
||||
|
||||
<!-- Resource: project.task -->
|
||||
@@ -95,7 +268,7 @@
|
||||
<record id="scrum_task_3" model="project.task">
|
||||
<field name="planned_hours">4.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Review all English Terms</field>
|
||||
<field name="state">done</field>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
@@ -104,7 +277,7 @@
|
||||
<record id="scrum_task_4" model="project.task">
|
||||
<field name="planned_hours">4.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Review all french terms</field>
|
||||
<field name="state">done</field>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
@@ -113,7 +286,7 @@
|
||||
<record id="scrum_task_5" model="project.task">
|
||||
<field name="planned_hours">24.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Analytic Accounting features</field>
|
||||
<field name="state">done</field>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
@@ -122,7 +295,7 @@
|
||||
<record id="scrum_task_6" model="project.task">
|
||||
<field name="planned_hours">6.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Test and improve automatic migration system</field>
|
||||
<field name="state">open</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_0"/>
|
||||
@@ -130,7 +303,7 @@
|
||||
<record id="scrum_task_7" model="project.task">
|
||||
<field name="planned_hours">24.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">General accounting features</field>
|
||||
<field name="state">open</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||
@@ -138,14 +311,14 @@
|
||||
<record id="scrum_task_8" model="project.task">
|
||||
<field name="planned_hours">24.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Accounting Budgets</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||
</record>
|
||||
<record id="scrum_task_9" model="project.task">
|
||||
<field name="planned_hours">24.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="description">Cash book, general ledger, accounts list, aged trial balance</field>
|
||||
<field name="name">Accounting Report General</field>
|
||||
<field name="state">open</field>
|
||||
@@ -155,14 +328,14 @@
|
||||
<record id="scrum_task_10" model="project.task">
|
||||
<field name="planned_hours">7.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Accounting Report Budget</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||
</record>
|
||||
<record id="scrum_task_11" model="project.task">
|
||||
<field name="planned_hours">8.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Accounting Report Analytic</field>
|
||||
<field name="state">open</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||
@@ -170,7 +343,7 @@
|
||||
<record id="scrum_task_12" model="project.task">
|
||||
<field name="planned_hours">4.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Bugfix - memory leak</field>
|
||||
<field name="state">done</field>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
@@ -179,7 +352,7 @@
|
||||
<record id="scrum_task_13" model="project.task">
|
||||
<field name="planned_hours">2.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Bugfix - Translations</field>
|
||||
<field name="state">open</field>
|
||||
<field eval="[(6,0,[ref('scrum_task_12')])]" name="child_ids"/>
|
||||
@@ -188,7 +361,7 @@
|
||||
<record id="scrum_task_14" model="project.task">
|
||||
<field name="planned_hours">4.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Finish the automated plugin system</field>
|
||||
<field name="state">pending</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_2"/>
|
||||
@@ -196,14 +369,14 @@
|
||||
<record id="scrum_task_15" model="project.task">
|
||||
<field name="planned_hours">4.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Reshape the complete menu structure</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_6"/>
|
||||
</record>
|
||||
<record id="scrum_task_16" model="project.task">
|
||||
<field name="planned_hours">5.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="name">Test 3.2.0 before releasing</field>
|
||||
<field name="state">open</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_5"/>
|
||||
@@ -211,7 +384,7 @@
|
||||
<record id="scrum_task_17" model="project.task">
|
||||
<field name="planned_hours">12.0</field>
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="project_id" ref="project.project_project_9"/>
|
||||
<field name="description">default values, onchange, required, add on top or bottom and shortcuts (Ctrl S, Ctrl X, ...)</field>
|
||||
<field name="name">Editable trees</field>
|
||||
<field name="state">open</field>
|
||||
@@ -228,7 +401,7 @@ Demo: Work on Editable trees</field>
|
||||
<field name="question_blocks">
|
||||
Demo :Bugfix - memory leak
|
||||
</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="sprint_id" ref="scrum_sprint_8"/>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date"/>
|
||||
</record>
|
||||
<record id="project_task_work_scrum_task1" model="project.task.work" context="{'withoutemployee': True }">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user