[MERGE]: Merge with lp:openobject-trunk-dev-addons2

bzr revid: ksa@tinyerp.co.in-20101013133522-7zysi31o1bcc3yni
This commit is contained in:
ksa (Open ERP)
2010-10-13 19:05:22 +05:30
127 changed files with 1045 additions and 910 deletions
+1 -1
View File
@@ -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"/>
+3 -2
View File
@@ -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">
+7 -7
View File
@@ -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>
+1 -1
View File
@@ -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'),
+1 -1
View File
@@ -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>
+6 -6
View File
@@ -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>
+4 -2
View File
@@ -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>
+4 -4
View File
@@ -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>
+4 -4
View File
@@ -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>
+4 -4
View File
@@ -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>
+6 -6
View File
@@ -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" />
+6 -6
View File
@@ -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>
+3 -4
View File
@@ -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"
+1
View File
@@ -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')
+3 -3
View File
@@ -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 ={}
+6 -6
View File
@@ -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>
+5 -1
View File
@@ -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"
+11 -21
View File
@@ -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"/>
+1 -1
View File
@@ -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
View File
@@ -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,
+5
View File
@@ -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>
+4 -4
View File
@@ -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>
-4
View File
@@ -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:
+9 -7
View File
@@ -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">
+1 -1
View File
@@ -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>
+4 -4
View File
@@ -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>
+2 -2
View File
@@ -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>
+1
View File
@@ -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',
+20 -20
View File
@@ -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>
+3 -3
View File
@@ -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)')
}
+26
View File
@@ -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>
-14
View File
@@ -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"/>
+32 -24
View File
@@ -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','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date_from','&gt;',(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>
+1 -1
View File
@@ -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>
+23
View File
@@ -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()
+12
View File
@@ -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>
-14
View File
@@ -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"/>
+2 -1
View File
@@ -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','&lt;&gt;',False)]" icon="terp-sale"/>
<filter name="to_invoice" string="To Invoice" context="{'to_invoice': 1}" domain="[('invoice_id','=',False),('to_invoice','&lt;&gt;',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>
-1
View File
@@ -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','&lt;=', time.strftime('%%Y-%%m-%%d')),('date_current','&gt;',(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','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date_current','&gt;',(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','&lt;=', (datetime.date (int(time.strftime('%%Y')), datetime.date.today().month, 1) - datetime.timedelta (days = 1)).strftime('%%Y-%%m-%%d')),('date_current','&gt;',(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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
5 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
6 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
7 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
8 access_hr_analytic_timesheet_system_user hr.analytic.timesheet.system.user model_hr_analytic_timesheet base.group_user 1 0 0 0
9 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
10 access_model_hr_analytic_timesheet hr.analytic.timesheet model_hr_analytic_timesheet project.group_project_finance_user 1 1 0 0
+5 -4
View File
@@ -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">
+1 -1
View File
@@ -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>
-5
View File
@@ -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>
-18
View File
@@ -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
1 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
2 access_idea_category_user idea.category user model_idea_category base.group_tool_user 1 1 1 1
3 access_idea_idea_user idea.idea user model_idea_idea base.group_tool_user 1 1 1 1
4 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
5 access_idea_vote_manager idea.vote manager model_idea_vote base.group_tool_manager 1 1 1 1
6 access_idea_vote_stat_user idea.vote.stat user model_idea_vote_stat base.group_tool_user 1 1 1 1
7 access_idea_comment_user idea.comment user model_idea_comment base.group_tool_user 1 1 1 1
8 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
+2 -2
View File
@@ -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 -13
View File
@@ -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
1 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
2 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
3 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
4 access_report_lunch_amount_manager report.lunch.amount manager model_report_lunch_amount base.group_tool_manager 1 1 1 1
5 access_lunch_category_system access_lunch_category_manager lunch.category system lunch.category.user model_lunch_category base.group_system base.group_tool_user 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
6 access_report_lunch_order_manager report.lunch.order manager model_report_lunch_order base.group_tool_manager 1 1 1 1
7 access_lunch_product_user lunch.product user model_lunch_product base.group_tool_user 1 1 1 1
8 access_lunch_cashbox_user lunch.cashbox user model_lunch_cashbox base.group_tool_user 1 1 1 1
-3
View File
@@ -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>
+2 -2
View File
@@ -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>
+30 -30
View File
@@ -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:
+1 -1
View File
@@ -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>
+1
View File
@@ -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):
+2 -4
View File
@@ -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)]" />
+3 -9
View File
@@ -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>
+2
View File
@@ -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):
+19 -17
View File
@@ -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"/>
+1 -1
View File
@@ -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">
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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:
+7 -5
View File
@@ -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={}
+16 -4
View File
@@ -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>
+17 -17
View File
@@ -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','&lt;&gt;','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 -->
+2
View File
@@ -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>
+1 -1
View File
@@ -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 = {}
+222 -49
View File
@@ -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