bzr revid: uco@tinyerp.com-20100528073223-bhy81rkp49xwxzjc
This commit is contained in:
uco (OpenERP) 2010-05-28 13:02:23 +05:30
commit 2e466c370a
48 changed files with 913 additions and 1123 deletions

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>

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

View File

@ -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>

View File

@ -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,33 @@
<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 +74,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 +91,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 +100,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 +108,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>

View File

@ -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,21 @@
<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 +61,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 +87,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 +106,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 +116,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>

View File

@ -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,17 @@
<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 +68,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>

View File

@ -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,12 +52,12 @@
<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"
<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="Invoices of 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="Invoices of last 30 days"/>
@ -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>

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:

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">

View File

@ -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:

View File

@ -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">

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']

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"

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 ""

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"

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"

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"

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"

View File

@ -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

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"

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" />

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

View File

@ -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>

View File

@ -0,0 +1,23 @@
# -*- 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/>.
#
##############################################################################
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,38 @@
# -*- 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/>.
#
##############################################################################
{
"name" : "Marketing",
"version" : "1.1",
"depends" : ["base"],
"author" : "Tiny",
"category": 'Generic Modules/Marketing',
"description": "Menu for Marketing",
'website': 'http://www.openerp.com',
'init_xml': [],
'demo_xml':[],
'update_xml': ['marketing_view.xml'],
'demo_xml': [],
'installable': True,
'active': False,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<openerp>
<data>
<menuitem name="Marketing" icon="terp-crm" id="marketing_menu" sequence="10"/>
</data>
</openerp>

View File

@ -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>

View File

@ -85,6 +85,7 @@
<field name="date_order"/>
<field name="date_validation" />
<field name="date_payment" groups="base.group_extended"/>
<field name="type_rec" colspan="4"/>
</group>
<group colspan="4">
<separator string="Invoicing" colspan="4"/>
@ -110,11 +111,7 @@
</field>
</page>
<page string="Notes" >
<separator string="Notes" colspan="4" />
<group colspan="4">
<field name="type_rec" colspan="4"/>
<field name="note" colspan="4"/>
</group>
<field colspan="4" name="note" nolabel="1"/>
</page>
</notebook>

View File

@ -209,7 +209,15 @@ class product_category(osv.osv):
'child_id': fields.one2many('product.category', 'parent_id', string='Child Categories'),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of product categories."),
'type': fields.selection([('view','View'), ('normal','Normal')], 'Category Type'),
'property_stock_variation': fields.property(
'account.account',
type='many2one',
relation='account.account',
string="Stock variation Account",
method=True,
view_load=True,),
}
_defaults = {
'type' : lambda *a : 'normal',
@ -457,6 +465,9 @@ class product_product(osv.osv):
'price_extra': fields.float('Variant Price Extra', digits_compute=dp.get_precision('Sale Price')),
'price_margin': fields.float('Variant Price Margin', digits_compute=dp.get_precision('Sale Price')),
'pricelist_id': fields.dummy(string='Pricelist',relation='product.pricelist', type='many2one'),
'valuation':fields.selection([('manual_periodic','Manual Periodic Valuation'),
('real_time','Real Time valuation'),
('','')],'Valuation'),
}
def onchange_uom(self, cursor, user, ids, uom_id,uom_po_id):

View File

@ -135,6 +135,11 @@ parameter) will see those record just disappear.
<field name="name">Stock Weight</field>
<field name="digits">2</field>
</record>
<record forcecreate="True" id="property_stock_variation" model="ir.property">
<field name="name">property_stock_variation</field>
<field name="fields_id" search="[('model','=','product.category'),('name','=','property_stock_variation')]"/>
<field eval="'account.account,'+str(ref('account.a_recv'))" model="account.account" name="value"/>
<field name="company_id" ref="base.main_company"/>
</record>
</data>
</openerp>

View File

@ -147,6 +147,7 @@
<field name="price_extra" groups="base.group_extended"/>
<newline/>
<field groups="base.group_extended" name="cost_method"/>
<field name="valuation"/>
<newline/>
<field colspan="4" name="seller_ids" nolabel="1"/>
</page>
@ -215,6 +216,7 @@
<field name="name" select="1"/>
<field name="parent_id"/>
<field name="sequence" invisible="1"/>
<field name="property_stock_variation"/>
<field name="type"/>
<newline/>
</form>

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:

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/>

View File

@ -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>

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'

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 users 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()

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"/>
@ -143,6 +145,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"/>
@ -155,6 +158,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"/>
@ -172,21 +176,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">
@ -196,7 +197,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="[]"
@ -271,7 +272,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"

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" : [],

View File

@ -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,

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),

View File

@ -36,7 +36,12 @@ 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),
'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),
'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 +76,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 +102,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,

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>

View File

@ -26,6 +26,7 @@ from tools.translate import _
class product_product(osv.osv):
_inherit = "product.product"
def get_product_accounts(self, cr, uid, product_id, context={}):
""" To get the stock input account, stock output account and stock journal related to product.
@param product_id: product id
@ -41,14 +42,15 @@ class product_product(osv.osv):
if not stock_output_acc:
stock_output_acc = product_obj.categ_id.property_stock_account_output_categ and product_obj.categ_id.property_stock_account_output_categ.id or False
journal_id = product_obj.categ_id.property_stock_journal and product_obj.categ_id.property_stock_journal.id or False
res = {}
res.update({'stock_account_input': stock_input_acc})
res.update({'stock_account_output': stock_output_acc})
res.update({'stock_journal': journal_id})
return res
def do_change_standard_price(self, cr, uid, ids, datas, context={}):
""" Changes the Standard Price of Product and creates an account move accordingly.
@param datas : dict. contain default datas like new_price, stock_output_account, stock_input_account, stock_journal
@ -64,10 +66,12 @@ class product_product(osv.osv):
stock_output_acc = datas.get('stock_output_account', False)
stock_input_acc = datas.get('stock_input_account', False)
journal_id = datas.get('stock_journal', False)
property_obj=self.pool.get('ir.property')
product_obj=self.browse(cr,uid,ids)[0]
account_variation = product_obj.categ_id.property_stock_variation
move_ids = []
for rec_id in ids:
loc_ids = location_obj.search(cr, uid, [('account_id','<>',False),('usage','=','internal')])
loc_ids = location_obj.search(cr, uid,[('usage','=','internal')])
for location in location_obj.browse(cr, uid, loc_ids):
c = context.copy()
c.update({
@ -80,7 +84,8 @@ class product_product(osv.osv):
diff = product.standard_price - new_price
assert diff, _("Could not find any difference between standard price and new price!")
if qty:
location_account = location.account_id and location.account_id.id or False
location_account = account_variation and account_variation.id or False
company_id = location.company_id and location.company_id.id or False
assert location_account, _('Inventory Account is not specified for Location: %s' % (location.name))
assert company_id, _('Company is not specified in Location')

View File

@ -54,10 +54,10 @@
<field name="arch" type="xml">
<search string="Search">
<group col="16" colspan="6">
<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="Picking 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="Picking in last 30 days"/>

View File

@ -166,7 +166,7 @@ class stock_location(osv.osv):
'stock_real': fields.function(_product_qty_available, method=True, type='float', string='Real Stock', multi="stock"),
'stock_virtual': fields.function(_product_qty_available, method=True, type='float', string='Virtual Stock', multi="stock"),
'account_id': fields.many2one('account.account', string='Inventory Account', domain=[('type', '!=', 'view')]),
#'account_id': fields.many2one('account.account', string='Inventory Account', domain=[('type', '!=', 'view')]),
'location_id': fields.many2one('stock.location', 'Parent Location', select=True, ondelete='cascade'),
'child_ids': fields.one2many('stock.location', 'location_id', 'Contains'),
@ -1043,6 +1043,7 @@ class stock_picking(osv.osv):
@return: Dictionary of values
"""
res = {}
move_obj = self.pool.get('stock.move')
delivery_obj = self.pool.get('stock.delivery')
product_obj = self.pool.get('product.product')
@ -1762,90 +1763,88 @@ class stock_move(osv.osv):
#
acc_src = None
acc_dest = None
if move.location_id.account_id:
acc_src = move.location_id.account_id.id
if move.location_dest_id.account_id:
acc_dest = move.location_dest_id.account_id.id
if acc_src or acc_dest:
test = [('product.product', move.product_id.id)]
if move.product_id.categ_id:
test.append( ('product.category', move.product_id.categ_id.id) )
if not acc_src:
acc_src = move.product_id.product_tmpl_id.\
property_stock_account_input.id
if move.product_id.valuation=='real_time':
journal_id = move.product_id.categ_id.property_stock_journal and move.product_id.categ_id.property_stock_journal.id or False
if(move.location_id.usage=='internal' and move.location_dest_id.usage=='internal' and move.location_id.company_id.id!=move.location_dest_id.company_id.id) or ( move.location_id.usage=='internal' or move.location_dest_id.usage=='internal'):
test = [('product.product', move.product_id.id)]
if move.product_id.categ_id:
test.append( ('product.category', move.product_id.categ_id.id) )
if not acc_src:
acc_src = move.product_id.categ_id.\
property_stock_account_input_categ.id
if not acc_src:
raise osv.except_osv(_('Error!'),
_('There is no stock input account defined ' \
'for this product: "%s" (id: %d)') % \
(move.product_id.name,
move.product_id.id,))
if not acc_dest:
acc_dest = move.product_id.product_tmpl_id.\
property_stock_account_output.id
if not acc_dest:
acc_dest = move.product_id.categ_id.\
property_stock_account_output_categ.id
acc_src = move.product_id.product_tmpl_id.\
property_stock_account_input.id
if not acc_src:
acc_src = move.product_id.categ_id.\
property_stock_account_input_categ.id
if not acc_src:
raise osv.except_osv(_('Error!'),
_('There is no stock input account defined ' \
'for this product: "%s" (id: %d)') % \
(move.product_id.name,
move.product_id.id,))
if not acc_dest:
acc_dest = move.product_id.product_tmpl_id.\
property_stock_account_output.id
if not acc_dest:
acc_dest = move.product_id.categ_id.\
property_stock_account_output_categ.id
if not acc_dest:
raise osv.except_osv(_('Error!'),
_('There is no stock output account defined ' \
'for this product: "%s" (id: %d)') % \
(move.product_id.name,
move.product_id.id,))
if not move.product_id.categ_id.property_stock_journal.id:
raise osv.except_osv(_('Error!'),
_('There is no stock output account defined ' \
'for this product: "%s" (id: %d)') % \
(move.product_id.name,
move.product_id.id,))
if not move.product_id.categ_id.property_stock_journal.id:
raise osv.except_osv(_('Error!'),
_('There is no journal defined '\
'on the product category: "%s" (id: %d)') % \
(move.product_id.categ_id.name,
move.product_id.categ_id.id,))
journal_id = move.product_id.categ_id.property_stock_journal.id
if acc_src != acc_dest:
ref = move.picking_id and move.picking_id.name or False
default_uom = move.product_id.uom_id.id
date = time.strftime('%Y-%m-%d')
q = product_uom_obj._compute_qty(cr, uid, move.product_uom.id, move.product_qty, default_uom)
if move.product_id.cost_method == 'average' and move.price_unit:
amount = q * move.price_unit
# Base computation on valuation price type
else:
company_id = move.company_id.id
context['currency_id'] = move.company_id.currency_id.id
pricetype = price_type_obj.browse(cr,uid,move.company_id.property_valuation_price_type.id)
amount_unit = move.product_id.price_get(pricetype.field, context)[move.product_id.id]
amount = amount_unit * q or 1.0
# amount = q * move.product_id.standard_price
partner_id = False
if move.picking_id:
partner_id = move.picking_id.address_id and (move.picking_id.address_id.partner_id and move.picking_id.address_id.partner_id.id or False) or False
lines = [
(0, 0, {
'name': move.name,
'quantity': move.product_qty,
'product_id': move.product_id and move.product_id.id or False,
'credit': amount,
'account_id': acc_src,
'ref': ref,
'date': date,
'partner_id': partner_id}),
(0, 0, {
'name': move.name,
'product_id': move.product_id and move.product_id.id or False,
'quantity': move.product_qty,
'debit': amount,
'account_id': acc_dest,
'ref': ref,
'date': date,
'partner_id': partner_id})
]
move_obj.create(cr, uid, {
'name': move.name,
'journal_id': journal_id,
'line_id': lines,
'ref': ref,
})
_('There is no journal defined '\
'on the product category: "%s" (id: %d)') % \
(move.product_id.categ_id.name,
move.product_id.categ_id.id,))
journal_id = move.product_id.categ_id.property_stock_journal.id
if acc_src != acc_dest:
ref = move.picking_id and move.picking_id.name or False
default_uom = move.product_id.uom_id.id
date = time.strftime('%Y-%m-%d')
q = product_uom_obj._compute_qty(cr, uid, move.product_uom.id, move.product_qty, default_uom)
if move.product_id.cost_method == 'average' and move.price_unit:
amount = q * move.price_unit
# Base computation on valuation price type
else:
company_id = move.company_id.id
context['currency_id'] = move.company_id.currency_id.id
pricetype = price_type_obj.browse(cr,uid,move.company_id.property_valuation_price_type.id)
amount_unit = move.product_id.price_get(pricetype.field, context)[move.product_id.id]
amount = amount_unit * q or 1.0
# amount = q * move.product_id.standard_price
partner_id = False
if move.picking_id:
partner_id = move.picking_id.address_id and (move.picking_id.address_id.partner_id and move.picking_id.address_id.partner_id.id or False) or False
lines = [
(0, 0, {
'name': move.name,
'quantity': move.product_qty,
'product_id': move.product_id and move.product_id.id or False,
'credit': amount,
'account_id': acc_src,
'ref': ref,
'date': date,
'partner_id': partner_id}),
(0, 0, {
'name': move.name,
'product_id': move.product_id and move.product_id.id or False,
'quantity': move.product_qty,
'debit': amount,
'account_id': acc_dest,
'ref': ref,
'date': date,
'partner_id': partner_id})
]
move_obj.create(cr, uid, {
'name': move.name,
'journal_id': journal_id,
'line_id': lines,
'ref': ref,
})
tracking_lot = False
if context:
tracking_lot = context.get('tracking_lot', False)
@ -2371,6 +2370,7 @@ class stock_picking_move_wizard(osv.osv_memory):
def action_move(self, cr, uid, ids, context=None):
move_obj = self.pool.get('stock.move')
picking_obj = self.pool.get('stock.picking')
account_move_obj = self.pool.get('account.move')
for act in self.read(cr, uid, ids):
move_lines = move_obj.browse(cr, uid, act['move_ids'])
for line in move_lines:

View File

@ -37,7 +37,7 @@
<record id="stock_location_14" model="stock.location">
<field name="name">Shelf 2</field>
<field name="location_id" ref="stock_location_13"/>
<field model="account.account" name="account_id" search="[('name','=','Merchandise Type B')]"/>
<!-- <field model="account.account" name="account_id" search="[('name','=','Merchandise Type B')]"/>-->
</record>
<record id="stock_location_15" model="stock.location">
<field name="name">Sub Products</field>

View File

@ -407,7 +407,7 @@
<newline/>
<field name="usage"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="account_id" groups="base.group_extended"/>
<!--<field name="account_id" groups="base.group_extended"/>-->
<field name="location_id"/>
<field name="address_id" context="{'contact_display':'partner'}"/>
<field name="icon" groups="base.group_extended"/>

View File

@ -158,7 +158,7 @@ class stock_partial_picking(osv.osv_memory):
res.update({'date': time.strftime('%Y-%m-%d %H:%M:%S')})
for pick in pick_obj.browse(cr, uid, context.get('active_ids', [])):
if 'partner_id' in fields:
res.update({'partner_id': pick.address_id.partner_id.id})
res.update({'partner_id': pick.address_id.partner_id and pick.address_id.partner_id.id or False })
if 'address_id' in fields:
res.update({'address_id': pick.address_id.id})
for m in pick.move_lines: