[MERGE]: Merge with lp:~openerp-dev/openobject-addons/trunk-dev-addons2

bzr revid: rpa@tinyerp.com-20100528053100-m2060un9pgohx1ta
This commit is contained in:
rpa (Open ERP)
2010-05-28 11:01:00 +05:30
61 changed files with 1638 additions and 1620 deletions
+1 -1
View File
@@ -22,7 +22,7 @@
groups="group_account_user"/>
<menuitem id="menu_account_end_year_treatments" name="End of Year Treatments" parent="account.menu_finance_periodical_processing" sequence="20"/>
<menuitem id="menu_finance_statastic_report_statement" name="Satistic Reports" parent="account.menu_finance_reporting" sequence="3"/>
<menuitem id="menu_finance_statistic_report_statement" name="Statistic Reports" parent="account.menu_finance_reporting" sequence="3"/>
</data>
</openerp>
+2 -8
View File
@@ -951,14 +951,8 @@ class account_invoice(osv.osv):
return taxes.values()
def _log_event(self, cr, uid, ids, factor=1.0, name='Open Invoice'):
invs = self.read(cr, uid, ids, ['type','partner_id','amount_untaxed'])
for inv in invs:
part=inv['partner_id'] and inv['partner_id'][0]
pc = pr = 0.0
cr.execute('select sum(quantity*price_unit) from account_invoice_line where invoice_id=%s', (inv['id'],))
total = inv['amount_untaxed']
self.pool.get('res.partner.event').create(cr, uid, {'name':'Invoice: ' + name, 'description':name+' '+str(inv['id']), 'partner_id':part, 'date':time.strftime('%Y-%m-%d %H:%M:%S'), 'user_id':uid})
return len(invs)
#TODO: implement messages system
return True
def name_get(self, cr, uid, ids, context=None):
if not len(ids):
-1
View File
@@ -30,7 +30,6 @@ import invoice
import overdue
import aged_trial_balance
import tax_report
import general_ledger_landscape
import account_tax_code
import account_balance_landscape
import compare_account_balance
@@ -6,7 +6,7 @@
<field name="model">account.account.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Account Report">
<tree string="Accounts Analysis">
<field name="name" invisible="1" string="Account"/>
<field name="code" invisible="1"/>
<field name="type" invisible="1"/>
@@ -29,7 +29,7 @@
<field name="model">account.account.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Accounts" type="bar">
<graph string="Accounts Analysis" type="bar">
<field name="name"/>
<field name="credit" operator="+"/>
<field name="debit" operator="+"/>
@@ -43,7 +43,7 @@
<field name="model">account.account.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Accounts">
<search string="Accounts Analysis">
<group>
<filter icon="terp-account"
string="At Date"
@@ -54,7 +54,6 @@
<separator orientation="vertical"/>
<field name="name" string="Account"/>
<field name="code"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
<newline/>
<group expand="1" string="Group By...">
@@ -69,9 +68,11 @@
</group>
<newline/>
<group expand="0" string="Extended options..." groups="base.group_extended">
<field name="parent_account_id" />
<separator orientation="vertical"/>
<field name="type" />
<field name="user_type" widget="selection"/>
<field name="parent_account_id" />
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
</search>
@@ -79,7 +80,7 @@
</record>
<record id="action_account_account_report" model="ir.actions.act_window">
<field name="name">Accounts</field>
<field name="name">Accounts Analysis</field>
<field name="res_model">account.account.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
@@ -87,7 +88,7 @@
<field name="search_view_id" ref="view_account_account_report_search"/>
</record>
<menuitem action="action_account_account_report" id="menu_action_account_account_report" parent="account.menu_finance_statastic_report_statement" sequence="6"/>
<menuitem action="action_account_account_report" id="menu_action_account_account_report" parent="account.menu_finance_statistic_report_statement" sequence="6"/>
</data>
</openerp>
@@ -6,14 +6,14 @@
<field name="model">analytic.entries.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Analytic Entries Statistics">
<tree string="Analytic Entries Analysis">
<field name="date" invisible="1"/>
<field name="year" invisible="1"/>
<field name="day" invisible="1"/>
<field name="month" invisible="1"/>
<field name="user_id" invisible="1"/>
<field name="name" invisible="1"/>
<field name="company_id" invisible="1" groups="base.multi_company"/>
<field name="company_id" invisible="1" groups="base.group_multi_company"/>
<field name="currency_id" invisible="1"/>
<field name="account_id" invisible="1"/>
<field name="general_account_id" invisible="1"/>
@@ -33,32 +33,31 @@
<field name="model">analytic.entries.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Analytic Entries">
<search string="Analytic Entries Analysis">
<group col="10" colspan="12">
<filter icon="terp-account" string="Last 365 DAys"
<filter icon="gtk-media-rewind" string="Last 365 Days"
domain="[('day','&lt;=', time.strftime('%%Y-%%m-%%d')),('day','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Analytic Entries of the year"/>
<filter icon="terp-account" string="Last 30 Days"
help="Analytic Entries of last 365 days"/>
<filter icon="gtk-media-rewind" string="Last 30 Days"
name="month"
domain="[('day','&lt;=', time.strftime('%%Y-%%m-%%d')), ('day','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Analytic Entries of this month"/>
help="Analytic Entries of last 30 days"/>
<filter icon="gtk-media-rewind"
string=" 7 Days "
separator="1"
domain="[('day','&lt;=', time.strftime('%%Y-%%m-%%d')), ('day','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Analytic Entries during last 7 days"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="product_id" />
<field name="user_id" widget="selection">
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Case"/>
<filter icon="terp-account" domain="[('user_id','=',uid)]" help="My Entries"/>
</field>
<field name="currency_id"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<filter string="User" name="User" icon="terp-account" context="{'group_by':'user_id'}"/>
<filter string="Currency" icon="terp-account" context="{'group_by':'currency_id'}"/>
<filter string="Company" icon="terp-account" context="{'group_by':'company_id'}" groups="base.multi_company"/>
<filter string="Company" icon="terp-account" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator orientation="vertical"/>
<filter string="Account" icon="terp-account" context="{'group_by':'account_id'}"/>
<filter string="General Account" icon="terp-account" context="{'group_by':'general_account_id'}"/>
@@ -73,15 +72,15 @@
</group>
<newline/>
<group expand="0" string="Extended options..." groups="base.group_extended">
<field name="account_id" />
<field name="currency_id" widget="selection"/>
<field name="general_account_id" widget="selection"/>
<field name="product_uom_id" widget="selection"/>
<field name="journal_id" widget="selection"/>
<separator orientation="vertical"/>
<field name="product_id" />
<field name="product_uom_id" widget="selection"/>
<field name="company_id" widget="selection" groups="base.multi_company"/>
<field name="name"/>
<field name="account_id"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
</search>
</field>
</record>
@@ -90,7 +89,7 @@
<field name="model">analytic.entries.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Analytic Entries" type="bar">
<graph string="Analytic Entries Analysis" type="bar">
<field name="user_id"/>
<field name="amount" operator="+"/>
<field name="unit_amount" operator="+"/>
@@ -99,7 +98,7 @@
</field>
</record>
<record id="action_analytic_entries_report" model="ir.actions.act_window">
<field name="name">Analytic Entries</field>
<field name="name">Analytic Entries Analysis</field>
<field name="res_model">analytic.entries.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
@@ -107,7 +106,7 @@
<field name="search_view_id" ref="view_analytic_entries_report_search"/>
</record>
<menuitem action="action_analytic_entries_report" id="menu_action_analytic_entries_report" parent="account.menu_finance_statastic_report_statement" sequence="4"/>
<menuitem action="action_analytic_entries_report" id="menu_action_analytic_entries_report" parent="account.menu_finance_statistic_report_statement" sequence="4"/>
</data>
</openerp>
@@ -6,7 +6,7 @@
<field name="model">analytic.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Analytic Accounts Statistics">
<tree string="Analytic Accounts Analysis">
<field name="parent_id" invisible="1" string="Analytic Account"/>
<field name="product_id" invisible="1"/>
<field name="name" invisible="1"/>
@@ -19,9 +19,9 @@
<field name="nbr" sum ="# of Lines"/>
<field name="company_id" invisible="1" groups="base.group_multi_company"/>
<field name="type" invisible="1"/>
<field name="debit"/>
<field name="credit"/>
<field name="balance"/>
<field name="debit" sum ="Debit"/>
<field name="credit" sum ="Credit"/>
<field name="balance" sum ="Balance"/>
<field name="state" invisible="1"/>
<field name="day" invisible="1"/>
<field name="month" invisible="1"/>
@@ -34,20 +34,20 @@
<field name="model">analytic.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Analytic Accounts">
<search string="Analytic Accounts Analysis">
<group>
<filter icon="terp-account"
string="This Year"
domain="[('year','=',time.strftime('%%Y'))]"/>
<filter icon="terp-account"
string="This Month"
name="This Month"
domain="[('month','=',time.strftime('%%m'))]"/>
<filter icon="gtk-media-rewind"
string=" 7 Days "
separator="1"
domain="[('day','&lt;=', time.strftime('%%Y-%%m-%%d')), ('day','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Entries during last 7 days"/>
<filter icon="gtk-media-rewind" string="Last 365 Days"
domain="[('day','&lt;=', time.strftime('%%Y-%%m-%%d')),('day','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Analytic Accounts of last 365 days"/>
<filter icon="gtk-media-rewind" string="Last 30 Days"
name="This Month"
domain="[('day','&lt;=', time.strftime('%%Y-%%m-%%d')), ('day','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Analytic Accounts of last 30 days"/>
<filter icon="gtk-media-rewind"
string=" 7 Days "
separator="1"
domain="[('day','&lt;=', time.strftime('%%Y-%%m-%%d')), ('day','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Analytic Accounts during last 7 days"/>
<separator orientation="vertical"/>
<filter icon="terp-account"
string="Draft"
@@ -60,13 +60,14 @@
domain="[('state','=','pending')]"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="product_id" />
<field name="partner_id"/>
<field name="user_id" widget="selection">
<filter icon="terp-account"
string="My Accounts"
help="My Account"
domain="[('user_id','=',uid)]"/>
</field>
<field name="partner_id"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="10" col="12">
@@ -85,34 +86,16 @@
<filter string="Month" icon="terp-account" context="{'group_by':'month'}"/>
<filter string="Year" icon="terp-account" context="{'group_by':'year'}"/>
</group>
<newline/>
<group expand="0" string="Extended options..." colspan="10" col="12" groups="base.group_extended">
<filter icon="terp-account"
string="Draft"
domain="[('state','=','draft')]"/>
<filter icon="terp-account"
string="Open"
domain="[('state','=','open')]"/>
<filter icon="terp-account"
string="Pending"
domain="[('state','=','pending')]"/>
<filter icon="terp-account"
string="Close"
domain="[('state','=','close')]"/>
<filter icon="terp-account"
string="Template"
domain="[('state','=','template')]"/>
<separator orientation="vertical"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<field name="parent_id"/>
<field name="journal_id" widget="selection"/>
<newline/>
<field name="product_id" />
<field name="type"/>
<separator orientation="vertical"/>
<field name="date_start"/>
<field name="date_end"/>
<separator orientation="vertical"/>
<field name="state"/>
<field name="parent_id"/>
<field name="journal_id" widget="selection"/>
<field name="type"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
</search>
</field>
@@ -122,7 +105,7 @@
<field name="model">analytic.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Analytic Accounts" type="bar">
<graph string="Analytic Accounts Analysis" type="bar">
<field name="user_id"/>
<field name="credit" operator="+"/>
<field name="debit" operator="+"/>
@@ -132,14 +115,14 @@
</field>
</record>
<record id="action_analytic_report_all" model="ir.actions.act_window">
<field name="name">Analytic Accounts</field>
<field name="name">Analytic Accounts Analysis</field>
<field name="res_model">analytic.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="context">{'search_default_This Month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="search_view_id" ref="view_analytic_report_search"/>
</record>
<menuitem action="action_analytic_report_all" id="menu_action_analytic_report_all" parent="account.menu_finance_statastic_report_statement" sequence="8"/>
<menuitem action="action_analytic_report_all" id="menu_action_analytic_report_all" parent="account.menu_finance_statistic_report_statement" sequence="8"/>
</data>
</openerp>
@@ -6,7 +6,7 @@
<field name="model">account.entries.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Invoices Statistics">
<tree string="Entries Analysis">
<field name="date" invisible="1"/>
<field name="date_created" invisible="1"/>
<field name="date_maturity" invisible="1"/>
@@ -37,7 +37,7 @@
<field name="model">account.entries.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Entries" type="bar">
<graph string="Entries Analysis" type="bar">
<field name="partner_id"/>
<field name="amount"/>
</graph>
@@ -48,15 +48,15 @@
<field name="model">account.entries.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Entries">
<search string="Entries Analysis">
<group colspan="10" col="12">
<filter icon="terp-account" string="This Year"
<filter icon="gtk-media-rewind" string="Last 365 Days"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')),('date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Entries of the year"/>
<filter icon="terp-account" string="This Month"
help="Entries of last 365 days"/>
<filter icon="gtk-media-rewind" string="Last 30 Days"
name="This Month"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Entries of this month"/>
help="Entries of last 30 days"/>
<filter icon="gtk-media-rewind"
string=" 7 Days "
separator="1"
@@ -66,62 +66,61 @@
<filter string="Draft"
icon="terp-account"
domain="[('state','=','draft')]"
help = "Draft tasks"/>
help = "Draft entries"/>
<filter string="Posted"
icon="terp-account"
domain="[('state','=','posted')]"
help = "Posted entries"/>
<separator orientation="vertical"/>
<field name="journal_id" widget="selection"/>
<field name="account_id"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<field name="partner_id" />
<field name="product_id" />
<field name="partner_id" />
<field name="account_id"/>
<field name="analytic_account_id"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="10" col="12">
<filter string="Journal" name="Journal" icon="terp-account" context="{'group_by':'journal_id'}"/>
<filter string="Account" name="Account" icon="terp-account" context="{'group_by':'account_id'}"/>
<filter string="Analytic Account" name="Analytic Account" icon="terp-account" context="{'group_by':'analytic_account_id'}"/>
<filter string="Company" icon="terp-account" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<group expand="1" string="Group By...">
<filter string="Partner" icon="terp-account" context="{'group_by':'partner_id'}"/>
<filter string="Product" icon="terp-account" context="{'group_by':'product_id'}"/>
<filter string="Journal" name="Journal" icon="terp-account" context="{'group_by':'journal_id'}"/>
<separator orientation="vertical"/>
<filter string="State" icon="terp-account" context="{'group_by':'state'}"/>
<filter string="Type" icon="terp-account" context="{'group_by':'type'}"/>
<filter string="Company" icon="terp-account" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Account" name="Account" icon="terp-account" context="{'group_by':'account_id'}"/>
<separator orientation="vertical"/>
<filter string="Analytic Account" name="Analytic Account" icon="terp-account" context="{'group_by':'analytic_account_id'}"/>
<filter string="State of Move Line" icon="terp-account" context="{'group_by':'state_2'}"/>
<filter string="Period" icon="terp-account" context="{'group_by':'period_id'}"/>
<filter string="Period of Move Line" icon="terp-account" context="{'group_by':'period_id2'}"/>
<filter string="Type" icon="terp-account" context="{'group_by':'type'}"/>
<separator orientation="vertical"/>
<newline/>
<filter string="Day" icon="terp-account" context="{'group_by':'day'}"/>
<filter string="Month" icon="terp-account" context="{'group_by':'month'}"/>
<filter string="Year" icon="terp-account" context="{'group_by':'year'}"/>
</group>
<group expand="0" string="Extended options..." colspan="10" col="12">
<filter string="Posted"
icon="terp-account"
domain="[('state','=','posted')]"
help = "Posted tasks"/>
<field name="state_2"/>
<separator orientation="vertical"/>
<field name="period_id" widget="selection"/>
<field name="period_id2" widget="selection"/>
<field name="type"/>
<field name="product_id" />
<field name="analytic_account_id"/>
<newline/>
<group expand="0" string="Extended options..." groups="base.group_extended">
<field name="state_2"/>
<field name="period_id" widget="selection"/>
<field name="period_id2" widget="selection"/>
<field name="type"/>
<field name="journal_id" widget="selection"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<newline/>
<separator orientation="vertical"/>
<field name="date_created"/>
<field name="date"/>
<field name="date"/>
<field name="date_maturity"/>
</group>
</group>
</search>
</field>
</record>
<record id="action_account_entries_report_all" model="ir.actions.act_window">
<field name="name">Entries</field>
<field name="name">Entries Analysis</field>
<field name="res_model">account.entries.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="context">{'search_default_This Month':1,'search_default_Journal':1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="search_view_id" ref="view_account_entries_report_search"/>
</record>
<menuitem action="action_account_entries_report_all" id="menu_action_account_entries_report_all" parent="account.menu_finance_statastic_report_statement" sequence="2"/>
<menuitem action="action_account_entries_report_all" id="menu_action_account_entries_report_all" parent="account.menu_finance_statistic_report_statement" sequence="2"/>
</data>
</openerp>
@@ -6,7 +6,7 @@
<field name="model">account.invoice.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Invoices Statistics">
<tree string="Invoices Analysis">
<field name="date" invisible="1"/>
<field name="user_id" invisible="1"/>
<field name="year" invisible="1"/>
@@ -21,9 +21,7 @@
<field name="price_average" avg="Average Price"/>
<field name="price_total" sum="Total Price"/>
<field name="state" invisible="1"/>
<field name="payment_term" invisible="1"/>
<field name="period_id" invisible="1"/>
<field name="fiscal_position" invisible="1"/>
<field name="currency_id" invisible="1"/>
<field name="journal_id" invisible="1"/>
<field name="date_due" invisible="1"/>
@@ -42,7 +40,7 @@
<field name="model">account.invoice.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Invoices Statistics" type="bar">
<graph string="Invoices Analysis" type="bar">
<field name="product_id"/>
<field name="price_total"/>
</graph>
@@ -54,7 +52,7 @@
<field name="model">account.invoice.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Invoices">
<search string="Invoices Analysis">
<group col="10" colspan="12">
<filter icon="gtk-media-rewind" string="Last 365 Days"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')),('date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
@@ -72,27 +70,28 @@
<filter string="Draft"
icon="terp-account"
domain="[('state','=','draft')]"
help = "Draft tasks"/>
help = "Draft Invoices"/>
<filter string="Pro-forma"
icon="terp-account"
domain="[('state','=','proforma'),('state','=','proforma2')]"
help = "Pro-forma tasks"/>
help = "Pro-forma Invoices"/>
<filter string="Current"
icon="terp-account"
domain="[('state', '=' ,'open')]"
help = "In progress tasks"/>
help = "open Invoices"/>
<filter string="Done"
icon="terp-account"
domain="[('state','=','paid')]"
help = "Done tasks"/>
help = "Done Invoices"/>
<separator orientation="vertical"/>
<field name="partner_id"/>
<field name="user_id" widget="selection">
<filter icon="terp-account"
string="Invoices Non Users"
help="Invoices Non Users"
domain="[('user_id','=',False)]"/>
string="My Invoices"
help="My Invoices"
domain="[('user_id','=',uid)]"/>
</field>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<newline/>
<group expand="1" string="Group By...">
@@ -109,9 +108,7 @@
<filter string="Bank Account" icon="terp-account" context="{'group_by':'partner_bank'}"/>
<separator orientation="vertical"/>
<filter string="Currency" icon="terp-account" context="{'group_by':'currency_id'}"/>
<filter string="Payment Term" icon="terp-account" context="{'group_by':'payment_term'}"/>
<filter string="Force Period" icon="terp-account" context="{'group_by':'period_id'}"/>
<filter string="Fiscal Position" icon="terp-account" context="{'group_by':'fiscal_position'}"/>
<newline/>
<filter string="Day" icon="terp-account" context="{'group_by':'day'}"/>
<filter string="Month" icon="terp-account" context="{'group_by':'month'}"/>
@@ -119,39 +116,39 @@
</group>
<newline/>
<group expand="0" string="Extended options..." groups="base.group_extended">
<field name="date" string="Date Invoiced"/>
<separator orientation="vertical"/>
<field name="type"/>
<field name="currency_id" widget="selection"/>
<field name="partner_bank" widget="selection"/>
<field name="fiscal_position" widget="selection"/>
<separator orientation="vertical"/>
<field name="address_contact_id"/>
<field name="account_id"/>
<newline/>
<field name="payment_term" widget="selection"/>
<field name="date_due"/>
<separator orientation="vertical"/>
<field name="journal_id" widget="selection"/>
<field name="period_id" widget="selection"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="state"/>
<separator orientation="vertical"/>
<field name="address_invoice_id"/>
<field name="product_id"/>
<newline/>
<field name="date" string="Date Invoiced"/>
<field name="date_due"/>
</group>
</search>
</field>
</record>
<record id="action_account_invoice_report_all" model="ir.actions.act_window">
<field name="name">Invoices</field>
<field name="name">Invoices Analysis</field>
<field name="res_model">account.invoice.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="context">{'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[],'search_default_user_id':uid}</field>
<field name="context">{'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="search_view_id" ref="view_account_invoice_report_search"/>
</record>
<menuitem action="action_account_invoice_report_all" id="menu_action_account_invoice_report_all" parent="account.menu_finance_statastic_report_statement" sequence="0"/>
<menuitem action="action_account_invoice_report_all" id="menu_action_account_invoice_report_all" parent="account.menu_finance_statistic_report_statement" sequence="0"/>
</data>
</openerp>
+77 -100
View File
@@ -33,8 +33,6 @@ import pooler
class general_ledger(rml_parse.rml_parse):
_name = 'report.account.general.ledger'
def set_context(self, objects, data, ids, report_type = None):
##
self.borne_date = self.get_min_date(data['form'])
@@ -42,6 +40,7 @@ class general_ledger(rml_parse.rml_parse):
new_ids = []
if (data['model'] == 'account.account'):
new_ids = 'active_ids' in data['form']['context'] and data['form']['context']['active_ids'] or []
#new_ids = ids
else:
new_ids.append(data['form']['Account_list'])
@@ -70,39 +69,6 @@ class general_ledger(rml_parse.rml_parse):
'sum_currency_amount_account': self._sum_currency_amount_account
})
self.context = context
def _calc_contrepartie(self,cr,uid,ids, context={}):
result = {}
#for id in ids:
# result.setdefault(id, False)
for account_line in self.pool.get('account.move.line').browse(cr, uid, ids, context):
# For avoid long text in the field we will limit it to 5 lines
#
#
#
result[account_line.id] = ' '
num_id_move = str(account_line.move_id.id)
num_id_line = str(account_line.id)
account_id = str(account_line.account_id.id)
# search the basic account
# We have the account ID we will search all account move line from now until this time
# We are in the case of we are on the top of the account move Line
cr.execute('SELECT distinct(ac.code) as code_rest,ac.name as name_rest from account_account AS ac, account_move_line mv\
where ac.id = mv.account_id and mv.move_id = %s and mv.account_id <> %s' ,(num_id_move,account_id,))
res_mv = cr.dictfetchall()
# we need a result more than 2 line to make the test so we will made the the on 1 because we have exclude the current line
if (len(res_mv) >=1):
concat = ''
rup_id = 0
for move_rest in res_mv:
concat = concat + move_rest['code_rest'] + '|'
result[account_line.id] = concat
if rup_id >5:
# we need to stop the computing and to escape but before we will add "..."
result[account_line.id] = concat + '...'
break
rup_id+=1
return result
def get_min_date(self,form):
@@ -118,12 +84,17 @@ class general_ledger(rml_parse.rml_parse):
if form['state'] == 'byperiod':
## This function will return the most aged date
periods = form['periods']
#periods = form['periods'][0][2]
if not periods:
self.cr.execute("""
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.fiscalyear_id = %s""",(form['fiscalyear'],))
sql = """
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.fiscalyear_id = """ + str(form['fiscalyear']) + """
"""
else:
self.cr.execute("""
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.id =ANY(%s)""",(periods,))
periods_id = ','.join(map(str, periods))
sql = """
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.id in ( """ + periods_id + """)
"""
self.cr.execute(sql)
res = self.cr.dictfetchall()
borne_min = res[0]['start_date']
borne_max = res[0]['stop_date']
@@ -132,15 +103,17 @@ class general_ledger(rml_parse.rml_parse):
borne_max = form['date_to']
elif form['state'] == 'all':
periods = form['periods']
#periods = form['periods'][0][2]
if not periods:
if form['fiscalyear'] == False:
fiscalyears = self.pool.get('account.fiscalyear').search(self.cr, self.uid, [('state', '=', 'draft')])
else:
fiscalyears = [form['fiscalyear']]
self.cr.execute("select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.fiscalyear_id =ANY(%s)" ,(fiscalyears,))
sql = """
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.fiscalyear_id = """ + str(form['fiscalyear']) + """
"""
else:
self.cr.execute("""
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.id =ANY(%s)""",(periods,))
periods_id = ','.join(map(str, periods))
sql = """
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.id in ( """ + periods_id + """)
"""
self.cr.execute(sql)
res = self.cr.dictfetchall()
period_min = res[0]['start_date']
period_max = res[0]['stop_date']
@@ -167,9 +140,6 @@ class general_ledger(rml_parse.rml_parse):
}
return self.date_borne
def get_children_accounts(self, account, form):
self.child_ids = self.pool.get('account.account').search(self.cr, self.uid,
@@ -184,6 +154,8 @@ class general_ledger(rml_parse.rml_parse):
if form.has_key('fiscalyear'):
ctx['fiscalyear'] = form['fiscalyear']
ctx['periods'] = form['periods']
#ctx['periods'] = form['periods'][0][2]
else:
ctx['date_from'] = form['date_from']
ctx['date_to'] = form['date_to']
@@ -224,8 +196,8 @@ class general_ledger(rml_parse.rml_parse):
else:
## We will now compute solde initiaux
for move in res:
self.cr.execute("""SELECT sum(l.debit) AS sum_debit, sum(l.credit) AS sum_credit FROM account_move_line l \
WHERE l.account_id = %s AND l.date < %s AND l.date > %s""",(move.id,self.borne_date['max_date'],self.borne_date['min_date']))
SOLDEINIT = "SELECT sum(l.debit) AS sum_debit, sum(l.credit) AS sum_credit FROM account_move_line l WHERE l.account_id = " + str(move.id) + " AND l.date < '" + self.borne_date['max_date'] + "'" + " AND l.date > '" + self.borne_date['min_date'] + "'"
self.cr.execute(SOLDEINIT)
resultat = self.cr.dictfetchall()
if resultat[0] :
if resultat[0]['sum_debit'] == None:
@@ -248,56 +220,60 @@ class general_ledger(rml_parse.rml_parse):
return res
def lines(self, account, form):
inv_types = {
'out_invoice': 'CI: ',
'in_invoice': 'SI: ',
'out_refund': 'OR: ',
'in_refund': 'SR: ',
}
""" Return all the account_move_line of account with their account code counterparts """
if form['sortbydate'] == 'sort_date':
sorttag = 'l.date'
else:
sorttag = 'j.code'
# First compute all counterpart strings for every move_id where this account appear
sql = """
SELECT l.id, l.date, j.code,c.code AS currency_code,l.amount_currency,l.ref, l.name , COALESCE(l.debit,0) as debit, COALESCE(l.credit,0) as credit, l.period_id
FROM account_move_line as l
LEFT JOIN res_currency c on (l.currency_id=c.id)
JOIN account_journal j on (l.journal_id=j.id)
AND account_id = %%s
AND %s
WHERE l.date<=%%s
AND l.date>=%%s
ORDER by %s""" % (self.query, sorttag)
self.cr.execute(sql, (account.id, self.date_borne['max_date'], self.date_borne['min_date'],))
SELECT m1.move_id,
array_to_string(ARRAY(SELECT DISTINCT a.code FROM account_move_line m2 LEFT JOIN account_account a ON (m2.account_id=a.id) WHERE m2.move_id = m1.move_id AND m2.account_id<>%%s), ', ') AS counterpart
FROM (SELECT move_id FROM account_move_line l WHERE %s AND l.account_id = %%s AND l.date<=%%s AND l.date>=%%s GROUP BY move_id) m1
""" % self.query
self.cr.execute(sql, (account.id, account.id, self.date_borne['max_date'], self.date_borne['min_date']))
counterpart_res = self.cr.dictfetchall()
counterpart_accounts = {}
for i in counterpart_res:
counterpart_accounts[i['move_id']]=i['counterpart']
del counterpart_res
# Then select all account_move_line of this account
if form['sortbydate'] == 'sort_date':
sql_sort='l.date'
else:
sql_sort='j.code'
sql = """
SELECT l.id, l.date, j.code, l.amount_currency,l.ref, l.name, COALESCE(l.debit,0) AS debit, COALESCE(l.credit,0) AS credit, l.period_id, l.partner_id,
m.name AS move_name, m.id AS move_id,
c.code AS currency_code,
i.id AS invoice_id, i.type AS invoice_type, i.number AS invoice_number,
p.name AS partner_name
FROM account_move_line l
LEFT JOIN account_move m on (l.move_id=m.id)
LEFT JOIN res_currency c on (l.currency_id=c.id)
LEFT JOIN res_partner p on (l.partner_id=p.id)
LEFT JOIN account_invoice i on (m.id =i.move_id)
JOIN account_journal j on (l.journal_id=j.id)
WHERE %s AND l.account_id = %%s AND l.date<=%%s AND l.date>=%%s ORDER by %s
""" % (self.query, sql_sort)
self.cr.execute(sql, (account.id, self.date_borne['max_date'], self.date_borne['min_date']))
res = self.cr.dictfetchall()
sum = 0.0
account_sum = 0.0
account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line')
inv_types = { 'out_invoice': 'CI', 'in_invoice': 'SI', 'out_refund': 'OR', 'in_refund': 'SR', }
for l in res:
line = self.pool.get('account.move.line').browse(self.cr, self.uid, l['id'])
l['move'] = line.move_id.name
self.cr.execute('Select id from account_invoice where move_id =%s',(line.move_id.id,))
tmpres = self.cr.dictfetchall()
if len(tmpres) > 0 :
inv = self.pool.get('account.invoice').browse(self.cr, self.uid, tmpres[0]['id'])
l['ref'] = inv_types[inv.type] + ': '+str(inv.number)
if line.partner_id :
l['partner'] = line.partner_id.name
else :
l['partner'] = ''
sum = l['debit'] - l ['credit']
# c = time.strptime(l['date'],"%Y-%m-%d")
# l['date'] = time.strftime("%d-%m-%Y",c)
l['progress'] = sum
l['line_corresp'] = self._calc_contrepartie(self.cr,self.uid,[l['id']])[l['id']]
l['move']=l['move_name']
if l['invoice_id']:
l['ref'] = '%s: %s'%(inv_types[l['invoice_type']],l['invoice_number'])
l['partner'] = l['partner_name'] or ''
account_sum = l['debit'] - l ['credit']
#c = time.strptime(l['date'],"%Y-%m-%d")
#l['date'] = time.strftime("%d-%m-%Y",c)
l['progress'] = account_sum
l['line_corresp'] = counterpart_accounts[l['move_id']]
# Modification du amount Currency
if (l['credit'] > 0):
if l['credit'] > 0:
if l['amount_currency'] != None:
l['amount_currency'] = abs(l['amount_currency']) * -1
#
if l['amount_currency'] != None:
self.tot_currency = self.tot_currency + l['amount_currency']
return res
@@ -306,7 +282,7 @@ class general_ledger(rml_parse.rml_parse):
self.cr.execute("SELECT sum(debit) "\
"FROM account_move_line l "\
"WHERE l.account_id = %s AND "+self.query,(account.id,))
"WHERE l.account_id = %s AND %s "%(account.id, self.query))
## Add solde init to the result
#
sum_debit = self.cr.fetchone()[0] or 0.0
@@ -320,7 +296,7 @@ class general_ledger(rml_parse.rml_parse):
self.cr.execute("SELECT sum(credit) "\
"FROM account_move_line l "\
"WHERE l.account_id = %s AND "+ self.query,(account.id,))
"WHERE l.account_id = %s AND %s "%(account.id,self.query))
## Add solde init to the result
#
sum_credit = self.cr.fetchone()[0] or 0.0
@@ -334,7 +310,7 @@ class general_ledger(rml_parse.rml_parse):
def _sum_solde_account(self, account, form):
self.cr.execute("SELECT (sum(debit) - sum(credit)) as tot_solde "\
"FROM account_move_line l "\
"WHERE l.account_id = %s AND "+ self.query,(account.id,))
"WHERE l.account_id = %s AND %s"%(account.id,self.query))
sum_solde = self.cr.fetchone()[0] or 0.0
if form.get('soldeinit', False):
sum_solde += account.init_debit - account.init_credit
@@ -346,7 +322,7 @@ class general_ledger(rml_parse.rml_parse):
return 0.0
self.cr.execute("SELECT sum(debit) "\
"FROM account_move_line l "\
"WHERE l.account_id =ANY(%s) AND "+ self.query,(self.child_ids,))
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query)
sum_debit = self.cr.fetchone()[0] or 0.0
return sum_debit
@@ -355,7 +331,7 @@ class general_ledger(rml_parse.rml_parse):
return 0.0
self.cr.execute("SELECT sum(credit) "\
"FROM account_move_line l "\
"WHERE l.account_id =ANY(%s) AND "+ self.query,(self.child_ids,))
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query)
## Add solde init to the result
#
sum_credit = self.cr.fetchone()[0] or 0.0
@@ -366,14 +342,14 @@ class general_ledger(rml_parse.rml_parse):
return 0.0
self.cr.execute("SELECT (sum(debit) - sum(credit)) as tot_solde "\
"FROM account_move_line l "\
"WHERE l.account_id =ANY(%s) AND "+ self.query,(self.child_ids,))
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query)
sum_solde = self.cr.fetchone()[0] or 0.0
return sum_solde
def _set_get_account_currency_code(self, account_id):
self.cr.execute("SELECT c.code as code "\
"FROM res_currency c,account_account as ac "\
"WHERE ac.id = %s AND ac.currency_id = c.id",(account_id,))
"WHERE ac.id = %s AND ac.currency_id = c.id"%(account_id))
result = self.cr.fetchone()
if result:
self.account_currency = result[0]
@@ -392,6 +368,7 @@ class general_ledger(rml_parse.rml_parse):
currency_total = self.tot_currency = 0.0
return currency_total
report_sxw.report_sxw('report.account.general.ledger', 'account.account', 'addons/account/report/general_ledger.rml', parser=general_ledger, header=False)
report_sxw.report_sxw('report.account.general.ledger_landscape', 'account.account', 'addons/account/report/general_ledger_landscape.rml', parser=general_ledger, header=False)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+2 -2
View File
@@ -105,7 +105,7 @@
</blockTable>
<section>
<para>[[ repeatIn(get_children_accounts(a,data['form']), 'o') ]]</para>
<blockTable colWidths="66.0,124.0,70.0,40.0,80.0,59.0,52.0,54.0" style="tbl_content">[[ data['form']['amount_currency'] == False or removeParentNode('blockTable') ]]
<blockTable rowHeights="0.65cm" colWidths="66.0,124.0,70.0,40.0,80.0,59.0,52.0,54.0" style="tbl_content">[[ data['form']['amount_currency'] == False or removeParentNode('blockTable') ]]
<tr>
<td>
<blockTable colWidths="280.0,100.0,52.5,52.5,52.5" style="Table5">
@@ -156,7 +156,7 @@
</blockTable>
<section>
<para>[[ repeatIn(get_children_accounts(a,data['form']), 'o') ]]</para>
<blockTable colWidths="72.0,93.0,66.0,40.0,100.0,50.0,50.0,50.0,40.0" style="tbl_content">[[ data['form']['amount_currency'] == True or removeParentNode('blockTable') ]]
<blockTable rowHeights="0.65cm" colWidths="72.0,93.0,66.0,40.0,100.0,50.0,50.0,50.0,40.0" style="tbl_content">[[ data['form']['amount_currency'] == True or removeParentNode('blockTable') ]]
<tr>
<td>
<blockTable colWidths="264.00,100.0,50.0,50.0,49.0,40.00" style="Table5">
@@ -1,396 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2005-2006 CamptoCamp
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
import time
from report import report_sxw
import xml
import rml_parse
import pooler
class general_ledger_landscape(rml_parse.rml_parse):
_name = 'report.account.general.ledger_landscape'
def set_context(self, objects, data, ids, report_type = None):
##
self.borne_date = self.get_min_date(data['form'])
##
new_ids = []
if (data['model'] == 'account.account'):
new_ids = 'active_ids' in data['form']['context'] and data['form']['context']['active_ids'] or []
else:
new_ids.append(data['form']['Account_list'])
objects = self.pool.get('account.account').browse(self.cr, self.uid, new_ids)
super(general_ledger_landscape, self).set_context(objects, data, new_ids,report_type)
def __init__(self, cr, uid, name, context):
super(general_ledger_landscape, self).__init__(cr, uid, name, context=context)
self.date_borne = {}
self.query = ""
self.child_ids = ""
self.tot_currency = 0.0
self.period_sql = ""
self.sold_accounts = {}
self.localcontext.update( {
'time': time,
'lines': self.lines,
'sum_debit_account': self._sum_debit_account,
'sum_credit_account': self._sum_credit_account,
'sum_solde_account': self._sum_solde_account,
'sum_debit': self._sum_debit,
'sum_credit': self._sum_credit,
'sum_solde': self._sum_solde,
'get_children_accounts': self.get_children_accounts,
'sum_currency_amount_account': self._sum_currency_amount_account
})
self.context = context
def _calc_contrepartie(self,cr,uid,ids, context={}):
result = {}
#for id in ids:
# result.setdefault(id, False)
for account_line in self.pool.get('account.move.line').browse(cr, uid, ids, context):
# For avoid long text in the field we will limit it to 5 lines
#
#
#
result[account_line.id] = ' '
num_id_move = account_line.move_id.id
num_id_line = account_line.id
account_id = account_line.account_id.id
# search the basic account
# We have the account ID we will search all account move line from now until this time
# We are in the case of we are on the top of the account move Line
cr.execute('SELECT distinct(ac.code) as code_rest,ac.name as name_rest from account_account AS ac, account_move_line mv\
where ac.id = mv.account_id and mv.move_id = %s and mv.account_id <> %s' , (num_id_move,account_id,))
res_mv = cr.dictfetchall()
# we need a result more than 2 line to make the test so we will made the the on 1 because we have exclude the current line
if (len(res_mv) >=1):
concat = ''
rup_id = 0
for move_rest in res_mv:
concat = concat + move_rest['code_rest'] + '|'
result[account_line.id] = concat
if rup_id >5:
# we need to stop the computing and to escape but before we will add "..."
result[account_line.id] = concat + '...'
break
rup_id+=1
return result
def get_min_date(self,form):
## Get max born from account_fiscal year
#
sql = """ select min(fy.date_start) as start_date,max(fy.date_stop) as stop_date from account_fiscalyear
As fy where fy.state <> 'close'
"""
self.cr.execute(sql)
res = self.cr.dictfetchall()
borne_min = res[0]['start_date']
borne_max = res[0]['stop_date']
if form['state'] == 'byperiod':
## This function will return the most aged date
periods = form['periods']
if not periods:
self.cr.execute("""
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.fiscalyear_id = %s""" ,(form['fiscalyear'],))
else:
self.cr.execute("""
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.id =ANY(%s)""",(periods,))
res = self.cr.dictfetchall()
borne_min = res[0]['start_date']
borne_max = res[0]['stop_date']
elif form['state'] == 'bydate':
borne_min = form['date_from']
borne_max = form['date_to']
elif form['state'] == 'all':
periods = form['periods']
if not periods:
if form['fiscalyear'] == False:
fiscalyears = self.pool.get('account.fiscalyear').search(self.cr, self.uid, [('state', '=', 'draft')])
else:
fiscalyears = [form['fiscalyear']]
self.cr.execute("select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.fiscalyear_id =ANY(%s)" ,(fiscalyears,))
else:
self.cr.execute("""
Select min(p.date_start) as start_date,max(p.date_stop) as stop_date from account_period as p where p.id =ANY(%s)""",(periods,))
res = self.cr.dictfetchall()
period_min = res[0]['start_date']
period_max = res[0]['stop_date']
date_min = form['date_from']
date_max = form['date_to']
if period_min<date_min:
borne_min = period_min
else :
borne_min = date_min
if date_max<period_max:
borne_max = period_max
else :
borne_max = date_max
elif form['state'] == 'none':
sql = """
SELECT min(date) as start_date,max(date) as stop_date FROM account_move_line """
self.cr.execute(sql)
res = self.cr.dictfetchall()
borne_min = res[0]['start_date']
borne_max = res[0]['stop_date']
self.date_borne = {
'min_date': borne_min,
'max_date': borne_max,
}
return self.date_borne
def get_children_accounts(self, account, form):
self.child_ids = self.pool.get('account.account').search(self.cr, self.uid,
[('parent_id', 'child_of', self.ids)])
#
res = []
ctx = self.context.copy()
## We will make the test for period or date
## We will now make the test
#
ctx['state'] = form['context'].get('state','all')
if form.has_key('fiscalyear'):
ctx['fiscalyear'] = form['fiscalyear']
ctx['periods'] = form['periods']
else:
ctx['date_from'] = form['date_from']
ctx['date_to'] = form['date_to']
##
#
self.query = self.pool.get('account.move.line')._query_get(self.cr, self.uid, context=ctx)
if account and account.child_consol_ids: # add ids of consolidated childs also of selected account
ctx['consolidate_childs'] = True
ctx['account_id'] = account.id
ids_acc = self.pool.get('account.account').search(self.cr, self.uid,[('parent_id', 'child_of', [account.id])], context=ctx)
for child_id in ids_acc:
child_account = self.pool.get('account.account').browse(self.cr, self.uid, child_id)
sold_account = self._sum_solde_account(child_account,form)
self.sold_accounts[child_account.id] = sold_account
if form['display_account'] == 'bal_mouvement':
if child_account.type != 'view' \
and len(self.pool.get('account.move.line').search(self.cr, self.uid,
[('account_id','=',child_account.id)],
context=ctx)) <> 0 :
res.append(child_account)
elif form['display_account'] == 'bal_solde':
if child_account.type != 'view' \
and len(self.pool.get('account.move.line').search(self.cr, self.uid,
[('account_id','=',child_account.id)],
context=ctx)) <> 0 :
if ( sold_account <> 0.0):
res.append(child_account)
else:
if child_account.type != 'view' \
and len(self.pool.get('account.move.line').search(self.cr, self.uid,
[('account_id','>=',child_account.id)],
context=ctx)) <> 0 :
res.append(child_account)
##
if not len(res):
return [account]
else:
## We will now compute solde initiaux
for move in res:
self.cr.execute("""SELECT sum(l.debit) AS sum_debit, sum(l.credit) AS sum_credit FROM account_move_line l \
WHERE l.account_id = %s AND l.date < %s AND l.date > %s""",(move.id,self.borne_date['max_date'],self.borne_date['min_date']))
resultat = self.cr.dictfetchall()
if resultat[0] :
if resultat[0]['sum_debit'] == None:
sum_debit = 0
else:
sum_debit = resultat[0]['sum_debit']
if resultat[0]['sum_credit'] == None:
sum_credit = 0
else:
sum_credit = resultat[0]['sum_credit']
move.init_credit = sum_credit
move.init_debit = sum_debit
else:
move.init_credit = 0
move.init_debit = 0
return res
def lines(self, account, form):
inv_types = {
'out_invoice': 'CI: ',
'in_invoice': 'SI: ',
'out_refund': 'OR: ',
'in_refund': 'SR: ',
}
if form['sortbydate'] == 'sort_date':
sorttag = 'l.date'
else:
sorttag = 'j.code'
sql = """
SELECT l.id, l.date, j.code,c.code AS currency_code,l.amount_currency,l.ref, l.name , COALESCE(l.debit,0) as debit, COALESCE(l.credit,0) as credit, l.period_id
FROM account_move_line as l
LEFT JOIN res_currency c on (l.currency_id=c.id)
JOIN account_journal j on (l.journal_id=j.id)
AND account_id = %%s
AND %s
WHERE l.date<=%%s
AND l.date>=%%s
ORDER by %s""" % (self.query, sorttag)
self.cr.execute(sql, (account.id, self.date_borne['max_date'], self.date_borne['min_date'],))
res = self.cr.dictfetchall()
sum = 0.0
account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line')
for l in res:
line = self.pool.get('account.move.line').browse(self.cr, self.uid, l['id'])
l['move'] = line.move_id.name
self.cr.execute('Select id from account_invoice where move_id =%s',(line.move_id.id,))
tmpres = self.cr.dictfetchall()
if len(tmpres) > 0 :
inv = self.pool.get('account.invoice').browse(self.cr, self.uid, tmpres[0]['id'])
l['ref'] = inv_types[inv.type] + ': '+str(inv.number)
if line.partner_id :
l['partner'] = line.partner_id.name
else :
l['partner'] = ''
sum = l['debit'] - l ['credit']
# c = time.strptime(l['date'],"%Y-%m-%d")
# l['date'] = time.strftime("%d-%m-%Y",c)
l['progress'] = sum
l['line_corresp'] = self._calc_contrepartie(self.cr,self.uid,[l['id']])[l['id']]
# Modification du amount Currency
if (l['credit'] > 0):
if l['amount_currency'] != None:
l['amount_currency'] = abs(l['amount_currency']) * -1
#
if l['amount_currency'] != None:
self.tot_currency = self.tot_currency + l['amount_currency']
return res
def _sum_debit_account(self, account, form):
self.cr.execute("SELECT sum(debit) "\
"FROM account_move_line l "\
"WHERE l.account_id = %s AND "+self.query,(account.id,))
## Add solde init to the result
#
sum_debit = self.cr.fetchone()[0] or 0.0
if form['soldeinit']:
sum_debit += account.init_debit
#
##
return sum_debit
def _sum_credit_account(self, account, form):
self.cr.execute("SELECT sum(credit) "\
"FROM account_move_line l "\
"WHERE l.account_id = %s AND "+self.query,(account.id,))
## Add solde init to the result
#
sum_credit = self.cr.fetchone()[0] or 0.0
if form['soldeinit']:
sum_credit += account.init_credit
#
##
return sum_credit
def _sum_solde_account(self, account, form):
self.cr.execute("SELECT (sum(debit) - sum(credit)) as tot_solde "\
"FROM account_move_line l "\
"WHERE l.account_id = %s AND "+self.query,(account.id,))
sum_solde = self.cr.fetchone()[0] or 0.0
if form.get('soldeinit',False):
sum_solde += account.init_debit - account.init_credit
return sum_solde
def _sum_debit(self, form):
if not self.ids:
return 0.0
self.cr.execute("SELECT sum(debit) "\
"FROM account_move_line l "\
"WHERE l.account_id =ANY(%s) AND "+self.query,(self.child_ids,))
sum_debit = self.cr.fetchone()[0] or 0.0
return sum_debit
def _sum_credit(self, form):
if not self.ids:
return 0.0
self.cr.execute("SELECT sum(credit) "\
"FROM account_move_line l "\
"WHERE l.account_id =ANY(%s) AND "+self.query,(self.child_ids,))
## Add solde init to the result
#
sum_credit = self.cr.fetchone()[0] or 0.0
return sum_credit
def _sum_solde(self, form):
if not self.ids:
return 0.0
self.cr.execute("SELECT (sum(debit) - sum(credit)) as tot_solde "\
"FROM account_move_line l "\
"WHERE l.account_id =ANY(%s) AND "+self.query,(self.child_ids,))
sum_solde = self.cr.fetchone()[0] or 0.0
return sum_solde
def _set_get_account_currency_code(self, account_id):
self.cr.execute("SELECT c.code as code "\
"FROM res_currency c,account_account as ac "\
"WHERE ac.id = %s AND ac.currency_id = c.id",(account_id,))
result = self.cr.fetchone()
if result:
self.account_currency = result[0]
else:
self.account_currency = False
def _sum_currency_amount_account(self, account, form):
self._set_get_account_currency_code(account.id)
self.cr.execute("SELECT sum(aml.amount_currency) FROM account_move_line as aml,res_currency as rc WHERE aml.currency_id = rc.id AND aml.account_id= %s ", (account.id,))
total = self.cr.fetchone()
if self.account_currency:
return_field = str(total[0]) + self.account_currency
return return_field
else:
currency_total = self.tot_currency = 0.0
return currency_total
report_sxw.report_sxw('report.account.general.ledger_landscape', 'account.account', 'addons/account/report/general_ledger_landscape.rml', parser=general_ledger_landscape, header=False)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -104,7 +104,7 @@
<para>[[ repeatIn(get_children_accounts(a,data['form']), 'o') ]]</para>
<blockTable colWidths="66.0,35.0,150.0, 90.0,60.0,335.0,50.0,69.0,72.0,64.0,58.0" style="tbl_content">[[ data['form']['amount_currency'] == True or removeParentNode('blockTable') ]]
<blockTable rowHeights="0.65cm" colWidths="66.0,35.0,150.0, 90.0,60.0,335.0,50.0,69.0,72.0,64.0,58.0" style="tbl_content">[[ data['form']['amount_currency'] == True or removeParentNode('blockTable') ]]
<tr>
<td>
<blockTable colWidths="404.0,375.0,69.0,72.0,64.0,59.00" style="Table5">
@@ -165,7 +165,7 @@
<para>[[ repeatIn(get_children_accounts(a,data['form']), 'o') ]]</para>
<blockTable colWidths="66.0,35.0,166.0,90.0,60.0,378.0,50.0,69.0,72.0,64.0" style="tbl_content">[[ data['form']['amount_currency'] == False or removeParentNode('blockTable') ]]
<blockTable rowHeights="0.65cm" colWidths="66.0,35.0,166.0,90.0,60.0,378.0,50.0,69.0,72.0,64.0" style="tbl_content">[[ data['form']['amount_currency'] == False or removeParentNode('blockTable') ]]
<tr>
<td>
<blockTable colWidths="405.0,435.0,69.0,72.0,64.0" style="Table5">
+2 -2
View File
@@ -167,9 +167,9 @@ class third_party_ledger(rml_parse.rml_parse):
#
#new_ids = [id for (id,) in self.cr.fetchall()]
if data['form']['result_selection'] == 'supplier':
self.ACCOUNT_TYPE = ['receivable']
elif data['form']['result_selection'] == 'customer':
self.ACCOUNT_TYPE = ['payable']
elif data['form']['result_selection'] == 'customer':
self.ACCOUNT_TYPE = ['receivable']
elif data['form']['result_selection'] == 'all':
self.ACCOUNT_TYPE = ['payable','receivable']
+22 -22
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 13:43+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2010-05-28 02:33+0000\n"
"Last-Translator: Abdul Munif Hanafi <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:11+0000\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_analytic_plans
@@ -41,7 +41,7 @@ msgstr ""
#. module: account_analytic_plans
#: wizard_field:wizard.crossovered.analytic,init,date2:0
msgid "End Date"
msgstr ""
msgstr "Tanggal Akhir"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,rate:0
@@ -70,7 +70,7 @@ msgstr ""
#. module: account_analytic_plans
#: wizard_button:wizard.crossovered.analytic,init,print:0
msgid "Print"
msgstr ""
msgstr "Cetak"
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
@@ -90,7 +90,7 @@ msgstr ""
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "Account Name"
msgstr ""
msgstr "Nama Akun"
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:0
@@ -100,7 +100,7 @@ msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,code:0
msgid "Distribution Code"
msgstr ""
msgstr "Kode Distribusi"
#. module: account_analytic_plans
#: constraint:ir.actions.act_window:0
@@ -115,17 +115,17 @@ msgstr ""
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "Printing date"
msgstr ""
msgstr "Tanggal mencetak"
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "Percentage"
msgstr ""
msgstr "Persentase"
#. module: account_analytic_plans
#: wizard_field:wizard.crossovered.analytic,init,empty_line:0
msgid "Dont show empty lines"
msgstr ""
msgstr "Jangan tampilkan baris kosong"
#. module: account_analytic_plans
#: wizard_view:wizard.crossovered.analytic,init:0
@@ -141,12 +141,12 @@ msgstr ""
#: field:account.analytic.plan.instance,journal_id:0
#: wizard_field:wizard.crossovered.analytic,init,journal_ids:0
msgid "Analytic Journal"
msgstr ""
msgstr "Jurnal Analisis"
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "100.00%"
msgstr ""
msgstr "100.00%"
#. module: account_analytic_plans
#: wizard_field:wizard.crossovered.analytic,init,ref:0
@@ -300,7 +300,7 @@ msgstr ""
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "Quantity"
msgstr ""
msgstr "Kwantitas"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account_ids:0
@@ -310,17 +310,17 @@ msgstr ""
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "Code"
msgstr ""
msgstr "Kode"
#. module: account_analytic_plans
#: wizard_button:create.model,info,end:0
msgid "OK"
msgstr ""
msgstr "Setuju"
#. module: account_analytic_plans
#: field:account.analytic.plan.line,root_analytic_id:0
msgid "Root Account"
msgstr ""
msgstr "Akun Induk"
#. module: account_analytic_plans
#: wizard_view:create.model,info:0
@@ -331,12 +331,12 @@ msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.line,sequence:0
msgid "Sequence"
msgstr ""
msgstr "Berurutan"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,analytic_account_id:0
msgid "Analytic Account"
msgstr ""
msgstr "Akun Analisis"
#. module: account_analytic_plans
#: field:account.analytic.default,analytics_id:0
@@ -355,19 +355,19 @@ msgstr ""
#. module: account_analytic_plans
#: wizard_button:wizard.crossovered.analytic,init,end:0
msgid "Cancel"
msgstr ""
msgstr "Batal"
#. module: account_analytic_plans
#: wizard_field:wizard.crossovered.analytic,init,date1:0
msgid "Start Date"
msgstr ""
msgstr "Tanggal Mulai"
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "at"
msgstr ""
msgstr "pada"
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "From Date"
msgstr ""
msgstr "Dari Tanggal"
+64
View File
@@ -0,0 +1,64 @@
# Indonesian translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-24 12:50+0000\n"
"PO-Revision-Date: 2010-05-28 02:49+0000\n"
"Last-Translator: Abdul Munif Hanafi <Unknown>\n"
"Language-Team: Indonesian <id@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_anglo_saxon
#: view:product.category:0
msgid " Accounting Property"
msgstr ""
#. module: account_anglo_saxon
#: model:ir.module.module,description:account_anglo_saxon.module_meta_information
msgid ""
"This module will support the Anglo-Saxons accounting methodology by \n"
" changing the accounting logic with stock transactions. The difference "
"between the Anglo-Saxon accounting countries \n"
" and the Rhine or also called Continental accounting countries is the "
"moment of taking the Cost of Goods Sold versus Cost of Sales. \n"
" Anglo-Saxons accounting does take the cost when sales invoice is "
"created, Continental accounting will take the cost at he moment the goods "
"are shipped.\n"
" This module will add this functionality by using a interim account, to "
"store the value of shipped goods and will contra book this interim account \n"
" when the invoice is created to transfer this amount to the debtor or "
"creditor account."
msgstr ""
#. module: account_anglo_saxon
#: model:ir.module.module,shortdesc:account_anglo_saxon.module_meta_information
msgid "Stock Account"
msgstr ""
#. module: account_anglo_saxon
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML tidak sah untuk Menampilkan Arsitektur!"
#. module: account_anglo_saxon
#: field:product.category,property_account_creditor_price_difference_categ:0
#: field:product.template,property_account_creditor_price_difference:0
msgid "Price Difference Account"
msgstr ""
#. module: account_anglo_saxon
#: help:product.category,property_account_creditor_price_difference_categ:0
#: help:product.template,property_account_creditor_price_difference:0
msgid ""
"This account will be used to value price difference between purchase price "
"and cost price."
msgstr ""
+36 -36
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 13:43+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2010-05-28 02:58+0000\n"
"Last-Translator: Abdul Munif Hanafi <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:19+0000\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_budget
@@ -24,7 +24,7 @@ msgstr ""
#. module: account_budget
#: rml:account.budget:0
msgid "% performance"
msgstr ""
msgstr "% performa"
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.open_budget_post_form
@@ -35,18 +35,18 @@ msgstr ""
#. module: account_budget
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Nama model tidak sah di definsi aksi"
#. module: account_budget
#: rml:account.analytic.account.budget:0
#: rml:crossovered.budget.report:0
msgid "Printed at:"
msgstr ""
msgstr "Dicetak pada:"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Confirm"
msgstr ""
msgstr "Konfirmasi"
#. module: account_budget
#: field:crossovered.budget,validating_user_id:0
@@ -62,12 +62,12 @@ msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Confirmed"
msgstr ""
msgstr "Dikonfirmasi"
#. module: account_budget
#: field:account.budget.post.dotation,period_id:0
msgid "Period"
msgstr ""
msgstr "Periode"
#. module: account_budget
#: wizard_field:account.budget.report,init,date2:0
@@ -80,7 +80,7 @@ msgstr ""
#. module: account_budget
#: rml:account.budget:0
msgid "Printing date:"
msgstr ""
msgstr "Tanggal dicetak :"
#. module: account_budget
#: selection:crossovered.budget,state:0
@@ -92,7 +92,7 @@ msgstr ""
#: rml:account.budget:0
#: rml:crossovered.budget.report:0
msgid "at"
msgstr ""
msgstr "pada"
#. module: account_budget
#: view:account.budget.post:0
@@ -102,7 +102,7 @@ msgstr ""
#. module: account_budget
#: rml:account.budget:0
msgid "Performance"
msgstr ""
msgstr "Kinerja"
#. module: account_budget
#: rml:account.analytic.account.budget:0
@@ -114,22 +114,22 @@ msgstr ""
#. module: account_budget
#: rml:account.budget:0
msgid "From"
msgstr ""
msgstr "Dari"
#. module: account_budget
#: field:crossovered.budget.lines,percentage:0
msgid "Percentage"
msgstr ""
msgstr "Persentase"
#. module: account_budget
#: rml:account.budget:0
msgid "Results"
msgstr ""
msgstr "Hasil"
#. module: account_budget
#: field:crossovered.budget,state:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: account_budget
#: model:ir.module.module,description:account_budget.module_meta_information
@@ -171,7 +171,7 @@ msgstr ""
#: rml:account.analytic.account.budget:0
#: rml:crossovered.budget.report:0
msgid "Description"
msgstr ""
msgstr "Keterangan"
#. module: account_budget
#: rml:account.analytic.account.budget:0
@@ -184,7 +184,7 @@ msgstr ""
#: wizard_button:wizard.crossovered.budget,init,report:0
#: wizard_button:wizard.crossovered.budget.summary,init,report:0
msgid "Print"
msgstr ""
msgstr "Cetak"
#. module: account_budget
#: rml:account.budget:0
@@ -203,7 +203,7 @@ msgstr ""
#: rml:account.budget:0
#: rml:crossovered.budget.report:0
msgid "Total :"
msgstr ""
msgstr "Total :"
#. module: account_budget
#: rml:account.analytic.account.budget:0
@@ -232,7 +232,7 @@ msgstr ""
#: view:crossovered.budget:0
#: selection:crossovered.budget,state:0
msgid "Done"
msgstr ""
msgstr "Selesai"
#. module: account_budget
#: view:crossovered.budget:0
@@ -256,12 +256,12 @@ msgstr ""
#: field:crossovered.budget,date_to:0
#: field:crossovered.budget.lines,date_to:0
msgid "End Date"
msgstr ""
msgstr "Tanggal berakhir"
#. module: account_budget
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
msgstr "XML tidak sah untuk Menampilkan Arsitektur!"
#. module: account_budget
#: field:crossovered.budget.lines,theoritical_amount:0
@@ -273,7 +273,7 @@ msgstr ""
#: field:account.budget.post.dotation,name:0
#: field:crossovered.budget,name:0
msgid "Name"
msgstr ""
msgstr "Nama"
#. module: account_budget
#: model:ir.actions.wizard,name:account_budget.wizard_crossovered_budget_menu_1
@@ -300,12 +300,12 @@ msgstr ""
#: model:ir.model,name:account_budget.model_crossovered_budget
#: model:ir.ui.menu,name:account_budget.menu_act_crossovered_budget_view
msgid "Budget"
msgstr ""
msgstr "Anggaran"
#. module: account_budget
#: field:account.budget.post.dotation,post_id:0
msgid "Item"
msgstr ""
msgstr "Item"
#. module: account_budget
#: field:account.budget.post.dotation,amount:0
@@ -316,19 +316,19 @@ msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,paid_date:0
msgid "Paid Date"
msgstr ""
msgstr "Tanggal Dibayar"
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.action_account_budget_post_tree
#: model:ir.ui.menu,name:account_budget.menu_action_account_budget_post_tree
#: model:ir.ui.menu,name:account_budget.next_id_31
msgid "Budgets"
msgstr ""
msgstr "Anggaran"
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Cancelled"
msgstr ""
msgstr "Dibatalkan"
#. module: account_budget
#: view:account.budget.post.dotation:0
@@ -373,7 +373,7 @@ msgstr ""
#: field:account.budget.post,code:0
#: field:crossovered.budget,code:0
msgid "Code"
msgstr ""
msgstr "Kode"
#. module: account_budget
#: field:account.budget.post.dotation,tot_planned:0
@@ -404,12 +404,12 @@ msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0
msgid "Analytic Account"
msgstr ""
msgstr "Akun Analisis"
#. module: account_budget
#: rml:crossovered.budget.report:0
msgid "Budget :"
msgstr ""
msgstr "Anggaran :"
#. module: account_budget
#: rml:account.budget:0
@@ -423,12 +423,12 @@ msgstr ""
#: view:account.budget.post:0
#: field:account.budget.post,account_ids:0
msgid "Accounts"
msgstr ""
msgstr "Akun"
#. module: account_budget
#: model:ir.actions.report.xml,name:account_budget.account_budget
msgid "Print Budget"
msgstr ""
msgstr "Cetak Anggaran"
#. module: account_budget
#: view:account.analytic.account:0
@@ -453,7 +453,7 @@ msgstr ""
#: wizard_button:wizard.crossovered.budget,init,end:0
#: wizard_button:wizard.crossovered.budget.summary,init,end:0
msgid "Cancel"
msgstr ""
msgstr "Batal"
#. module: account_budget
#: model:ir.module.module,shortdesc:account_budget.module_meta_information
@@ -464,7 +464,7 @@ msgstr ""
#: field:crossovered.budget,date_from:0
#: field:crossovered.budget.lines,date_from:0
msgid "Start Date"
msgstr ""
msgstr "Tanggal Mulai"
#. module: account_budget
#: rml:account.analytic.account.budget:0
@@ -480,4 +480,4 @@ msgstr ""
#. module: account_budget
#: wizard_view:account.budget.report,init:0
msgid "Select period"
msgstr ""
msgstr "Pilih periode"
+4 -4
View File
@@ -7,16 +7,16 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 13:43+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2010-05-28 02:43+0000\n"
"Last-Translator: Abdul Munif Hanafi <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:20+0000\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_chart
#: model:ir.module.module,description:account_chart.module_meta_information
msgid "Remove minimal account chart"
msgstr ""
msgstr "Buang grafik akun minimal"
+32
View File
@@ -0,0 +1,32 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-05-28 02:46+0000\n"
"Last-Translator: Abdul Munif Hanafi <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML tidak sah untuk Menampilkan Arsitektur!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Tanggal periksa Akun"
+88 -36
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-28 23:22+0000\n"
"Last-Translator: Paulino <Unknown>\n"
"PO-Revision-Date: 2010-05-28 02:17+0000\n"
"Last-Translator: cmsa <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:05+0000\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_followup
@@ -35,7 +35,7 @@ msgstr "Ref. do Cliente:"
#: model:ir.actions.act_window,name:account_followup.act_account_partner_account_move_payable_all
#: model:ir.ui.menu,name:account_followup.menu_account_move_open_unreconcile_payable
msgid "All payable entries"
msgstr "Todas os movimentos a pagar"
msgstr "Todos os movimentos a pagar"
#. module: account_followup
#: constraint:ir.actions.act_window:0
@@ -50,7 +50,7 @@ msgstr "Mensagem impressa"
#. module: account_followup
#: rml:account_followup.followup.print:0
msgid "Amount In Currency"
msgstr "Montante em Divisa"
msgstr "Montante em Numerário"
#. module: account_followup
#: rml:account_followup.followup.print:0
@@ -71,13 +71,13 @@ msgstr "%(user_signature)s: Nome de utilizador"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "Select partners"
msgstr "Seleccionar Terceiros"
msgstr "Seleccionar Parceiros"
#. module: account_followup
#: view:account_followup.followup:0
#: field:account_followup.followup,followup_line:0
msgid "Follow-Up"
msgstr "Continuação"
msgstr "Dar Seguimento"
#. module: account_followup
#: field:account_followup.stat,debit:0
@@ -87,7 +87,7 @@ msgstr "Débito"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "Email Settings"
msgstr ""
msgstr "Parâmetros de Email"
#. module: account_followup
#: field:account_followup.stat,account_type:0
@@ -97,34 +97,34 @@ msgstr "Tipo de Conta"
#. module: account_followup
#: rml:account_followup.followup.print:0
msgid "Ref"
msgstr "Referençia"
msgstr "Ref"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(followup_amount)s: Total Amount Due"
msgstr "% (montante_de_seguimentos)s: Quantidade total devido"
msgstr "%(followup_amount)s: Quantidade total devido"
#. module: account_followup
#: view:account_followup.followup.line:0
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(date)s: Current Date"
msgstr "%(data)s: Data actual"
msgstr "%(date)s: Data actual"
#. module: account_followup
#: field:account.move.line,followup_date:0
msgid "Latest Follow-up"
msgstr "Ultimos seguimentos"
msgstr "Últimos seguimentos"
#. module: account_followup
#: field:account_followup.followup.line,followup_id:0
#: field:account_followup.stat,followup_id:0
msgid "Follow Ups"
msgstr "Sguimentos"
msgstr "Seguimentos"
#. module: account_followup
#: wizard_field:account_followup.followup.print.all,init,date:0
msgid "Follow-up Sending Date"
msgstr ""
msgstr "Seguimento da data de envio"
#. module: account_followup
#: view:account_followup.followup:0
@@ -151,7 +151,7 @@ msgstr "Empresa"
#. module: account_followup
#: rml:account_followup.followup.print:0
msgid "Invoice Date"
msgstr ""
msgstr "Data da Factura"
#. module: account_followup
#: wizard_field:account_followup.followup.print.all,next,email_subject:0
@@ -166,17 +166,17 @@ msgstr "Pago"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(line)s: Account Move lines"
msgstr "%(linha)s: Linhas de movimento de contas"
msgstr "%(line)s: Linhas de movimento de contas"
#. module: account_followup
#: field:account_followup.stat,date_followup:0
msgid "Latest followup"
msgstr "Ultimos Seguimentos"
msgstr "Últimos Seguimentos"
#. module: account_followup
#: view:account.move.line:0
msgid "Partner entries"
msgstr "Entradas de terceiros"
msgstr "Entradas de parceiros"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_followup_line
@@ -186,7 +186,7 @@ msgstr "Critérios de seguimento"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "Partner Selection"
msgstr ""
msgstr "Selecção de Parceiros"
#. module: account_followup
#: constraint:ir.ui.view:0
@@ -201,12 +201,12 @@ msgstr "Tipo de termo"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,init:0
msgid "Follow-up and Date Selection"
msgstr ""
msgstr "Seguimento e Selecção da Data"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "Select partners to remind"
msgstr "Seleccionar terceiros para lembrar"
msgstr "Seleccionar parceiros para lembrar"
#. module: account_followup
#: rml:account_followup.followup.print:0
@@ -230,6 +230,19 @@ msgid ""
"Best Regards,\n"
"\t\t\t"
msgstr ""
"\n"
"Caro %(partner_name)s,\n"
"\n"
"À excepção feita se houver um erro nosso, parece que o seguinte montante "
"ainda está por pagar. Por favor, tome as medidas adequadas a fim de efectuar "
"esse pagamento nos próximos oito dias.\n"
"\n"
"Se o seu pagamento tiver sido realizado após este e-mail ter sido enviado, "
"por favor, considere o presente como nulos. Não hesite em entrar em contato "
"com nosso departamento de contabilidade (+32) .10.68.94.39.\n"
"\n"
"Atenciosamente,\n"
"\t\t\t"
#. module: account_followup
#: constraint:ir.model:0
@@ -241,7 +254,7 @@ msgstr ""
#. module: account_followup
#: wizard_button:account_followup.followup.print.all,summary,end:0
msgid "Ok"
msgstr ""
msgstr "Ok"
#. module: account_followup
#: field:account_followup.followup,name:0
@@ -263,7 +276,7 @@ msgstr "Fim do mês"
#: view:account_followup.followup.line:0
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(company_name)s: User's Company name"
msgstr ""
msgstr "%(company_name)s: Nome da empresa do utilizador"
#. module: account_followup
#: model:ir.actions.act_window,name:account_followup.act_account_partner_account_move_all
@@ -305,23 +318,23 @@ msgstr "Continuar"
#. module: account_followup
#: model:ir.module.module,shortdesc:account_followup.module_meta_information
msgid "Accounting follow-ups management"
msgstr ""
msgstr "Gestão do seguimento da conta"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,summary:0
#: wizard_field:account_followup.followup.print.all,summary,summary:0
msgid "Summary"
msgstr ""
msgstr "Resumo"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "Follow-Up Lines"
msgstr ""
msgstr "Linhas de Seguimento"
#. module: account_followup
#: rml:account_followup.followup.print:0
msgid "Document : Customer account statement"
msgstr ""
msgstr "Documento: Declaração da conta do cliente"
#. module: account_followup
#: view:account_followup.stat:0
@@ -331,7 +344,7 @@ msgstr "Linhas de seguimento"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(company_currency)s: User's Company Currency"
msgstr ""
msgstr "%(company_currency)s: Divisa da Companhia do Utilizador"
#. module: account_followup
#: field:account_followup.stat,balance:0
@@ -343,6 +356,8 @@ msgstr "Saldo"
msgid ""
"This field allow you to select a forecast date to plan your follow-ups"
msgstr ""
"Este campo permite-lhe a selecção de uma data para programar os seus "
"seguimentos"
#. module: account_followup
#: view:account.move.line:0
@@ -373,6 +388,27 @@ msgid ""
"Best Regards,\n"
"\t\t\t"
msgstr ""
"\n"
"Caro %(partner_name)s,\n"
"\n"
"Estamos desapontados em ver que apesar de o envio de um lembrete de que sua "
"conta está seriamente atrasada.\n"
"\n"
"É essencial que o pagamento seja feito, caso contrário, teremos que "
"considerar um stop em sua conta o que significa que não seremos mais capazes "
"de fornecer à sua empresa (produtos/serviços).\n"
"Por favor, tome as medidas adequadas a fim de efectuar esse pagamento nos "
"próximos 8 dias.\n"
"\n"
"Se houver um problema com o pagamento da factura que não temos conhecimento "
"de, não hesite em entrar em contato com o nosso departamento de "
"contabilidade (+32) .10.68.94.39. para que possamos resolver a questão "
"rapidamente.\n"
"\n"
"Detalhes dos pagamentos devidos é impresso abaixo.\n"
"\n"
"Atenciosamente,\n"
"\t\t\t"
#. module: account_followup
#: rml:account_followup.followup.print:0
@@ -382,7 +418,7 @@ msgstr "Sub-Total:"
#. module: account_followup
#: selection:account_followup.followup.line,start:0
msgid "Net Days"
msgstr "Dias líquidos"
msgstr "Dias Líquidos"
#. module: account_followup
#: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form
@@ -402,7 +438,7 @@ msgstr "Corpo do e-mail"
#. module: account_followup
#: field:account_followup.stat,date_move_last:0
msgid "Last move"
msgstr "Ultimo movimento"
msgstr "Último movimento"
#. module: account_followup
#: rml:account_followup.followup.print:0
@@ -434,11 +470,27 @@ msgid ""
"Best Regards,\n"
"\t\t\t"
msgstr ""
"\n"
"Caro %(partner_name)s,\n"
"\n"
"Apesar de várias insistências, a conta ainda não está resolvida.\n"
"\n"
"A não ser que o pagamento integral seja feita nos próximos oito dias, então "
"a ação legal para a cobrança da dívida, será tomada sem aviso prévio.\n"
"\n"
"Espero que não seja necessário tomar essa medida, os detalhes de pagamentos "
"estão impressos abaixo.\n"
"\n"
"Em caso de quaisquer dúvidas sobre esta questão, não hesite em entrar em "
"contato com nosso departamento de contabilidade (+32) .10.68.94.39.\n"
"\n"
"Atenciosamente,\n"
"\t\t\t"
#. module: account_followup
#: rml:account_followup.followup.print:0
msgid "Maturity Date"
msgstr ""
msgstr "Data de vencimento"
#. module: account_followup
#: view:account_followup.followup.line:0
@@ -454,13 +506,13 @@ msgstr "Sequência"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(heading)s: Move line header"
msgstr "%(cabeçalho)s: Mover linha de cabeçalho"
msgstr "%(heading)s: Mover linha de cabeçalho"
#. module: account_followup
#: view:account_followup.followup.line:0
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(partner_name)s: Partner name"
msgstr "%(nome_de_terceiro)s: Nome do terceiro"
msgstr "%(partner_name)s: Nome do terceiro"
#. module: account_followup
#: wizard_field:account_followup.followup.print.all,next,email_conf:0
@@ -470,12 +522,12 @@ msgstr "Enviar confirmação de e-mail"
#. module: account_followup
#: wizard_field:account_followup.followup.print.all,init,followup_id:0
msgid "Follow-up"
msgstr ""
msgstr "Seguimento"
#. module: account_followup
#: field:account_followup.stat,name:0
msgid "Partner"
msgstr "Terceiro"
msgstr "Parceiro"
#. module: account_followup
#: wizard_button:account_followup.followup.print.all,init,end:0
@@ -491,4 +543,4 @@ msgstr "Dias de atraso"
#. module: account_followup
#: wizard_button:account_followup.followup.print.all,next,print:0
msgid "Print Follow Ups & Send Mails"
msgstr ""
msgstr "Imprimir Segmentos e Enviar Mensagens"
@@ -7,30 +7,31 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 13:44+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2010-05-28 03:01+0000\n"
"Last-Translator: Abdul Munif Hanafi <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:18+0000\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: analytic_journal_billing_rate
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
msgstr "XML tidak sah untuk Menampilkan Arsitektur!"
#. module: analytic_journal_billing_rate
#: field:analytic_journal_rate_grid,journal_id:0
msgid "Analytic Journal"
msgstr ""
msgstr "Jurnal Analisis"
#. module: analytic_journal_billing_rate
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Nama Objek harus berawalan dengan x_ dan tidak mengandung karakter khusus !"
#. module: analytic_journal_billing_rate
#: view:analytic_journal_rate_grid:0
@@ -40,7 +41,7 @@ msgstr ""
#. module: analytic_journal_billing_rate
#: field:analytic_journal_rate_grid,account_id:0
msgid "Analytic Account"
msgstr ""
msgstr "Akun Analisis"
#. module: analytic_journal_billing_rate
#: model:ir.model,name:analytic_journal_billing_rate.model_analytic_journal_rate_grid
+1 -1
View File
@@ -27,7 +27,7 @@
'author': 'Tiny',
'website': 'http://www.openerp.com',
'depends': ['base'],
'init_xml': ['base_action_rule_data.xml'],
'init_xml': [],
'update_xml': [
'base_action_rule_view.xml',
'security/ir.model.access.csv',
+9 -103
View File
@@ -19,16 +19,14 @@
#
##############################################################################
from datetime import datetime
import time
import mx.DateTime
import re
import tools
from osv import fields, osv, orm
from osv.orm import except_orm
from osv.osv import osv_pool
from tools.translate import _
import mx.DateTime
import pooler
import re
import time
import tools
class base_action_rule(osv.osv):
""" Base Action Rules """
@@ -134,74 +132,6 @@ the rule to mark CC(mail to any other person defined in actions)."),
_order = 'sequence'
def pre_action(self, cr, uid, ids, model, context=None):
# Searching for action rules
cr.execute("SELECT m.model, r.id from base_action_rule r left join ir_model m on (m.id = r.name)")
res = cr.fetchall()
# Check if any rule matching with current object
for obj_name, rule_id in res:
if not (model == obj_name):
continue
else:
obj = self.pool.get(obj_name)
self._action(cr, uid, [rule_id], obj.browse(cr, uid, ids, context=context))
return True
def new_create(self, old_create, model, context=None):
if not context:
context = {}
def make_call_old(cr, uid, vals, context=context):
new_id = old_create(cr, uid, vals, context=context)
if not context.get('action'):
self.pre_action(cr, uid, [new_id], model, context=context)
return new_id
return make_call_old
def new_write(self, old_write, model, context=None):
if not context:
context = {}
def make_call_old(cr, uid, ids, vals, context=context):
if isinstance(ids, (str, int, long)):
ids = [ids]
if not context.get('action'):
self.pre_action(cr, uid, ids, model, context=context)
return old_write(cr, uid, ids, vals, context=context)
return make_call_old
def create(self, cr, uid, vals, context=None):
if not context:
context = {}
res_id = super(base_action_rule, self).create(cr, uid, vals, context)
model_pool = self.pool.get('ir.model')
model = model_pool.browse(cr, uid, vals.get('name'), context=context).model
obj_pool = self.pool.get(model)
obj_pool.__setattr__('old_create', obj_pool.create)
obj_pool.__setattr__('old_write', obj_pool.write)
obj_pool.__setattr__('create', self.new_create(obj_pool.create, model, context=context))
obj_pool.__setattr__('write', self.new_write(obj_pool.write, model, context=context))
return res_id
def write(self, cr, uid, ids, vals, context=None):
res = super(base_action_rule, self).write(cr, uid, ids, vals, context)
model_pool = self.pool.get('ir.model')
if not context:
context = {}
for rule in self.browse(cr, uid, ids, context=context):
model = model_pool.browse(cr, uid, rule.name.id, context=context).model
obj_pool = self.pool.get(model)
obj_pool.__setattr__('old_create', obj_pool.create)
obj_pool.__setattr__('old_write', obj_pool.write)
obj_pool.__setattr__('create', self.new_create(obj_pool.create, model, context=context))
obj_pool.__setattr__('write', self.new_write(obj_pool.write, model, context=context))
return res
def _check(self, cr, uid, automatic=False, use_new_cursor=False, \
context=None):
rule_pool= self.pool.get('base.action.rule')
rule_ids = rule_pool.search(cr, uid, [], context=context)
return rule_pool.write(cr, uid, rule_ids, {}, context=context)
def format_body(self, body):
""" Foramat Action rule's body
@param self: The object pointer """
@@ -305,7 +235,6 @@ the rule to mark CC(mail to any other person defined in actions)."),
context.update({'active_id':obj.id, 'active_ids':[obj.id]})
self.pool.get('ir.actions.server').run(cr, uid, [action.server_action_id.id], context)
write = {}
if hasattr(obj, 'user_id') and action.act_user_id:
obj.user_id = action.act_user_id
write['user_id'] = action.act_user_id.id
@@ -350,10 +279,12 @@ the rule to mark CC(mail to any other person defined in actions)."),
@param ids: List of Basic Action Rule’s IDs,
@param objects: pass objects
@param context: A standard dictionary for contextual values """
context.update({'action': True})
if not scrit:
scrit = []
for action in self.browse(cr, uid, ids):
cr.execute("select id from base_action_rule order by sequence")
rule_ids = map(lambda x: x[0], cr.fetchall())
for action in self.browse(cr, uid, rule_ids):
level = action.max_level
if not level:
break
@@ -402,7 +333,6 @@ the rule to mark CC(mail to any other person defined in actions)."),
self.do_action(cr, uid, action, model_obj, obj, context)
break
level -= 1
context.update({'action': False})
return True
def _check_mail(self, cr, uid, ids, context=None):
@@ -429,28 +359,4 @@ the rule to mark CC(mail to any other person defined in actions)."),
base_action_rule()
class ir_cron(osv.osv):
_inherit = 'ir.cron'
def _poolJobs(self, db_name, check=False):
try:
db, pool = pooler.get_db_and_pool(db_name)
except:
return False
cr = db.cursor()
try:
next = datetime.now().strftime('%Y-%m-%d %H:00:00')
# Putting nextcall always less than current time in order to call it every time
cr.execute('UPDATE ir_cron set nextcall = \'%s\' where numbercall<>0 and active and model=\'base.action.rule\' ' % (next))
cr.commit()
res = super(ir_cron, self)._poolJobs(db_name, check=check)
finally:
cr.commit()
cr.close()
ir_cron()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,21 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!-- Scheduler for action rule-->
<record forcecreate="True" id="ir_cron_scheduler_action_rule"
model="ir.cron">
<field name="name">Run check action rule</field>
<field eval="True" name="active" />
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field eval="True" name="doall" />
<field eval="'base.action.rule'" name="model" />
<field eval="'_check'" name="function" />
<field eval="'(False,)'" name="args" />
</record>
</data>
</openerp>
+6 -3
View File
@@ -410,7 +410,10 @@ property or property parameter."),
event.add('location').value = event_obj.location
if event_obj.rrule:
event.add('rrule').value = event_obj.rrule
if event_obj.user_id:
event_org = event.add('organizer')
event_org.params['CN'] = [event_obj.user_id.name]
event_org.value = 'MAILTO:' + (event_obj.user_id.user_email or event_obj.user_id.name)
if event_obj.alarm_id:
# computes alarm data
valarm = event.add('valarm')
@@ -440,7 +443,7 @@ property or property parameter."),
attendee_add.params['CUTYPE'] = [str(attendee.cutype)]
attendee_add.params['ROLE'] = [str(attendee.role)]
attendee_add.params['RSVP'] = [str(attendee.rsvp)]
attendee_add.value = 'MAILTO:' + attendee.email
attendee_add.value = 'MAILTO:' + (attendee.email or '')
res = cal.serialize()
return res
@@ -480,8 +483,8 @@ property or property parameter."),
'company': company
}
body = html_invitation % body_vals
attach = self.get_ics_file(cr, uid, res_obj, context=context)
if mail_to and email_from:
attach = self.get_ics_file(cr, uid, res_obj, context=context)
tools.email_send(
email_from,
mail_to,
+20 -20
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-16 11:35+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2010-05-28 02:39+0000\n"
"Last-Translator: Abdul Munif Hanafi <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:05+0000\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_setup
@@ -21,7 +21,7 @@ msgstr ""
#: wizard_field:base_setup.base_setup,init,city:0
#: wizard_field:base_setup.base_setup,update,city:0
msgid "City"
msgstr ""
msgstr "Kota"
#. module: base_setup
#: wizard_view:base_setup.base_setup,finish:0
@@ -35,12 +35,12 @@ msgstr ""
#: wizard_field:base_setup.base_setup,init,zip:0
#: wizard_field:base_setup.base_setup,update,zip:0
msgid "Zip code"
msgstr ""
msgstr "Kode pos"
#. module: base_setup
#: wizard_view:base_setup.base_setup,init:0
msgid "Select a Profile"
msgstr ""
msgstr "Pilih sebuah profil"
#. module: base_setup
#: wizard_view:base_setup.base_setup,company:0
@@ -70,14 +70,14 @@ msgstr ""
#: wizard_button:base_setup.base_setup,company,update:0
#: wizard_button:base_setup.base_setup,init,company:0
msgid "Next"
msgstr ""
msgstr "Berikutnya"
#. module: base_setup
#: wizard_field:base_setup.base_setup,company,email:0
#: wizard_field:base_setup.base_setup,init,email:0
#: wizard_field:base_setup.base_setup,update,email:0
msgid "E-mail"
msgstr ""
msgstr "E-mail"
#. module: base_setup
#: wizard_field:base_setup.base_setup,company,state_id:0
@@ -96,7 +96,7 @@ msgstr ""
#: wizard_field:base_setup.base_setup,init,profile:0
#: wizard_field:base_setup.base_setup,update,profile:0
msgid "Profile"
msgstr ""
msgstr "Profil"
#. module: base_setup
#: wizard_field:base_setup.base_setup,company,rml_footer1:0
@@ -115,7 +115,7 @@ msgstr ""
#. module: base_setup
#: wizard_view:base_setup.base_setup,company:0
msgid "General Information"
msgstr ""
msgstr "Informasi Umum"
#. module: base_setup
#: wizard_field:base_setup.base_setup,company,street2:0
@@ -134,7 +134,7 @@ msgstr ""
#: wizard_field:base_setup.base_setup,init,phone:0
#: wizard_field:base_setup.base_setup,update,phone:0
msgid "Phone"
msgstr ""
msgstr "Telepon"
#. module: base_setup
#: wizard_view:base_setup.base_setup,company:0
@@ -146,7 +146,7 @@ msgstr ""
#: wizard_field:base_setup.base_setup,init,name:0
#: wizard_field:base_setup.base_setup,update,name:0
msgid "Company Name"
msgstr ""
msgstr "Nama Perusahaan"
#. module: base_setup
#: help:base_setup.base_setup,company,rml_footer2:0
@@ -163,7 +163,7 @@ msgstr ""
#: wizard_field:base_setup.base_setup,init,country_id:0
#: wizard_field:base_setup.base_setup,update,country_id:0
msgid "Country"
msgstr ""
msgstr "Negara"
#. module: base_setup
#: wizard_view:base_setup.base_setup,company:0
@@ -173,7 +173,7 @@ msgstr ""
#: model:ir.actions.wizard,name:base_setup.action_wizard_setup
#: model:ir.actions.wizard,name:base_setup.wizard_base_setup
msgid "Setup"
msgstr ""
msgstr "Atur"
#. module: base_setup
#: help:base_setup.base_setup,company,rml_footer1:0
@@ -193,12 +193,12 @@ msgstr ""
#. module: base_setup
#: wizard_button:base_setup.base_setup,update,finish:0
msgid "Install"
msgstr ""
msgstr "Pasang"
#. module: base_setup
#: wizard_view:base_setup.base_setup,finish:0
msgid "Installation Done"
msgstr ""
msgstr "Pemasangan Selesai"
#. module: base_setup
#: help:base_setup.base_setup,company,rml_header1:0
@@ -234,7 +234,7 @@ msgstr ""
#: wizard_field:base_setup.base_setup,init,street:0
#: wizard_field:base_setup.base_setup,update,street:0
msgid "Street"
msgstr ""
msgstr "Jalan"
#. module: base_setup
#: wizard_button:base_setup.base_setup,finish,menu:0
@@ -244,14 +244,14 @@ msgstr ""
#. module: base_setup
#: wizard_button:base_setup.base_setup,init,menu:0
msgid "Cancel"
msgstr ""
msgstr "Batal"
#. module: base_setup
#: wizard_field:base_setup.base_setup,company,logo:0
#: wizard_field:base_setup.base_setup,init,logo:0
#: wizard_field:base_setup.base_setup,update,logo:0
msgid "Logo"
msgstr ""
msgstr "Lambang"
#. module: base_setup
#: model:ir.module.module,shortdesc:base_setup.module_meta_information
@@ -262,4 +262,4 @@ msgstr ""
#: wizard_button:base_setup.base_setup,company,init:0
#: wizard_button:base_setup.base_setup,update,company:0
msgid "Previous"
msgstr ""
msgstr "Sebelumnya"
+2 -3
View File
@@ -48,8 +48,7 @@
string="Convert"
help="Convert to Opportunity"
icon="gtk-index"
type="object"
attrs="{'invisible':[('opportunity_id','!=',False)]}"/>
type="object"/>
<newline />
<field name="section_id" colspan="1"
widget="selection" />
@@ -172,7 +171,7 @@
<button colspan="4"
string="Reply to Last Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead'}"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
</form>
<tree string="Communication history">
+1 -1
View File
@@ -155,7 +155,7 @@
<button colspan="4"
string="Reply to Last Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead'}"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
</form>
<tree string="Communication history">
+31 -65
View File
@@ -9,7 +9,7 @@
<field name="model">crm.lead.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Leads">
<tree string="Leads Analysis">
<field name="name" invisible="1"/>
<field name="month" invisible="1"/>
<field name="section_id" invisible="1"/>
@@ -34,7 +34,7 @@
<field name="model">crm.lead.report</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Cases">
<form string="Leads Analysis">
<field name="name" select="1"/>
<field name="month" select="1"/>
<field name="user_id" select="1"/>
@@ -54,7 +54,7 @@
<field name="model">crm.lead.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph orientation="horizontal" string="Leads" type="bar">
<graph orientation="horizontal" string="Leads Analysis" type="bar">
<field name="state"/>
<field name="nbr" operator="+"/>
<field group="True" name="user_id"/>
@@ -69,103 +69,69 @@
<field name="model">crm.lead.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search">
<group col="16" colspan="8">
<!-- <filter string="This Year" name="This Year" icon="terp-hr"
domain="[('name','=',time.localtime()[0])]"/>-->
<filter string="This Year" icon="terp-hr"
<search string="Leads Analysis">
<group col="16" colspan="8">
<filter string="Last 365 Days" icon="gtk-media-rewind"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"/>
<!-- <filter string="This Month" name="This Year" icon="terp-hr"
domain="[('month','=',time.strftime('%%m'))]" />-->
<filter string="This Month" icon="terp-hr" name="This Month"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"/>
<filter icon="gtk-media-rewind" string="7 Days" separator="1"
<filter string="Last 30 Days" icon="gtk-media-rewind" name="This Month"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"/>
<filter icon="gtk-media-rewind" string="7 Days" separator="1"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"/>
<separator orientation="vertical" />
<filter icon="terp-hr"
<filter icon="terp-crm"
string="Draft"
domain="[('state','=','draft')]"/>
<filter icon="terp-hr"
<filter icon="terp-crm"
string="Open"
domain="[('state','=','open')]"/>
<filter icon="terp-hr"
<filter icon="terp-crm"
string="Pending"
domain="[('state','=','pending')]"/>
<separator orientation="vertical" />
<field name="section_id"
default="context.get('section_id', False)"
widget="selection"
context="{'invisible_section': False}">
<filter icon="terp-crm"
context="{'invisible_section': False}"
domain="[('section_id.user_id','=',uid)]"
help="My section" />
<filter icon="terp-crm"
context="{'invisible_section': False}"
domain="[('section_id.user_id','=',uid)]"
help="My section" />
</field>
<field name="company_id" widget="selection" groups="base.group_multi_company">
<filter icon="terp-crm"
context="{'invisible_section': False}"
domain="[('section_id.user_id.company_id','=',uid)]"
help="My company"/>
</field>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-crm" string="My Case" help="My Case" domain="[('user_id','=',uid)]" />
</field>
</group>
<newline/>
<group expand="1" string="Group By...">
<filter string="User" name="User" icon="terp-sale"
<filter string="User" name="User" icon="terp-crm"
domain="[]" context="{'group_by':'user_id'}" />
<filter string="Company" icon="terp-sale"
<filter string="Company" icon="terp-crm"
domain="[]"
context="{'group_by':'company_id'}" />
<filter string="Section" icon="terp-sale"
<filter string="Section" icon="terp-crm"
domain="[]"
context="{'group_by':'section_id'}" />
<separator orientation="vertical" />
<filter string="State" icon="terp-sale"
<filter string="State" icon="terp-crm"
domain="[]" context="{'group_by':'state'}" />
<filter string="Stage" icon="terp-sale" domain="[]"
<filter string="Stage" icon="terp-crm" domain="[]"
context="{'group_by':'stage_id'}" />
<filter string="Category" icon="terp-sale"
<filter string="Category" icon="terp-crm"
domain="[]" context="{'group_by':'categ_id'}" />
<separator orientation="vertical" />
<filter string="Day" icon="terp-sale"
<filter string="Day" icon="terp-crm"
domain="[]" context="{'group_by':'day'}"/>
<filter string="Month" icon="terp-sale"
<filter string="Month" icon="terp-crm"
domain="[]" context="{'group_by':'month'}" />
<filter string="Year" icon="terp-sale"
<filter string="Year" icon="terp-crm"
domain="[]" context="{'group_by':'name'}" />
</group>
<newline/>
<group expand="0" string="Extended options..." groups="base.group_extended">
<filter icon="terp-sale"
string="Done"
domain="[('state','=','done')]"/>
<filter icon="terp-sale"
string="Cancel"
domain="[('state','=','cancel')]"/>
<group>
<separator orientation="vertical"/>
<field name="stage_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
</group>
<field name="state"/>
<field name="stage_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
</search>
</field>
@@ -199,7 +165,7 @@
<!-- Leads by user and section Action -->
<record id="action_report_crm_lead" model="ir.actions.act_window">
<field name="name">Leads</field>
<field name="name">Leads Analysis</field>
<field name="res_model">crm.lead.report</field>
<field name="view_type">form</field>
<field name="context">{"search_default_User":1,"search_default_This Month":1,'group_by_no_leaf':1,'group_by':[]}</field>
@@ -246,7 +212,7 @@
<field name="act_window_id" ref="action_report_crm_opportunity"/>
</record>
<menuitem name="Leads" id="menu_report_crm_leads_tree"
<menuitem name="Leads Analysis" id="menu_report_crm_leads_tree"
groups="base.group_extended"
parent="base.next_id_64" action="action_report_crm_lead" />
@@ -206,7 +206,7 @@
<button colspan="4"
string="Reply to Last Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead'}"
context="{'mail':'reply', 'model': 'crm.fundraising'}"
icon="gtk-undo" type="action" />
</form>
<tree string="Communication history">
+1 -1
View File
@@ -146,7 +146,7 @@
<button colspan="4"
string="Reply to Last Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead'}"
context="{'mail':'reply', 'model': 'crm.helpdesk'}"
icon="gtk-undo" type="action" />
</form>
<tree string="Communication history">
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-04 22:45+0000\n"
"Last-Translator: Paulino <Unknown>\n"
"PO-Revision-Date: 2010-05-28 02:23+0000\n"
"Last-Translator: cmsa <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:17+0000\n"
"X-Launchpad-Export-Date: 2010-05-28 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: crm_profiling
@@ -86,7 +86,7 @@ msgstr "Nome do questionário"
#. module: crm_profiling
#: view:res.partner:0
msgid "Use a questionnaire"
msgstr "Usar um que questionário"
msgstr "Usar um questionário"
#. module: crm_profiling
#: constraint:ir.ui.view:0
+8 -5
View File
@@ -75,7 +75,7 @@ class document_file(osv.osv):
'user_id': fields.many2one('res.users', 'Owner', select=1),
'group_ids': fields.many2many('res.groups', 'document_group_rel', 'item_id', 'group_id', 'Groups'),
# the directory id now is mandatory. It can still be computed automatically.
'parent_id': fields.many2one('document.directory', 'Directory', select=1, required=True),
'parent_id': fields.many2one('document.directory', 'Directory', select=1),
'file_size': fields.integer('File Size', required=True),
'file_type': fields.char('Content Type', size=128),
# If ir.attachment contained any data before document is installed, preserve
@@ -88,11 +88,16 @@ class document_file(osv.osv):
'create_uid': fields.many2one('res.users', 'Creator', readonly=True),
'store_method': fields.selection([('db', 'Database'), ('fs', 'Filesystem'), ('link', 'Link')], "Storing Method"),
'datas': fields.function(_data_get, method=True, fnct_inv=_data_set, string='File Content', type="binary", nodrop=True),
'url': fields.char('File URL',size=64),
'store_fname': fields.char('Stored Filename', size=200),
'res_model': fields.char('Attached Model', size=64), #res_model
'res_id': fields.integer('Attached ID'), #res_id
'partner_id':fields.many2one('res.partner', 'Partner', select=1),
'title': fields.char('Resource Title', size=64),
'type':fields.selection([
('url','URL'),
('binary','Binary'),
],'Type', help="Type is used to separate URL and binary File"),
}
def __get_def_directory(self, cr, uid, context=None):
@@ -103,6 +108,7 @@ class document_file(osv.osv):
'user_id': lambda self, cr, uid, ctx:uid,
'file_size': lambda self, cr, uid, ctx:0,
'store_method': lambda *args: 'db',
'type': 'binary',
'parent_id': __get_def_directory
}
_sql_constraints = [
@@ -155,7 +161,6 @@ class document_file(osv.osv):
def create(self, cr, uid, vals, context=None):
if not context:
context = {}
vals['title'] = vals['name']
vals['parent_id'] = context.get('parent_id', False) or vals.get('parent_id', False)
if not vals['parent_id']:
vals['parent_id'] = self.pool.get('document.directory')._get_root_directory(cr,uid, context)
@@ -168,8 +173,6 @@ class document_file(osv.osv):
result = obj_model.read(cr, uid, [vals['res_id']], ['name', 'partner_id', 'address_id'], context=context)
if len(result):
obj = result[0]
if obj.get('name', False):
vals['title'] = (obj.get('name', ''))[:60]
if obj_model._name == 'res.partner':
vals['partner_id'] = obj['id']
elif obj.get('address_id', False):
+58 -33
View File
@@ -118,7 +118,7 @@
<record model="ir.ui.view" id="view_document_directory_tree">
<field name="name">document.directory</field>
<field name="model">document.directory</field>
<field name="type">tree</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Directories" toolbar="1">
<field name="name"/>
@@ -179,71 +179,96 @@
<form string="Documents">
<group colspan="4" col="6">
<field name="name" select="1" />
<field name="title" select="1"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="parent_id"/>
<field name="type"/>
<field name="parent_id"/>
</group>
<notebook colspan="4">
<page string="Attachment">
<group col="2" colspan="2">
<separator string="Data" colspan="2"/>
<group col="2" colspan="2" attrs="{'invisible':[('type','=','url')]}">
<field name="datas" filename="datas_fname"/>
<field name="datas_fname" select="1"/>
</group>
<group col="2" colspan="2">
<separator string="Attached To" colspan="2"/>
<field name="res_model" readonly="1"/>
<field name="res_id" readonly="1"/>
</group>
<separator string="Preview" colspan="4"/>
<field
name="preview"
widget="image"
readonly="1"
nolabel="1"
colspan="4"
img_height="400"
img_width="800"/>
</group>
<group col="2" colspan="2" attrs="{'invisible':[('type','=','binary')]}">
<field name="url" widget="url"/>
</group>
</page><page string="Indexed Content">
<field name="index_content" nolabel="1" colspan="4" select="1"/>
</page><page string="Security">
<field name="group_ids" colspan="4" nolabel="1"/>
</page><page string="Others Info">
<group colspan="4" col="4">
<separator string="File Information" colspan="4"/>
<field name="file_size" readonly="1"/>
<newline/>
</group>
<group col="2" colspan="2">
<separator string="Relation" colspan="2"/>
<field name="res_name" readonly="1"/>
<field name="partner_id"/>
<field name="user_id"/>
</group>
<group col="4" colspan="4">
<separator string="History" colspan="4"/>
<group col="4" colspan="4">
<field name="create_uid"/>
<field name="create_date"/>
</group>
<group col="4" colspan="4">
<field name="write_uid"/>
<field name="write_date"/>
</group>
</group>
</page><page string="Notes">
</page>
<page string="Security">
<field name="group_ids" colspan="4" nolabel="1"/>
</page>
<page string="Notes">
<field colspan="4" name="description" nolabel="1"/>
</page>
</notebook>
</form>
</field>
</record>
<record id="view_attach_filter" model="ir.ui.view">
<field name="name">IR Attachment</field>
<field name="model">ir.attachment</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="IR Attachment">
<filter icon="gtk-media-rewind" string="Recent"
help="less 1 month modified/created attachments"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')),('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
/>
<separator orientation="vertical"/>
<field name="user_id" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=', False)]"
help="Filter on my Attachment" />
</field>
<field name="partner_id" widget="selection"/>
<newline/>
<group expand="1" string="Group By...">
<filter string="Partner" icon="terp-partner" domain="[]"
context="{'group_by':'partner_id'}" />
<filter string="Directory" icon="gtk-open" domain="[]" context="{'group_by':'parent_id'}"/>
</group>
</search>
</field>
</record>
<record model="ir.ui.view" id="view_document_file_tree">
<field name="name">ir.attachment</field>
<field name="model">ir.attachment</field>
<field name="type">tree</field>
<field name="priority" eval="1"/>
<field name="arch" type="xml">
<tree string="Documents">
<tree colors="blue:type in ('url')" string="Documents">
<field name="name"/>
<field name="title" />
<field name="partner_id"/>
<field name="type"/>
<field name="datas_fname"/>
<field name="user_id"/>
<field name="create_date"/>
<field name="write_date"/>
</tree>
</field>
</record>
@@ -44,7 +44,6 @@ class report_document_user(osv.osv):
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
'user_id':fields.integer('Owner', readonly=True),
'user':fields.char('User',size=64,readonly=True),
'file_title': fields.char('File Name',size=64,readonly=True),
'directory': fields.char('Directory',size=64,readonly=True),
'create_date': fields.datetime('Date Created', readonly=True),
'change_date': fields.datetime('Modified Date', readonly=True),
@@ -66,7 +65,6 @@ class report_document_user(osv.osv):
d.name as directory,
f.create_date as create_date,
f.file_size as file_size,
min(f.title) as file_title,
min(d.type) as type,
f.write_date as change_date
from ir_attachment f
@@ -83,7 +81,6 @@ class report_files_partner(osv.osv):
_auto = False
_columns = {
'name': fields.char('Year',size=64,required=False, readonly=True),
'file_title': fields.char('File Name',size=64,readonly=True),
'directory': fields.char('Directory',size=64,readonly=True),
'create_date': fields.datetime('Date Created', readonly=True),
'change_date': fields.datetime('Modified Date', readonly=True),
@@ -101,7 +98,6 @@ class report_files_partner(osv.osv):
select min(f.id) as id,count(*) as nbr,
to_char(f.create_date,'YYYY') as name,
min(to_char(f.create_date,'MM')) as month,
min(f.title) as file_title,
p.name as partner
from ir_attachment f
inner join res_partner p
@@ -145,7 +141,6 @@ class report_document_wall(osv.osv):
'user_id':fields.many2one('res.users', 'Owner',readonly=True),
'user':fields.char('User',size=64,readonly=True),
'month': fields.char('Month', size=24,readonly=True),
'file_name':fields.char('Last Posted File Name',size=64,readonly=True),
'last':fields.datetime('Last Posted Time', readonly=True),
}
@@ -153,7 +148,6 @@ class report_document_wall(osv.osv):
cr.execute("""
create or replace view report_document_wall as (
select max(f.id) as id,
min(title) as file_name,
to_char(min(f.create_date),'YYYY-MM-DD HH24:MI:SS') as last,
f.user_id as user_id, f.user_id as user,
to_char(f.create_date,'Month') as month
@@ -8,7 +8,6 @@
<field name="arch" type="xml">
<form string="Files">
<field name="name" select="1"/>
<field name="file_title" select="1"/>
<field name="user" select="1"/>
<field name="directory" select="1"/>
<field name="file_size"/>
@@ -26,7 +25,6 @@
<tree string="Files">
<field name="name" select="1"/>
<field name="month" select="1"/>
<field name="file_title"/>
<field name="user" select="1"/>
<field name="directory" select="1"/>
<field name="file_size"/>
@@ -48,7 +46,6 @@
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="month" select="1"/>
<field name="file_title" select="1"/>
<field name="user" select="1"/>
<field name="directory" select="1"/>
</group>
@@ -79,13 +76,11 @@
<form string="Wall of Shame">
<field name="user_id" select="1"/>
<field name="month" select="1"/>
<field name="file_name" select="1"/>
<field name="last"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_document_wall_tree">
<field name="name">report.document.wall.tree</field>
<field name="model">report.document.wall</field>
@@ -94,7 +89,6 @@
<tree string="Wall of Shame">
<field name="user_id" select="1"/>
<field name="month" select="1"/>
<field name="file_name"/>
<field name="last"/>
</tree>
</field>
@@ -558,8 +558,7 @@ class abstracted_fs:
if dst_obj2:
ressource_type_id = pool.get('ir.model').search(cr, uid, [('model','=',dst_obj2._name)])[0]
ressource_id = dst_obj2.id
title = dst_obj2.name
ressource_id = dst_obj2.id
ressource_model = dst_obj2._name
if dst_obj2._name == 'res.partner':
partner_id = dst_obj2.id
@@ -569,8 +568,7 @@ class abstracted_fs:
ressource_type_id = False
ressource_id = False
ressource_model = False
partner_id = False
title = False
partner_id = False
pool.get('document.directory').write(cr, uid, result['directory'], {
'name' : dst_basename,
'ressource_id': ressource_id,
@@ -579,8 +577,7 @@ class abstracted_fs:
})
val = {
'res_id': ressource_id,
'res_model': ressource_model,
'title': title,
'res_model': ressource_model,
'partner_id': partner_id
}
pool.get('ir.attachment').write(cr, uid, result['attachment'], val)
@@ -603,7 +600,6 @@ class abstracted_fs:
'res_model': False,
'name': dst_basename,
'datas_fname': dst_basename,
'title': dst_basename,
}
if (dst_obj and (dst_obj.type in ('directory','ressource'))) or not dst_obj2:
@@ -613,8 +609,7 @@ class abstracted_fs:
if dst_obj2:
val['res_model'] = dst_obj2._name
val['res_id'] = dst_obj2.id
val['title'] = dst_obj2.name
val['res_id'] = dst_obj2.id
if dst_obj2._name == 'res.partner':
val['partner_id'] = dst_obj2.id
else:
+1 -1
View File
@@ -239,7 +239,7 @@
<button colspan="4"
string="Reply to Last Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead'}"
context="{'mail':'reply', 'model': 'event.registration'}"
icon="gtk-undo" type="action" />
</form>
<tree string="Communication history">
@@ -42,33 +42,37 @@
<field name="arch" type="xml">
<search string="Evaluations">
<group>
<filter icon="terp-hr" string="This Year"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')),('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Tasks performed in this year"/>
<filter icon="terp-hr" string="This Month"
name="month"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Tasks performed in this month"/>
<filter icon="gtk-media-rewind" string="Last 365 Days"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')),('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Tasks performed in last 365 days"/>
<filter icon="gtk-media-rewind" string="Last 30 Days"
name="month"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Tasks performed in last 30 days"/>
<filter icon="gtk-media-rewind"
string=" 7 Days "
separator="1"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Tasks during last 7 days"/>
string=" 7 Days "
separator="1"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Tasks during last 7 days"/>
<separator orientation="vertical"/>
<filter string="Draft"
icon="terp-hr"
domain="[('state','=','draft')]"
help = "Draft Evaluations"/>
icon="terp-hr"
domain="[('state','=','draft')]"
help = "Draft Evaluations"/>
<filter string="Plan In Progress"
icon="terp-hr"
domain="[('state', '=' ,'wait')]"
help = "In progress Evaluations"/>
icon="terp-hr"
domain="[('state', '=' ,'wait')]"
help = "In progress Evaluations"/>
<filter string="Final Validation"
icon="terp-hr"
domain="[('state','=','progress')]"
help = "Final Validation Evaluations"/>
icon="terp-hr"
domain="[('state','=','progress')]"
help = "Final Validation Evaluations"/>
<filter icon="terp-hr"
string="Done"
domain="[('state','=','done')]"/>
<separator orientation="vertical"/>
<field name="employee_id" widget="selection"/>
<field name="plan_id" widget="selection"/>
</group>
<newline/>
<group expand="1" string="Group By...">
@@ -84,20 +88,11 @@
</group>
<newline/>
<group expand="0" string="Extended options..." groups="base.group_extended">
<filter icon="terp-hr"
string="Done"
domain="[('state','=','done')]"/>
<filter icon="terp-hr"
string="Cancelled"
domain="[('state','=','cancel')]"/>
<separator orientation="vertical"/>
<field name="rating"/>
<field name="plan_id" widget="selection"/>
<separator orientation="vertical"/>
<field name="deadline"/>
<newline/>
<field name="create_date"/>
<field name="closed"/>
<separator orientation="vertical"/>
<field name="state"/>
</group>
</search>
</field>
@@ -169,7 +169,7 @@
<button colspan="4"
string="Reply to Last Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead'}"
context="{'mail':'reply', 'model': 'hr.applicant'}"
icon="gtk-undo" type="action" />
</form>
<tree string="Communication history">
+1 -2
View File
@@ -176,8 +176,7 @@
id="act_res_partner_emails" name="Emails"
res_model="mailgate.message"
src_model="res.partner"
view_id="view_mailgate_message_tree"
groups="base.group_extended"
view_id="view_mailgate_message_tree"
/>
</data>
@@ -1,8 +1,8 @@
<?xml version="1.0"?>
<openerp>
<data>
<menuitem name="Direct Marketing" id="menu_marketing" parent="base.menu_base_partner"/>
<!--
<data>
<menuitem name="Direct Marketing" id="menu_marketing" parent="base.menu_base_partner"/>
<!--
======================
Marketing Campaign
======================
@@ -14,35 +14,35 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Campaign">
<group colspan="4">
<field name="name" select="1"/>
<field name="object_id" select="1"/>
<field name="mode"/>
<field name="fixed_cost"/>
<group colspan="4">
<field name="name" select="1"/>
<field name="object_id" select="1"/>
<field name="mode"/>
<field name="fixed_cost"/>
</group>
<field name="activity_ids" nolabel = "1" colspan="4" default_get="{'object_id':object_id}">
<form string="Activities">
<field name="name" select="1" />
<field name="object_id" readonly="True"/>
<field name="variable_cost" select="1"/>
<field name="start"/>
<field name="condition" colspan="4"/>
<newline/>
<field name="type" colspan="4"/>
<group colspan="4" attrs="{'invisible':[('type','!=','email')]}" >
<field name="email_template_id" attrs="{'required':[('type','=','email')]}" />
</group>
<group colspan="4" attrs="{'invisible':[('type','!=','paper')]}" >
<field name="report_id" attrs="{'required':[('type','=','paper')]}"/>
<field name="report_directory_id" attrs="{'required':[('type','=','paper')]}" />
</group>
<group colspan="4" attrs="{'invisible':[('type','!=','action')]}" >
<field name="server_action_id" attrs="{'required':[('type','=','action')]}" />
</group>
<group colspan="4" attrs="{'invisible':[('type','!=','subcampaign')]}" >
<field name="subcampaign_id" attrs="{'required':[('type','=','subcampaign')]}" />
<field name="subcampaign_segment_id" attrs="{'required':[('type','=','subcampaign')]}" />
</group>
<form string="Activities">
<field name="name" select="1" />
<field name="object_id" readonly="True"/>
<field name="variable_cost" select="1"/>
<field name="start"/>
<field name="condition" colspan="4"/>
<newline/>
<field name="type" colspan="4"/>
<group colspan="4" attrs="{'invisible':[('type','!=','email')]}" >
<field name="email_template_id" attrs="{'required':[('type','=','email')]}" />
</group>
<group colspan="4" attrs="{'invisible':[('type','!=','paper')]}" >
<field name="report_id" attrs="{'required':[('type','=','paper')]}"/>
<field name="report_directory_id" attrs="{'required':[('type','=','paper')]}" />
</group>
<group colspan="4" attrs="{'invisible':[('type','!=','action')]}" >
<field name="server_action_id" attrs="{'required':[('type','=','action')]}" />
</group>
<group colspan="4" attrs="{'invisible':[('type','!=','subcampaign')]}" >
<field name="subcampaign_id" attrs="{'required':[('type','=','subcampaign')]}" />
<field name="subcampaign_segment_id" attrs="{'required':[('type','=','subcampaign')]}" />
</group>
<field name="to_ids" nolabel="1" colspan="4" mode="tree" default_get="{'type_id':'activity_from_id','activity_id':active_id or False}">
<form string="Out Transitions" >
<field name="activity_from_id" readonly="True"/>
@@ -71,28 +71,28 @@
<field name="interval_type"/>
</tree>
</field>
</form>
<tree string="All Activities">
<field name="name" select="1"/>
<field name="object_id"/>
<field name="start"/>
<field name="condition"/>
<field name="variable_cost" select="1"/>
<field name="type"/>
<field name="report_id"/>
<field name="to_ids"/>
<field name="subcampaign_id"/>
<field name="subcampaign_segment_id"/>
</tree>
</field>
<separator string="Status" colspan="4" />
</form>
<tree string="Activities">
<field name="name" select="1"/>
<field name="object_id"/>
<field name="start"/>
<field name="condition"/>
<field name="variable_cost" select="1"/>
<field name="type"/>
<field name="report_id"/>
<field name="to_ids"/>
<field name="subcampaign_id"/>
<field name="subcampaign_segment_id"/>
</tree>
</field>
<separator string="Status" colspan="4" />
<group col="10" colspan="4">
<field name="state" readonly="1" select="2" nolabel="1"/>
<button name="state_running_set" string="Run" states="draft" icon="gtk-apply"/>
<button name="state_done_set" string="Done" states="running" icon="gtk-ok"/>
<button name="state_cancel_set" string="Cancelled" states="running" icon="gtk-cancel"/>
</group>
</form>
</form>
</field>
</record>
@@ -101,12 +101,12 @@
<field name="model">marketing.campaign</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="All Campaigns">
<field name="name" select="1"/>
<field name="object_id" select="1"/>
<field name="mode"/>
<field name="fixed_cost"/>
<field name="state"/>
<tree string="Campaigns">
<field name="name" select="1"/>
<field name="object_id" select="1"/>
<field name="mode"/>
<field name="fixed_cost"/>
<field name="state"/>
</tree>
</field>
</record>
@@ -116,20 +116,20 @@
<field name="model">marketing.campaign</field>
<field name="type">diagram</field>
<field name="arch" type="xml">
<diagram string="Campaign Editor">
<node object="marketing.campaign.activity" shape="rectangle:type=='subcampaign'" bgcolor="gray:start==True">
<field name="name"/>
<field name="type"/>
<field name="start" invisible="1"/>
<field name="condition"/>
</node>
<arrow object="marketing.campaign.transition" source="activity_from_id" destination="activity_to_id" label="['interval_type']">
<field name="activity_from_id"/>
<field name="activity_to_id"/>
<field name="interval_nbr"/>
<field name="interval_type"/>
</arrow>
</diagram>
<diagram string="Campaign Editor">
<node object="marketing.campaign.activity" shape="rectangle:type=='subcampaign'" bgcolor="gray:start==True">
<field name="name"/>
<field name="type"/>
<field name="start" invisible="1"/>
<field name="condition"/>
</node>
<arrow object="marketing.campaign.transition" source="activity_from_id" destination="activity_to_id" label="['interval_type']">
<field name="activity_from_id"/>
<field name="activity_to_id"/>
<field name="interval_nbr"/>
<field name="interval_type"/>
</arrow>
</diagram>
</field>
</record>
@@ -157,7 +157,7 @@
</record>
<record model="ir.actions.act_window" id="action_marketing_campaign_form">
<field name="name">All Campaigns</field>
<field name="name">Campaigns</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">marketing.campaign</field>
<field name="view_type">form</field>
@@ -169,8 +169,8 @@
</record>
<menuitem id="menu_marketing_campaign_form" parent="menu_marketing" action="action_marketing_campaign_form" sequence="10" />
<!--
<!--
======================
Marketing Segments
======================
@@ -182,20 +182,20 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Segments">
<group colspan="4">
<field name="name" select="1" colspan="4"/>
<newline/>
<field name="campaign_id" select="1"/>
<field name="object_id" select="1" readonly="True"/>
<newline/>
<field name="ir_filter_id" select="1"/>
<newline/>
<field name="date_run" attrs="{'readonly':[('date_run','!=',False),('state','=','running')]}"/>
<field name="date_done"/>
<separator string="Synchronization" colspan="4" />
<field name="sync_last_date"/>
<field name="sync_mode" required="True"/>
</group>
<group colspan="4">
<field name="name" select="1" colspan="4"/>
<newline/>
<field name="campaign_id" select="1"/>
<field name="object_id" select="1" readonly="True"/>
<newline/>
<field name="ir_filter_id" select="1"/>
<newline/>
<field name="date_run" attrs="{'readonly':[('date_run','!=',False),('state','=','running')]}"/>
<field name="date_done"/>
<separator string="Synchronization" colspan="4" />
<field name="sync_last_date"/>
<field name="sync_mode" required="True"/>
</group>
<separator string="Status" colspan="4" />
<group col="10" colspan="4">
<field name="state" readonly="1" select="2" nolabel="1"/>
@@ -212,7 +212,7 @@
<field name="model">marketing.campaign.segment</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="All Segments">
<tree string="Segments">
<field name="name" select="1"/>
<field name="campaign_id" select="1"/>
<field name="object_id" select="1" />
@@ -252,7 +252,7 @@
</record>
+
<record model="ir.actions.act_window" id="action_marketing_campaign_segment_form">
<field name="name">All Segments</field>
<field name="name">Segments</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">marketing.campaign.segment</field>
<field name="view_type">form</field>
@@ -263,8 +263,8 @@
</record>
<menuitem id="menu_marketing_campaign_segment_form" parent="menu_marketing" action="action_marketing_campaign_segment_form" sequence="20" />
<!--
<!--
======================
Marketing Activities
======================
@@ -333,23 +333,23 @@
<field name="model">marketing.campaign.activity</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="All Activities">
<field name="name" select="1"/>
<field name="campaign_id" select="1"/>
<field name="start"/>
<field name="object_id"/>
<field name="condition"/>
<field name="type"/>
<field name="report_id"/>
<field name="to_ids" />
<field name="subcampaign_id"/>
<field name="subcampaign_segment_id"/>
<tree string="Activities">
<field name="name" select="1"/>
<field name="campaign_id" select="1"/>
<field name="start"/>
<field name="object_id"/>
<field name="condition"/>
<field name="type"/>
<field name="report_id"/>
<field name="to_ids" />
<field name="subcampaign_id"/>
<field name="subcampaign_segment_id"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_marketing_campaign_activity_form">
<field name="name">All Activities</field>
<field name="name">Activities</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">marketing.campaign.activity</field>
<field name="view_type">form</field>
@@ -357,7 +357,7 @@
<field name="view_id" ref="view_marketing_campaign_activity_tree"/>
</record>
<!--menuitem id="menu_marketing_campaign_activity_form" parent="menu_marketing" action="action_marketing_campaign_activity_form" sequence="3" /-->
<!--menuitem id="menu_marketing_campaign_activity_form" parent="menu_marketing" action="action_marketing_campaign_activity_form" sequence="3" /-->
<!--
======================
@@ -370,7 +370,7 @@
<field name="model">marketing.campaign.workitem</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="All Workitems">
<tree string="Workitems">
<field name="segment_id"/>
<field name="activity_id" />
<field name="object_id"/>
@@ -427,7 +427,7 @@
</record>
<record model="ir.actions.act_window" id="action_marketing_campaign_workitem">
<field name="name">All Workitems</field>
<field name="name">Workitems</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">marketing.campaign.workitem</field>
<field name="view_type">form</field>
@@ -439,5 +439,5 @@
<menuitem id="menu_action_marketing_campaign_workitem" parent="menu_marketing" action="action_marketing_campaign_workitem" sequence="30" groups="base.group_extended"/>
</data>
</data>
</openerp>
+18 -8
View File
@@ -47,6 +47,8 @@ class project(osv.osv):
_inherits = {'account.analytic.account':"category_id"}
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
if context is None:
context = {}
if user == 1:
return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count)
if context and context.has_key('user_prefence') and context['user_prefence']:
@@ -133,6 +135,7 @@ class project(osv.osv):
'warn_header': fields.text('Mail Header', help="Header added at the beginning of the email for the warning message sent to the customer when a task is closed."),
'warn_footer': fields.text('Mail Footer', help="Footer added at the beginning of the email for the warning message sent to the customer when a task is closed."),
'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages'),
'project_escalation_id' : fields.many2one('project.project','Project Escalation', help='If any issue is escalated from the current Project, it will be listed under the project selected here.'),
}
_order = "sequence"
_defaults = {
@@ -147,11 +150,18 @@ class project(osv.osv):
if leave['date_start'] > leave['date']:
return False
return True
def _check_escalation(self, cr, uid, ids):
project_obj = self.browse(cr, uid, ids[0])
if project_obj.project_escalation_id:
if project_obj.project_escalation_id.id == project_obj.id:
return False
return True
_constraints = [
(_check_dates, 'Error! project start-date must be lower then project end-date.', ['date_start', 'date'])
(_check_dates, 'Error! project start-date must be lower then project end-date.', ['date_start', 'date']),
(_check_escalation, 'Error! You cannot assign escalation to the same project!', ['project_escalation_id'])
]
def set_template(self, cr, uid, ids, context={}):
res = self.setActive(cr, uid, ids, value=False, context=context)
return res
@@ -266,13 +276,11 @@ class task(osv.osv):
hours = dict(cr.fetchall())
for task in self.browse(cr, uid, ids, context=context):
res[task.id] = {'effective_hours': hours.get(task.id, 0.0), 'total_hours': task.remaining_hours + hours.get(task.id, 0.0)}
res[task.id]['progress'] = 0.0
if (task.remaining_hours + hours.get(task.id, 0.0)):
if task.state =='done':
res[task.id]['progress'] = 100.0
else:
if task.state != 'done':
res[task.id]['progress'] = round(min(100.0 * hours.get(task.id, 0.0) / res[task.id]['total_hours'], 99.99),2)
else:
res[task.id]['progress'] = 0.0
if task.state in ('done','cancel'):
res[task.id]['progress'] = 100.0
res[task.id]['delay_hours'] = res[task.id]['total_hours'] - task.planned_hours
@@ -559,6 +567,8 @@ class config_compute_remaining(osv.osv_memory):
}
def compute_hours(self, cr, uid, ids, context=None):
if context is None:
context = {}
task_obj = self.pool.get('project.task')
request = self.pool.get('res.request')
if 'active_id' in context:
+1
View File
@@ -36,6 +36,7 @@
<separator colspan="2" string="Miscelleanous"/>
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
<field name="warn_manager"/>
<field name="project_escalation_id"/>
</group>
<newline/>
@@ -55,10 +55,10 @@
<field name="arch" type="xml">
<search string="Tasks Analysis">
<group>
<filter icon="gtk-media-rewind" string="Last 365 Days"
<filter icon="gtk-media-rewind" string=" 365 Days "
domain="[('date_start','&lt;=', time.strftime('%%Y-%%m-%%d')),('date_start','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Tasks performed in last 365 Days"/>
<filter icon="gtk-media-rewind" string="Last 30 Days"
<filter icon="gtk-media-rewind" string=" 30 Days "
name="month"
domain="[('date_start','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date_start','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Tasks performed in last 30 days"/>
@@ -103,6 +103,7 @@
domain="[('project_id','=',context.get('project_id', False)]"/>
</field>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="10" col="11">
<filter string="User" name="User" icon="terp-project" context="{'group_by':'user_id'}" />
<filter string="Project" icon="terp-project" context="{'group_by':'project_id'}"/>
@@ -248,6 +249,6 @@
<field name="view_mode">graph,tree</field>
<field name="view_id" ref="view_task_by_days_vs_planned_hours_graph"/>
</record>
</data>
</openerp>
+2
View File
@@ -31,8 +31,10 @@
'author': 'Tiny',
'website': 'http://www.openerp.com',
'depends': [
'crm',
'project',
'hr_timesheet_sheet',
'project_long_term',
],
'init_xml': [
'project_issue_data.xml'
+30 -9
View File
@@ -112,17 +112,17 @@ class project_issue(osv.osv, crm.crm_case):
_columns = {
'thread_id': fields.many2one('mailgate.thread', 'Thread', required=False),
'id': fields.integer('ID'),
'name': fields.char('Name', size=128, required=True),
'active': fields.boolean('Active', required=False),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Update Date' , readonly=True),
'date_deadline': fields.date('Deadline'),
'date_closed': fields.datetime('Closed', readonly=True),
'name': fields.char('Name', size=128, required=True),
'active': fields.boolean('Active', required=False),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Update Date' , readonly=True),
'date_deadline': fields.date('Deadline'),
'date_closed': fields.datetime('Closed', readonly=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team', \
select=True, help='Sales team to which Case belongs to.\
Define Responsible user and Email account for mail gateway.'),
'user_id': fields.many2one('res.users', 'Responsible'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'user_id': fields.many2one('res.users', 'Responsible'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
domain="[('partner_id','=',partner_id)]"),
'company_id': fields.many2one('res.company', 'Company'),
@@ -164,6 +164,8 @@ class project_issue(osv.osv, crm.crm_case):
'day_close': fields.function(_compute_day, string='Days to Close', \
method=True, multi='day_close', type="float", store=True),
'assigned_to' : fields.many2one('res.users', 'Assigned to'),
'working_hours_open': fields.float('Working Hours to Open the Issue'),
'working_hours_close': fields.float('Working Hours to Close the Issue'),
}
def _get_project(self, cr, uid, context):
@@ -173,7 +175,7 @@ class project_issue(osv.osv, crm.crm_case):
return False
_defaults = {
'active': lambda *a: 1,
'active': lambda *a: 1,
'user_id': crm.crm_case._get_default_user,
'partner_id': crm.crm_case._get_default_partner,
'partner_address_id': crm.crm_case._get_default_partner_address,
@@ -262,6 +264,25 @@ class project_issue(osv.osv, crm.crm_case):
if not stage.on_change:
return {'value':{}}
return {'value':{}}
def case_escalate(self, cr, uid, ids, *args):
"""Escalates case to top level
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of case Ids
@param *args: Tuple Value for additional Params
"""
res = super(project_issue, self).case_escalate(cr, uid, ids, args)
cases = self.browse(cr, uid, ids)
for case in cases:
data = {}
if case.project_id.project_escalation_id:
data['project_id'] = case.project_id.project_escalation_id.id
else:
raise osv.except_osv(_('Warning !'), _('You cannot escalate this case.\nThe relevant Project has not configured the Escalation Project!'))
self.write(cr, uid, [case.id], data)
return res
project_issue()
+12 -11
View File
@@ -82,8 +82,10 @@
<separator string="Statistics" colspan="2" col="2"/>
<field name="day_open"/>
<field name="day_close"/>
</group>
<group col="2" colspan="2">
<field name="working_hours_open" widget="float_time"/>
<field name="working_hours_close" widget="float_time"/>
</group>
<group colspan="2" col="2">
<separator string="References" colspan="2"/>
<field name="id"/>
<field name="active"/>
@@ -124,7 +126,7 @@
<button colspan="4"
string="Reply to Last Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead'}"
context="{'mail':'reply', 'model': 'project.issue'}"
icon="gtk-undo" type="action" />
</form>
<tree string="Communication history">
@@ -150,6 +152,7 @@
<field name="arch" type="xml">
<tree string="Issue Tracker Tree" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
<field name="id"/>
<field name="create_date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="priority" string="Severity"/>
@@ -162,6 +165,7 @@
states="open,draft,pending,done,cancel" />
<field name="type_id" string="Version"/>
<field name="user_id"/>
<field name="assigned_to"/>
<field name="state"/>
<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"/>
@@ -179,21 +183,18 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Issue Tracker Search">
<group>
<group colspan="4" col="20">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's bugs"
help="Today's bugs"
/>
<filter icon="gtk-media-rewind"
string=" 7 Days " separator="1"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Bugs during last 7 days"
/>
</group>
<separator orientation="vertical"/>
<group>
<separator orientation="vertical"/>
<field name="name" select='1' string="Subject"/>
<field name="user_id" select="1" widget="selection"/>
<field name="state" select="1">
@@ -203,7 +204,7 @@
<field name="project_id" select="1" widget="selection" string="Project"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="16" groups="base.group_extended">
<group expand="1" string="Group By..." colspan="4" col="20" groups="base.group_extended">
<filter string="Stage" icon="terp-crm" domain="[]"
context="{'group_by':'stage_id'}" />
<filter string="Priority" icon="terp-crm" domain="[]"
@@ -278,7 +279,7 @@
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's features"
help="Today's features"
/>
<filter icon="gtk-media-rewind"
string=" 7 Days " separator="1"
+4 -4
View File
@@ -27,13 +27,13 @@
"depends" : ["project", "resource"],
"description": """
Long Term Project management module that track planning, scheduling, resources allocation.
Long Term Project management module that tracks planning, scheduling, resources allocation.
Mainly used with Big project management.
- Project Phases will be maintained by Manager of the project
- Compute Phase Scheduling: Compute start date and end date of the phases which are in draft,open and pending state of the project given.
If no project given then all the draft,open and pending states phases will be taken
- Compute Task Scheduling: This works same as the scheduler button on project.phase. It takes the project as arguement and computes all the open,draft and pending tasks
- Schedule Tasks: All the tasks which are in draft,pending and open states are scheduled with taking the phase's start date
If no project given then all the draft,open and pending state phases will be taken
- Compute Task Scheduling: This works same as the scheduler button on project.phase. It takes the project as argument and computes all the open,draft and pending tasks
- Schedule Tasks: All the tasks which are in draft,pending and open state are scheduled with taking the phase's start date
""",
"init_xml" : [],
@@ -33,7 +33,7 @@ class project_phase(osv.osv):
data_phase = self.browse(cr, uid, ids[0], context=context)
prev_ids = data_phase.previous_phase_ids
next_ids = data_phase.next_phase_ids
# it should nither be in prev_ids nor in next_ids
# it should neither be in prev_ids nor in next_ids
if (data_phase in prev_ids) or (data_phase in next_ids):
return False
ids = [id for id in prev_ids if id in next_ids]
@@ -234,7 +234,7 @@ class project_resource_allocation(osv.osv):
_columns = {
'resource_id': fields.many2one('resource.resource', 'Resource', required=True),
'phase_id': fields.many2one('project.phase', 'Project Phase', required=True),
'useability': fields.float('Useability', help="Useability of this ressource for this project phase in percentage (=50%)"),
'useability': fields.float('Usability', help="Usability of this resource for this project phase in percentage (=50%)"),
}
_defaults = {
'useability': 100,
+2 -2
View File
@@ -261,10 +261,10 @@ class purchase_order(osv.osv):
self.write(cr, uid, ids, {'state': 'approved', 'date_approve': time.strftime('%Y-%m-%d')})
return True
#TODO: implement messages system
def wkf_confirm_order(self, cr, uid, ids, context={}):
todo = []
for po in self.browse(cr, uid, ids):
self.pool.get('res.partner.event').create(cr, uid, {'name':'Purchase Order: '+po.name, 'partner_id':po.partner_id.id, 'date':time.strftime('%Y-%m-%d %H:%M:%S'), 'user_id':uid})
for po in self.browse(cr, uid, ids):
if not po.order_line:
raise osv.except_osv(_('Error !'),_('You can not confirm purchase order without Purchase Order Lines.'))
for line in po.order_line:
+1 -1
View File
@@ -66,7 +66,7 @@ class report_intrastat(osv.osv):
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
'supply_units':fields.float('Supply Units', readonly=True),
'ref':fields.char('Source document',size=64, readonly=True),
'code': fields.char('Country code', size="2", readonly=True),
'code': fields.char('Country code', size=2, readonly=True),
'intrastat_id': fields.many2one('report.intrastat.code', 'Intrastat code', readonly=True),
'weight': fields.float('Weight', readonly=True),
'value': fields.float('Value', readonly=True),
+9 -1
View File
@@ -36,7 +36,13 @@ class sale_report(osv.osv):
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'product_id':fields.many2one('product.product', 'Product', readonly=True),
<<<<<<< TREE
'uom_id': fields.many2one('product.uom', 'Default Unit Of Measure', readonly=True),
'product_qty':fields.float('# of Qty', readonly=True),
=======
'uom_name': fields.char('Default UoM', size=128, readonly=True),
'product_uom_qty':fields.float('# of Qty', readonly=True),
>>>>>>> MERGE-SOURCE
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
'shop_id':fields.many2one('sale.shop', 'Shop', readonly=True),
'company_id':fields.many2one('res.company', 'Company', readonly=True),
@@ -71,7 +77,8 @@ class sale_report(osv.osv):
to_char(s.date_order, 'MM') as month,
to_char(s.date_order, 'YYYY-MM-DD') as day,
l.product_id as product_id,
sum(l.product_uom_qty * u.factor) as product_qty,
u.name as uom_name,
sum(l.product_uom_qty * u.factor) as product_uom_qty,
s.partner_id as partner_id,
s.user_id as user_id,
s.shop_id as shop_id,
@@ -96,6 +103,7 @@ class sale_report(osv.osv):
l.product_uom,
s.user_id,
pt.categ_id,
u.name,
s.state,
s.shop_id,
s.company_id,
+10 -24
View File
@@ -19,7 +19,8 @@
<field name="product_id" invisible="1"/>
<field name="categ_id" invisible="1"/>
<field name="nbr" sum="# of Lines"/>
<field name="product_qty" sum="# of Qty"/>
<field name="product_uom_qty" sum="# of Qty"/>
<field name="uom_name" invisible="not context.get('set_visible',False)"/>
<field name="price_average" avg="Average Price"/>
<field name="price_total" sum="Total Price"/>
<field name="delay" avg="Days to Close"/>
@@ -50,10 +51,10 @@
<field name="arch" type="xml">
<search string="Sales Analysis">
<group>
<filter icon="gtk-media-rewind" string="Last 365 Days"
<filter icon="gtk-media-rewind" string=" 365 Days "
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')),('date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Tasks performed in last 365 days"/>
<filter icon="gtk-media-rewind" string="Last 30 Days"
<filter icon="gtk-media-rewind" string=" 30 Days "
name="month"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Tasks performed in last 30 days"/>
@@ -78,7 +79,6 @@
help="My Sales"
domain="[('user_id','=',uid)]"/>
</field>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="10" col="12">
@@ -86,7 +86,8 @@
<filter string="Shop" icon="terp-sale" context="{'group_by':'shop_id'}"/>
<filter string="Company" icon="terp-sale" groups="base.group_multi_company" context="{'group_by':'company_id'}"/>
<separator orientation="vertical"/>
<filter string="Product" icon="terp-sale" context="{'group_by':'product_id'}"/>
<filter string="Product" icon="terp-sale" context="{'group_by':'product_id','set_visible':True}"/>
<filter string="Default UoM" icon="terp-sale" context="{'group_by':'uom_name'}"/>
<filter string="Partner" icon="terp-sale" context="{'group_by':'partner_id'}"/>
<filter string="State" icon="terp-sale" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
@@ -99,28 +100,13 @@
<filter string="Year" icon="terp-sale" context="{'group_by':'year'}"/>
</group>
<newline/>
<group expand="0" string="Extended filters..." colspan="10" col="12" groups="base.group_extended">
<filter icon="terp-sale" string="Shipping Exception" domain="[('state','=','shipping_except')]"/>
<filter icon="terp-sale" string=" Invoice Exception " domain="[('state','=','invoice_except')]"/>
<group expand="0" string="Extended options..." groups="base.group_extended">
<field name="date"/>
<separator orientation="vertical"/>
<field name="shop_id" widget="selection"/>
<field name="payment_term" widget="selection"/>
<field name="fiscal_position" widget="selection"/>
<newline/>
<filter icon="terp-sale" string="Manual In Progress" domain="[('state','=','manual')]"/>
<filter icon="terp-sale" string="Done" domain="[('state','=','done')]"/>
<filter icon="terp-sale" string="Cancelled" domain="[('state','=','cancel')]"/>
<separator orientation="vertical"/>
<field name="partner_invoice_id"/>
<field name="partner_order_id"/>
<field name="partner_shipping_id"/>
<separator orientation="vertical"/>
<field name="pricelist_id" widget="selection"/>
<field name="analytic_account_id"/>
<newline/>
<field name="state"/>
<field name="categ_id" widget="selection"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="date"/>
<field name="date_confirm"/>
</group>
</search>
</field>
+2 -4
View File
@@ -18,10 +18,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import sale_journal
import sale_journal_inherit
import sale_journal_report
import sale_journal_picking_report
import report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+2 -3
View File
@@ -28,7 +28,7 @@
The sale journal modules allows you to categorise your
sales and deliveries (picking lists) between different journals.
This module is very helpful for bigger companies that
work by departments.
works by departments.
You can use journal for different purposes, some examples:
* isolate sales of different departments
@@ -54,8 +54,7 @@
'update_xml': [
'security/ir.model.access.csv',
'sale_journal_view.xml',
'picking_journal_view.xml',
'picking_journal_view_report.xml'
'report/sale_journal_report_view.xml',
],
'demo_xml': ['sale_journal_demo.xml'],
'installable': True,
+24
View File
@@ -0,0 +1,24 @@
# -*- 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 sale_journal_report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -0,0 +1,141 @@
# -*- 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/>.
#
##############################################################################
from osv import fields, osv
import tools
class sale_journal_report(osv.osv):
_name = "sale.journal.report"
_description = "Sales Orders by Journal"
_auto = False
_columns = {
'name': 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),
'state': fields.selection([
('draft', 'Quotation'),
('waiting_date', 'Waiting Schedule'),
('manual', 'Manual in progress'),
('progress', 'In progress'),
('shipping_except', 'Shipping Exception'),
('invoice_except', 'Invoice Exception'),
('done', 'Done'),
('cancel', 'Cancel')
], 'Order State', readonly=True),
'journal_id':fields.many2one('sale_journal.sale.journal', 'Journal', readonly=True),
'quantity': fields.float('Quantities', readonly=True),
'price_total': fields.float('Total Price', readonly=True),
'price_average': fields.float('Average Price', readonly=True),
'count': fields.integer('# of Lines', readonly=True),
}
_order = 'journal_id, name desc,price_total desc'
def init(self, cr):
tools.drop_view_if_exists(cr, 'sale_journal_report')
cr.execute("""
create or replace view sale_journal_report as (
select
min(l.id) as id,
to_char(s.date_order, 'YYYY') as name,
to_char(s.date_order,'MM') as month,
s.state,
s.journal_id,
sum(l.product_uom_qty) as quantity,
count(*),
sum(l.product_uom_qty*l.price_unit) as price_total,
(sum(l.product_uom_qty*l.price_unit)/sum(l.product_uom_qty))::decimal(16,2) as price_average
from sale_order s
right join sale_order_line l on (s.id=l.order_id)
group by s.journal_id , to_char(s.date_order, 'YYYY'),to_char(s.date_order, 'MM'), s.state
)
""")
sale_journal_report()
#==========================================
#picking report
#==========================================
class sale_journal_picking_report(osv.osv):
"""
Picking list by journal and by invoice
"""
_name = "sale.journal.picking.report"
_description = "Picking lists"
_auto = False
_columns = {
'name': 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),
'invoice_state':fields.selection([
("invoiced", "invoiced"),
("2binvoiced", "to be invoiced"),
("none", "None")
], "Invoice state", readonly=True),
'state': fields.selection([
('draft', 'draft'),
('auto', 'waiting'),
('confirmed', 'confirmed'),
('assigned', 'assigned'),
('done', 'done'),
('cancel', 'cancel'),
], 'State', readonly=True),
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoicing method', readonly=True),
'journal_id':fields.many2one('sale_journal.picking.journal', 'Journal', readonly=True),
'quantity': fields.float('Quantities', readonly=True),
'price_total': fields.float('Total Price', readonly=True),
'price_average': fields.float('Average Price', readonly=True),
'count': fields.integer('# of Lines', readonly=True),
}
_order = 'journal_id, name desc, price_total desc'
def init(self, cr):
tools.drop_view_if_exists(cr, 'sale_journal_picking_report')
cr.execute("""
create or replace view sale_journal_picking_report as (
select
min(l.id) as id,
to_char(s.date, 'YYYY') as name,
to_char(s.date, 'MM') as month,
s.state,
s.invoice_state,
s.invoice_type_id,
s.journal_id,
sum(l.product_qty) as quantity,
count(*) as count,
sum(l.product_qty*ol.price_unit*(1.0-ol.discount/100.0)) as price_total,
(sum(l.product_qty*ol.price_unit*(1.0-ol.discount/100.0))/sum(l.product_qty))::decimal(16,2) as price_average
from stock_picking s
right join stock_move l on (s.id=l.picking_id)
left join sale_order_line ol on (l.sale_line_id=ol.id)
group by s.journal_id, s.invoice_type_id, to_char(s.date, 'YYYY'),to_char(s.date, 'MM'),s.state, s.invoice_state
order by s.invoice_type_id, s.invoice_state, s.state
)
""")
sale_journal_picking_report()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -0,0 +1,187 @@
<openerp>
<data>
<!-- Sales by journal's view -->
<record model="ir.ui.view" id="view_sale_journal_report_tree">
<field name="name">sale.journal.report.tree</field>
<field name="model">sale.journal.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Sales by Journal">
<field name="name" invisible="1"/>
<field name="state" invisible="1"/>
<field name="journal_id" invisible="1"/>
<field name="quantity"/>
<field name="count"/>
<field name="price_average"/>
<field name="price_total"/>
</tree>
</field>
</record>
<!-- sales journal graph view -->
<record id="view_sale_journal_graph" model="ir.ui.view">
<field name="name">sale.journal.report.graph</field>
<field name="model">sale.journal.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Sales journal Statistics" type="bar">
<field name="journal_id"/>
<field name="price_total"/>
</graph>
</field>
</record>
<!-- sales by journal search view -->
<record model="ir.ui.view" id="view_sale_journal_report_search">
<field name="name">sale.journal.report.search</field>
<field name="model">sale.journal.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Sales by Journal">
<group col="8" colspan="4">
<filter icon="terp-sale" string="This Year" domain="[('name','!=','')]" help="Sale journal in this year"/>
<filter icon="terp-sale" string="This Month" domain="[('name','=',time.strftime('%%Y-%%m-01'))]" help="Sale journal in this month"/>
<separator orientation="vertical"/>
<filter icon="terp-sale"
string="Quotations"
domain="[('state','=','draft')]"/>
<filter icon="terp-sale"
string="Waiting Schedule"
domain="[('state','=','waiting_date')]"/>
<filter icon="terp-sale"
string="In progress"
domain="[('state','=','progress')]"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="state" select="1"/>
<field name="journal_id" widget="selection"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="4" col="12">
<filter string="journal" name="journal" icon="terp-sale" context="{'group_by':'journal_id'}"/>
<filter string="State" icon="terp-sale" context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<!-- Action of sales by journal view-->
<record model="ir.actions.act_window" id="action_sale_journal_report_open_menu_all">
<field name="name">Sales by Journal</field>
<field name="res_model">sale.journal.report</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="search_view_id" ref="view_sale_journal_report_search"/>
<field name="context">{'search_default_journal': 1,'group_by_no_leaf':1,'group_by':[]}</field>
</record>
<menuitem name="Sales by Journal" id="menu_sale_journal_report_open_all" parent="base.next_id_64" action="action_sale_journal_report_open_menu_all"/>
<!-- picking by journal and invoice's tree view-->
<record model="ir.ui.view" id="view_sale_journal_picking_report_tree">
<field name="name">sale.journal.picking.report.tree</field>
<field name="model">sale.journal.picking.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Picking Journal">
<field name="name" invisible="1"/>
<field name="month" invisible="1"/>
<field name="invoice_state" invisible="1"/>
<field name="state" invisible="1"/>
<field name="invoice_type_id" invisible="1"/>
<field name="journal_id" invisible="1"/>
<field name="quantity" />
<field name="count" />
<field name="price_average"/>
<field name="price_total"/>
</tree>
</field>
</record>
<!-- picking journal's graph view -->
<record id="view_sale_journal_picking_graph" model="ir.ui.view">
<field name="name">sale.journal.picking.report.graph</field>
<field name="model">sale.journal.picking.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Picking journal Statistics" type="bar">
<field name="journal_id"/>
<field name="invoice_type_id"/>
<field name="price_total"/>
</graph>
</field>
</record>
<!-- Picking journal search view -->
<record model="ir.ui.view" id="view_sale_journal_picking_report_search">
<field name="name">sale.journal.picking.report.search</field>
<field name="model">sale.journal.picking.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Picking journal">
<group col="8" colspan="4">
<filter icon="terp-sale" string="This Year" name="year" domain="[('name','=',time.strftime('%%Y'))]" help="Picking by invoice or by journal method in this year"/>
<filter icon="terp-sale" string="This Month" name="month" domain="[('month','=',time.strftime('%%m'))]" help="Picking by invoice or by journal method in this month"/>
<separator orientation="vertical"/>
<filter icon="terp-stock"
string="Draft"
domain="[('state','=','draft')]"/>
<filter icon="terp-stock"
string="Pending"
domain="[('state','=','waiting')]"/>
<filter icon="terp-stock"
string="Confirmed"
domain="[('state','=','confirmed')]"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="month" select="1"/>
<field name="invoice_state" select="1"/>
<field name="state" select="1"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="4" col="12">
<filter string="Journal" icon="terp-stock" context="{'group_by':'journal_id'}"/>
<filter string="Invoice" icon="terp-stock" context="{'group_by':'invoice_type_id'}"/>
<separator orientation="vertical"/>
<filter string="Invoice state" icon="terp-stock" context="{'group_by':'invoice_state'}"/>
<filter string="state" icon="terp-stock" context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_sale_journal_picking_report_open">
<field name="name">Statistics on picking to invoice</field>
<field name="res_model">sale.journal.picking.report</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('invoice_state','=','2binvoiced'),('invoice_type_id','=',active_id)]</field>
</record>
<!-- Action for picking journal view -->
<record model="ir.actions.act_window" id="action_sale_journal_picking_report_open_menu_all">
<field name="name">Picking Journal</field>
<field name="res_model">sale.journal.picking.report</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="search_view_id" ref="view_sale_journal_picking_report_search"/>
<field name="context">{'search_default_month':1, 'group_by_no_leaf':1,'group_by':[]}</field>
</record>
<menuitem name="Picking journal" id="menu_invoice_type_picking_stats_open_all" parent="stock.next_id_61" action="action_sale_journal_picking_report_open_menu_all"/>
</data>
</openerp>
+3 -3
View File
@@ -25,7 +25,7 @@ import time
class sale_journal_invoice_type(osv.osv):
_name = 'sale_journal.invoice.type'
_description = 'Invoice Type'
_description = 'Invoice Types'
_columns = {
'name': fields.char('Invoice Type', size=64, required=True),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the invoice type without removing it."),
@@ -53,7 +53,7 @@ class sale_journal(osv.osv):
('draft','Draft'),
('open','Open'),
('done','Done'),
], 'State', required=True),
], 'State', required=True, readonly=True),
'note': fields.text('Note'),
}
_defaults = {
@@ -103,7 +103,7 @@ class picking_journal(osv.osv):
('draft','Draft'),
('open','Open'),
('done','Done'),
], 'Creation date', required=True),
], 'Creation date', required=True, readonly=True),
'note': fields.text('Note'),
}
_defaults = {
+457 -373
View File
@@ -1,385 +1,469 @@
<openerp>
<data>
<record model="ir.ui.view" id="view_sale_journal_invoice_type_form">
<field name="name">sale_journal.invoice.type.form</field>
<field name="model">sale_journal.invoice.type</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Invoice Type">
<field name="name" select="1"/>
<field name="active" select="1"/>
<field name="invoicing_method" select="1"/>
<newline/>
<field name="note" colspan="4"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_sale_journal_invoice_type_tree">
<field name="name">sale_journal.invoice.type.tree</field>
<field name="model">sale_journal.invoice.type</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Invoice Type">
<field name="name"/>
<field name="invoicing_method"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_definition_journal_invoice_type">
<field name="res_model">sale_journal.invoice.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!-- <menuitem name="Invoicing Methods" id="menu_definition_journal_invoice_type" parent="sale.menu_shop_configuration" action="action_definition_journal_invoice_type"/>-->
<record model="ir.ui.view" id="view_sale_journal_form">
<field name="name">sale_journal.sale.journal.form</field>
<field name="model">sale_journal.sale.journal</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Sale Journal">
<notebook>
<page string="Journal">
<separator string="Journal Information" colspan="4"/>
<field name="name"/>
<field name="code"/>
<field name="user_id"/>
<field name="date"/>
<field name="date_created"/>
<field name="date_validation"/>
<separator string="States" colspan="4"/>
<field name="state"/>
<group col="3" colspan="2">
<button name="button_open" string="Open Journal" states="draft" type="object" icon="gtk-open"/>
<button name="button_close" string="Close Journal" states="open" type="object" icon="gtk-close"/>
<button name="button_draft" string="Set to Draft" states="close,open" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="Sales">
<button string="Confirm Sales" name="button_sale_confirm" states="draft,open" type="object" icon="gtk-execute"/>
<button string="Cancel Sales" name="button_sale_cancel" states="draft,open" type="object" icon="gtk-cancel"/>
<newline/>
<field name="sale_stats_ids" colspan="4" nolabel="1">
<tree string="Sales">
<field name="name"/>
<field name="quantity"/>
<field name="price_total"/>
<field name="price_average"/>
<field name="count"/>
<field name="state"/>
</tree>
</field>
</page><page string="Notes">
<field name="note" colspan="4" nolabel="1"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_sale_journal_tree">
<field name="name">sale_journal.sale.journal.tree</field>
<field name="model">sale_journal.sale.journal</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Sale Journal">
<field name="name"/>
<field name="code"/>
<field name="user_id"/>
<field name="date"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_sale_journal_search">
<field name="name">sale_journal.sale.journal.search</field>
<field name="model">sale_journal.sale.journal</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Sales by Journal">
<group col="8" colspan="4">
<filter icon="terp-sale" string="Open" domain="[('state','=','open')]" help="Open Sale Journals"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="code"/>
<field name="user_id"/>
<field name="date" />
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_definition_journal">
<field name="res_model">sale_journal.sale.journal</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_sale_journal_search"/>
</record>
<!-- <menuitem name="Sales Journals" id="menu_definition_journal" parent="sale.menu_shop_configuration" action="action_definition_journal"/>-->
<menuitem id="menu_sale_journal" name="Journal" parent="base.menu_base_config" sequence="60" />
<menuitem name="Sales Journals" id="menu_definition_journal" parent="menu_sale_journal" action="action_definition_journal"/>
<record model="ir.ui.view" id="sale_journal_sale_order">
<field name="name">sale.order.journal.view.form</field>
<field name="type">form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<field name="invoiced" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_sale_order_tree">
<field name="name">sale.order.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_tree" />
<field name="arch" type="xml">
<field name="state" position="after">
<field name="invoice_type_id"/>
<field name="journal_id"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order">
<field name="name">stock.picking.journal.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="sale_journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_tree">
<field name="name">stock.picking.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.vpicktree" />
<field name="arch" type="xml">
<field name="invoice_state" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
<field name="sale_journal_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_del">
<field name="name">stock.picking.journal.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_delivery_form" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="sale_journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_tree_del">
<field name="name">stock.picking.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_delivery_tree" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
<field name="sale_journal_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_in">
<field name="name">stock.picking.journal.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_in_form" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="sale_journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_tree_in">
<field name="name">stock.picking.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_in_tree" />
<field name="arch" type="xml">
<field name="invoice_state" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
<field name="sale_journal_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_out">
<field name="name">stock.picking.journal.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_out_form" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="sale_journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_tree_out">
<field name="name">stock.picking.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_out_tree" />
<field name="arch" type="xml">
<field name="invoice_state" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
<field name="sale_journal_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="view_sale_journal_sale_stats_tree">
<field name="name">sale_journal.sale.stats.tree</field>
<field name="model">sale_journal.sale.stats</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Sales by Journal">
<field name="name"/>
<field name="state"/>
<field name="journal_id"/>
<field name="quantity"/>
<field name="count"/>
<field name="price_total"/>
<field name="price_average"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_sale_journal_sale_stats_form">
<field name="name">sale_journal.sale.stats.form</field>
<field name="model">sale_journal.sale.stats</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Sales by Journal">
<field name="name"/>
<field name="state"/>
<field name="journal_id"/>
<field name="quantity"/>
<field name="count"/>
<field name="price_total"/>
<field name="price_average"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_sale_journal_sale_stats_search">
<field name="name">sale_journal.sale.stats.search</field>
<field name="model">sale_journal.sale.stats</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Sales by Journal">
<group col="8" colspan="4">
<filter icon="terp-sale" string="This Year" domain="[('name','!=','')]" help="Sale journal in this year"/>
<filter icon="terp-sale" string="This Month" domain="[('name','=',time.strftime('%%Y-%%m-01'))]" help="Sale journal in this month"/>
<separator orientation="vertical"/>
<data>
<!-- sale journal invoice Type's Form view -->
<record model="ir.ui.view" id="view_sale_journal_invoice_type_form">
<field name="name">sale_journal.invoice.type.form</field>
<field name="model">sale_journal.invoice.type</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Invoice Type">
<field name="name" select="1"/>
<field name="active" select="1"/>
<field name="invoicing_method" select="1"/>
<newline/>
<field name="note" colspan="4"/>
</form>
</field>
</record>
<!-- sale journal invoice Type's tree view -->
<record model="ir.ui.view" id="view_sale_journal_invoice_type_tree">
<field name="name">sale_journal.invoice.type.tree</field>
<field name="model">sale_journal.invoice.type</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Invoice Type">
<field name="name"/>
<field name="invoicing_method"/>
</tree>
</field>
</record>
<!-- Action for sale journal invoice Type -->
<record model="ir.actions.act_window" id="action_definition_journal_invoice_type">
<field name="res_model">sale_journal.invoice.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!-- <menuitem name="Invoicing Methods" id="menu_definition_journal_invoice_type" parent="sale.menu_shop_configuration" action="action_definition_journal_invoice_type"/> -->
<!-- sale journal Form view -->
<record model="ir.ui.view" id="view_sale_journal_form">
<field name="name">sale_journal.sale.journal.form</field>
<field name="model">sale_journal.sale.journal</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Sales Journals">
<group colspan="4" col="6">
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="user_id" select="1"/>
<field name="date" select="1"/>
<field name="date_created" select="1"/>
<field name="date_validation" select="1"/>
</group>
<notebook colspan="4">
<page string="Sales">
<field name="sale_stats_ids" colspan="4" nolabel="1">
<tree string="Sales">
<field name="name"/>
<field name="quantity"/>
<field name="price_total"/>
<field name="price_average"/>
<field name="count"/>
<field name="state"/>
</tree>
</field>
</page>
<page string="Notes">
<field name="note" colspan="4" nolabel="1"/>
</page>
</notebook>
<field name="state"/>
<group col="6" colspan="2">
<button name="button_open" string="Open Journal" states="draft" type="object" icon="gtk-open"/>
<button name="button_close" string="Close Journal" states="open" type="object" icon="gtk-close"/>
<button name="button_draft" string="Set to Draft" states="close,open" type="object" icon="gtk-convert"/>
<button string="Confirm Sales" name="button_sale_confirm" states="draft,open" type="object" icon="gtk-execute"/>
<button string="Cancel Sales" name="button_sale_cancel" states="draft,open" type="object" icon="gtk-cancel"/>
</group>
</form>
</field>
</record>
<!-- Sale journal tree view -->
<record model="ir.ui.view" id="view_sale_journal_tree">
<field name="name">sale_journal.sale.journal.tree</field>
<field name="model">sale_journal.sale.journal</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Sales Journals">
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="user_id" select="1"/>
<field name="date" select="1"/>
<field name="state"/>
</tree>
</field>
</record>
<!-- Sale journal search view -->
<record model="ir.ui.view" id="view_sale_journal_search">
<field name="name">sale_journal.sale.journal.search</field>
<field name="model">sale_journal.sale.journal</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Sales by Journal">
<group col="8" colspan="4">
<filter icon="terp-sale" string="My Sale Journals" domain="[('user_id','=',uid)]" help="My Sale Journals"/>
<filter icon="terp-sale" string="Open" domain="[('state','=','open')]" help="Open Sale Journals"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="user_id" select="1"/>
<field name="date" select="1"/>
</group>
</search>
</field>
</record>
<!-- Action for sale journal view -->
<record model="ir.actions.act_window" id="action_definition_journal">
<field name="res_model">sale_journal.sale.journal</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_sale_journal_search"/>
</record>
<menuitem id="menu_definition_journal" name="Sales Journals" parent="base.menu_base_config" action="action_definition_journal" sequence="60" />
<!-- Inherit sales order form view -->
<record model="ir.ui.view" id="sale_journal_sale_order">
<field name="name">sale.order.journal.view.form</field>
<field name="type">form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<field name="user_id" position="after">
<separator string="Journal" colspan="4"/>
<field name="journal_id" select="1" widget="selection"/>
<field name="invoice_type_id" select="1" widget="selection"/>
</field>
</field>
</record>
<!-- Inherit sales order tree view-->
<record model="ir.ui.view" id="sale_journal_sale_order_tree">
<field name="name">sale.order.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_tree" />
<field name="arch" type="xml">
<field name="state" position="after">
<field name="invoice_type_id"/>
<field name="journal_id"/>
</group>
</search>
</field>
</record>
</field>
</field>
</record>
<record model="ir.actions.act_window" id="action_sale_sale_stats_open_menu_all">
<field name="name">Sales by Journal</field>
<field name="res_model">sale_journal.sale.stats</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_sale_journal_sale_stats_search"/>
</record>
<!-- Inherit stock picking's form view -->
<record model="ir.ui.view" id="sale_journal_picking_order">
<field name="name">stock.picking.journal.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="sale_journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<menuitem name="Reporting" id="menu_definition_report_sales" parent="base.menu_base_partner" sequence="8"/>
<menuitem name="Sales by Journal" id="menu_sale_sale_stats_open_all" parent="menu_definition_report_sales" action="action_sale_sale_stats_open_menu_all"/>
<!-- Inherit stock picking's tree view -->
<record model="ir.ui.view" id="sale_journal_picking_order_tree">
<field name="name">stock.picking.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.vpicktree" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
<field name="sale_journal_id" select="1"/>
</field>
</field>
</record>
<!-- Inherit stock picking delivery's form view.-->
<record model="ir.ui.view" id="sale_journal_picking_order_del">
<field name="name">stock.picking.journal.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_delivery_form" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="sale_journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<!-- Inherit stock picking delivery's tree view.-->
<record model="ir.ui.view" id="sale_journal_picking_order_tree_del">
<field name="name">stock.picking.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_delivery_tree" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
<field name="sale_journal_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_in">
<field name="name">stock.picking.journal.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_in_form" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="sale_journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_tree_in">
<field name="name">stock.picking.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_in_tree" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
<field name="sale_journal_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_out">
<field name="name">stock.picking.journal.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_out_form" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="sale_journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_journal_picking_order_tree_out">
<field name="name">stock.picking.journal.view.tree</field>
<field name="type">tree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_out_tree" />
<field name="arch" type="xml">
<field name="origin" position="after">
<field name="journal_id" select="1"/>
<field name="invoice_type_id" select="1"/>
<field name="sale_journal_id" select="1"/>
</field>
</field>
</record>
<!-- Action of sale journal report in sale journal -->
<act_window name="Monthly sales"
domain="[('journal_id', '=', active_id)]"
res_model="sale.journal.report"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_sale_journal_sale_stats"/>
<!-- Action of stock picking in picking journal -->
<act_window name="Assigned picking"
domain="[('journal_id', '=', active_id),('state', '=', 'assigned')]"
res_model="stock.picking"
src_model="sale_journal.picking.journal"
id="act_sale_journal_picking_journal_2_stock_picking_assigned"/>
<!-- Action of stock picking in picking journal -->
<act_window name="Confirmed picking"
domain="[('journal_id', '=', active_id),('state', '=', 'confirmed')]"
res_model="stock.picking"
src_model="sale_journal.picking.journal"
id="act_sale_journal_picking_journal_2_stock_picking_confirmed"/>
<!-- Action of stock picking in sale journal -->
<act_window name="Assigned picking"
domain="[('sale_journal_id', '=', active_id),('state', '=', 'assigned')]"
res_model="stock.picking"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_stock_picking_assigned"/>
<act_window name="Monthly sales"
domain="[('journal_id', '=', active_id)]"
res_model="sale_journal.sale.stats"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_sale_journal_sale_stats"/>
<!-- Action of stock picking in sale journal -->
<act_window name="Assigned picking"
domain="[('journal_id', '=', active_id),('state', '=', 'assigned')]"
res_model="stock.picking"
src_model="sale_journal.picking.journal"
id="act_sale_journal_picking_journal_2_stock_picking_assigned"/>
<act_window name="Confirmed picking"
domain="[('sale_journal_id', '=', active_id),('state', '=', 'confirmed')]"
res_model="stock.picking"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_stock_picking_confirmed"/>
<act_window name="Confirmed picking"
domain="[('journal_id', '=', active_id),('state', '=', 'confirmed')]"
res_model="stock.picking"
src_model="sale_journal.picking.journal"
id="act_sale_journal_picking_journal_2_stock_picking_confirmed"/>
<!-- Action of sale order in sale journal -->
<act_window name="Draft sales"
domain="[('journal_id', '=', active_id),('state', '=', 'draft')]"
res_model="sale.order"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_sale_order_draft"/>
<!-- Action of sale order in sale journal -->
<act_window name="Approved sales"
domain="[('journal_id', '=', active_id),('state', '=', 'approved')]"
res_model="sale.order"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_sale_order_approved"/>
<record id="view_partner_property_form" model="ir.ui.view">
<field name="name">res.partner.journal.property.form.inherit</field>
<field name="model">res.partner</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<page string="Sales &amp; Purchases" position="inside">
<field name="property_invoice_type"/>
</page>
</field>
</record>
<!--=====================================================-->
<!-- picking journal view-->
<!--===================================================== -->
<record model="ir.ui.view" id="view_picking_journal_form">
<field name="name">sale_journal.picking.journal.form</field>
<field name="model">sale_journal.picking.journal</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Picking Journal">
<group colspan="4" col="6">
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="user_id" select="1"/>
<newline/>
<field name="date" select="1"/>
<field name="date_created" select="1"/>
<field name="date_validation" select="1"/>
</group>
<notebook colspan="4">
<page string="Picking">
<field name="picking_stats_ids" colspan="4" nolabel="1"/>
</page>
<page string="Notes">
<field name="note" colspan="4" nolabel="1"/>
</page>
</notebook>
<field name="state"/>
<group col="6" colspan="2">
<button name="button_open" string="Open Journal" states="draft" type="object" icon="gtk-open"/>
<button name="button_close" string="Close Journal" states="open" type="object" icon="gtk-close"/>
<button name="button_draft" string="Set to Draft" states="close,open" type="object" icon="gtk-convert"/>
<button string="Cancel Picking" name="button_picking_cancel" states="draft,open" type="object" icon="gtk-cancel"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_picking_journal_tree">
<field name="name">sale_journal.picking.journal.tree</field>
<field name="model">sale_journal.picking.journal</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Picking Journal">
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="user_id" select="1"/>
<field name="date" select="1"/>
<field name="state"/>
</tree>
</field>
</record>
<act_window name="Assigned picking"
domain="[('sale_journal_id', '=', active_id),('state', '=', 'assigned')]"
res_model="stock.picking"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_stock_picking_assigned"/>
<!-- Picking journal tree view -->
<record model="ir.ui.view" id="view_picking_journal_search">
<field name="name">sale_journal.picking.journal.search</field>
<field name="model">sale_journal.picking.journal</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Picking Journals">
<group col="8" colspan="4">
<filter icon="terp-hr" string="My Picking Journals" domain="[('user_id','=',uid)]" help="My Picking Journals"/>
<filter icon="terp-hr" string="Open" domain="[('state','=','open')]" help="Open Picking Journals"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="user_id" select="1" widget="selection"/>
<field name="date" select="1"/>
</group>
</search>
</field>
</record>
<!-- Action of Picking journals -->
<record model="ir.actions.act_window" id="action_definition_picking_journal">
<field name="name">Picking Journals</field>
<field name="res_model">sale_journal.picking.journal</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_picking_journal_search"/>
</record>
<menuitem name="Picking Journals" id="menu_definition_journal_picking" parent="stock.menu_stock_configuration" action="action_definition_picking_journal"/>
<record model="ir.actions.act_window" id="action_invoice_type_tree">
<field name="name">Picking by invoice_method</field>
<field name="res_model">sale_journal.invoice.type</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">tree</field>
</record>
<record model="ir.actions.act_window" id="action_invoice_type_picking_open">
<field name="name">Picking to invoice</field>
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('state','=','done'),('invoice_state','=','2binvoiced'),('invoice_type_id','=',active_id)]</field>
</record>
<record model="ir.values" id="ir_open_invoice_type">
<field name="key2">tree_but_open</field>
<field name="model">sale_journal.invoice.type</field>
<field name="name">Picking to invoice</field>
<field name="value" eval="'ir.actions.act_window,%d'%action_invoice_type_picking_open"/>
<field name="object" eval="True"/>
</record>
<act_window name="Confirmed picking"
domain="[('sale_journal_id', '=', active_id),('state', '=', 'confirmed')]"
res_model="stock.picking"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_stock_picking_confirmed"/>
<act_window name="Draft sales"
domain="[('journal_id', '=', active_id),('state', '=', 'draft')]"
res_model="sale.order"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_sale_order_draft"/>
<act_window name="Approved sales"
domain="[('journal_id', '=', active_id),('state', '=', 'approved')]"
res_model="sale.order"
src_model="sale_journal.sale.journal"
id="act_sale_journal_sale_journal_2_sale_order_approved"/>
<record id="view_partner_property_form" model="ir.ui.view">
<field name="name">res.partner.journal.property.form.inherit</field>
<field name="model">res.partner</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<page string="Sales &amp; Purchases" position="inside">
<field name="property_invoice_type"/>
</page>
</field>
</record>
</data>
</data>
</openerp>
@@ -1,12 +1,7 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_sale_journal_invoice_type_stats","sale_journal.invoice.type.stats","model_sale_journal_invoice_type_stats","sale.group_sale_user",1,0,0,0
"access_sale_journal_picking_stats","sale_journal.picking.stats","model_sale_journal_picking_stats","sale.group_sale_user",1,0,0,0
"access_sale_journal_invoice_type","sale_journal.invoice.type","model_sale_journal_invoice_type","sale.group_sale_user",1,0,0,0
"access_sale_journal_invoice_type_finance_invoice","sale_journal.invoice.type invoice","model_sale_journal_invoice_type","account.group_account_invoice",1,0,0,0
"access_sale_journal_invoice_type_partner_manager","sale_journal.invoice.type partner manager","model_sale_journal_invoice_type","base.group_partner_manager",1,0,0,0
"access_sale_journal_sale_journal","sale_journal.sale.journal","model_sale_journal_sale_journal","sale.group_sale_user",1,0,0,0
"access_sale_journal_picking_journal","sale_journal.picking.journal","model_sale_journal_picking_journal","sale.group_sale_user",1,0,0,0
"access_sale_journal_sale_stats","sale_journal.sale.stats","model_sale_journal_sale_stats","sale.group_sale_user",1,0,0,0
"access_sale_journal_invoice_type_manager","sale_journal.invoice.type.manager","model_sale_journal_invoice_type","sale.group_sale_manager",1,1,1,1
"access_sale_journal_sale_journal_manager","sale_journal.sale.journal.manager","model_sale_journal_sale_journal","sale.group_sale_manager",1,1,1,1
"access_sale_journal_picking_journal_manager","sale_journal.picking.journal.manager","model_sale_journal_picking_journal","sale.group_sale_manager",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
access_sale_journal_invoice_type_stats sale_journal.invoice.type.stats model_sale_journal_invoice_type_stats sale.group_sale_user 1 0 0 0
access_sale_journal_picking_stats sale_journal.picking.stats model_sale_journal_picking_stats sale.group_sale_user 1 0 0 0
access_sale_journal_invoice_type sale_journal.invoice.type model_sale_journal_invoice_type sale.group_sale_user 1 0 0 0
2 access_sale_journal_invoice_type_finance_invoice sale_journal.invoice.type invoice model_sale_journal_invoice_type account.group_account_invoice 1 0 0 0
3 access_sale_journal_invoice_type_partner_manager sale_journal.invoice.type partner manager model_sale_journal_invoice_type base.group_partner_manager 1 0 0 0
4 access_sale_journal_sale_journal sale_journal.sale.journal model_sale_journal_sale_journal sale.group_sale_user 1 0 0 0
access_sale_journal_picking_journal sale_journal.picking.journal model_sale_journal_picking_journal sale.group_sale_user 1 0 0 0
access_sale_journal_sale_stats sale_journal.sale.stats model_sale_journal_sale_stats sale.group_sale_user 1 0 0 0
5 access_sale_journal_invoice_type_manager sale_journal.invoice.type.manager model_sale_journal_invoice_type sale.group_sale_manager 1 1 1 1
6 access_sale_journal_sale_journal_manager sale_journal.sale.journal.manager model_sale_journal_sale_journal sale.group_sale_manager 1 1 1 1
7 access_sale_journal_picking_journal_manager sale_journal.picking.journal.manager model_sale_journal_picking_journal sale.group_sale_manager 1 1 1 1