[CLEAN]: removed commented code, fixed proper indentation in dictionary and removed extra spaces at few places

bzr revid: rvo@tinyerp.co.in-20100813122005-qj1l1iumkfmocyvk
This commit is contained in:
Rvo (Open ERP) 2010-08-13 17:50:05 +05:30
parent 535e21cc06
commit 45a8d54f18
205 changed files with 2161 additions and 3130 deletions

View File

@ -36,8 +36,7 @@
Credits: Sistheo Zeekom CrysaLEAD Credits: Sistheo Zeekom CrysaLEAD
""", """,
"depends" : ['base', 'account', 'account_chart', 'account_report', 'base_vat'], "depends" : ['base', 'account', 'account_chart', 'account_report', 'base_vat'],
"init_xml" : [ "init_xml" : [],
],
"update_xml" : [ "update_xml" : [
"report.xml", "report.xml",
"pcg.xml", "pcg.xml",

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -35,8 +35,8 @@ class l10n_fr_report(osv.osv):
'line_ids': fields.one2many('l10n.fr.line', 'report_id', 'Lines'), 'line_ids': fields.one2many('l10n.fr.line', 'report_id', 'Lines'),
} }
_sql_constraints = [ _sql_constraints = [
('code_uniq', 'unique (code)','The code report must be unique !') ('code_uniq', 'unique (code)','The code report must be unique !')
] ]
l10n_fr_report() l10n_fr_report()
class l10n_fr_line(osv.osv): class l10n_fr_line(osv.osv):
@ -49,7 +49,7 @@ class l10n_fr_line(osv.osv):
'report_id': fields.many2one('l10n.fr.report', 'Report'), 'report_id': fields.many2one('l10n.fr.report', 'Report'),
} }
_sql_constraints = [ _sql_constraints = [
('code_uniq', 'unique (code)', 'The variable name must be unique !') ('code_uniq', 'unique (code)', 'The variable name must be unique !')
] ]
l10n_fr_line() l10n_fr_line()

View File

@ -1,8 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<openerp> <openerp>
<data> <data>
<!-- <menuitem name="Compte de resultat" parent="l10n_fr.menu_l10n_fr_report_doc" id="menu_action_cdr" action="wizard_l10n_fr_pcg_cdr_report" type="wizard" />-->
<!---->
<!-- <menuitem name="Bilan" id="menu_action_bilan" parent="l10n_fr.menu_l10n_fr_report_doc" action="wizard_l10n_fr_pcg_bilan_report" type="wizard" />-->
</data> </data>
</openerp> </openerp>

View File

@ -14,7 +14,6 @@
<record id="account_type_dettes" model="account.account.type"> <record id="account_type_dettes" model="account.account.type">
<field name="name">Dettes long terme</field> <field name="name">Dettes long terme</field>
<field name="code">dettes</field> <field name="code">dettes</field>
<!-- <field name="report_type">?</field> -->
<field name="close_method">balance</field> <field name="close_method">balance</field>
</record> </record>
@ -35,7 +34,6 @@
<record id="account_type_cloture" model="account.account.type"> <record id="account_type_cloture" model="account.account.type">
<field name="name">Cloture</field> <field name="name">Cloture</field>
<field name="code">cloture</field> <field name="code">cloture</field>
<!-- <field name="report_type">?</field> -->
<field name="close_method">balance</field> <field name="close_method">balance</field>
</record> </record>
@ -76,7 +74,6 @@
<record model="account.account.type" id="account_type_tax"> <record model="account.account.type" id="account_type_tax">
<field name="name">Tax</field> <field name="name">Tax</field>
<field name="code">tax</field> <field name="code">tax</field>
<!-- <field name="report_type">?</field> -->
<field name="close_method">unreconciled</field> <field name="close_method">unreconciled</field>
</record> </record>
@ -104,14 +101,12 @@
<record model="account.account.type" id="account_type_provision"> <record model="account.account.type" id="account_type_provision">
<field name="name">Provisions</field> <field name="name">Provisions</field>
<field name="code">provision</field> <field name="code">provision</field>
<!-- <field name="report_type">?</field> -->
<field name="close_method">balance</field> <field name="close_method">balance</field>
</record> </record>
<record model="account.account.type" id="account_type_commitment"> <record model="account.account.type" id="account_type_commitment">
<field name="name">Engagements</field> <field name="name">Engagements</field>
<field name="code">commitment</field> <field name="code">commitment</field>
<!-- <field name="report_type">?</field> -->
<field name="close_method">balance</field> <field name="close_method">balance</field>
</record> </record>
@ -125,7 +120,6 @@
<record model="account.account.type" id="account_type_special"> <record model="account.account.type" id="account_type_special">
<field name="name">Comptes spéciaux</field> <field name="name">Comptes spéciaux</field>
<field name="code">special</field> <field name="code">special</field>
<!-- <field name="report_type">?</field> -->
<field name="close_method">none</field> <field name="close_method">none</field>
</record> </record>
@ -9255,49 +9249,5 @@
<field name="parent_id" ref="pcg_89"/> <field name="parent_id" ref="pcg_89"/>
</record> </record>
<!-- <record model="ir.property" id="account.property_account_receivable">
<field name="value" eval="'account.account,'+str(ref('account.a_recv'))"/>
</record>
<record model="ir.property" id="account.property_account_payable">
<field name="value" eval="'account.account,'+str(ref('account.a_pay'))"/>
</record>
<record model="ir.property" id="account.property_account_expense_categ">
<field name="value" eval="'account.account,'+str(ref('account.a_expense'))"/>
</record>
<record model="ir.property" id="account.property_account_income_categ">
<field name="value" eval="'account.account,'+str(ref('account.a_sale'))"/>
</record>
<record model="account.journal" id="l10n_fr.opening_journal">
<field name="default_debit_account_id" ref="pcg_890"/>
<field name="default_credit_account_id" ref="pcg_890"/>
</record>
<record model="account.journal" id="l10n_fr.closing_journal">
<field name="default_debit_account_id" ref="pcg_891"/>
<field name="default_credit_account_id" ref="pcg_891"/>
</record>
<record model="ir.values" id="l10n_fr.pl_credit">
<field name="name">pl_credit</field>
<field name="key">default</field>
<field name="key2" eval="None"/>
<field name="object" eval="False"/>
<field name="model">wizard.l10n.fr.fiscalyear.close</field>
<field name="value" eval="'I'+str(ref('pcg_120'))+chr(10)+'.'"/>
</record>
<record model="ir.values" id="l10n_fr.pl_debit">
<field name="name">pl_debit</field>
<field name="key">default</field>
<field name="key2" eval="None"/>
<field name="object" eval="False"/>
<field name="model">wizard.l10n.fr.fiscalyear.close</field>
<field name="value" eval="'I'+str(ref('pcg_129'))+chr(10)+'.'"/>
</record> -->
</data> </data>
</openerp> </openerp>

View File

@ -504,9 +504,6 @@
<record id="pcg_bpvar10" model="l10n.fr.line"> <record id="pcg_bpvar10" model="l10n.fr.line">
<field name="name">Capitaux propres : Résultat de l'exercice</field> <field name="name">Capitaux propres : Résultat de l'exercice</field>
<!--
<field name="definition">{'load':['-:120:S','-:129:S'], 'except':[]}</field>
-->
<field name="definition">{'load':['-:7:S','-:6:S'], 'except':[]}</field> <field name="definition">{'load':['-:7:S','-:6:S'], 'except':[]}</field>
<field name="code">bpvar10</field> <field name="code">bpvar10</field>
<field name="report_id" ref="pcg_bilan"/> <field name="report_id" ref="pcg_bilan"/>

View File

@ -32,7 +32,7 @@ from report import report_sxw
class base_report(report_sxw.rml_parse): class base_report(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context): def __init__(self, cr, uid, name, context):
super(base_report, self).__init__(cr, uid, name, context=context) super(base_report, self).__init__(cr, uid, name, context=context)
self.localcontext.update( { self.localcontext.update({
'time': time, 'time': time,
'_load': self._load, '_load': self._load,
'_get_variable': self._get_variable, '_get_variable': self._get_variable,
@ -62,7 +62,6 @@ class base_report(report_sxw.rml_parse):
return self.localcontext[variable] return self.localcontext[variable]
def _load_accounts(self,form,code,definition,fiscalyear,period_query_cond): def _load_accounts(self,form,code,definition,fiscalyear,period_query_cond):
#self.context.copy()
accounts={} accounts={}
for x in definition['load']: for x in definition['load']:
p=x.split(":") p=x.split(":")

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<openerp> <openerp>
<data> <data>
<!-- <!--
# #
# Indian Accounts tree # Indian Accounts tree
# #
@ -29,7 +29,7 @@
<field name="code">liability</field> <field name="code">liability</field>
<field name="report_type">liability</field> <field name="report_type">liability</field>
</record> </record>
<record model="account.account.type" id="account_type_root_ind1"> <record model="account.account.type" id="account_type_root_ind1">
<field name="name">View</field> <field name="name">View</field>
<field name="code">view</field> <field name="code">view</field>
@ -58,17 +58,17 @@
<field name="name">Closed</field> <field name="name">Closed</field>
<field name="code">closed</field> <field name="code">closed</field>
</record> </record>
<!-- ## account chart --> <!-- ## account chart -->
<record model="account.account.template" id="root"> <record model="account.account.template" id="root">
<field name="name">Indian Chart of Account</field> <field name="name">Indian Chart of Account</field>
<field name="code">0</field> <field name="code">0</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_root_ind1"/> <field name="user_type" ref="account_type_root_ind1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
</record> </record>
<record model="account.account.template" id="IA_AC0"> <record model="account.account.template" id="IA_AC0">
@ -76,131 +76,119 @@
<field name="code">IA_AC0</field> <field name="code">IA_AC0</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_root_ind1"/> <field name="user_type" ref="account_type_root_ind1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="root"/> <field name="parent_id" ref="root"/>
</record> </record>
<record model="account.account.template" id="IA_AC01"> <record model="account.account.template" id="IA_AC01">
<field name="name">Assets</field> <field name="name">Assets</field>
<field name="code">IA_AC01</field> <field name="code">IA_AC01</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_asset_view"/> <field name="user_type" ref="account_type_asset_view"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC0"/> <field name="parent_id" ref="IA_AC0"/>
</record> </record>
<record model="account.account.template" id="IA_AC011"> <record model="account.account.template" id="IA_AC011">
<field name="name">Current Assets</field> <field name="name">Current Assets</field>
<field name="code">IA_AC011</field> <field name="code">IA_AC011</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC01"/> <field name="parent_id" ref="IA_AC01"/>
</record> </record>
<record model="account.account.template" id="IA_AC0111"> <record model="account.account.template" id="IA_AC0111">
<field name="name">Bank Account</field> <field name="name">Bank Account</field>
<field name="code">IA_AC0111</field> <field name="code">IA_AC0111</field>
<field name="type">receivable</field> <field name="type">receivable</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC011"/> <field name="parent_id" ref="IA_AC011"/>
</record> </record>
<record model="account.account.template" id="IA_AC0112"> <record model="account.account.template" id="IA_AC0112">
<field name="name">Cash In Hand Account</field> <field name="name">Cash In Hand Account</field>
<field name="code">IA_AC0112</field> <field name="code">IA_AC0112</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC011"/> <field name="parent_id" ref="IA_AC011"/>
</record> </record>
<record model="account.account.template" id="IA_AC01121"> <record model="account.account.template" id="IA_AC01121">
<field name="name">Cash Account</field> <field name="name">Cash Account</field>
<field name="code">IA_AC01121</field> <field name="code">IA_AC01121</field>
<field name="type">receivable</field> <field name="type">receivable</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC0112"/> <field name="parent_id" ref="IA_AC0112"/>
</record> </record>
<record model="account.account.template" id="IA_AC0113"> <record model="account.account.template" id="IA_AC0113">
<field name="name">Deposit Account</field> <field name="name">Deposit Account</field>
<field name="code">IA_AC0113</field> <field name="code">IA_AC0113</field>
<field name="type">receivable</field> <field name="type">receivable</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC011"/> <field name="parent_id" ref="IA_AC011"/>
</record> </record>
<record model="account.account.template" id="IA_AC0114"> <record model="account.account.template" id="IA_AC0114">
<field name="name">Loan &amp; Advance(Assets) Account</field> <field name="name">Loan &amp; Advance(Assets) Account</field>
<field name="code">IA_AC0114</field> <field name="code">IA_AC0114</field>
<field name="type">receivable</field> <field name="type">receivable</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC011"/> <field name="parent_id" ref="IA_AC011"/>
</record> </record>
<!-- <record model="account.account.template" id="IA_AC0115">-->
<!-- <field name="name">Stock In Hand Account</field>-->
<!-- <field name="code">IA_AC0115</field>-->
<!-- <field name="type">receivable</field>-->
<!-- <field name="user_type" ref="account_type_asset1"/>
-->
<!-- <field name="reconcile" eval="False"/>-->
<!-- -->
<!-- <field name="parent_id" ref="IA_AC011"/>-->
<!-- </record>-->
<record model="account.account.template" id="IA_AC0116"> <record model="account.account.template" id="IA_AC0116">
<field name="name">Total Sundry Debtors Account</field> <field name="name">Total Sundry Debtors Account</field>
<field name="code">IA_AC0116</field> <field name="code">IA_AC0116</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC011"/> <field name="parent_id" ref="IA_AC011"/>
</record> </record>
<record model="account.account.template" id="IA_AC01161"> <record model="account.account.template" id="IA_AC01161">
<field name="name">Sundry Debtors Account</field> <field name="name">Sundry Debtors Account</field>
<field name="code">IA_AC01161</field> <field name="code">IA_AC01161</field>
<field name="type">receivable</field> <field name="type">receivable</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC0116"/> <field name="parent_id" ref="IA_AC0116"/>
</record> </record>
<record model="account.account.template" id="IA_AC012"> <record model="account.account.template" id="IA_AC012">
<field name="name">Fixed Assets</field> <field name="name">Fixed Assets</field>
<field name="code">IA_AC012</field> <field name="code">IA_AC012</field>
<field name="type">receivable</field> <field name="type">receivable</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC01"/> <field name="parent_id" ref="IA_AC01"/>
</record> </record>
@ -209,9 +197,9 @@
<field name="code">IA_AC013</field> <field name="code">IA_AC013</field>
<field name="type">receivable</field> <field name="type">receivable</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC01"/> <field name="parent_id" ref="IA_AC01"/>
</record> </record>
@ -220,54 +208,54 @@
<field name="code">IA_AC014</field> <field name="code">IA_AC014</field>
<field name="type">receivable</field> <field name="type">receivable</field>
<field name="user_type" ref="account_type_asset1"/> <field name="user_type" ref="account_type_asset1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC01"/> <field name="parent_id" ref="IA_AC01"/>
</record> </record>
<record model="account.account.template" id="IA_AC02"> <record model="account.account.template" id="IA_AC02">
<field name="name">Liabilities</field> <field name="name">Liabilities</field>
<field name="code">IA_AC02</field> <field name="code">IA_AC02</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_liability_view"/> <field name="user_type" ref="account_type_liability_view"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC0"/> <field name="parent_id" ref="IA_AC0"/>
</record> </record>
<record model="account.account.template" id="IA_AC021"> <record model="account.account.template" id="IA_AC021">
<field name="name">Current Liabilities</field> <field name="name">Current Liabilities</field>
<field name="code">IA_AC021</field> <field name="code">IA_AC021</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC02"/> <field name="parent_id" ref="IA_AC02"/>
</record> </record>
<record model="account.account.template" id="IA_AC0211"> <record model="account.account.template" id="IA_AC0211">
<field name="name">Duties &amp; Taxes</field> <field name="name">Duties &amp; Taxes</field>
<field name="code">IA_AC0211</field> <field name="code">IA_AC0211</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC021"/> <field name="parent_id" ref="IA_AC021"/>
</record> </record>
<record model="account.account.template" id="IA_AC0212"> <record model="account.account.template" id="IA_AC0212">
<field name="name">Provision</field> <field name="name">Provision</field>
<field name="code">IA_AC0212</field> <field name="code">IA_AC0212</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC021"/> <field name="parent_id" ref="IA_AC021"/>
</record> </record>
@ -276,20 +264,20 @@
<field name="code">IA_AC0213</field> <field name="code">IA_AC0213</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC021"/> <field name="parent_id" ref="IA_AC021"/>
</record> </record>
<record model="account.account.template" id="IA_AC02131"> <record model="account.account.template" id="IA_AC02131">
<field name="name">Sundry Creditors</field> <field name="name">Sundry Creditors</field>
<field name="code">IA_AC02131</field> <field name="code">IA_AC02131</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC0213"/> <field name="parent_id" ref="IA_AC0213"/>
</record> </record>
@ -298,154 +286,154 @@
<field name="code">IA_AC022</field> <field name="code">IA_AC022</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC02"/> <field name="parent_id" ref="IA_AC02"/>
</record> </record>
<record model="account.account.template" id="IA_AC023"> <record model="account.account.template" id="IA_AC023">
<field name="name">Share Holder/Owner Fund</field> <field name="name">Share Holder/Owner Fund</field>
<field name="code">IA_AC023</field> <field name="code">IA_AC023</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC02"/> <field name="parent_id" ref="IA_AC02"/>
</record> </record>
<record model="account.account.template" id="IA_AC0231"> <record model="account.account.template" id="IA_AC0231">
<field name="name">Capital Account</field> <field name="name">Capital Account</field>
<field name="code">IA_AC0231</field> <field name="code">IA_AC0231</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC023"/> <field name="parent_id" ref="IA_AC023"/>
</record> </record>
<record model="account.account.template" id="IA_AC0232"> <record model="account.account.template" id="IA_AC0232">
<field name="name">Reserve and Surplus Account</field> <field name="name">Reserve and Surplus Account</field>
<field name="code">IA_AC0232</field> <field name="code">IA_AC0232</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC023"/> <field name="parent_id" ref="IA_AC023"/>
</record> </record>
<record model="account.account.template" id="IA_AC024"> <record model="account.account.template" id="IA_AC024">
<field name="name">Loan(Liability) Account</field> <field name="name">Loan(Liability) Account</field>
<field name="code">IA_AC024</field> <field name="code">IA_AC024</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC02"/> <field name="parent_id" ref="IA_AC02"/>
</record> </record>
<record model="account.account.template" id="IA_AC0241"> <record model="account.account.template" id="IA_AC0241">
<field name="name">Bank OD Account</field> <field name="name">Bank OD Account</field>
<field name="code">IA_AC0241</field> <field name="code">IA_AC0241</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC024"/> <field name="parent_id" ref="IA_AC024"/>
</record> </record>
<record model="account.account.template" id="IA_AC0242"> <record model="account.account.template" id="IA_AC0242">
<field name="name">Secured Loan Account</field> <field name="name">Secured Loan Account</field>
<field name="code">IA_AC0242</field> <field name="code">IA_AC0242</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC024"/> <field name="parent_id" ref="IA_AC024"/>
</record> </record>
<record model="account.account.template" id="IA_AC0243"> <record model="account.account.template" id="IA_AC0243">
<field name="name">Unsecured Loan Account</field> <field name="name">Unsecured Loan Account</field>
<field name="code">IA_AC0243</field> <field name="code">IA_AC0243</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC024"/> <field name="parent_id" ref="IA_AC024"/>
</record> </record>
<record model="account.account.template" id="IA_AC025"> <record model="account.account.template" id="IA_AC025">
<field name="name">Suspense Account</field> <field name="name">Suspense Account</field>
<field name="code">IA_AC025</field> <field name="code">IA_AC025</field>
<field name="type">payable</field> <field name="type">payable</field>
<field name="user_type" ref="account_type_liability1"/> <field name="user_type" ref="account_type_liability1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC02"/> <field name="parent_id" ref="IA_AC02"/>
</record> </record>
<record model="account.account.template" id="IA_AC1"> <record model="account.account.template" id="IA_AC1">
<field name="name">Profit And Loss Account</field> <field name="name">Profit And Loss Account</field>
<field name="code">IA_AC1</field> <field name="code">IA_AC1</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_root_ind1"/> <field name="user_type" ref="account_type_root_ind1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="root"/> <field name="parent_id" ref="root"/>
</record> </record>
<record model="account.account.template" id="IA_AC11"> <record model="account.account.template" id="IA_AC11">
<field name="name">Expense</field> <field name="name">Expense</field>
<field name="code">IA_AC11</field> <field name="code">IA_AC11</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_expense_view"/> <field name="user_type" ref="account_type_expense_view"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC1"/> <field name="parent_id" ref="IA_AC1"/>
</record> </record>
<record model="account.account.template" id="IA_AC111"> <record model="account.account.template" id="IA_AC111">
<field name="name">Direct Expenses</field> <field name="name">Direct Expenses</field>
<field name="code">IA_AC111</field> <field name="code">IA_AC111</field>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_expense1"/> <field name="user_type" ref="account_type_expense1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC11"/> <field name="parent_id" ref="IA_AC11"/>
</record> </record>
<record model="account.account.template" id="IA_AC112"> <record model="account.account.template" id="IA_AC112">
<field name="name">Indirect Expenses</field> <field name="name">Indirect Expenses</field>
<field name="code">IA_AC112</field> <field name="code">IA_AC112</field>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_expense1"/> <field name="user_type" ref="account_type_expense1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC11"/> <field name="parent_id" ref="IA_AC11"/>
</record> </record>
<record model="account.account.template" id="IA_AC113"> <record model="account.account.template" id="IA_AC113">
<field name="name">Purchase</field> <field name="name">Purchase</field>
<field name="code">IA_AC113</field> <field name="code">IA_AC113</field>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_expense1"/> <field name="user_type" ref="account_type_expense1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC11"/> <field name="parent_id" ref="IA_AC11"/>
</record> </record>
<record model="account.account.template" id="IA_AC114"> <record model="account.account.template" id="IA_AC114">
@ -453,54 +441,54 @@
<field name="code">IA_AC114</field> <field name="code">IA_AC114</field>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_expense1"/> <field name="user_type" ref="account_type_expense1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC11"/> <field name="parent_id" ref="IA_AC11"/>
</record> </record>
<record model="account.account.template" id="IA_AC12"> <record model="account.account.template" id="IA_AC12">
<field name="name">Income</field> <field name="name">Income</field>
<field name="code">IA_AC12</field> <field name="code">IA_AC12</field>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_income_view"/> <field name="user_type" ref="account_type_income_view"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC1"/> <field name="parent_id" ref="IA_AC1"/>
</record> </record>
<record model="account.account.template" id="IA_AC121"> <record model="account.account.template" id="IA_AC121">
<field name="name">Direct Incomes</field> <field name="name">Direct Incomes</field>
<field name="code">IA_AC121</field> <field name="code">IA_AC121</field>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_income1"/> <field name="user_type" ref="account_type_income1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC12"/> <field name="parent_id" ref="IA_AC12"/>
</record> </record>
<record model="account.account.template" id="IA_AC122"> <record model="account.account.template" id="IA_AC122">
<field name="name">Indirect Incomes</field> <field name="name">Indirect Incomes</field>
<field name="code">IA_AC122</field> <field name="code">IA_AC122</field>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_income1"/> <field name="user_type" ref="account_type_income1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC12"/> <field name="parent_id" ref="IA_AC12"/>
</record> </record>
<record model="account.account.template" id="IA_AC123"> <record model="account.account.template" id="IA_AC123">
<field name="name">Sales Account</field> <field name="name">Sales Account</field>
<field name="code">IA_AC123</field> <field name="code">IA_AC123</field>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_income1"/> <field name="user_type" ref="account_type_income1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC12"/> <field name="parent_id" ref="IA_AC12"/>
</record> </record>
<record model="account.account.template" id="IA_AC124"> <record model="account.account.template" id="IA_AC124">
@ -508,52 +496,52 @@
<field name="code">IA_AC124</field> <field name="code">IA_AC124</field>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_income1"/> <field name="user_type" ref="account_type_income1"/>
<field name="reconcile" eval="False"/> <field name="reconcile" eval="False"/>
<field name="parent_id" ref="IA_AC12"/> <field name="parent_id" ref="IA_AC12"/>
</record> </record>
<!-- Tax detail --> <!-- Tax detail -->
<record model="account.tax.code.template" id="vat_code_tax1"> <record model="account.tax.code.template" id="vat_code_tax1">
<field name="name">Tax</field> <field name="name">Tax</field>
</record> </record>
<record model="account.tax.code.template" id="vat_code_balance_net"> <record model="account.tax.code.template" id="vat_code_balance_net">
<field name="name">Tax Balance to Pay</field> <field name="name">Tax Balance to Pay</field>
<field name="parent_id" ref="vat_code_tax1"/> <field name="parent_id" ref="vat_code_tax1"/>
</record> </record>
<record model="account.tax.code.template" id="vat_code_due_tva"> <record model="account.tax.code.template" id="vat_code_due_tva">
<field name="name">Tax Due (Tax to pay)</field> <field name="name">Tax Due (Tax to pay)</field>
<field name="parent_id" ref="vat_code_balance_net"/> <field name="parent_id" ref="vat_code_balance_net"/>
</record> </record>
<record model="account.tax.code.template" id="vat_code_payable"> <record model="account.tax.code.template" id="vat_code_payable">
<field name="name">Tax Payable</field> <field name="name">Tax Payable</field>
<field name="parent_id" ref="vat_code_balance_net"/> <field name="parent_id" ref="vat_code_balance_net"/>
</record> </record>
<record model="account.tax.code.template" id="vat_code_base_net"> <record model="account.tax.code.template" id="vat_code_base_net">
<field name="name">Tax Bases</field> <field name="name">Tax Bases</field>
<field name="parent_id" ref="vat_code_tax1"/> <field name="parent_id" ref="vat_code_tax1"/>
</record> </record>
<record model="account.tax.code.template" id="vat_code_base_due"> <record model="account.tax.code.template" id="vat_code_base_due">
<field name="name">Base of Taxed Sales</field> <field name="name">Base of Taxed Sales</field>
<field name="parent_id" ref="vat_code_base_net"/> <field name="parent_id" ref="vat_code_base_net"/>
</record> </record>
<record model="account.tax.code.template" id="vat_code_receivable_net"> <record model="account.tax.code.template" id="vat_code_receivable_net">
<field name="name">Base of Taxed Purchases</field> <field name="name">Base of Taxed Purchases</field>
<field name="parent_id" ref="vat_code_base_net"/> <field name="parent_id" ref="vat_code_base_net"/>
</record> </record>
<record id="opening_journal" model="account.journal"> <record id="opening_journal" model="account.journal">
<field name="name">Opening Journal</field> <field name="name">Opening Journal</field>
<field name="code">OPJ</field> <field name="code">OPJ</field>
@ -562,14 +550,14 @@
<field name="sequence_id" ref="account.sequence_journal"/> <field name="sequence_id" ref="account.sequence_journal"/>
<field name="user_id" ref="base.user_root"/> <field name="user_id" ref="base.user_root"/>
</record> </record>
<record id="cose_journal_opening" model="account.analytic.journal"> <record id="cose_journal_opening" model="account.analytic.journal">
<field name="code">OPJ</field> <field name="code">OPJ</field>
<field name="name">Opening Journal</field> <field name="name">Opening Journal</field>
<field name="type">situation</field> <field name="type">situation</field>
</record> </record>
<!-- Chart template --> <!-- Chart template -->
<record id="indian_chart_template" model="account.chart.template"> <record id="indian_chart_template" model="account.chart.template">
<field name="name">India - Chart of Accounts </field> <field name="name">India - Chart of Accounts </field>
@ -581,7 +569,7 @@
<field name="property_account_expense_categ" ref="IA_AC112"/> <field name="property_account_expense_categ" ref="IA_AC112"/>
<field name="property_account_income_categ" ref="IA_AC122"/> <field name="property_account_income_categ" ref="IA_AC122"/>
</record> </record>
</data> </data>
</openerp> </openerp>

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -64,7 +64,7 @@ def extract_keys(lines):
keys = [] keys = []
for line in lines: for line in lines:
if line.startswith('/V'): if line.startswith('/V'):
pass #print 'value',line pass
elif line.startswith('/T'): elif line.startswith('/T'):
key = line[7:-2] key = line[7:-2]
key = ''.join(key.split('\x00')) key = ''.join(key.split('\x00'))
@ -85,7 +85,6 @@ def write_fields(out, fields):
for key in fields: for key in fields:
value = fields[key] value = fields[key]
write_field(out, key, value) write_field(out, key, value)
# write_field(out, key+"a", value) # pour copie-carbone sur autres pages
out.write(TAIL) out.write(TAIL)
def extract_keys_from_pdf(filename): def extract_keys_from_pdf(filename):

View File

@ -47,12 +47,9 @@
'lunch_view.xml', 'lunch_view.xml',
'lunch_report.xml', 'lunch_report.xml',
'report/report_lunch_order_view.xml', 'report/report_lunch_order_view.xml',
#'process/lunch_process.xml'
], ],
"demo_xml": ['lunch_demo.xml', "demo_xml": ['lunch_demo.xml'],
], "test": ['test/test_lunch.yml'],
"test": ['test/test_lunch.yml'
],
"installable": True, "installable": True,
} }

View File

@ -52,7 +52,7 @@ class lunch_product(osv.osv):
_defaults = { _defaults = {
'active': lambda *a : True, 'active': lambda *a : True,
} }
lunch_product() lunch_product()
@ -82,7 +82,7 @@ class lunch_cashbox(osv.osv):
'manager': fields.many2one('res.users', 'Manager'), 'manager': fields.many2one('res.users', 'Manager'),
'name': fields.char('Name', size=30, required=True, unique = True), 'name': fields.char('Name', size=30, required=True, unique = True),
'sum_remain': fields.function(amount_available, method=True, string='Remained Total'), 'sum_remain': fields.function(amount_available, method=True, string='Remained Total'),
} }
lunch_cashbox() lunch_cashbox()
@ -100,10 +100,10 @@ class lunch_cashmove(osv.osv):
'box': fields.many2one('lunch.cashbox', 'Box Name', size=30, required=True), 'box': fields.many2one('lunch.cashbox', 'Box Name', size=30, required=True),
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
'create_date': fields.datetime('Created date', readonly=True), 'create_date': fields.datetime('Created date', readonly=True),
} }
_defaults = { _defaults = {
'active': lambda *a: True, 'active': lambda *a: True,
} }
lunch_cashmove() lunch_cashmove()
@ -215,7 +215,7 @@ class report_lunch_amount(osv.osv):
'user_id': fields.many2one('res.users', 'User Name', readonly=True), 'user_id': fields.many2one('res.users', 'User Name', readonly=True),
'amount': fields.float('Amount', readonly=True, digits=(16, 2)), 'amount': fields.float('Amount', readonly=True, digits=(16, 2)),
'box': fields.many2one('lunch.cashbox', 'Box Name', size=30, readonly=True), 'box': fields.many2one('lunch.cashbox', 'Box Name', size=30, readonly=True),
} }
def init(self, cr): def init(self, cr):

View File

@ -1,6 +1,6 @@
# -*- encoding: utf-8 -*- # -*- encoding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -36,8 +36,8 @@ class order(report_sxw.rml_parse):
super(order, self).__init__(cr, uid, name, context) super(order, self).__init__(cr, uid, name, context)
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'sum_price': self.sum_price, 'sum_price': self.sum_price,
}) })
report_sxw.report_sxw('report.lunch.order', 'lunch.order', report_sxw.report_sxw('report.lunch.order', 'lunch.order',

View File

@ -37,7 +37,7 @@ class report_lunch_order(osv.osv):
'user_id': fields.many2one('res.users', 'User Name'), 'user_id': fields.many2one('res.users', 'User Name'),
'box_name': fields.char('Name', size=30), 'box_name': fields.char('Name', size=30),
'price_total':fields.float('Total Price', readonly=True), 'price_total':fields.float('Total Price', readonly=True),
} }
_order = 'date desc' _order = 'date desc'
def init(self, cr): def init(self, cr):
tools.drop_view_if_exists(cr, 'report_lunch_order') tools.drop_view_if_exists(cr, 'report_lunch_order')

View File

@ -48,12 +48,13 @@ class lunch_cashbox_clean(osv.osv_memory):
and box IN %s" , (tuple(data),)) and box IN %s" , (tuple(data),))
for (user_id, box_id, amount) in res: for (user_id, box_id, amount) in res:
cashmove_ref.create(cr, uid, {'name': 'Summary for user' + str(user_id), cashmove_ref.create(cr, uid, {
'amount': amount, 'name': 'Summary for user' + str(user_id),
'user_cashmove': user_id, 'amount': amount,
'box': box_id, 'user_cashmove': user_id,
'active': True, 'box': box_id,
}) 'active': True,
})
return {} return {}
lunch_cashbox_clean() lunch_cashbox_clean()

View File

@ -29,8 +29,8 @@ class lunch_order_confirm(osv.osv_memory):
_description = "confirm Order" _description = "confirm Order"
_columns = { _columns = {
'confirm_cashbox':fields.many2one('lunch.cashbox', 'Name of box', required=True), 'confirm_cashbox':fields.many2one('lunch.cashbox', 'Name of box', required=True),
} }
def confirm(self, cr, uid, ids, context): def confirm(self, cr, uid, ids, context):
""" """

View File

@ -60,10 +60,10 @@ class mailgate_thread(osv.osv):
default = {} default = {}
default.update({ default.update({
'message_ids': [], 'message_ids': [],
'date_closed': False, 'date_closed': False,
'date_open': False 'date_open': False
}) })
return super(mailgate_thread, self).copy(cr, uid, id, default, context=context) return super(mailgate_thread, self).copy(cr, uid, id, default, context=context)
def message_new(self, cr, uid, msg, context): def message_new(self, cr, uid, msg, context):
@ -134,7 +134,7 @@ class mailgate_thread(osv.osv):
if history: if history:
for att in attach: for att in attach:
attachments.append(att_obj.create(cr, uid, {'name': att[0], 'datas': base64.encodestring(att[1])})) attachments.append(att_obj.create(cr, uid, {'name': att[0], 'datas': base64.encodestring(att[1])}))
for param in (email, email_cc, email_bcc): for param in (email, email_cc, email_bcc):
if isinstance(param, list): if isinstance(param, list):
param = ", ".join(param) param = ", ".join(param)
@ -163,7 +163,7 @@ class mailgate_thread(osv.osv):
mailgate_thread() mailgate_thread()
def format_date_tz(date, tz=None): def format_date_tz(date, tz=None):
if not date: if not date:
return 'n/a' return 'n/a'
format = tools.DEFAULT_SERVER_DATETIME_FORMAT format = tools.DEFAULT_SERVER_DATETIME_FORMAT
return tools.server_to_local_timestamp(date, format, format, tz) return tools.server_to_local_timestamp(date, format, format, tz)
@ -213,7 +213,7 @@ class mailgate_message(osv.osv):
'description': fields.text('Description', readonly=True), 'description': fields.text('Description', readonly=True),
'partner_id': fields.many2one('res.partner', 'Partner', required=False), 'partner_id': fields.many2one('res.partner', 'Partner', required=False),
'attachment_ids': fields.many2many('ir.attachment', 'message_attachment_rel', 'message_id', 'attachment_id', 'Attachments', readonly=True), 'attachment_ids': fields.many2many('ir.attachment', 'message_attachment_rel', 'message_id', 'attachment_id', 'Attachments', readonly=True),
'display_text': fields.function(_get_display_text, method=True, type='text', size="512", string='Display Text'), 'display_text': fields.function(_get_display_text, method=True, type='text', size="512", string='Display Text'),
} }
def init(self, cr): def init(self, cr):
@ -246,7 +246,7 @@ class mailgate_tool(osv.osv_memory):
@param cr: the current row, from the database cursor, @param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks, @param uid: the current users ID for security checks,
@param model: OpenObject Model @param model: OpenObject Model
@param res_ids: Ids of the record of OpenObject model created @param res_ids: Ids of the record of OpenObject model created
@param msg: Email details @param msg: Email details
@param attach: Email attachments @param attach: Email attachments
""" """
@ -256,19 +256,19 @@ class mailgate_tool(osv.osv_memory):
msg_pool = self.pool.get('mailgate.message') msg_pool = self.pool.get('mailgate.message')
for res_id in res_ids: for res_id in res_ids:
msg_data = { msg_data = {
'name': msg.get('subject', 'No subject'), 'name': msg.get('subject', 'No subject'),
'date': msg.get('date'), 'date': msg.get('date'),
'description': msg.get('body', msg.get('from')), 'description': msg.get('body', msg.get('from')),
'history': True, 'history': True,
'res_model': model, 'res_model': model,
'email_cc': msg.get('cc'), 'email_cc': msg.get('cc'),
'email_from': msg.get('from'), 'email_from': msg.get('from'),
'email_to': msg.get('to'), 'email_to': msg.get('to'),
'message_id': msg.get('message-id'), 'message_id': msg.get('message-id'),
'references': msg.get('references') or msg.get('in-reply-to'), 'references': msg.get('references') or msg.get('in-reply-to'),
'res_id': res_id, 'res_id': res_id,
'user_id': uid, 'user_id': uid,
'attachment_ids': [(6, 0, attach)] 'attachment_ids': [(6, 0, attach)]
} }
msg_pool.create(cr, uid, msg_data, context=context) msg_pool.create(cr, uid, msg_data, context=context)
return True return True

View File

@ -6,4 +6,3 @@
</record> </record>
</data> </data>
</openerp> </openerp>
<!--group_marketing_user-->

View File

@ -109,7 +109,7 @@ Normal - the campaign runs normally and automatically sends all emails and repor
'campaign_id', 'Activities'), 'campaign_id', 'Activities'),
'fixed_cost': fields.float('Fixed Cost', help="Fixed cost for the campaign (used for campaign analysis), see also variable cost on activities"), 'fixed_cost': fields.float('Fixed Cost', help="Fixed cost for the campaign (used for campaign analysis), see also variable cost on activities"),
} }
_defaults = { _defaults = {
'state': lambda *a: 'draft', 'state': lambda *a: 'draft',
'mode': lambda *a: 'test', 'mode': lambda *a: 'test',
@ -349,8 +349,6 @@ class marketing_campaign_activity(osv.osv):
'from_ids': fields.one2many('marketing.campaign.transition', 'from_ids': fields.one2many('marketing.campaign.transition',
'activity_to_id', 'activity_to_id',
'Previous Activities'), 'Previous Activities'),
#'subcampaign_id': fields.many2one('marketing.campaign', 'Sub-Campaign',
# domain="[('object_id', '=', object_id)]"),
'variable_cost': fields.float('Variable Cost'), 'variable_cost': fields.float('Variable Cost'),
'revenue': fields.float('Revenue'), 'revenue': fields.float('Revenue'),
'signal': fields.char('Signal', size=128, 'signal': fields.char('Signal', size=128,
@ -382,14 +380,14 @@ class marketing_campaign_activity(osv.osv):
service = netsvc.LocalService('report.%s'%activity.report_id.report_name) service = netsvc.LocalService('report.%s'%activity.report_id.report_name)
(report_data, format) = service.create(cr, uid, [], {}, {}) (report_data, format) = service.create(cr, uid, [], {}, {})
attach_vals = { attach_vals = {
'name': '%s_%s_%s'%(activity.report_id.report_name, 'name': '%s_%s_%s'%(activity.report_id.report_name,
activity.name,workitem.partner_id.name), activity.name,workitem.partner_id.name),
'datas_fname': '%s.%s'%(activity.report_id.report_name, 'datas_fname': '%s.%s'%(activity.report_id.report_name,
activity.report_id.report_type), activity.report_id.report_type),
'parent_id': activity.report_directory_id.id, 'parent_id': activity.report_directory_id.id,
'datas': base64.encodestring(report_data), 'datas': base64.encodestring(report_data),
'file_type': format 'file_type': format
} }
self.pool.get('ir.attachment').create(cr, uid, attach_vals) self.pool.get('ir.attachment').create(cr, uid, attach_vals)
return True return True
@ -430,9 +428,10 @@ class marketing_campaign_transition(osv.osv):
_name = "marketing.campaign.transition" _name = "marketing.campaign.transition"
_description = "Campaign Transition" _description = "Campaign Transition"
_interval_units = [('hours', 'Hour(s)'), ('days', 'Day(s)'), _interval_units = [
('months', 'Month(s)'), ('years','Year(s)')] ('hours', 'Hour(s)'), ('days', 'Day(s)'),
('months', 'Month(s)'), ('years','Year(s)')
]
def _get_name(self, cr, uid, ids, fn, args, context=None): def _get_name(self, cr, uid, ids, fn, args, context=None):
result = dict.fromkeys(ids, False) result = dict.fromkeys(ids, False)
@ -597,7 +596,7 @@ class marketing_campaign_workitem(osv.osv):
} }
wi_id = self.create(cr, uid, values, context=context) wi_id = self.create(cr, uid, values, context=context)
# Now, depending of the trigger and the campaign mode # Now, depending of the trigger and the campaign mode
# we know if must run the newly created workitem. # we know if must run the newly created workitem.
# #
# rows = transition trigger \ colums = campaign mode # rows = transition trigger \ colums = campaign mode
@ -606,7 +605,7 @@ class marketing_campaign_workitem(osv.osv):
# time Y N N N # time Y N N N
# cosmetic N N N N # cosmetic N N N N
# auto Y Y Y Y # auto Y Y Y Y
# #
run = transition.trigger == 'auto' \ run = transition.trigger == 'auto' \
or (transition.trigger == 'time' \ or (transition.trigger == 'time' \
@ -671,8 +670,10 @@ class marketing_campaign_workitem(osv.osv):
} }
elif wi_obj.activity_id.type == 'paper': elif wi_obj.activity_id.type == 'paper':
datas = {'ids': [wi_obj.res_id], datas = {
'model': wi_obj.object_id.model} 'ids': [wi_obj.res_id],
'model': wi_obj.object_id.model
}
res = { res = {
'type' : 'ir.actions.report.xml', 'type' : 'ir.actions.report.xml',
'report_name': wi_obj.activity_id.report_id.report_name, 'report_name': wi_obj.activity_id.report_id.report_name,
@ -689,9 +690,9 @@ class email_template(osv.osv):
_defaults = { _defaults = {
'object_name': lambda obj, cr, uid, context: context.get('object_id',False), 'object_name': lambda obj, cr, uid, context: context.get('object_id',False),
} }
# TODO: add constraint to prevent disabling / disapproving an email account used in a running campaign # TODO: add constraint to prevent disabling / disapproving an email account used in a running campaign
email_template() email_template()
class report_xml(osv.osv): class report_xml(osv.osv):

View File

@ -249,9 +249,6 @@
<field name="report_directory_id" attrs="{'required':[('type','=','paper')]}" /> <field name="report_directory_id" attrs="{'required':[('type','=','paper')]}" />
</group> </group>
<field name="server_action_id" attrs="{'required':[('type','=','action')],'invisible':[('type','!=','action')]}" domain="[('model_id','=',object_id)]" /> <field name="server_action_id" attrs="{'required':[('type','=','action')],'invisible':[('type','!=','action')]}" domain="[('model_id','=',object_id)]" />
<!--
<field name="subcampaign_id" attrs="{'required':[('type','=','subcampaign')], 'invisible':[('type','!=','subcampaign')]}" />
-->
</group> </group>
</group> </group>
<newline/> <newline/>

View File

@ -21,7 +21,7 @@
import tools import tools
from osv import fields, osv from osv import fields, osv
class campaign_analysis(osv.osv): #{{{ class campaign_analysis(osv.osv):
_name = "campaign.analysis" _name = "campaign.analysis"
_description = "Campaign Analysis" _description = "Campaign Analysis"
_auto = False _auto = False
@ -43,22 +43,22 @@ class campaign_analysis(osv.osv): #{{{
return result return result
_columns = { _columns = {
'year': fields.char('Year', size=4, readonly=True), 'year': fields.char('Year', size=4, readonly=True),
'month':fields.selection([('01','January'), ('02','February'), 'month':fields.selection([('01','January'), ('02','February'),
('03','March'), ('04','April'),('05','May'), ('06','June'), ('03','March'), ('04','April'),('05','May'), ('06','June'),
('07','July'), ('08','August'), ('09','September'), ('07','July'), ('08','August'), ('09','September'),
('10','October'), ('11','November'), ('12','December')], ('10','October'), ('11','November'), ('12','December')],
'Month', readonly=True), 'Month', readonly=True),
'date': fields.date('Date', readonly=True), 'date': fields.date('Date', readonly=True),
'campaign_id': fields.many2one('marketing.campaign', 'Campaign', 'campaign_id': fields.many2one('marketing.campaign', 'Campaign',
readonly=True), readonly=True),
'activity_id': fields.many2one('marketing.campaign.activity', 'Activity', 'activity_id': fields.many2one('marketing.campaign.activity', 'Activity',
readonly=True), readonly=True),
'segment_id': fields.many2one('marketing.campaign.segment', 'Segment', 'segment_id': fields.many2one('marketing.campaign.segment', 'Segment',
readonly=True), readonly=True),
'partner_id': fields.many2one('res.partner', 'Partner', readonly=True), 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
'country_id': fields.related('partner_id','address', 'country_id', 'country_id': fields.related('partner_id','address', 'country_id',
type='many2one', relation='res.country',string='Country'), type='many2one', relation='res.country',string='Country'),
'total_cost' : fields.function(_total_cost, string='Cost', method=True, 'total_cost' : fields.function(_total_cost, string='Cost', method=True,
type="float" ), type="float" ),
'revenue': fields.float('Revenue',digits=(16,2),readonly=True), 'revenue': fields.float('Revenue',digits=(16,2),readonly=True),
'count' : fields.integer('# of Actions', readonly=True), 'count' : fields.integer('# of Actions', readonly=True),
@ -89,4 +89,4 @@ class campaign_analysis(osv.osv): #{{{
wi.date::date wi.date::date
) )
""") """)
campaign_analysis() #}}} campaign_analysis()

View File

@ -5,9 +5,6 @@
<record id="base.res_groups_email_template_admin" model="res.groups"> <record id="base.res_groups_email_template_admin" model="res.groups">
<field name="name">Marketing / User</field> <field name="name">Marketing / User</field>
</record> </record>
<!--record id="res_groups_marketing_campaign" model="res.groups">
<field name="name">Marketing / Campaign</field>
</record-->
</data> </data>
</openerp> </openerp>

View File

@ -29,22 +29,22 @@ mailchimp_url = 'http://%s.api.mailchimp.com/1.2'
class mailchimp_account(osv.osv): class mailchimp_account(osv.osv):
_name = "mailchimp.account" _name = "mailchimp.account"
_columns = { _columns = {
'name': fields.char('Account Name', size=64), 'name': fields.char('Account Name', size=64),
'username': fields.char('Username', size=64, required=True), 'username': fields.char('Username', size=64, required=True),
'password': fields.char('Password', size=64, required=True), 'password': fields.char('Password', size=64, required=True),
'apikey': fields.char('API Key', size=128), 'apikey': fields.char('API Key', size=128),
'data_center': fields.selection([('us1', 'US1'), ('us2', 'US2'), 'data_center': fields.selection([('us1', 'US1'), ('us2', 'US2'),
('uk1', 'UK1')], 'Data Center'), ('uk1', 'UK1')], 'Data Center'),
'state': fields.selection([('draft', 'Draft'), ('approved', 'Approved'), 'state': fields.selection([('draft', 'Draft'), ('approved', 'Approved'),
('cancelled', 'Cancelled')], 'State', readonly=True) ('cancelled', 'Cancelled')], 'State', readonly=True)
} }
_defaults = { _defaults = {
'state': lambda *a: 'draft' 'state': lambda *a: 'draft'
} }
def get_response(self, cr, uid, mailchimp_id, method, params={}): def get_response(self, cr, uid, mailchimp_id, method, params={}):
mailchimp_account = self.browse(cr, uid, mailchimp_id) mailchimp_account = self.browse(cr, uid, mailchimp_id)
params['output'] = 'json' params['output'] = 'json'
@ -57,7 +57,7 @@ class mailchimp_account(osv.osv):
params = urllib.urlencode(params, doseq=True) params = urllib.urlencode(params, doseq=True)
response = urllib2.urlopen(url, params) response = urllib2.urlopen(url, params)
return json.loads(response.read()) return json.loads(response.read())
def button_approve(self, cr, uid, ids, context): def button_approve(self, cr, uid, ids, context):
acc_obj = self.browse(cr, uid, ids)[0] acc_obj = self.browse(cr, uid, ids)[0]
vals = {} vals = {}
@ -71,32 +71,34 @@ class mailchimp_account(osv.osv):
vals['apikey'] = response vals['apikey'] = response
vals['state'] = 'approved' vals['state'] = 'approved'
self.write(cr, uid, ids, vals) self.write(cr, uid, ids, vals)
else : else :
raise osv.except_osv('Error!!!', raise osv.except_osv('Error!!!',
"Can't approved accoutnt : %s"%response['error']) "Can't approved accoutnt : %s"%response['error'])
return True return True
def button_cancel(self, cr, uid, ids, context): def button_cancel(self, cr, uid, ids, context):
self.write(cr, uid, ids, {'state': 'cancelled'}) self.write(cr, uid, ids, {'state': 'cancelled'})
return True return True
def add_partner_list(self, cr, uid, account_id, list_id, partner_ids): def add_partner_list(self, cr, uid, account_id, list_id, partner_ids):
vals = {} # just dictionary with partner_id and updated in list or not vals = {} # just dictionary with partner_id and updated in list or not
for partner in self.pool.get('res.partner').browse(cr, uid, partner_ids): for partner in self.pool.get('res.partner').browse(cr, uid, partner_ids):
params = {'id' : list_id, params = {
'id' : list_id,
'email_address' : partner.email, 'email_address' : partner.email,
'email_type':'text', 'email_type':'text',
'merge_vars[FNAME]':partner.name , 'merge_vars[FNAME]':partner.name ,
'merge_vars[date]' : time.strftime('%Y-%m-%d'), 'merge_vars[date]' : time.strftime('%Y-%m-%d'),
'merge_vars[phone]' : partner.phone, 'merge_vars[phone]' : partner.phone,
'merge_vars[website]' : partner.website, 'merge_vars[website]' : partner.website,
'merge_vars[address][country]' : partner.country.code, 'merge_vars[address][country]' : partner.country.code,
'merge_vars[address][city]' : partner.city, 'merge_vars[address][city]' : partner.city,
'double_optin':False} 'double_optin':False
}
vals[partner.id] = self.get_response(cr, uid, account_id, vals[partner.id] = self.get_response(cr, uid, account_id,
'listSubscribe', params) 'listSubscribe', params)
return vals return vals
mailchimp_account() mailchimp_account()
class mailchimp_list(osv.osv_memory): class mailchimp_list(osv.osv_memory):
@ -115,28 +117,28 @@ class marketing_campaign(osv.osv):
_inherit = "marketing.campaign" _inherit = "marketing.campaign"
_columns = { _columns = {
'mailchimp_account_id': fields.many2one( 'mailchimp_account_id': fields.many2one(
'mailchimp.account', 'Account'), 'mailchimp.account', 'Account'),
'mailchimp_campaign': fields.char('campaign', size=64), 'mailchimp_campaign': fields.char('campaign', size=64),
} }
marketing_campaign() marketing_campaign()
class marketing_campaign_activity(osv.osv):
class marketing_campaign_activity(osv.osv):
_inherit = "marketing.campaign.activity" _inherit = "marketing.campaign.activity"
_columns = { _columns = {
'mailchimp_account_id': fields.many2one( 'mailchimp_account_id': fields.many2one(
'mailchimp.account', 'Account'), 'mailchimp.account', 'Account'),
'mailchimp_list': fields.char('List', size=64), 'mailchimp_list': fields.char('List', size=64),
} }
def onchange_mailchimp(self, cr, uid, ids, mailchimp_account_id): def onchange_mailchimp(self, cr, uid, ids, mailchimp_account_id):
if mailchimp_account_id: if mailchimp_account_id:
return {'value':{'mailchimp_list':''}} return {'value':{'mailchimp_list':''}}
return {'value':{}} return {'value':{}}
def onchange_mailchimp_list(self, cr, uid, ids, mailchimp_account_id, def onchange_mailchimp_list(self, cr, uid, ids, mailchimp_account_id,
mailchimp_list): mailchimp_list):
if mailchimp_account_id and mailchimp_list: if mailchimp_account_id and mailchimp_list:
lists = self.pool.get('mailchimp.account').get_response(cr, lists = self.pool.get('mailchimp.account').get_response(cr,
@ -154,7 +156,7 @@ class marketing_campaign_activity(osv.osv):
mc_acc_obj = self.pool.get('mailchimp.account') mc_acc_obj = self.pool.get('mailchimp.account')
lists = mc_acc_obj.get_response(cr, uid, mailchimp_account_id, 'lists') lists = mc_acc_obj.get_response(cr, uid, mailchimp_account_id, 'lists')
list_id = '' list_id = ''
for l in lists : for l in lists :
if l['name'] == list_name: if l['name'] == list_name:
list_id = l['id'] list_id = l['id']
break; break;
@ -163,34 +165,38 @@ class marketing_campaign_activity(osv.osv):
model_obj = self.pool.get(res_model).browse(cr, uid, res_id) model_obj = self.pool.get(res_model).browse(cr, uid, res_id)
params ={} params ={}
if res_model == 'res.partner' : if res_model == 'res.partner' :
params.update({'email_address' : model_obj.email, params.update({
'merge_vars[FNAME]':model_obj.name and model_obj.name or '', 'email_address' : model_obj.email,
'merge_vars[website]' : model_obj.website, 'merge_vars[FNAME]':model_obj.name and model_obj.name or '',
'merge_vars[address][country]' : model_obj.country.code, 'merge_vars[website]' : model_obj.website,
}) 'merge_vars[address][country]' : model_obj.country.code,
})
elif res_model == 'crm.lead' : elif res_model == 'crm.lead' :
params.update({'email_address' : model_obj.email_from, params.update({
'merge_vars[FNAME]':model_obj.partner_name and \ 'email_address' : model_obj.email_from,
model_obj.partner_name or '', 'merge_vars[FNAME]':model_obj.partner_name and \
'merge_vars[address][country]' : model_obj.country_id and \ model_obj.partner_name or '',
model_obj.country_id.code or '' 'merge_vars[address][country]' : model_obj.country_id and \
}) model_obj.country_id.code or ''
})
if params['email_address'] : if params['email_address'] :
user = mc_acc_obj.get_response(cr, uid, mailchimp_account_id, user = mc_acc_obj.get_response(cr, uid, mailchimp_account_id,
'listMemberInfo', 'listMemberInfo', {
{'id' : list_id, 'id' : list_id,
'email_address': params['email_address']}) 'email_address': params['email_address']
# if there s no user with the specify email it will return error code })
# if there s no user with the specify email it will return error code
# and thus we add that user otherwise user is alredy subscribe and there # and thus we add that user otherwise user is alredy subscribe and there
# is no need to subscribe user again # is no need to subscribe user again
if 'error' in user: if 'error' in user:
params.update({'id' : list_id, params.update({
'id' : list_id,
'email_type':'text', 'email_type':'text',
'double_optin':False, 'double_optin':False,
'merge_vars[date]' : time.strftime('%Y-%m-%d'), 'merge_vars[date]' : time.strftime('%Y-%m-%d'),
'merge_vars[address][city]' : model_obj.city and model_obj.city or '', 'merge_vars[address][city]' : model_obj.city and model_obj.city or '',
'merge_vars[phone]' : model_obj.phone and model_obj.phone or '', 'merge_vars[phone]' : model_obj.phone and model_obj.phone or '',
}) })
mc_acc_obj.get_response(cr, uid, mailchimp_account_id, 'listSubscribe', params) mc_acc_obj.get_response(cr, uid, mailchimp_account_id, 'listSubscribe', params)
# TODO handle mailchimp error # TODO handle mailchimp error
return True return True

View File

@ -8,4 +8,3 @@
</data> </data>
</openerp> </openerp>
<!--group_marketing_user-->

View File

@ -38,20 +38,17 @@ class create_list(osv.osv_memory):
'Partner'), 'Partner'),
} }
def onchange_mailchimp_account_id(self, cr, uid, ids, mailchimp_account_id, def onchange_mailchimp_account_id(self, cr, uid, ids, mailchimp_account_id,
action): action):
print mailchimp_account_id,action, return {'value':{}}
return {'value':{}}
def create_list(self, cr, uid, ids, context=None): def create_list(self, cr, uid, ids, context=None):
create_list_obj = self.browse(cr, uid, ids[0]) create_list_obj = self.browse(cr, uid, ids[0])
print create_list_obj.id
mailchimp_account_obj = self.pool.get('mailchimp.account') mailchimp_account_obj = self.pool.get('mailchimp.account')
account_id = create_list_obj.mailchimp_account_id account_id = create_list_obj.mailchimp_account_id
lists = mailchimp_account_obj.get_response(cr, uid, account_id.id, 'lists') lists = mailchimp_account_obj.get_response(cr, uid, account_id.id, 'lists')
lists = dict([(l['name'],l['id']) for l in lists]) lists = dict([(l['name'],l['id']) for l in lists])
print lists
if create_list_obj.list_name not in lists.keys(): if create_list_obj.list_name not in lists.keys():
raise osv.except_osv(_('UserError'), raise osv.except_osv(_('UserError'),
_('There is no list define in account %s') % (account_id.name)) _('There is no list define in account %s') % (account_id.name))

View File

@ -11,9 +11,6 @@
<newline/> <newline/>
<separator string="Partner" colspan="4"/> <separator string="Partner" colspan="4"/>
<field name="partner_ids" nolabel="1" colspan="4"/> <field name="partner_ids" nolabel="1" colspan="4"/>
<!--group ">
<field name="mailchimp_list_id" />
</group-->
<group col="4" colspan="4"> <group col="4" colspan="4">
<button special="cancel" string="Cancel" icon="gtk-cancel"/> <button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="create_list" string="Update" type="object" icon="gtk-ok"/> <button name="create_list" string="Update" type="object" icon="gtk-ok"/>

View File

@ -164,18 +164,4 @@ result = price_unit * 0.10&quot;" name="python_compute"/>
<field name="account_id" ref="account.a_sale"/> <field name="account_id" ref="account.a_sale"/>
</record> </record>
</data> </data>
<!--
<data>
<workflow action="invoice_open" model="account.invoice" ref="account_invoice_2"/>
</data>
<data>
<workflow action="invoice_open" model="account.invoice" ref="account_invoice_1"/>
</data>
<data>
<workflow action="invoice_open" model="account.invoice" ref="account_invoice_0"/>
</data>
-->
</openerp> </openerp>

View File

@ -37,14 +37,14 @@ STATE = [
] ]
STATE_PRIOR = { STATE_PRIOR = {
'none' : 0, 'none' : 0,
'canceled' : 1, 'canceled' : 1,
'old' : 2, 'old' : 2,
'waiting' : 3, 'waiting' : 3,
'invoiced' : 4, 'invoiced' : 4,
'free' : 6, 'free' : 6,
'paid' : 7 'paid' : 7
} }
class membership_line(osv.osv): class membership_line(osv.osv):
'''Member line''' '''Member line'''
@ -81,7 +81,7 @@ class membership_line(osv.osv):
@param ids: List of Membership Line IDs @param ids: List of Membership Line IDs
@param name: Field Name @param name: Field Name
@param context: A standard dictionary for contextual values @param context: A standard dictionary for contextual values
@param return: Dictionary of state Value @param return: Dictionary of state Value
""" """
res = {} res = {}
for line in self.browse(cr, uid, ids): for line in self.browse(cr, uid, ids):
@ -124,21 +124,21 @@ class membership_line(osv.osv):
_description = __doc__ _description = __doc__
_name = 'membership.membership_line' _name = 'membership.membership_line'
_columns = { _columns = {
'partner': fields.many2one('res.partner', 'Partner', ondelete='cascade', select=1), 'partner': fields.many2one('res.partner', 'Partner', ondelete='cascade', select=1),
'membership_id': fields.many2one('product.product', string="Membership", required=True), 'membership_id': fields.many2one('product.product', string="Membership", required=True),
'date_from': fields.date('From', readonly=True), 'date_from': fields.date('From', readonly=True),
'date_to': fields.date('To', readonly=True), 'date_to': fields.date('To', readonly=True),
'date_cancel' : fields.date('Cancel date'), 'date_cancel' : fields.date('Cancel date'),
'date': fields.date('Join Date'), 'date': fields.date('Join Date'),
'member_price':fields.float('Member Price', digits_compute= dp.get_precision('Sale Price'), required=True), 'member_price':fields.float('Member Price', digits_compute= dp.get_precision('Sale Price'), required=True),
'account_invoice_line': fields.many2one('account.invoice.line', 'Account Invoice line', readonly=True), 'account_invoice_line': fields.many2one('account.invoice.line', 'Account Invoice line', readonly=True),
'account_invoice_id': fields.related('account_invoice_line', 'invoice_id', type='many2one', relation='account.invoice', string='Invoice', readonly=True), 'account_invoice_id': fields.related('account_invoice_line', 'invoice_id', type='many2one', relation='account.invoice', string='Invoice', readonly=True),
'state': fields.function(_state, method=True, string='State', type='selection', selection=STATE), 'state': fields.function(_state, method=True, string='State', type='selection', selection=STATE),
} }
_rec_name = 'partner' _rec_name = 'partner'
_order = 'id desc' _order = 'id desc'
_constraints = [ _constraints = [
(_check_membership_date, 'Error, this membership product is out of date', []) (_check_membership_date, 'Error, this membership product is out of date', [])
] ]
membership_line() membership_line()
@ -182,7 +182,7 @@ class Partner(osv.osv):
@param ids: List of Partner IDs @param ids: List of Partner IDs
@param name: Field Name @param name: Field Name
@param context: A standard dictionary for contextual values @param context: A standard dictionary for contextual values
@param return: Dictionary of Membership state Value @param return: Dictionary of Membership state Value
""" """
res = {} res = {}
for id in ids: for id in ids:
@ -239,28 +239,28 @@ class Partner(osv.osv):
res_state = self._membership_state(cr, uid, [partner_data.associate_member.id], name, args, context) res_state = self._membership_state(cr, uid, [partner_data.associate_member.id], name, args, context)
res[id] = res_state[partner_data.associate_member.id] res[id] = res_state[partner_data.associate_member.id]
return res return res
def _membership_date(self, cr, uid, ids, name, args, context=None): def _membership_date(self, cr, uid, ids, name, args, context=None):
"""Return date of membership""" """Return date of membership"""
name = name[0] name = name[0]
res = {} res = {}
member_line_obj = self.pool.get('membership.membership_line') member_line_obj = self.pool.get('membership.membership_line')
for partner in self.browse(cr, uid, ids): for partner in self.browse(cr, uid, ids):
if partner.associate_member: if partner.associate_member:
partner_id = partner.associate_member.id partner_id = partner.associate_member.id
else: else:
partner_id = partner.id partner_id = partner.id
res[partner.id]={ res[partner.id] = {
'membership_start': False, 'membership_start': False,
'membership_stop': False, 'membership_stop': False,
'membership_cancel': False 'membership_cancel': False
} }
if name == 'membership_start': if name == 'membership_start':
line_id = member_line_obj.search(cr, uid, [('partner', '=', partner_id)], line_id = member_line_obj.search(cr, uid, [('partner', '=', partner_id)],
limit=1, order='date_from') limit=1, order='date_from')
@ -268,13 +268,13 @@ class Partner(osv.osv):
res[partner.id]['membership_start'] = member_line_obj.read(cr, uid, line_id[0], res[partner.id]['membership_start'] = member_line_obj.read(cr, uid, line_id[0],
['date_from'])['date_from'] ['date_from'])['date_from']
if name == 'membership_stop': if name == 'membership_stop':
line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id)], line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id)],
limit=1, order='date_to desc') limit=1, order='date_to desc')
if line_id1: if line_id1:
res[partner.id]['membership_stop'] = member_line_obj.read(cr, uid, line_id1[0], res[partner.id]['membership_stop'] = member_line_obj.read(cr, uid, line_id1[0],
['date_to'])['date_to'] ['date_to'])['date_to']
if name == 'membership_cancel': if name == 'membership_cancel':
if partner.membership_state == 'canceled': if partner.membership_state == 'canceled':
line_id2 = member_line_obj.search(cr, uid, [('partner', '=', partner.id)],limit=1, order='date_cancel') line_id2 = member_line_obj.search(cr, uid, [('partner', '=', partner.id)],limit=1, order='date_cancel')
if line_id2: if line_id2:
@ -366,7 +366,7 @@ class Partner(osv.osv):
default = default.copy() default = default.copy()
default['member_lines'] = [] default['member_lines'] = []
return super(Partner, self).copy(cr, uid, id, default, context) return super(Partner, self).copy(cr, uid, id, default, context)
def create_membership_invoice(self, cr, uid, ids, product_id=None, datas=None, context=None): def create_membership_invoice(self, cr, uid, ids, product_id=None, datas=None, context=None):
""" Create Customer Invoice of Membership for partners. """ Create Customer Invoice of Membership for partners.
@param datas: datas has dictionary value which consist Id of Membership product and Cost Amount of Membership. @param datas: datas has dictionary value which consist Id of Membership product and Cost Amount of Membership.
@ -397,8 +397,8 @@ class Partner(osv.osv):
line_value = { line_value = {
'product_id' : product_id, 'product_id' : product_id,
} }
line_dict = invoice_line_obj.product_id_change(cr, uid, {}, line_dict = invoice_line_obj.product_id_change(cr, uid, {},
product_id, False, quantity, '', 'out_invoice', partner.id, fpos_id, price_unit=amount, context=context) product_id, False, quantity, '', 'out_invoice', partner.id, fpos_id, price_unit=amount, context=context)
line_value.update(line_dict['value']) line_value.update(line_dict['value'])
if line_value.get('invoice_line_tax_id', False): if line_value.get('invoice_line_tax_id', False):
@ -427,7 +427,7 @@ Partner()
class product_template(osv.osv): class product_template(osv.osv):
_inherit = 'product.template' _inherit = 'product.template'
_columns = { _columns = {
'member_price':fields.float('Member Price', digits_compute= dp.get_precision('Sale Price')), 'member_price':fields.float('Member Price', digits_compute= dp.get_precision('Sale Price')),
} }
product_template() product_template()
@ -435,7 +435,7 @@ class Product(osv.osv):
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
model_obj = self.pool.get('ir.model.data') model_obj = self.pool.get('ir.model.data')
if ('product' in context) and (context['product']=='membership_product'): if ('product' in context) and (context['product']=='membership_product'):
model_data_ids_form = model_obj.search(cr,user,[('model','=','ir.ui.view'),('name','in',['membership_products_form','membership_products_tree'])]) model_data_ids_form = model_obj.search(cr,user,[('model','=','ir.ui.view'),('name','in',['membership_products_form','membership_products_tree'])])
resource_id_form = model_obj.read(cr, user, model_data_ids_form, fields=['res_id','name']) resource_id_form = model_obj.read(cr, user, model_data_ids_form, fields=['res_id','name'])
@ -451,15 +451,14 @@ class Product(osv.osv):
'''Product''' '''Product'''
_inherit = 'product.product' _inherit = 'product.product'
_columns = { _columns = {
'membership': fields.boolean('Membership', help='Specify if this product is a membership product'), 'membership': fields.boolean('Membership', help='Specify if this product is a membership product'),
'membership_date_from': fields.date('Date from', help='Active Membership since this date'), 'membership_date_from': fields.date('Date from', help='Active Membership since this date'),
'membership_date_to': fields.date('Date to', help='Expired date of Membership'), 'membership_date_to': fields.date('Date to', help='Expired date of Membership'),
# 'member_price':fields.float('Member Price'), }
}
_defaults = { _defaults = {
'membership': lambda *args: False 'membership': lambda *args: False
} }
Product() Product()
@ -533,7 +532,7 @@ class account_invoice_line(osv.osv):
line = self.browse(cr, uid, result) line = self.browse(cr, uid, result)
member_line_obj = self.pool.get('membership.membership_line') member_line_obj = self.pool.get('membership.membership_line')
if line.invoice_id.type == 'out_invoice': if line.invoice_id.type == 'out_invoice':
ml_ids = member_line_obj.search(cr, uid, [('account_invoice_line','=',line.id)]) ml_ids = member_line_obj.search(cr, uid, [('account_invoice_line','=',line.id)])
if line.product_id and line.product_id.membership and not ml_ids: if line.product_id and line.product_id.membership and not ml_ids:
# Product line is a membership product # Product line is a membership product
@ -542,14 +541,14 @@ class account_invoice_line(osv.osv):
if line.invoice_id.date_invoice > date_from and line.invoice_id.date_invoice < date_to: if line.invoice_id.date_invoice > date_from and line.invoice_id.date_invoice < date_to:
date_from = line.invoice_id.date_invoice date_from = line.invoice_id.date_invoice
line_id = member_line_obj.create(cr, uid, { line_id = member_line_obj.create(cr, uid, {
'partner': line.invoice_id.partner_id and line.invoice_id.partner_id.id or False, 'partner': line.invoice_id.partner_id and line.invoice_id.partner_id.id or False,
'membership_id': line.product_id.id, 'membership_id': line.product_id.id,
'member_price': line.price_unit, 'member_price': line.price_unit,
'date': time.strftime('%Y-%m-%d'), 'date': time.strftime('%Y-%m-%d'),
'date_from': date_from, 'date_from': date_from,
'date_to': date_to, 'date_to': date_to,
'account_invoice_line': line.id, 'account_invoice_line': line.id,
}) })
return result return result
account_invoice_line() account_invoice_line()

View File

@ -28,14 +28,14 @@
<field name="model">product.product</field> <field name="model">product.product</field>
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Membership products"> <form string="Membership products">
<field name="name"/> <field name="name"/>
<field name="default_code"/> <field name="default_code"/>
<field name="type"/> <field name="type"/>
<field name="categ_id"/> <field name="categ_id"/>
<field name="membership_date_from" required="1"/> <field name="membership_date_from" required="1"/>
<field name="membership_date_to" required="1"/> <field name="membership_date_to" required="1"/>
<field name="list_price" string="Membership Fee"/> <field name="list_price" string="Membership Fee"/>
<separator colspan="4" string="Customer Taxes:"/> <separator colspan="4" string="Customer Taxes:"/>
<field name="taxes_id" colspan="4" nolabel="1"/> <field name="taxes_id" colspan="4" nolabel="1"/>
</form> </form>
@ -84,9 +84,9 @@
<menuitem name="Memberships" parent="menu_membership" <menuitem name="Memberships" parent="menu_membership"
id="menu_membership_products" id="menu_membership_products"
action="action_membership_products" sequence="1"/> action="action_membership_products" sequence="1"/>
@ -167,16 +167,6 @@
<menuitem name="Members" parent="menu_membership" id="menu_members" sequence="2" action="action_membership_members"/> <menuitem name="Members" parent="menu_membership" id="menu_members" sequence="2" action="action_membership_members"/>
<!-- PARTNERS --> <!-- PARTNERS -->
<!--
<wizard
string="Invoice Membership"
model="res.partner"
name="wizard_invoice_membership"
id="wizard_invoice_membership"
/>
-->
<record model="ir.ui.view" id="view_partner_tree"> <record model="ir.ui.view" id="view_partner_tree">
<field name="name">res.partner.tree.form.inherit</field> <field name="name">res.partner.tree.form.inherit</field>
@ -203,13 +193,13 @@
<button name="%(action_membership_invoice_view)d" type="action" string="Join Membership" icon="gtk-apply"/> <button name="%(action_membership_invoice_view)d" type="action" string="Join Membership" icon="gtk-apply"/>
<field colspan="4" name="associate_member" attrs="{'invisible':[('membership_state', '!=', 'none')], 'readonly':[('free_member','=',True)]}"/> <field colspan="4" name="associate_member" attrs="{'invisible':[('membership_state', '!=', 'none')], 'readonly':[('free_member','=',True)]}"/>
<field colspan="4" name="membership_state"/> <field colspan="4" name="membership_state"/>
</group> </group>
</group> </group>
<group colspan="2" col="2"> <group colspan="2" col="2">
<field name="membership_start"/> <field name="membership_start"/>
<field name="membership_stop"/> <field name="membership_stop"/>
<field name="membership_cancel"/> <field name="membership_cancel"/>
</group> </group>
<field name="member_lines" nolabel="1" colspan="4" readonly="1"> <field name="member_lines" nolabel="1" colspan="4" readonly="1">
<tree string="Memberships"> <tree string="Memberships">
<field name="date"/> <field name="date"/>
@ -219,14 +209,14 @@
<field name="state"/> <field name="state"/>
</tree> </tree>
<form string="Memberships"> <form string="Memberships">
<field name="date"/> <field name="date"/>
<field name="member_price"/> <field name="member_price"/>
<field name="membership_id"/> <field name="membership_id"/>
<field name="account_invoice_id"/> <field name="account_invoice_id"/>
<field name="state" colspan="4"/> <field name="state" colspan="4"/>
</form> </form>
</field> </field>
</page> </page>
</notebook> </notebook>
</field> </field>
@ -234,7 +224,7 @@
<!-- MEMBERSHIP/REPORTING --> <!-- MEMBERSHIP/REPORTING -->
<menuitem name="Reporting" id="base.menu_report_association" parent="base.menu_association" sequence="20"/> <menuitem name="Reporting" id="base.menu_report_association" parent="base.menu_association" sequence="20"/>
<!-- View for product.product object inherited from product module................ --> <!-- View for product.product object inherited from product module................ -->
<record model="ir.ui.view" id="view_product_form_inherit1"> <record model="ir.ui.view" id="view_product_form_inherit1">
<field name="name">product.normal.form</field> <field name="name">product.normal.form</field>

View File

@ -70,7 +70,6 @@
'wizard/mrp_price_view.xml', 'wizard/mrp_price_view.xml',
'wizard/mrp_workcenter_load_view.xml', 'wizard/mrp_workcenter_load_view.xml',
'wizard/mrp_change_standard_price_view.xml', 'wizard/mrp_change_standard_price_view.xml',
# 'wizard/mrp_track_prod_view.xml',
'mrp_view.xml', 'mrp_view.xml',
'mrp_report.xml', 'mrp_report.xml',
'company_view.xml', 'company_view.xml',
@ -84,7 +83,10 @@
], ],
'demo_xml': ['mrp_demo.xml', 'board_manufacturing_demo.xml'], 'demo_xml': [
'mrp_demo.xml',
'board_manufacturing_demo.xml'
],
'test': [ 'test': [
'test/mrp_packs.yml', 'test/mrp_packs.yml',
'test/mrp_phantom_bom.yml', 'test/mrp_phantom_bom.yml',

View File

@ -1,13 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <openerp>
<data noupdate="1"> <data noupdate="1">
<!-- <record id="sc_manufacturing_dash" model="ir.ui.view_sc">
<field name="name">Production dashboard</field>
<field name="user_id" ref="base.user_root"/>
<field name="resource">ir.ui.menu</field>
<field name="sequence">4</field>
<field name="res_id" ref="menu_board_manufacturing"/>
</record> -->
<record id="base.user_root" model="res.users"> <record id="base.user_root" model="res.users">
<field name="action_id" ref="open_board_manufacturing"/> <field name="action_id" ref="open_board_manufacturing"/>
</record> </record>

View File

@ -7,7 +7,6 @@
<menuitem id="menu_mrp_reordering" name="Automatic Procurements" parent="stock.menu_stock_root" sequence="5"/> <menuitem id="menu_mrp_reordering" name="Automatic Procurements" parent="stock.menu_stock_root" sequence="5"/>
<menuitem id="menu_mrp_manufacturing" name="Manufacturing" parent="base.menu_mrp_root" sequence="1"/> <menuitem id="menu_mrp_manufacturing" name="Manufacturing" parent="base.menu_mrp_root" sequence="1"/>
<!-- <menuitem name="Control" id="menu_mrp_control" parent="base.menu_mrp_root" sequence="3" />-->
<menuitem name="Master Data" <menuitem name="Master Data"
id="menu_mrp_bom" id="menu_mrp_bom"
parent="base.menu_mrp_root" parent="base.menu_mrp_root"
@ -72,7 +71,7 @@
</form> </form>
</field> </field>
</record> </record>
<record id="view_mrp_property_search" model="ir.ui.view"> <record id="view_mrp_property_search" model="ir.ui.view">
<field name="name">mrp.property.search</field> <field name="name">mrp.property.search</field>
<field name="model">mrp.property</field> <field name="model">mrp.property</field>
@ -91,8 +90,8 @@
</search> </search>
</field> </field>
</record> </record>
<record id="mrp_property_action" model="ir.actions.act_window"> <record id="mrp_property_action" model="ir.actions.act_window">
<field name="name">Properties</field> <field name="name">Properties</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
@ -175,7 +174,7 @@
</form> </form>
</field> </field>
</record> </record>
<!-- Search Views --> <!-- Search Views -->
<record id="view_mrp_workcenter_search" model="ir.ui.view"> <record id="view_mrp_workcenter_search" model="ir.ui.view">
@ -283,8 +282,6 @@
<field name="view_id" ref="mrp_routing_tree_view"/> <field name="view_id" ref="mrp_routing_tree_view"/>
<field name="help">Routings define the assembly operations to be done in work centers for manufacturing a certain product. They are usually attached to bills of materials which will define the assembly of products required for manufacture or for finished products.</field> <field name="help">Routings define the assembly operations to be done in work centers for manufacturing a certain product. They are usually attached to bills of materials which will define the assembly of products required for manufacture or for finished products.</field>
</record> </record>
<!-- <menuitem name="Routings" id="menu_mrp_routing_and_workcenters" parent="mrp.menu_mrp_bom" groups="base.group_extended"
sequence="100" />-->
<menuitem action="mrp_workcenter_action" id="menu_mrp_workcenter_action" parent="mrp.menu_mrp_property" groups="base.group_extended" sequence="40" /> <menuitem action="mrp_workcenter_action" id="menu_mrp_workcenter_action" parent="mrp.menu_mrp_property" groups="base.group_extended" sequence="40" />
<menuitem action="mrp_routing_action" id="menu_mrp_routing_action" parent="mrp.menu_mrp_property" groups="base.group_extended" sequence="30"/> <menuitem action="mrp_routing_action" id="menu_mrp_routing_action" parent="mrp.menu_mrp_property" groups="base.group_extended" sequence="30"/>
@ -368,7 +365,7 @@
<filter string='Type' icon="terp-stock_symbol-selection" domain="[]" context="{'group_by' : 'type'}" /> <filter string='Type' icon="terp-stock_symbol-selection" domain="[]" context="{'group_by' : 'type'}" />
<separator orientation="vertical"/> <separator orientation="vertical"/>
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_start'}"/> <filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_start'}"/>
</group> </group>
</search> </search>
</field> </field>
@ -415,10 +412,6 @@
<!-- BOM menus --> <!-- BOM menus -->
<!-- <menuitem name="Bill of Materials"
id="menu_mrp_bom"
parent="menu_mrp_bom"
sequence="50" />-->
<menuitem <menuitem
action="mrp_bom_form_action" action="mrp_bom_form_action"
id="menu_mrp_bom_form_action" id="menu_mrp_bom_form_action"
@ -483,10 +476,7 @@
<menuitem action="procurement.procurement_action" id="menu_mrp_procurement_action" <menuitem action="procurement.procurement_action" id="menu_mrp_procurement_action"
parent="mrp.menu_mrp_manufacturing" sequence="3" /> parent="mrp.menu_mrp_manufacturing" sequence="3" />
<!-- <menuitem action="procurement.procurement_action5" id="menu_mrp_procurement_exception_action"--> <menuitem id="menu_mrp_scheduler" name="Schedulers" parent="base.menu_mrp_root" groups="base.group_system,mrp.group_mrp_user,mrp.group_mrp_manager" sequence="3"/>
<!-- parent="mrp.menu_mrp_control" sequence="1" />-->
<menuitem id="menu_mrp_scheduler" name="Schedulers" parent="base.menu_mrp_root" groups="base.group_system,mrp.group_mrp_user,mrp.group_mrp_manager" sequence="3"/>
<menuitem action="procurement.action_compute_schedulers" id="mrp_Sched_all" parent="mrp.menu_mrp_scheduler" sequence="90" groups="base.group_system,mrp.group_mrp_user,mrp.group_mrp_manager"/> <menuitem action="procurement.action_compute_schedulers" id="mrp_Sched_all" parent="mrp.menu_mrp_scheduler" sequence="90" groups="base.group_system,mrp.group_mrp_user,mrp.group_mrp_manager"/>
<!-- <!--
@ -656,7 +646,7 @@
<field name="product_qty" string="Qty"/> <field name="product_qty" string="Qty"/>
<field name="product_uom" string="UOM"/> <field name="product_uom" string="UOM"/>
<field name="location_id" string="Source Loc."/> <field name="location_id" string="Source Loc."/>
<field name="state" invisible="1"/> <field name="state" invisible="1"/>
<button name="%(stock.move_scrap)d" <button name="%(stock.move_scrap)d"
string="Scrap Products" type="action" string="Scrap Products" type="action"
icon="gtk-convert" context="{'scrap': True}" icon="gtk-convert" context="{'scrap': True}"

View File

@ -30,7 +30,6 @@ import StringIO
theme.use_color = 1 theme.use_color = 1
#theme.scale = 2
random.seed(0) random.seed(0)
# #

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,14 +15,13 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
import mrp_product_produce import mrp_product_produce
import mrp_price import mrp_price
import mrp_workcenter_load import mrp_workcenter_load
#import mrp_track_prod
import change_production_qty import change_production_qty
import mrp_change_standard_price import mrp_change_standard_price

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -30,24 +30,24 @@ class mrp_price(osv.osv_memory):
_defaults = { _defaults = {
'number': 1, 'number': 1,
} }
def print_report(self, cr, uid, ids, context=None): def print_report(self, cr, uid, ids, context=None):
""" To print the report of Product cost structure """ To print the report of Product cost structure
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return : Report @return : Report
""" """
datas = {'ids' : context.get('active_ids',[])} datas = {'ids' : context.get('active_ids',[])}
res = self.read(cr, uid, ids, ['number']) res = self.read(cr, uid, ids, ['number'])
res = res and res[0] or {} res = res and res[0] or {}
datas['form'] = res datas['form'] = res
return { return {
'type' : 'ir.actions.report.xml', 'type' : 'ir.actions.report.xml',
'report_name':'product.price', 'report_name':'product.price',
'datas' : datas, 'datas' : datas,
} }
mrp_price() mrp_price()

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -24,10 +24,10 @@ from osv import fields, osv
class mrp_product_produce(osv.osv_memory): class mrp_product_produce(osv.osv_memory):
_name = "mrp.product.produce" _name = "mrp.product.produce"
_description = "Product Produce" _description = "Product Produce"
_columns = { _columns = {
'product_qty': fields.float('Quantity', required=True), 'product_qty': fields.float('Quantity', required=True),
'mode': fields.selection([('consume_produce', 'Consume & Produce'), 'mode': fields.selection([('consume_produce', 'Consume & Produce'),
('consume', 'Consume Only')], 'Mode', required=True, ('consume', 'Consume Only')], 'Mode', required=True,
help="'Consume only' mode will only consume the products with the quantity selected.\n" help="'Consume only' mode will only consume the products with the quantity selected.\n"
"'Consume & Produce' mode will consume as well as produce the products with the quantity selected " "'Consume & Produce' mode will consume as well as produce the products with the quantity selected "
@ -40,35 +40,35 @@ class mrp_product_produce(osv.osv_memory):
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return: Quantity @return: Quantity
""" """
prod = self.pool.get('mrp.production').browse(cr, uid, prod = self.pool.get('mrp.production').browse(cr, uid,
context['active_id'], context=context) context['active_id'], context=context)
done = 0.0 done = 0.0
for move in prod.move_created_ids2: for move in prod.move_created_ids2:
if not move.scraped: if not move.scraped:
done += move.product_qty done += move.product_qty
return (prod.product_qty - done) or prod.product_qty return (prod.product_qty - done) or prod.product_qty
_defaults = { _defaults = {
'product_qty': _get_product_qty, 'product_qty': _get_product_qty,
'mode': lambda *x: 'consume_produce' 'mode': lambda *x: 'consume_produce'
} }
def do_produce(self, cr, uid, ids, context={}): def do_produce(self, cr, uid, ids, context={}):
""" To check the product type """ To check the product type
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param ids: the ID or list of IDs if we want more than one @param ids: the ID or list of IDs if we want more than one
@param context: A standard dictionary @param context: A standard dictionary
@return: @return:
""" """
prod_obj = self.pool.get('mrp.production') prod_obj = self.pool.get('mrp.production')
move_ids = context['active_ids'] move_ids = context['active_ids']
for data in self.read(cr, uid, ids): for data in self.read(cr, uid, ids):
for move_id in move_ids: for move_id in move_ids:
prod_obj.action_produce(cr, uid, move_id, prod_obj.action_produce(cr, uid, move_id,
data['product_qty'], data['mode'], context=context) data['product_qty'], data['mode'], context=context)
return {} return {}

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -24,7 +24,7 @@ from osv import fields, osv
class mrp_workcenter_load(osv.osv_memory): class mrp_workcenter_load(osv.osv_memory):
_name = 'mrp.workcenter.load' _name = 'mrp.workcenter.load'
_description = 'Workcenter Load' _description = 'Workcenter Load'
_columns = { _columns = {
'time_unit': fields.selection([('day', 'Day by day'),('week', 'Per week'),('month', 'Per month')],'Type of period', required=True), 'time_unit': fields.selection([('day', 'Day by day'),('week', 'Per week'),('month', 'Per month')],'Type of period', required=True),
'measure_unit': fields.selection([('hours', 'Amount in hours'),('cycles', 'Amount in cycles')],'Amount measuring unit', required=True), 'measure_unit': fields.selection([('hours', 'Amount in hours'),('cycles', 'Amount in cycles')],'Amount measuring unit', required=True),
@ -35,18 +35,18 @@ class mrp_workcenter_load(osv.osv_memory):
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return : Report @return : Report
""" """
datas = {'ids' : context.get('active_ids',[])} datas = {'ids' : context.get('active_ids',[])}
res = self.read(cr, uid, ids, ['time_unit','measure_unit']) res = self.read(cr, uid, ids, ['time_unit','measure_unit'])
res = res and res[0] or {} res = res and res[0] or {}
datas['form'] = res datas['form'] = res
return { return {
'type' : 'ir.actions.report.xml', 'type' : 'ir.actions.report.xml',
'report_name':'mrp.workcenter.load', 'report_name':'mrp.workcenter.load',
'datas' : datas, 'datas' : datas,
} }
mrp_workcenter_load() mrp_workcenter_load()

View File

@ -28,7 +28,6 @@
</record> </record>
<record id="process_node_workorder0" model="process.node"> <record id="process_node_workorder0" model="process.node">
<!-- <field name="menu_id" ref="menu_mrp_production_operation_action"/>-->
<field name="model_id" ref="mrp.model_mrp_production_workcenter_line"/> <field name="model_id" ref="mrp.model_mrp_production_workcenter_line"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/> <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Information from the routing definition.&quot;&quot;&quot;" name="note"/> <field eval="&quot;&quot;&quot;Information from the routing definition.&quot;&quot;&quot;" name="note"/>
@ -39,7 +38,6 @@
</record> </record>
<record id="process_node_startoperation0" model="process.node"> <record id="process_node_startoperation0" model="process.node">
<!-- <field name="menu_id" ref="menu_mrp_production_operation_action"/>-->
<field name="model_id" ref="mrp.model_mrp_production_workcenter_line"/> <field name="model_id" ref="mrp.model_mrp_production_workcenter_line"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/> <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Start the operation.&quot;&quot;&quot;" name="note"/> <field eval="&quot;&quot;&quot;Start the operation.&quot;&quot;&quot;" name="note"/>
@ -50,7 +48,6 @@
</record> </record>
<record id="process_node_doneoperation0" model="process.node"> <record id="process_node_doneoperation0" model="process.node">
<!-- <field name="menu_id" ref="menu_mrp_production_operation_action"/>-->
<field name="model_id" ref="mrp.model_mrp_production_workcenter_line"/> <field name="model_id" ref="mrp.model_mrp_production_workcenter_line"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/> <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Finish the operation.&quot;&quot;&quot;" name="note"/> <field eval="&quot;&quot;&quot;Finish the operation.&quot;&quot;&quot;" name="note"/>
@ -61,7 +58,6 @@
</record> </record>
<record id="process_node_canceloperation0" model="process.node"> <record id="process_node_canceloperation0" model="process.node">
<!-- <field name="menu_id" ref="menu_mrp_production_operation_action"/>-->
<field name="model_id" ref="mrp.model_mrp_production_workcenter_line"/> <field name="model_id" ref="mrp.model_mrp_production_workcenter_line"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/> <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Cancel the operation.&quot;&quot;&quot;" name="note"/> <field eval="&quot;&quot;&quot;Cancel the operation.&quot;&quot;&quot;" name="note"/>

View File

@ -41,7 +41,7 @@ class mrp_repair(osv.osv):
@param field_name: Name of field. @param field_name: Name of field.
@param arg: Argument @param arg: Argument
@param context: A standard dictionary for contextual values @param context: A standard dictionary for contextual values
@return: Dictionary of values. @return: Dictionary of values.
""" """
res = {} res = {}
cur_obj = self.pool.get('res.currency') cur_obj = self.pool.get('res.currency')
@ -59,7 +59,7 @@ class mrp_repair(osv.osv):
""" Calculates taxed amount. """ Calculates taxed amount.
@param field_name: Name of field. @param field_name: Name of field.
@param arg: Argument @param arg: Argument
@return: Dictionary of values. @return: Dictionary of values.
""" """
res = {} res = {}
cur_obj = self.pool.get('res.currency') cur_obj = self.pool.get('res.currency')
@ -82,7 +82,7 @@ class mrp_repair(osv.osv):
""" Calculates total amount. """ Calculates total amount.
@param field_name: Name of field. @param field_name: Name of field.
@param arg: Argument @param arg: Argument
@return: Dictionary of values. @return: Dictionary of values.
""" """
res = {} res = {}
untax = self._amount_untaxed(cr, uid, ids, field_name, arg, context) untax = self._amount_untaxed(cr, uid, ids, field_name, arg, context)
@ -167,7 +167,7 @@ class mrp_repair(osv.osv):
def onchange_product_id(self, cr, uid, ids, product_id=None): def onchange_product_id(self, cr, uid, ids, product_id=None):
""" On change of product sets some values. """ On change of product sets some values.
@param product_id: Changed product @param product_id: Changed product
@return: Dictionary of values. @return: Dictionary of values.
""" """
return {'value': { return {'value': {
'prodlot_id': False, 'prodlot_id': False,
@ -183,7 +183,7 @@ class mrp_repair(osv.osv):
destination location, partner and partner address. destination location, partner and partner address.
@param prod_id: Id of product in current record. @param prod_id: Id of product in current record.
@param move_id: Changed move. @param move_id: Changed move.
@return: Dictionary of values. @return: Dictionary of values.
""" """
data = {} data = {}
data['value'] = {} data['value'] = {}
@ -210,11 +210,11 @@ class mrp_repair(osv.osv):
return True return True
def onchange_partner_id(self, cr, uid, ids, part, address_id): def onchange_partner_id(self, cr, uid, ids, part, address_id):
""" On change of partner sets the values of partner address, """ On change of partner sets the values of partner address,
partner invoice address and pricelist. partner invoice address and pricelist.
@param part: Changed id of partner. @param part: Changed id of partner.
@param address_id: Address id from current record. @param address_id: Address id from current record.
@return: Dictionary of values. @return: Dictionary of values.
""" """
part_obj = self.pool.get('res.partner') part_obj = self.pool.get('res.partner')
pricelist_obj = self.pool.get('product.pricelist') pricelist_obj = self.pool.get('product.pricelist')
@ -240,7 +240,7 @@ class mrp_repair(osv.osv):
destination location, move and guarantee limit. destination location, move and guarantee limit.
@param lot: Changed id of production lot. @param lot: Changed id of production lot.
@param product_id: Product id from current record. @param product_id: Product id from current record.
@return: Dictionary of values. @return: Dictionary of values.
""" """
prodlot_obj = self.pool.get('stock.production.lot') prodlot_obj = self.pool.get('stock.production.lot')
move_obj = self.pool.get('stock.move') move_obj = self.pool.get('stock.move')
@ -275,7 +275,7 @@ class mrp_repair(osv.osv):
def action_cancel_draft(self, cr, uid, ids, *args): def action_cancel_draft(self, cr, uid, ids, *args):
""" Cancels repair order when it is in 'Draft' state. """ Cancels repair order when it is in 'Draft' state.
@param *arg: Arguments @param *arg: Arguments
@return: True @return: True
""" """
if not len(ids): if not len(ids):
return False return False
@ -292,7 +292,7 @@ class mrp_repair(osv.osv):
""" Repair order state is set to 'To be invoiced' when invoice method """ Repair order state is set to 'To be invoiced' when invoice method
is 'Before repair' else state becomes 'Confirmed'. is 'Before repair' else state becomes 'Confirmed'.
@param *arg: Arguments @param *arg: Arguments
@return: True @return: True
""" """
mrp_line_obj = self.pool.get('mrp.repair.line') mrp_line_obj = self.pool.get('mrp.repair.line')
for o in self.browse(cr, uid, ids): for o in self.browse(cr, uid, ids):
@ -305,7 +305,7 @@ class mrp_repair(osv.osv):
def action_cancel(self, cr, uid, ids, context=None): def action_cancel(self, cr, uid, ids, context=None):
""" Cancels repair order. """ Cancels repair order.
@return: True @return: True
""" """
ok=True ok=True
mrp_line_obj = self.pool.get('mrp.repair.line') mrp_line_obj = self.pool.get('mrp.repair.line')
@ -320,7 +320,7 @@ class mrp_repair(osv.osv):
def action_invoice_create(self, cr, uid, ids, group=False, context=None): def action_invoice_create(self, cr, uid, ids, group=False, context=None):
""" Creates invoice(s) for repair order. """ Creates invoice(s) for repair order.
@param group: It is set to true when group invoice is to be generated. @param group: It is set to true when group invoice is to be generated.
@return: Invoice Ids. @return: Invoice Ids.
""" """
res = {} res = {}
invoices_group = {} invoices_group = {}
@ -328,7 +328,7 @@ class mrp_repair(osv.osv):
inv_obj = self.pool.get('account.invoice') inv_obj = self.pool.get('account.invoice')
repair_line_obj = self.pool.get('mrp.repair.line') repair_line_obj = self.pool.get('mrp.repair.line')
repair_fee_obj = self.pool.get('mrp.repair.fee') repair_fee_obj = self.pool.get('mrp.repair.fee')
for repair in self.browse(cr, uid, ids, context=context): for repair in self.browse(cr, uid, ids, context=context):
res[repair.id] = False res[repair.id] = False
if repair.state in ('draft','cancel') or repair.invoice_id: if repair.state in ('draft','cancel') or repair.invoice_id:
continue continue
@ -382,14 +382,14 @@ class mrp_repair(osv.osv):
'invoice_id': inv_id, 'invoice_id': inv_id,
'name': name, 'name': name,
'origin': repair.name, 'origin': repair.name,
'account_id': account_id, 'account_id': account_id,
'quantity': operation.product_uom_qty, 'quantity': operation.product_uom_qty,
'invoice_line_tax_id': [(6,0,[x.id for x in operation.tax_id])], 'invoice_line_tax_id': [(6,0,[x.id for x in operation.tax_id])],
'uos_id': operation.product_uom.id, 'uos_id': operation.product_uom.id,
'price_unit': operation.price_unit, 'price_unit': operation.price_unit,
'price_subtotal': operation.product_uom_qty*operation.price_unit, 'price_subtotal': operation.product_uom_qty*operation.price_unit,
'product_id': operation.product_id and operation.product_id.id or False 'product_id': operation.product_id and operation.product_id.id or False
}) })
repair_line_obj.write(cr, uid, [operation.id], {'invoiced': True, 'invoice_line_id': invoice_line_id}) repair_line_obj.write(cr, uid, [operation.id], {'invoiced': True, 'invoice_line_id': invoice_line_id})
for fee in repair.fees_lines: for fee in repair.fees_lines:
if fee.to_invoice == True: if fee.to_invoice == True:
@ -408,35 +408,35 @@ class mrp_repair(osv.osv):
'product_id': fee.product_id and fee.product_id.id or False, 'product_id': fee.product_id and fee.product_id.id or False,
'price_unit': fee.price_unit, 'price_unit': fee.price_unit,
'price_subtotal': fee.product_uom_qty*fee.price_unit 'price_subtotal': fee.product_uom_qty*fee.price_unit
}) })
repair_fee_obj.write(cr, uid, [fee.id], {'invoiced': True, 'invoice_line_id': invoice_fee_id}) repair_fee_obj.write(cr, uid, [fee.id], {'invoiced': True, 'invoice_line_id': invoice_fee_id})
res[repair.id] = inv_id res[repair.id] = inv_id
return res return res
def action_repair_ready(self, cr, uid, ids, context=None): def action_repair_ready(self, cr, uid, ids, context=None):
""" Writes repair order state to 'Ready' """ Writes repair order state to 'Ready'
@return: True @return: True
""" """
self.write(cr, uid, ids, {'state': 'ready'}) self.write(cr, uid, ids, {'state': 'ready'})
return True return True
def action_invoice_cancel(self, cr, uid, ids, context=None): def action_invoice_cancel(self, cr, uid, ids, context=None):
""" Writes repair order state to 'Exception in invoice' """ Writes repair order state to 'Exception in invoice'
@return: True @return: True
""" """
self.write(cr, uid, ids, {'state': 'invoice_except'}) self.write(cr, uid, ids, {'state': 'invoice_except'})
return True return True
def action_repair_start(self, cr, uid, ids, context=None): def action_repair_start(self, cr, uid, ids, context=None):
""" Writes repair order state to 'Under Repair' """ Writes repair order state to 'Under Repair'
@return: True @return: True
""" """
self.write(cr, uid, ids, {'state': 'under_repair'}) self.write(cr, uid, ids, {'state': 'under_repair'})
return True return True
def action_invoice_end(self, cr, uid, ids, context=None): def action_invoice_end(self, cr, uid, ids, context=None):
""" Writes repair order state to 'Ready' if invoice method is Before repair. """ Writes repair order state to 'Ready' if invoice method is Before repair.
@return: True @return: True
""" """
for order in self.browse(cr, uid, ids): for order in self.browse(cr, uid, ids):
val = {} val = {}
@ -448,9 +448,9 @@ class mrp_repair(osv.osv):
return True return True
def action_repair_end(self, cr, uid, ids, context=None): def action_repair_end(self, cr, uid, ids, context=None):
""" Writes repair order state to 'To be invoiced' if invoice method is """ Writes repair order state to 'To be invoiced' if invoice method is
After repair else state is set to 'Ready'. After repair else state is set to 'Ready'.
@return: True @return: True
""" """
for order in self.browse(cr, uid, ids): for order in self.browse(cr, uid, ids):
val = {} val = {}
@ -470,7 +470,7 @@ class mrp_repair(osv.osv):
def action_repair_done(self, cr, uid, ids, context=None): def action_repair_done(self, cr, uid, ids, context=None):
""" Creates stock move and picking for repair order. """ Creates stock move and picking for repair order.
@return: Picking ids. @return: Picking ids.
""" """
res = {} res = {}
move_obj = self.pool.get('stock.move') move_obj = self.pool.get('stock.move')
@ -516,7 +516,7 @@ class mrp_repair(osv.osv):
'location_id': repair.location_id.id, 'location_id': repair.location_id.id,
'location_dest_id': repair.location_dest_id.id, 'location_dest_id': repair.location_dest_id.id,
'tracking_id': False, 'tracking_id': False,
'state': 'assigned', 'state': 'assigned',
}) })
wf_service.trg_validate(uid, 'stock.picking', picking, 'button_confirm', cr) wf_service.trg_validate(uid, 'stock.picking', picking, 'button_confirm', cr)
self.write(cr, uid, [repair.id], {'state': 'done', 'picking_id': picking}) self.write(cr, uid, [repair.id], {'state': 'done', 'picking_id': picking})
@ -530,7 +530,7 @@ mrp_repair()
class ProductChangeMixin(object): class ProductChangeMixin(object):
def product_id_change(self, cr, uid, ids, pricelist, product, uom=False, def product_id_change(self, cr, uid, ids, pricelist, product, uom=False,
product_uom_qty=0, partner_id=False, guarantee_limit=False): product_uom_qty=0, partner_id=False, guarantee_limit=False):
""" On change of product it sets product quantity, tax account, name, """ On change of product it sets product quantity, tax account, name,
uom of product, unit price and price subtotal. uom of product, unit price and price subtotal.
@ -574,7 +574,7 @@ class ProductChangeMixin(object):
'message': 'message':
"Couldn't find a pricelist line matching this product and quantity.\n" "Couldn't find a pricelist line matching this product and quantity.\n"
"You have to change either the product, the quantity or the pricelist." "You have to change either the product, the quantity or the pricelist."
} }
else: else:
result.update({'price_unit': price, 'price_subtotal': price*product_uom_qty}) result.update({'price_unit': price, 'price_subtotal': price*product_uom_qty})
@ -594,7 +594,7 @@ class mrp_repair_line(osv.osv, ProductChangeMixin):
""" Calculates amount. """ Calculates amount.
@param field_name: Name of field. @param field_name: Name of field.
@param arg: Argument @param arg: Argument
@return: Dictionary of values. @return: Dictionary of values.
""" """
res = {} res = {}
cur_obj=self.pool.get('res.currency') cur_obj=self.pool.get('res.currency')
@ -672,17 +672,17 @@ mrp_repair_line()
class mrp_repair_fee(osv.osv, ProductChangeMixin): class mrp_repair_fee(osv.osv, ProductChangeMixin):
_name = 'mrp.repair.fee' _name = 'mrp.repair.fee'
_description = 'Repair Fees Line' _description = 'Repair Fees Line'
def copy_data(self, cr, uid, id, default=None, context=None): def copy_data(self, cr, uid, id, default=None, context=None):
if not default: default = {} if not default: default = {}
default.update({'invoice_line_id': False, 'invoiced': False}) default.update({'invoice_line_id': False, 'invoiced': False})
return super(mrp_repair_fee, self).copy_data(cr, uid, id, default, context) return super(mrp_repair_fee, self).copy_data(cr, uid, id, default, context)
def _amount_line(self, cr, uid, ids, field_name, arg, context): def _amount_line(self, cr, uid, ids, field_name, arg, context):
""" Calculates amount. """ Calculates amount.
@param field_name: Name of field. @param field_name: Name of field.
@param arg: Argument @param arg: Argument
@return: Dictionary of values. @return: Dictionary of values.
""" """
res = {} res = {}
cur_obj = self.pool.get('res.currency') cur_obj = self.pool.get('res.currency')

View File

@ -6,7 +6,7 @@
<field name="osv">mrp.repair</field> <field name="osv">mrp.repair</field>
<field name="on_create">True</field> <field name="on_create">True</field>
</record> </record>
<!-- Activity --> <!-- Activity -->
<record id="act_draft" model="workflow.activity"> <record id="act_draft" model="workflow.activity">
<field name="wkf_id" ref="wkf_repair"/> <field name="wkf_id" ref="wkf_repair"/>
@ -32,7 +32,7 @@
<record id="act_repair_ready" model="workflow.activity"> <record id="act_repair_ready" model="workflow.activity">
<field name="wkf_id" ref="wkf_repair"/> <field name="wkf_id" ref="wkf_repair"/>
<field name="name">Ready Repair</field> <field name="name">Ready Repair</field>
<field name="kind">function</field> <field name="kind">function</field>
<field name="action">action_repair_ready()</field> <field name="action">action_repair_ready()</field>
</record> </record>
<record id="act_cancel3" model="workflow.activity"> <record id="act_cancel3" model="workflow.activity">
@ -50,19 +50,12 @@
<field name="action">wkf_repair_done()</field> <field name="action">wkf_repair_done()</field>
<field name="join_mode">XOR</field> <field name="join_mode">XOR</field>
</record> </record>
<!-- <record id="act_invoice" model="workflow.activity">
<field name="wkf_id" ref="wkf_repair"/>
<field name="name">invoice</field>
<field name="kind">subflow</field>
<field name="subflow_id" search="[('name','=','account.invoice.basic')]"/>
<field name="action">action_invoice_create()</field>
</record> -->
<record id="act_repair_start" model="workflow.activity"> <record id="act_repair_start" model="workflow.activity">
<field name="wkf_id" ref="wkf_repair"/> <field name="wkf_id" ref="wkf_repair"/>
<field name="name">Start Repair</field> <field name="name">Start Repair</field>
<field name="kind">function</field> <field name="kind">function</field>
<field name="action">action_repair_start()</field> <field name="action">action_repair_start()</field>
</record> </record>
<record id="act_invoice_end" model="workflow.activity"> <record id="act_invoice_end" model="workflow.activity">
<field name="wkf_id" ref="wkf_repair"/> <field name="wkf_id" ref="wkf_repair"/>
<field name="name">invoice_end</field> <field name="name">invoice_end</field>
@ -75,21 +68,6 @@
<field name="kind">function</field> <field name="kind">function</field>
<field name="action">action_repair_end()</field> <field name="action">action_repair_end()</field>
</record> </record>
<!-- <record id="act_invoice_cancel" model="workflow.activity">
<field name="wkf_id" ref="wkf_repair"/>
<field name="name">invoice_cancel</field>
<field name="flow_stop">True</field>
<field name="kind">stopall</field>
<field name="action">action_cancel()</field>
</record>
<record id="act_invoice_except" model="workflow.activity">
<field name="wkf_id" ref="wkf_repair"/>
<field name="name">invoice_except</field>
<field name="kind">function</field>
<field name="action">action_invoice_cancel()</field>
</record> -->
<record id="act_cancel" model="workflow.activity"> <record id="act_cancel" model="workflow.activity">
<field name="wkf_id" ref="wkf_repair"/> <field name="wkf_id" ref="wkf_repair"/>
<field name="name">cancel</field> <field name="name">cancel</field>
@ -106,25 +84,25 @@
</record> </record>
<!-- Transistion --> <!-- Transistion -->
<record id="trans_draft_confirm" model="workflow.transition"> <record id="trans_draft_confirm" model="workflow.transition">
<field name="act_from" ref="act_draft"/> <field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_confirm"/> <field name="act_to" ref="act_confirm"/>
<field name="signal">repair_confirm</field> <field name="signal">repair_confirm</field>
</record> </record>
<record id="trans_draft_cancel" model="workflow.transition"> <record id="trans_draft_cancel" model="workflow.transition">
<field name="act_from" ref="act_draft"/> <field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_cancel"/> <field name="act_to" ref="act_cancel"/>
<field name="signal">cancel</field> <field name="signal">cancel</field>
</record> </record>
<record id="trans_confirm_wait_invoice" model="workflow.transition"> <record id="trans_confirm_wait_invoice" model="workflow.transition">
<field name="act_from" ref="act_confirm"/> <field name="act_from" ref="act_confirm"/>
<field name="act_to" ref="act_wait_invoice"/> <field name="act_to" ref="act_wait_invoice"/>
<field name="condition">invoice_method=='b4repair'</field> <field name="condition">invoice_method=='b4repair'</field>
</record> </record>
<record id="trans_confirm_wait_ship" model="workflow.transition"> <record id="trans_confirm_wait_ship" model="workflow.transition">
@ -133,17 +111,11 @@
<field name="condition">(invoice_method=='after_repair' or invoice_method=='none')</field> <field name="condition">(invoice_method=='after_repair' or invoice_method=='none')</field>
</record> </record>
<!-- <record id="trans_confirm_wait_invoice_shipping" model="workflow.transition">
<field name="act_from" ref="act_wait_invoice"/>
<field name="act_to" ref="act_invoice_end"/>
<field name="condition">(invoice_method=='none')</field>
</record> -->
<record id="trans_wait_invoice_invoice" model="workflow.transition"> <record id="trans_wait_invoice_invoice" model="workflow.transition">
<field name="act_from" ref="act_wait_invoice"/> <field name="act_from" ref="act_wait_invoice"/>
<field name="act_to" ref="act_invoice_end"/> <field name="act_to" ref="act_invoice_end"/>
<field name="signal">action_invoice_create</field> <field name="signal">action_invoice_create</field>
</record> </record>
<record id="trans_invoice_start_repair" model="workflow.transition"> <record id="trans_invoice_start_repair" model="workflow.transition">
<field name="act_from" ref="act_invoice_end"/> <field name="act_from" ref="act_invoice_end"/>
@ -177,8 +149,8 @@
<record id="trans_repair_repair_end" model="workflow.transition"> <record id="trans_repair_repair_end" model="workflow.transition">
<field name="act_from" ref="act_repair_start"/> <field name="act_from" ref="act_repair_start"/>
<field name="act_to" ref="act_repair_end"/> <field name="act_to" ref="act_repair_end"/>
<field name="signal">action_repair_end</field> <field name="signal">action_repair_end</field>
</record> </record>
<record id="trans_reapir_end_done" model="workflow.transition"> <record id="trans_reapir_end_done" model="workflow.transition">

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,19 +15,19 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
import netsvc import netsvc
from osv import osv, fields from osv import osv, fields
class make_invoice(osv.osv_memory): class make_invoice(osv.osv_memory):
_name = 'mrp.repair.make_invoice' _name = 'mrp.repair.make_invoice'
_description = 'Make Invoice' _description = 'Make Invoice'
_columns = { _columns = {
'group': fields.boolean('Group by partner invoice address'), 'group': fields.boolean('Group by partner invoice address'),
} }
def make_invoices(self, cr, uid, ids, context): def make_invoices(self, cr, uid, ids, context):
@ -35,15 +35,15 @@ class make_invoice(osv.osv_memory):
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param ids: List of IDs selected @param ids: List of IDs selected
@param context: A standard dictionary @param context: A standard dictionary
@return: Loads the view of new invoice(s). @return: Loads the view of new invoice(s).
""" """
inv = self.browse(cr, uid, ids[0]) inv = self.browse(cr, uid, ids[0])
order_obj = self.pool.get('mrp.repair') order_obj = self.pool.get('mrp.repair')
newinv = order_obj.action_invoice_create(cr, uid, context['active_ids'], newinv = order_obj.action_invoice_create(cr, uid, context['active_ids'],
group=inv.group,context=context) group=inv.group,context=context)
return { return {
'domain': [('id','in', newinv.values())], 'domain': [('id','in', newinv.values())],
'name': 'Invoices', 'name': 'Invoices',

View File

@ -36,7 +36,10 @@ With this module:
'website': 'http://www.openerp.com', 'website': 'http://www.openerp.com',
'depends': ['base', 'mrp'], 'depends': ['base', 'mrp'],
'init_xml': [], 'init_xml': [],
'update_xml': ['security/ir.model.access.csv', 'mrp_subproduct_view.xml'], 'update_xml': [
'security/ir.model.access.csv',
'mrp_subproduct_view.xml'
],
'demo_xml': [], 'demo_xml': [],
'test': ['test/mrp_subproduct.yml'], 'test': ['test/mrp_subproduct.yml'],
'installable': True, 'installable': True,

View File

@ -38,7 +38,6 @@
'init_xml': [], 'init_xml': [],
'update_xml': [ 'update_xml': [
'res_company_view.xml' 'res_company_view.xml'
#'security/ir.model.access.csv',
], ],
'demo_xml': [ 'demo_xml': [
'multi_company_demo.xml' 'multi_company_demo.xml'

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <openerp>
<data noupdate="1"> <data noupdate="1">
<!-- Partner --> <!-- Partner -->
<record id="base.main_partner" model="res.partner"> <record id="base.main_partner" model="res.partner">
<field name="name">OpenERP Corp.</field> <field name="name">OpenERP Corp.</field>
</record> </record>
@ -20,8 +20,8 @@
<record id="res_partner_odoo" model="res.partner"> <record id="res_partner_odoo" model="res.partner">
<field name="name">Odoo</field> <field name="name">Odoo</field>
</record> </record>
<!-- Company --> <!-- Company -->
<record id="base.main_company" model="res.company"> <record id="base.main_company" model="res.company">
<field name="name">OpenERP Corp.</field> <field name="name">OpenERP Corp.</field>
<field name="currency_id" ref="base.EUR"/> <field name="currency_id" ref="base.EUR"/>
@ -56,7 +56,7 @@
<field name="currency_id" ref="base.EUR"/> <field name="currency_id" ref="base.EUR"/>
<field name="name">Odoo</field> <field name="name">Odoo</field>
</record> </record>
<!-- User --> <!-- User -->
<record id="res_users_editor_demo" model="res.users"> <record id="res_users_editor_demo" model="res.users">
@ -104,7 +104,7 @@
<!-- <!--
Resource: product.product Resource: product.product
--> -->
<record id="product.product_product_0" model="product.product"> <record id="product.product_product_0" model="product.product">
<field name="company_id" ref="res_company_oerp_editor"/> <field name="company_id" ref="res_company_oerp_editor"/>
</record> </record>
@ -312,11 +312,11 @@
</record> </record>
<!-- <!--
Resource: res.partner Resource: res.partner
--> -->
<record id="base.res_partner_asus" model="res.partner"> <record id="base.res_partner_asus" model="res.partner">
<field name="company_id" ref="res_company_oerp_us"/> <field name="company_id" ref="res_company_oerp_us"/>
</record> </record>
@ -379,90 +379,7 @@
</record> </record>
<record id="base.res_partner_accent" model="res.partner"> <record id="base.res_partner_accent" model="res.partner">
<field name="company_id" ref="res_company_oerp_be"/> <field name="company_id" ref="res_company_oerp_be"/>
</record>
<!-- CRM -->
<!--
<record id="crm.crm_case_claim01" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record> </record>
<record id="crm.crm_case_claim02" model="crm.case">
<field name="company_id" ref="res_company_oerp_us"/>
</record>
<record id="crm.crm_case_claim03" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_claim04" model="crm.case">
<field name="company_id" ref="res_company_oerp_in"/>
</record>
<record id="crm.crm_case_claim05" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_claim06" model="crm.case">
<field name="company_id" ref="res_company_oerp_us"/>
</record>
<record id="crm.crm_case_construstazunits0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_rdroundfundingunits0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_mediapoleunits0" model="crm.case">
<field name="company_id" ref="res_company_oerp_us"/>
</record>
<record id="crm.crm_case_abcfuelcounits0" model="crm.case">
<field name="company_id" ref="res_company_oerp_in"/>
</record>
<record id="crm.crm_case_dirtminingltdunits0" model="crm.case">
<field name="company_id" ref="res_company_oerp_us"/>
</record>
-->
<!--For Bug Tracking-->
<!--
<record id="crm.crm_case_buginaccountsmodule0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_programnotgivingproperoutput0" model="crm.case">
<field name="company_id" ref="res_company_oerp_us"/>
</record>
<record id="crm.crm_case_outputincorrect0" model="crm.case">
<field name="company_id" ref="res_company_oerp_us"/>
</record>
<record id="crm.crm_case_problemloadingpage0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_pagenotfound0" model="crm.case">
<field name="company_id" ref="res_company_oerp_in"/>
</record>
<record id="crm.crm_case_programmingerror0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_logicalerrorinprogram0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_constrainterror0" model="crm.case">
<field name="company_id" ref="res_company_oerp_us"/>
</record>
<record id="crm.crm_case_errorinprogram0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_newfeaturestobeadded0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_addmenustothemodule0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_includeattendancesheetinproject0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_createnewobject0" model="crm.case">
<field name="company_id" ref="res_company_oerp_be"/>
</record>
<record id="crm.crm_case_improvereportsinhrms0" model="crm.case">
<field name="company_id" ref="res_company_oerp_in"/>
</record>
-->
</data> </data>
<data noupdate="1"> <data noupdate="1">
<record id="multi_company_default_productopenerpus0" model="multi_company.default"> <record id="multi_company_default_productopenerpus0" model="multi_company.default">

View File

@ -46,8 +46,7 @@
"data/olap_security.xml", "data/olap_security.xml",
'security/ir.model.access.csv' 'security/ir.model.access.csv'
], ],
"demo_xml" : ["data/olap_demo.xml" "demo_xml" : ["data/olap_demo.xml"],
],
"active": False, "active": False,
"installable": True "installable": True
} }

View File

@ -3,7 +3,7 @@
<data> <data>
<!-- Wizard view for the load data --> <!-- Wizard view for the load data -->
<record id="bi_load_db_form" model="ir.ui.view"> <record id="bi_load_db_form" model="ir.ui.view">
<field name="name">bi.load.db.form</field> <field name="name">bi.load.db.form</field>
<field name="model">bi.load.db.wizard</field> <field name="model">bi.load.db.wizard</field>
@ -22,7 +22,7 @@
</form> </form>
</field> </field>
</record> </record>
<record id="act_bi_load_db_wizard" model="ir.actions.act_window"> <record id="act_bi_load_db_wizard" model="ir.actions.act_window">
<field name="name">Load database Structure</field> <field name="name">Load database Structure</field>
<field name="res_model">bi.load.db.wizard</field> <field name="res_model">bi.load.db.wizard</field>
@ -33,10 +33,10 @@
<field name="auto_refresh" eval="1"/> <field name="auto_refresh" eval="1"/>
<field name="target">new</field> <field name="target">new</field>
</record> </record>
<!-- Wizard For Olap Warehouse --> <!-- Wizard For Olap Warehouse -->
<record id="view_warehouse_bi" model="ir.ui.view"> <record id="view_warehouse_bi" model="ir.ui.view">
<field name="name">Olap Warehouse</field> <field name="name">Olap Warehouse</field>
<field name="model">olap.warehouse.wizard</field> <field name="model">olap.warehouse.wizard</field>
@ -51,7 +51,7 @@
</form> </form>
</field> </field>
</record> </record>
<record id="action_olap_warehouse" model="ir.actions.act_window"> <record id="action_olap_warehouse" model="ir.actions.act_window">
<field name="name">Olap Warehouse</field> <field name="name">Olap Warehouse</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
@ -60,7 +60,7 @@
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>
<menuitem <menuitem
name="Olap Warehouse" name="Olap Warehouse"
action="action_olap_warehouse" action="action_olap_warehouse"
@ -68,9 +68,9 @@
sequence="51" sequence="51"
parent="base.next_id_50" parent="base.next_id_50"
/> />
<!-- Wizard View for the parameters wizard --> <!-- Wizard View for the parameters wizard -->
<record id="view_config_bi" model="ir.ui.view"> <record id="view_config_bi" model="ir.ui.view">
<field name="name">Parameters Configuration</field> <field name="name">Parameters Configuration</field>
<field name="model">olap.parameters.config.wizard</field> <field name="model">olap.parameters.config.wizard</field>
@ -83,7 +83,6 @@
<newline/> <newline/>
<label align="0.0" string="This wizard will automatically configure the web client for Business Intelligence." width="200" colspan="2"/> <label align="0.0" string="This wizard will automatically configure the web client for Business Intelligence." width="200" colspan="2"/>
</group> </group>
<!--separator string="" orientation="vertical" colspan="1" rowspan="12"/-->
<group colspan="4"> <group colspan="4">
<separator string=" Business Intelligence Web Client" colspan="4"/> <separator string=" Business Intelligence Web Client" colspan="4"/>
<field name="host_name" colspan="4"/> <field name="host_name" colspan="4"/>
@ -99,21 +98,9 @@
</group> </group>
</group> </group>
</form> </form>
<!--form string="Parameters Configure">
<separator string="BI Web Client." colspan="4"/>
<label string="This wizard will automatically configure the web client for BI." align="0.0" colspan="4"/>
<field name="host_name" colspan="4"/>
<field name="host_port" colspan="4"/>
<separator string="" colspan="4"/>
<label string="" colspan="2"/>
<group col="4" colspan="2">
<button special="cancel" string="Cancel" name="action_cancel" type="object" icon='gtk-cancel'/>
<button name="action_config" string="Configure" icon='gtk-ok' type="object"/>
</group>
</form-->
</field> </field>
</record> </record>
<record id="action_config_bi_parameters" model="ir.actions.act_window"> <record id="action_config_bi_parameters" model="ir.actions.act_window">
<field name="name">Parameters Configuration</field> <field name="name">Parameters Configuration</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
@ -122,7 +109,7 @@
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>
<menuitem <menuitem
name="Server Parameters" name="Server Parameters"
action="action_config_bi_parameters" action="action_config_bi_parameters"
@ -130,16 +117,16 @@
sequence="50" sequence="50"
parent="base.next_id_50" parent="base.next_id_50"
/> />
<record model="ir.actions.todo" id="config_auto_directory"> <record model="ir.actions.todo" id="config_auto_directory">
<field name="name">Server Parameters Configuration</field> <field name="name">Server Parameters Configuration</field>
<field name="note">This wizard will configure the URL of the web client</field> <field name="note">This wizard will configure the URL of the web client</field>
<field name="action_id" ref="action_config_bi_parameters"/> <field name="action_id" ref="action_config_bi_parameters"/>
</record> </record>
<!-- Wizard view for the Auto Configuring the data --> <!-- Wizard view for the Auto Configuring the data -->
<record id="bi_auto_configure_form" model="ir.ui.view"> <record id="bi_auto_configure_form" model="ir.ui.view">
<field name="name">bi.auto.configure.form</field> <field name="name">bi.auto.configure.form</field>
<field name="model">bi.auto.configure.wizard</field> <field name="model">bi.auto.configure.wizard</field>
@ -154,7 +141,7 @@
</form> </form>
</field> </field>
</record> </record>
<record id="act_bi_auto_configure" model="ir.actions.act_window"> <record id="act_bi_auto_configure" model="ir.actions.act_window">
<field name="name">Auto Configuration</field> <field name="name">Auto Configuration</field>
<field name="res_model">bi.auto.configure.wizard</field> <field name="res_model">bi.auto.configure.wizard</field>
@ -165,13 +152,13 @@
<field name="auto_refresh" eval="1"/> <field name="auto_refresh" eval="1"/>
<field name="target">new</field> <field name="target">new</field>
</record> </record>
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Olap Schema # Olap Schema
# ------------------------------------------------------------------ # ------------------------------------------------------------------
<record model="ir.ui.view" id="view_olap_schema_tree"> <record model="ir.ui.view" id="view_olap_schema_tree">
<field name="name">olap.schema.tree</field> <field name="name">olap.schema.tree</field>
<field name="model">olap.schema</field> <field name="model">olap.schema</field>
@ -183,7 +170,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_schema_form"> <record model="ir.ui.view" id="view_olap_schema_form">
<field name="name">olap.schema.form</field> <field name="name">olap.schema.form</field>
<field name="model">olap.schema</field> <field name="model">olap.schema</field>
@ -218,19 +205,19 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_schema_form"> <record model="ir.actions.act_window" id="action_olap_schema_form">
<field name="name">Olap Schemas</field> <field name="name">Olap Schemas</field>
<field name="res_model">olap.schema</field> <field name="res_model">olap.schema</field>
<field name="view_type">form</field> <field name="view_type">form</field>
</record> </record>
<menuitem <menuitem
name="Olap Schema" name="Olap Schema"
action="action_olap_schema_form" action="action_olap_schema_form"
id="menu_action_olap_schema_form" id="menu_action_olap_schema_form"
parent="menu_bi_conf_cubes"/> parent="menu_bi_conf_cubes"/>
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Olap Cubes Table # Olap Cubes Table
# ------------------------------------------------------------------ # ------------------------------------------------------------------
@ -268,23 +255,23 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_cube_table_form"> <record model="ir.actions.act_window" id="action_olap_cube_table_form">
<field name="name">Olap Cube Tables</field> <field name="name">Olap Cube Tables</field>
<field name="res_model">olap.cube.table</field> <field name="res_model">olap.cube.table</field>
<field name="view_type">form</field> <field name="view_type">form</field>
</record> </record>
<menuitem <menuitem
name="Olap Cubes Table" name="Olap Cubes Table"
parent = "menu_bi_conf_cubes" parent = "menu_bi_conf_cubes"
action="action_olap_cube_table_form" action="action_olap_cube_table_form"
id="menu_action_olap_cube_table_form"/> id="menu_action_olap_cube_table_form"/>
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Olap Cubes # Olap Cubes
# ------------------------------------------------------------------ # ------------------------------------------------------------------
<record model="ir.ui.view" id="view_olap_cube_tree"> <record model="ir.ui.view" id="view_olap_cube_tree">
<field name="name">olap.cube.tree</field> <field name="name">olap.cube.tree</field>
<field name="model">olap.cube</field> <field name="model">olap.cube</field>
@ -296,7 +283,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_cube_form"> <record model="ir.ui.view" id="view_olap_cube_form">
<field name="name">olap.cube.form</field> <field name="name">olap.cube.form</field>
<field name="model">olap.cube</field> <field name="model">olap.cube</field>
@ -310,24 +297,24 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_cube_form"> <record model="ir.actions.act_window" id="action_olap_cube_form">
<field name="name">Olap Cubes</field> <field name="name">Olap Cubes</field>
<field name="res_model">olap.cube</field> <field name="res_model">olap.cube</field>
<field name="view_type">form</field> <field name="view_type">form</field>
</record> </record>
<menuitem <menuitem
name="Olap Cubes" name="Olap Cubes"
parent ="menu_bi_conf_cubes" parent ="menu_bi_conf_cubes"
action="action_olap_cube_form" action="action_olap_cube_form"
id="menu_action_olap_cube_form"/> id="menu_action_olap_cube_form"/>
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Olap Dimensions # Olap Dimensions
# ------------------------------------------------------------------ # ------------------------------------------------------------------
<record model="ir.ui.view" id="view_olap_dimension_tree"> <record model="ir.ui.view" id="view_olap_dimension_tree">
<field name="name">olap.dimension.tree</field> <field name="name">olap.dimension.tree</field>
<field name="model">olap.dimension</field> <field name="model">olap.dimension</field>
@ -339,7 +326,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_dimension_form"> <record model="ir.ui.view" id="view_olap_dimension_form">
<field name="name">olap.dimension.form</field> <field name="name">olap.dimension.form</field>
<field name="model">olap.dimension</field> <field name="model">olap.dimension</field>
@ -351,23 +338,23 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_dimension_form"> <record model="ir.actions.act_window" id="action_olap_dimension_form">
<field name="name">Olap Dimensions</field> <field name="name">Olap Dimensions</field>
<field name="res_model">olap.dimension</field> <field name="res_model">olap.dimension</field>
<field name="view_type">form</field> <field name="view_type">form</field>
</record> </record>
<menuitem <menuitem
name="Olap Dimension" name="Olap Dimension"
parent = "menu_bi_conf_cubes" parent = "menu_bi_conf_cubes"
action="action_olap_dimension_form" action="action_olap_dimension_form"
id="menu_action_olap_dimension_form"/> id="menu_action_olap_dimension_form"/>
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Olap Hierarchies # Olap Hierarchies
# ------------------------------------------------------------------ # ------------------------------------------------------------------
<record model="ir.ui.view" id="view_olap_hierarchy_tree"> <record model="ir.ui.view" id="view_olap_hierarchy_tree">
<field name="name">olap.hierarchy.tree</field> <field name="name">olap.hierarchy.tree</field>
<field name="model">olap.hierarchy</field> <field name="model">olap.hierarchy</field>
@ -379,7 +366,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_hierarchy_form"> <record model="ir.ui.view" id="view_olap_hierarchy_form">
<field name="name">olap.hierarchy.form</field> <field name="name">olap.hierarchy.form</field>
<field name="model">olap.hierarchy</field> <field name="model">olap.hierarchy</field>
@ -389,32 +376,28 @@
<field name="name" select="1" colspan="2"/> <field name="name" select="1" colspan="2"/>
<field name="sequence" colspan="2"/> <field name="sequence" colspan="2"/>
<field name="dimension_id" select="1" attrs="{'readonly':[('dimension_id','!=','')]}" colspan="4"/> <field name="dimension_id" select="1" attrs="{'readonly':[('dimension_id','!=','')]}" colspan="4"/>
<!-- <field name="field_name" select="2"/>-->
<field name="table_id" select="2" colspan="4" context="{'d_id':dimension_id}"/> <field name="table_id" select="2" colspan="4" context="{'d_id':dimension_id}"/>
<!-- <separator string="Levels" colspan="4"/>
<field name="level_ids" colspan="4" nolabel="1"/>-->
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_hierarchy_form"> <record model="ir.actions.act_window" id="action_olap_hierarchy_form">
<field name="name">Olap Hierarchies</field> <field name="name">Olap Hierarchies</field>
<field name="res_model">olap.hierarchy</field> <field name="res_model">olap.hierarchy</field>
<field name="view_type">form</field> <field name="view_type">form</field>
</record> </record>
<menuitem <menuitem
name="Olap Hierarchy" name="Olap Hierarchy"
parent = "menu_bi_conf_cubes" parent = "menu_bi_conf_cubes"
action="action_olap_hierarchy_form" action="action_olap_hierarchy_form"
id="menu_action_olap_hierarchy_form"/> id="menu_action_olap_hierarchy_form"/>
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Olap Levels # Olap Levels
# ------------------------------------------------------------------ # ------------------------------------------------------------------
<record model="ir.ui.view" id="view_olap_level_tree"> <record model="ir.ui.view" id="view_olap_level_tree">
<field name="name">olap.level.tree</field> <field name="name">olap.level.tree</field>
<field name="model">olap.level</field> <field name="model">olap.level</field>
@ -431,7 +414,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_level_form"> <record model="ir.ui.view" id="view_olap_level_form">
<field name="name">olap.level.form</field> <field name="name">olap.level.form</field>
<field name="model">olap.level</field> <field name="model">olap.level</field>
@ -450,24 +433,24 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_level_form"> <record model="ir.actions.act_window" id="action_olap_level_form">
<field name="name">Olap Level</field> <field name="name">Olap Level</field>
<field name="res_model">olap.level</field> <field name="res_model">olap.level</field>
<field name="view_type">form</field> <field name="view_type">form</field>
</record> </record>
<menuitem <menuitem
name="Olap Level" name="Olap Level"
parent = "menu_bi_conf_cubes" parent = "menu_bi_conf_cubes"
action="action_olap_level_form" action="action_olap_level_form"
id="menu_action_olap_level_form"/> id="menu_action_olap_level_form"/>
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Olap Measure # Olap Measure
# ------------------------------------------------------------------ # ------------------------------------------------------------------
<record model="ir.ui.view" id="view_olap_measure_tree"> <record model="ir.ui.view" id="view_olap_measure_tree">
<field name="name">olap.measure.tree</field> <field name="name">olap.measure.tree</field>
<field name="model">olap.measure</field> <field name="model">olap.measure</field>
@ -479,7 +462,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_measure_form"> <record model="ir.ui.view" id="view_olap_measure_form">
<field name="name">olap.measure.form</field> <field name="name">olap.measure.form</field>
<field name="model">olap.measure</field> <field name="model">olap.measure</field>
@ -507,19 +490,19 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_measure_form"> <record model="ir.actions.act_window" id="action_olap_measure_form">
<field name="name">Olap Measures</field> <field name="name">Olap Measures</field>
<field name="res_model">olap.measure</field> <field name="res_model">olap.measure</field>
<field name="view_type">form</field> <field name="view_type">form</field>
</record> </record>
<menuitem <menuitem
name="Olap Measures" name="Olap Measures"
parent = "menu_bi_conf_cubes" parent = "menu_bi_conf_cubes"
action="action_olap_measure_form" action="action_olap_measure_form"
id="menu_action_olap_measure_form"/> id="menu_action_olap_measure_form"/>
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Olap Saved Query # Olap Saved Query
# ------------------------------------------------------------------ # ------------------------------------------------------------------
@ -538,7 +521,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_saved_query_form_mdx"> <record model="ir.ui.view" id="view_olap_saved_query_form_mdx">
<field name="name">olap.saved.query.mdx</field> <field name="name">olap.saved.query.mdx</field>
<field name="model">olap.saved.query</field> <field name="model">olap.saved.query</field>
@ -554,7 +537,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_saved_query_form"> <record model="ir.ui.view" id="view_olap_saved_query_form">
<field name="name">olap.saved.query.form</field> <field name="name">olap.saved.query.form</field>
<field name="model">olap.saved.query</field> <field name="model">olap.saved.query</field>
@ -576,22 +559,22 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_saved_query_form"> <record model="ir.actions.act_window" id="action_olap_saved_query_form">
<field name="name">Olap Saved Query</field> <field name="name">Olap Saved Query</field>
<field name="res_model">olap.saved.query</field> <field name="res_model">olap.saved.query</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form,mdx</field> <field name="view_mode">tree,form,mdx</field>
</record> </record>
<menuitem <menuitem
name="Olap Saved Query" name="Olap Saved Query"
parent = "menu_bi_conf_tools" parent = "menu_bi_conf_tools"
action="action_olap_saved_query_form" action="action_olap_saved_query_form"
id="menu_action_olap_saved_query_form"/> id="menu_action_olap_saved_query_form"/>
<!-- All Logs --> <!-- All Logs -->
<record model="ir.ui.view" id="view_olap_query_logs_tree"> <record model="ir.ui.view" id="view_olap_query_logs_tree">
<field name="name">olap.query.logs</field> <field name="name">olap.query.logs</field>
<field name="model">olap.query.logs</field> <field name="model">olap.query.logs</field>
@ -605,7 +588,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_query_logs_form"> <record model="ir.ui.view" id="view_olap_query_logs_form">
<field name="name">olap.query.logs.form</field> <field name="name">olap.query.logs.form</field>
<field name="model">olap.query.logs</field> <field name="model">olap.query.logs</field>
@ -622,21 +605,21 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_query_logs_form"> <record model="ir.actions.act_window" id="action_olap_query_logs_form">
<field name="name">All Logs</field> <field name="name">All Logs</field>
<field name="res_model">olap.query.logs</field> <field name="res_model">olap.query.logs</field>
<field name="view_type">form</field> <field name="view_type">form</field>
</record> </record>
<menuitem <menuitem
name="All Logs" name="All Logs"
action="action_olap_query_logs_form" action="action_olap_query_logs_form"
id="menu_action_olap_query_logs_form" id="menu_action_olap_query_logs_form"
parent="menu_bi_conf_tools"/> parent="menu_bi_conf_tools"/>
<!-- All Logs / My logs --> <!-- All Logs / My logs -->
<record model="ir.ui.view" id="view_olap_query_logs_my_tree"> <record model="ir.ui.view" id="view_olap_query_logs_my_tree">
<field name="name">olap.query.logs</field> <field name="name">olap.query.logs</field>
<field name="model">olap.query.logs</field> <field name="model">olap.query.logs</field>
@ -649,7 +632,7 @@
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="view_olap_query_logs_my_tree"> <record model="ir.ui.view" id="view_olap_query_logs_my_tree">
<field name="name">olap.query.logs</field> <field name="name">olap.query.logs</field>
<field name="model">olap.query.logs</field> <field name="model">olap.query.logs</field>
@ -662,9 +645,9 @@
</tree> </tree>
</field> </field>
</record> </record>
<!-- Query Logs --> <!-- Query Logs -->
<record model="ir.ui.view" id="view_olap_query_logs_my_form"> <record model="ir.ui.view" id="view_olap_query_logs_my_form">
<field name="name">olap.query.logs.form</field> <field name="name">olap.query.logs.form</field>
<field name="model">olap.query.logs</field> <field name="model">olap.query.logs</field>
@ -680,7 +663,7 @@
</form> </form>
</field> </field>
</record> </record>
<record model="ir.actions.act_window" id="action_olap_query_logs_my_form"> <record model="ir.actions.act_window" id="action_olap_query_logs_my_form">
<field name="name">My Logs</field> <field name="name">My Logs</field>
<field name="res_model">olap.query.logs</field> <field name="res_model">olap.query.logs</field>
@ -688,12 +671,12 @@
<field name="view_mode">tree,form,mdx</field> <field name="view_mode">tree,form,mdx</field>
<field name="domain">[('user_id','=',uid)]</field> <field name="domain">[('user_id','=',uid)]</field>
</record> </record>
<menuitem <menuitem
name="My Logs" name="My Logs"
action="action_olap_query_logs_my_form" action="action_olap_query_logs_my_form"
id="menu_action_olap_query_logs_my_form" id="menu_action_olap_query_logs_my_form"
parent="menu_action_olap_query_logs_form"/> parent="menu_action_olap_query_logs_form"/>
</data> </data>
</openerp> </openerp>

View File

@ -6,52 +6,42 @@
<field name="osv">olap.schema</field> <field name="osv">olap.schema</field>
<field name="on_create">True</field> <field name="on_create">True</field>
</record> </record>
<record model="workflow.activity" id="act_none"> <record model="workflow.activity" id="act_none">
<field name="wkf_id" ref="wkf_schema"/> <field name="wkf_id" ref="wkf_schema"/>
<field name="flow_start">True</field> <field name="flow_start">True</field>
<field name="name">none</field> <field name="name">none</field>
</record> </record>
<record model="workflow.activity" id="act_dbconnect"> <record model="workflow.activity" id="act_dbconnect">
<field name="wkf_id" ref="wkf_schema"/> <field name="wkf_id" ref="wkf_schema"/>
<field name="name">dbconnect</field> <field name="name">dbconnect</field>
<field name="kind">function</field> <field name="kind">function</field>
<field name="action">action_dbconnect()</field> <field name="action">action_dbconnect()</field>
</record> </record>
<record model="workflow.activity" id="act_dbload"> <record model="workflow.activity" id="act_dbload">
<field name="wkf_id" ref="wkf_schema"/> <field name="wkf_id" ref="wkf_schema"/>
<field name="name">dbload</field> <field name="name">dbload</field>
<field name="kind">function</field> <field name="kind">function</field>
<field name="action">action_dbload()</field> <field name="action">action_dbload()</field>
</record> </record>
<record model="workflow.activity" id="act_dbconfigure"> <record model="workflow.activity" id="act_dbconfigure">
<field name="wkf_id" ref="wkf_schema"/> <field name="wkf_id" ref="wkf_schema"/>
<field name="name">dbconfigure</field> <field name="name">dbconfigure</field>
<field name="kind">function</field> <field name="kind">function</field>
<field name="action">action_dbconfigure()</field> <field name="action">action_dbconfigure()</field>
</record> </record>
<record model="workflow.activity" id="act_dbready"> <record model="workflow.activity" id="act_dbready">
<field name="wkf_id" ref="wkf_schema"/> <field name="wkf_id" ref="wkf_schema"/>
<field name="flow_stop">True</field> <field name="flow_stop">True</field>
<field name="name">dbready</field> <field name="name">dbready</field>
<field name="kind">function</field> <field name="kind">function</field>
<field name="action">action_dbready()</field> <field name="action">action_dbready()</field>
</record> </record>
<!--
<record model="workflow.activity" id="act_dbdone">
<field name="wkf_id" ref="wkf_schema"/>
<field name="flow_stop">True</field>
<field name="name">db_done</field>
<field name="kind">function</field>
<field name="action">action_done()</field>
</record>
-->
<record model="workflow.transition" id="trans_none_dbconnect"> <record model="workflow.transition" id="trans_none_dbconnect">
<field name="act_from" ref="act_none"/> <field name="act_from" ref="act_none"/>
<field name="act_to" ref="act_dbconnect"/> <field name="act_to" ref="act_dbconnect"/>
@ -69,19 +59,12 @@
<field name="act_to" ref="act_dbconfigure"/> <field name="act_to" ref="act_dbconfigure"/>
<field name="signal">dbconfigure</field> <field name="signal">dbconfigure</field>
</record> </record>
<record model="workflow.transition" id="trans_dbconfigure_dbready"> <record model="workflow.transition" id="trans_dbconfigure_dbready">
<field name="act_from" ref="act_dbconfigure"/> <field name="act_from" ref="act_dbconfigure"/>
<field name="act_to" ref="act_dbready"/> <field name="act_to" ref="act_dbready"/>
<field name="signal">dbready</field> <field name="signal">dbready</field>
</record> </record>
<!--
<record model="workflow.transition" id="trans_dbready_done">
<field name="act_from" ref="act_dbready"/>
<field name="act_to" ref="act_dbdone"/>
<field name="signal">dbdone</field>
</record>
-->
</data> </data>
</openerp> </openerp>

View File

@ -77,8 +77,6 @@
<field name="fact_database_id" select="2"/> <field name="fact_database_id" select="2"/>
<field name="active"/> <field name="active"/>
<field name="hide"/> <field name="hide"/>
<!-- <button name="show_col_view" string="Columns" type="object"/>-->
<button name="hide_col" string="Hide" type="object"/> <button name="hide_col" string="Hide" type="object"/>
<button name="show_col" string="Show" type="object"/> <button name="show_col" string="Show" type="object"/>
</tree> </tree>

View File

@ -3,53 +3,42 @@
<data> <data>
<wizard <wizard
string="Query Builder" string="Query Builder"
model="olap.schema" model="olap.schema"
name="olap.query_builder" name="olap.query_builder"
menu= "False" menu= "False"
multi="True" multi="True"
id="bi_conf_cube_query_builder"/> id="bi_conf_cube_query_builder"/>
<wizard
string="Load Tables"
model="olap.schema"
name="olap.load.table"
menu= "False"
multi="True"
id="bi_menu_olap_load_table"/>
<!-- <wizard <wizard
string="Load Tables" string="Open Configuration"
model="olap.schema" model="olap.schema"
name="olap.load.table" name="olap.load.configuration.table"
menu= "False" menu= "False"
multi="True" multi="True"
id="bi_menu_olap_load_table"/>--> id="bi_load_configuration_table"/>
<wizard
string="Configure from Application"
model="olap.schema"
name="olap.application.configuration"
multi="True"
id="bi_application_configuration"/>
<wizard <wizard
string="Load Tables" string="Test Connection"
model="olap.schema" model="olap.fact.database"
name="olap.load.table" name="olap.fact.database.test_connection"
menu= "False" menu="False"
multi="True" id="bi_test_connection"/>
id="bi_menu_olap_load_table"/>
<wizard
string="Open Configuration"
model="olap.schema"
name="olap.load.configuration.table"
menu= "False"
multi="True"
id="bi_load_configuration_table"/>
<wizard
string="Configure from Application"
model="olap.schema"
name="olap.application.configuration"
multi="True"
id="bi_application_configuration"/>
<wizard
string="Test Connection"
model="olap.fact.database"
name="olap.fact.database.test_connection"
menu="False"
id="bi_test_connection"/>
</data> </data>
</openerp> </openerp>

View File

@ -203,7 +203,7 @@ class olap_schema(osv.osv ):
'state': lambda * a: 'none', 'state': lambda * a: 'none',
'configure': lambda * a: False, 'configure': lambda * a: False,
'ready': lambda * a: False 'ready': lambda * a: False
} }
def action_dbconnect(self, cr, uid, ids, context = {}): def action_dbconnect(self, cr, uid, ids, context = {}):
""" Connect DB with postgres ,Or MySql,Or Orcale """ Connect DB with postgres ,Or MySql,Or Orcale
@ -497,7 +497,7 @@ class olap_database_columns(osv.osv):
'text': 'Text', 'text': 'Text',
'date': 'Date', 'date': 'Date',
'time': 'TimeStamp without Time Zone', 'time': 'TimeStamp without Time Zone',
'number': 'NUMBER', 'number': 'NUMBER',
} }
def _datatypes_get(self, *args, **argv): def _datatypes_get(self, *args, **argv):
@ -718,9 +718,9 @@ class olap_database_columns(osv.osv):
if context['parent_id']: if context['parent_id']:
parent_id = context['parent_id'] parent_id = context['parent_id']
val = { val = {
'cube_table_id': parent_id, 'cube_table_id': parent_id,
'table_id': table_id, 'table_id': table_id,
'field_id': ids[0] 'field_id': ids[0]
} }
id = self.pool.get('olap.cube.table.line').create(cr, uid, val, context) id = self.pool.get('olap.cube.table.line').create(cr, uid, val, context)
@ -993,7 +993,7 @@ class olap_cube_table(osv.osv):
relation = 'olap.database.columns', relation = 'olap.database.columns',
string = 'Available Tables', string = 'Available Tables',
type = "many2many" type = "many2many"
), ),
} }
_defaults = { _defaults = {
@ -1070,8 +1070,8 @@ class olap_cube(osv.osv):
} }
_defaults = { _defaults = {
'schema_id': _set_schema 'schema_id': _set_schema
} }
olap_cube() olap_cube()
@ -1091,8 +1091,8 @@ class olap_query_logs(osv.osv):
} }
_defaults = { _defaults = {
'count':lambda * args: 0 'count':lambda * args: 0
} }
olap_query_logs() olap_query_logs()
@ -1120,7 +1120,7 @@ class olap_dimension(osv.osv):
'hierarchy_ids': fields.one2many('olap.hierarchy', 'dimension_id', 'Hierarchies'), 'hierarchy_ids': fields.one2many('olap.hierarchy', 'dimension_id', 'Hierarchies'),
} }
_defaults = { _defaults = {
'cube_id': _set_cube, 'cube_id': _set_cube,
} }
olap_dimension() olap_dimension()
@ -1414,15 +1414,15 @@ class olap_saved_query(osv.osv):
_decription = "Olap Saved Query" _decription = "Olap Saved Query"
_columns = { _columns = {
'name': fields.text('Query Name', size = 64), 'name': fields.text('Query Name', size = 64),
'user_id': fields.many2one('res.users', 'User'), 'user_id': fields.many2one('res.users', 'User'),
'query': fields.text('Query', required = True), 'query': fields.text('Query', required = True),
'cube_id': fields.many2one('olap.cube', 'Cube', required = True), 'cube_id': fields.many2one('olap.cube', 'Cube', required = True),
'mdx_id': fields.char('Module', size=64), 'mdx_id': fields.char('Module', size=64),
'schema_id': fields.many2one('olap.schema', 'Schema', required = True), 'schema_id': fields.many2one('olap.schema', 'Schema', required = True),
'time': fields.datetime('Time', required = True), 'time': fields.datetime('Time', required = True),
'axis_keys': fields.text('Axis Keys'), 'axis_keys': fields.text('Axis Keys'),
} }
olap_saved_query() olap_saved_query()
# Wizard for the Load Data Structure # Wizard for the Load Data Structure
@ -1865,11 +1865,11 @@ class bi_auto_configure_wizard(osv.osv_memory):
_columns = { _columns = {
'name': fields.char('Fact Name' , size = 64, readonly = True), 'name': fields.char('Fact Name' , size = 64, readonly = True),
} }
_defaults = { _defaults = {
'name': _get_name, 'name': _get_name,
} }
def action_load(self, cr, uid, ids, context = None): def action_load(self, cr, uid, ids, context = None):
""" """
@ -2078,12 +2078,12 @@ class olap_warehouse_wizard(osv.osv_memory):
return {'type': 'ir.actions.act_window_close' } return {'type': 'ir.actions.act_window_close' }
_columns = { _columns = {
'query': fields.text('Query', readonly=True), 'query': fields.text('Query', readonly=True),
} }
_defaults = { _defaults = {
'query': _get_queries, 'query': _get_queries,
} }
olap_warehouse_wizard() olap_warehouse_wizard()
@ -2152,14 +2152,14 @@ class olap_parameters_config_wizard(osv.osv_memory):
its not clear.", required = True), its not clear.", required = True),
'config_logo': fields.binary('Image', readonly=True), 'config_logo': fields.binary('Image', readonly=True),
'progress': fields.float('Configuration Progress', readonly=True), 'progress': fields.float('Configuration Progress', readonly=True),
} }
_defaults = { _defaults = {
'host_name': _get_host, 'host_name': _get_host,
'host_port': _get_port, 'host_port': _get_port,
'progress': _progress, 'progress': _progress,
'config_logo': _get_image, 'config_logo': _get_image,
} }
def action_cancel(self, cr, uid, ids, conect = None): def action_cancel(self, cr, uid, ids, conect = None):
""" """
@ -2171,11 +2171,11 @@ class olap_parameters_config_wizard(osv.osv_memory):
""" """
return { return {
'view_type': 'form', 'view_type': 'form',
"view_mode": 'form', "view_mode": 'form',
'res_model': 'ir.actions.configuration.wizard', 'res_model': 'ir.actions.configuration.wizard',
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
'target':'new', 'target':'new',
} }
def action_config(self, cr, uid, ids, context = None): def action_config(self, cr, uid, ids, context = None):
@ -2203,11 +2203,11 @@ class olap_parameters_config_wizard(osv.osv_memory):
':' + (conf.host_port or '8080') + '/designer'}) ':' + (conf.host_port or '8080') + '/designer'})
return { return {
'view_type': 'form', 'view_type': 'form',
"view_mode": 'form', "view_mode": 'form',
'res_model': 'ir.actions.configuration.wizard', 'res_model': 'ir.actions.configuration.wizard',
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
'target':'new', 'target':'new',
} }
olap_parameters_config_wizard() olap_parameters_config_wizard()

View File

@ -26,7 +26,7 @@ class olap_query_logs_clear(osv.osv_memory):
_description = "Olap Query Logs Clear" _description = "Olap Query Logs Clear"
_columns = { _columns = {
'user_name':fields.char('User', size=64, required=True, readonly=True), 'user_name':fields.char('User', size=64, required=True, readonly=True),
} }
def _getdata(self, cr, uid, context={}): def _getdata(self, cr, uid, context={}):
@ -35,7 +35,7 @@ class olap_query_logs_clear(osv.osv_memory):
_defaults = { _defaults = {
'user_name': _getdata 'user_name': _getdata
} }
def clear_logs(self, cr, uid, part, context={}): def clear_logs(self, cr, uid, part, context={}):
""" """
@ -52,11 +52,11 @@ class olap_query_logs_clear(osv.osv_memory):
if id2: if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id id2 = data_obj.browse(cr, uid, id2, context=context).res_id
value = { value = {
'view_type': 'form', 'view_type': 'form',
'view_mode': 'form', 'view_mode': 'form',
'res_model': 'olap.query.logs.clear.msg', 'res_model': 'olap.query.logs.clear.msg',
'views': [(id2, 'form'), (False, 'tree'), (False, 'calendar'), (False, 'graph')], 'views': [(id2, 'form'), (False, 'tree'), (False, 'calendar'), (False, 'graph')],
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
'target': 'new' 'target': 'new'
} }
return value return value

View File

@ -33,20 +33,14 @@ import netsvc
class wizard_load_configured_table(wizard.interface): class wizard_load_configured_table(wizard.interface):
def _get_table_data(self, cr, uid, data, context={}): def _get_table_data(self, cr, uid, data, context={}):
pool_obj = pooler.get_pool(cr.dbname) pool_obj = pooler.get_pool(cr.dbname)
# vals={}
# vals['configure']=True
# vals['state']='dbconfigure'
# pooler.get_pool(cr.dbname).get('olap.schema').write(cr,uid,data['id'],vals)
wf_service = netsvc.LocalService('workflow') wf_service = netsvc.LocalService('workflow')
wf_service.trg_validate(uid, 'olap.schema', data['id'], 'dbconfigure', cr) wf_service.trg_validate(uid, 'olap.schema', data['id'], 'dbconfigure', cr)
lines=pool_obj.get('olap.schema').read(cr, uid, data['id'],context={}) lines=pool_obj.get('olap.schema').read(cr, uid, data['id'],context={})
fact_ids=pool_obj.get('olap.database.tables').search(cr, uid, ([('fact_database_id','=',lines['database_id'][0])]),context={}) fact_ids=pool_obj.get('olap.database.tables').search(cr, uid, ([('fact_database_id','=',lines['database_id'][0])]),context={})
model_data_ids = pool_obj.get('ir.model.data').search(cr,uid,[('model','=','ir.ui.view'),('name','=','view_olap_database_tables_form')],context={}) model_data_ids = pool_obj.get('ir.model.data').search(cr,uid,[('model','=','ir.ui.view'),('name','=','view_olap_database_tables_form')],context={})
resource_id = pool_obj.get('ir.model.data').read(cr,uid,model_data_ids,fields=['res_id'])[0]['res_id'] resource_id = pool_obj.get('ir.model.data').read(cr,uid,model_data_ids,fields=['res_id'])[0]['res_id']
return { return {
'domain': "[('id','in', ["+','.join(map(str,fact_ids))+"])]", 'domain': "[('id','in', ["+','.join(map(str,fact_ids))+"])]",
'name': 'Database Tables', 'name': 'Database Tables',
@ -56,7 +50,7 @@ class wizard_load_configured_table(wizard.interface):
'views': [(False,'tree'),(resource_id,'form')], 'views': [(False,'tree'),(resource_id,'form')],
'type': 'ir.actions.act_window' 'type': 'ir.actions.act_window'
} }
states = { states = {
'init' : { 'init' : {
'actions' : [], 'actions' : [],

View File

@ -101,7 +101,7 @@ def olap_db_connect(self,cr,uid,part,context={}):
WHERE table_schema = 'public'""") WHERE table_schema = 'public'""")
for col in cr_db.fetchall(): for col in cr_db.fetchall():
val={ val = {
'table_id': tables[col[0]], 'table_id': tables[col[0]],
'column_db_name': col[1], 'column_db_name': col[1],
'type': col[2], 'type': col[2],
@ -126,7 +126,7 @@ def olap_db_connect(self,cr,uid,part,context={}):
constraint_type = 'PRIMARY KEY')""") constraint_type = 'PRIMARY KEY')""")
print "Updating the Primary Key Constraint" print "Updating the Primary Key Constraint"
for constraint in cr_db.fetchall(): for constraint in cr_db.fetchall():
val={ val = {
'primary_key':True 'primary_key':True
} }
@ -155,7 +155,7 @@ def olap_db_connect(self,cr,uid,part,context={}):
constraint_type = 'FOREIGN KEY')""") constraint_type = 'FOREIGN KEY')""")
for constraint in cr_db.fetchall(): for constraint in cr_db.fetchall():
val={ val = {
'related_to':tables[for_key[constraint[2]]] 'related_to':tables[for_key[constraint[2]]]
} }
id_to_write=filter(lambda x:(int(cols[x][1])==int(tables[constraint[0]])and (constraint[1]==cols[x][0])),cols) id_to_write=filter(lambda x:(int(cols[x][1])==int(tables[constraint[0]])and (constraint[1]==cols[x][0])),cols)
@ -209,7 +209,7 @@ def olap_db_connect(self,cr,uid,part,context={}):
for col in cr_db.fetchall(): for col in cr_db.fetchall():
val={ val = {
'table_id': tables[col[0]], 'table_id': tables[col[0]],
'column_db_name': col[1], 'column_db_name': col[1],
'type': col[2], 'type': col[2],
@ -237,14 +237,14 @@ def olap_db_connect(self,cr,uid,part,context={}):
for constraint in cr_db.fetchall(): for constraint in cr_db.fetchall():
if constraint[0]: if constraint[0]:
val={ val = {
'related_to':tables[constraint[1]] 'related_to':tables[constraint[1]]
} }
else: else:
val={ val = {
'primary_key':True 'primary_key':True
} }
id_to_write=filter(lambda x:(int(cols[x][1])==int(tables[constraint[3]])and(constraint[2]==cols[x][0])),cols) id_to_write=filter(lambda x:(int(cols[x][1])==int(tables[constraint[3]])and(constraint[2]==cols[x][0])),cols)
col_id=tcol.write(cr,uid,int(id_to_write[0]),val,context) col_id=tcol.write(cr,uid,int(id_to_write[0]),val,context)
@ -304,7 +304,7 @@ def olap_db_connect(self,cr,uid,part,context={}):
type_col='varchar' type_col='varchar'
else: else:
type_col=col[2] type_col=col[2]
val={ val = {
'table_id': tables[col[0]], 'table_id': tables[col[0]],
'column_db_name': col[1], 'column_db_name': col[1],
'type': type_col, 'type': type_col,
@ -331,7 +331,7 @@ def olap_db_connect(self,cr,uid,part,context={}):
temp = cr_db.fetchall() temp = cr_db.fetchall()
pk_table = {} pk_table = {}
for constraint in temp: for constraint in temp:
val={ val = {
'primary_key' : True 'primary_key' : True
} }
pk_table[constraint[2]] = constraint[0] pk_table[constraint[2]] = constraint[0]
@ -364,7 +364,7 @@ def olap_db_connect(self,cr,uid,part,context={}):
for constraint in temp: for constraint in temp:
rel_constraint_name=constraints_map[constraint[2]] rel_constraint_name=constraints_map[constraint[2]]
req_table = pk_table[rel_constraint_name] req_table = pk_table[rel_constraint_name]
val={ val = {
'related_to' : tables[req_table] 'related_to' : tables[req_table]
} }
id_to_write=filter(lambda x:(int(cols[x][1])==int(tables[constraint[0]])and (constraint[1]==cols[x][0])),cols) id_to_write=filter(lambda x:(int(cols[x][1])==int(tables[constraint[0]])and (constraint[1]==cols[x][0])),cols)

View File

@ -136,15 +136,13 @@ query_builder_form = """<?xml version="1.0"?>
<field name="mdx_query_output" colspan="4" height="100" width="800"/> <field name="mdx_query_output" colspan="4" height="100" width="800"/>
</form>""" </form>"""
query_builder_fields={ query_builder_fields={
'dimension':{'string':'Dimension','type':'text'},
'hierarchy':{'string':'Hiearchy','type':'text'},
'dimension':{'string':'Dimension','type':'text'}, 'level':{'string':'Level','type':'text'},
'hierarchy':{'string':'Hiearchy','type':'text'}, 'measure':{'string':'Measure','type':'text'},
'level':{'string':'Level','type':'text'}, 'mdx_query':{'string':'MDX Query','type':'text'},
'measure':{'string':'Measure','type':'text'}, 'mdx_query_output':{'string':'MDX Query Output','type':'text'},
'mdx_query':{'string':'MDX Query','type':'text'}, }
'mdx_query_output':{'string':'MDX Query Output','type':'text'},
}
query_builder_fetch_form = """<?xml version="1.0"?> query_builder_fetch_form = """<?xml version="1.0"?>
<form string="Cube Fetcher"> <form string="Cube Fetcher">
@ -185,10 +183,8 @@ def _execute_mdx(self, cr, uid, data, context):
ok = True ok = True
if not ok: if not ok:
continue continue
#print ' '*COLSPAN,
output =' '*COLSPAN output =' '*COLSPAN
log.add(output) log.add(output)
# print (('%-'+str(ROWSPAN)+'s ' ) * len(axis[1])) % tuple(map(lambda x: str(len(x[0])==i and x[1] or ''),axis[1]))
output=(('%-'+str(ROWSPAN)+'s ' ) * len(axis[1])) % tuple(map(lambda x: str(len(x[0])==i and x[1] or ''),axis[1])) output=(('%-'+str(ROWSPAN)+'s ' ) * len(axis[1])) % tuple(map(lambda x: str(len(x[0])==i and x[1] or ''),axis[1]))
log.add(output) log.add(output)
@ -197,23 +193,18 @@ def _execute_mdx(self, cr, uid, data, context):
print "--------------------------------------",x print "--------------------------------------",x
temp=(axis[0].pop(0)[1]) temp=(axis[0].pop(0)[1])
print "--------------------------------------",temp print "--------------------------------------",temp
# print ('%-'+str(COLSPAN)+'s')% (' '*(len(axis[0][0][0])-1)*2 + (temp),),
output =('%-'+str(COLSPAN)+'s')% (str(x)+str(temp)) output =('%-'+str(COLSPAN)+'s')% (str(x)+str(temp))
log.add("\n") log.add("\n")
log.add(output) log.add(output)
#output=(temp)
for row in col: for row in col:
if row==[False]: if row==[False]:
# print ('%-'+str(ROWSPAN)+'s')%('',),
output=('%-'+str(ROWSPAN)+'s')%('') output=('%-'+str(ROWSPAN)+'s')%('')
log.add(output) log.add(output)
else: else:
# print ('%-'+str(ROWSPAN)+'s')%(row,),
output=('%-'+str(ROWSPAN)+'s')%(row) output=('%-'+str(ROWSPAN)+'s')%(row)
log.add(output) log.add(output)
#print
log.add("\n") log.add("\n")
return {'mdx_query_output':log()} return {'mdx_query_output':log()}

View File

@ -68,10 +68,10 @@ cube table and cube table line
<field name="fact_database_id" ref="fact_databases_BI"/> <field name="fact_database_id" ref="fact_databases_BI"/>
<field name="active">True</field> <field name="active">True</field>
</record> </record>
<!-- Olap Database Columns --> <!-- Olap Database Columns -->
<record model="olap.database.columns" id="crm_case_id"> <record model="olap.database.columns" id="crm_case_id">
<field name="name">id</field> <field name="name">id</field>
<field name="column_db_name">id</field> <field name="column_db_name">id</field>
@ -95,7 +95,7 @@ cube table and cube table line
<field name="active">True</field> <field name="active">True</field>
<field name="related_to" ref="table_res_partner"/> <field name="related_to" ref="table_res_partner"/>
</record> </record>
<record model="olap.database.columns" id="crm_case_planned_cost"> <record model="olap.database.columns" id="crm_case_planned_cost">
<field name="name">id</field> <field name="name">id</field>
<field name="column_db_name">id</field> <field name="column_db_name">id</field>
@ -144,7 +144,7 @@ cube table and cube table line
<field name="type">int4</field> <field name="type">int4</field>
<field name="table_id" ref="table_crm_case"/> <field name="table_id" ref="table_crm_case"/>
<field name="related_to" ref="table_res_partner"/> <field name="related_to" ref="table_res_partner"/>
</record> </record>
<record model="olap.database.columns" id="crm_case_canal_id"> <record model="olap.database.columns" id="crm_case_canal_id">
<field name="name">canal_id</field> <field name="name">canal_id</field>
@ -265,7 +265,7 @@ cube table and cube table line
DIMENSION Sections DIMENSION Sections
--> -->
<record model="olap.dimension" id="dimension_crm_section"> <record model="olap.dimension" id="dimension_crm_section">
<field name="name">Sections</field> <field name="name">Sections</field>
<field name="cube_id" ref="cube_crm"/> <field name="cube_id" ref="cube_crm"/>
@ -378,7 +378,7 @@ Category
</record> </record>
<record model="olap.dimension" id="dimension_crm_channel"> <record model="olap.dimension" id="dimension_crm_channel">
<field name="name">Channels</field> <field name="name">Channels</field>
<field name="cube_id" ref="cube_crm"/> <field name="cube_id" ref="cube_crm"/>
@ -428,7 +428,7 @@ Measures
<field name="value_sql">avg(crm_case.planned_cost)</field> <field name="value_sql">avg(crm_case.planned_cost)</field>
<field name="formatstring">cr_postfix_comma</field> <field name="formatstring">cr_postfix_comma</field>
</record> </record>
<record model="olap.measure" id="measure_planned_revenue"> <record model="olap.measure" id="measure_planned_revenue">
<field name="name">Planned Revenue</field> <field name="name">Planned Revenue</field>
<field name="cube_id" ref="cube_crm"/> <field name="cube_id" ref="cube_crm"/>
@ -438,7 +438,7 @@ Measures
<field name="agregator">sum</field> <field name="agregator">sum</field>
<field name="formatstring">cr_postfix_comma</field> <field name="formatstring">cr_postfix_comma</field>
</record> </record>
<record model="olap.measure" id="measure_planned_revenue"> <record model="olap.measure" id="measure_planned_revenue">
<field name="name">Planned Revenue</field> <field name="name">Planned Revenue</field>
<field name="cube_id" ref="cube_crm"/> <field name="cube_id" ref="cube_crm"/>
@ -447,7 +447,7 @@ Measures
<field name="table_name">crm_case</field> <field name="table_name">crm_case</field>
<field name="agregator">sum</field> <field name="agregator">sum</field>
</record> </record>
<record model="olap.measure" id="measure_probability"> <record model="olap.measure" id="measure_probability">
<field name="name">Probability</field> <field name="name">Probability</field>
<field name="cube_id" ref="cube_crm"/> <field name="cube_id" ref="cube_crm"/>
@ -456,7 +456,7 @@ Measures
<field name="table_name">crm_case</field> <field name="table_name">crm_case</field>
<field name="agregator">sum</field> <field name="agregator">sum</field>
</record> </record>
d
</data> </data>
</openerp> </openerp>

View File

@ -1,6 +1,6 @@
# -*- encoding: utf-8 -*- # -*- encoding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -39,15 +39,15 @@ field1 = {
class wizard_olap_extract(wizard.interface): class wizard_olap_extract(wizard.interface):
def zipper(self,zipname,filename,mode="a"): def zipper(self,zipname,filename,mode="a"):
z = zipfile.ZipFile(zipname+".zip", mode) z = zipfile.ZipFile(zipname+".zip", mode)
z.write(filename) z.write(filename)
print "\n",z.printdir() print "\n",z.printdir()
def write_csv(self,filename,content=[]): def write_csv(self,filename,content=[]):
fid = open(filename, 'w') fid = open(filename, 'w')
if fid == -1: if fid == -1:
print 'File: temp.csv not found or could not be opened' print 'File: temp.csv not found or could not be opened'
return False return False
@ -55,20 +55,20 @@ class wizard_olap_extract(wizard.interface):
writer=csv.writer(fid, 'TINY',delimiter=',') writer=csv.writer(fid, 'TINY',delimiter=',')
for row in content: for row in content:
writer.writerow(row) writer.writerow(row)
fid.close fid.close
return True return True
def table_depth(self,cr,uid,list=[],context={}): def table_depth(self,cr,uid,list=[],context={}):
res={} res={}
templeft={} templeft={}
tempright={} tempright={}
for table_id in list: for table_id in list:
lines=pooler.get_pool(cr.dbname).get('olap.cube.table').browse(cr, uid,table_id,context) lines=pooler.get_pool(cr.dbname).get('olap.cube.table').browse(cr, uid,table_id,context)
res[str(lines.id)] = ["cubetable_"+str(lines.id),lines.name and lines.name or '',lines.table_alias and lines.table_alias or '',lines.key_left and lines.key_left or '',lines.key_right and lines.key_right or '',lines.table_left_id.id and "cubetable_"+str(lines.table_left_id.id) or '',lines.table_right_id.id and "cubetable_"+str(lines.table_right_id.id) or ''] res[str(lines.id)] = ["cubetable_"+str(lines.id),lines.name and lines.name or '',lines.table_alias and lines.table_alias or '',lines.key_left and lines.key_left or '',lines.key_right and lines.key_right or '',lines.table_left_id.id and "cubetable_"+str(lines.table_left_id.id) or '',lines.table_right_id.id and "cubetable_"+str(lines.table_right_id.id) or '']
if(lines.table_left_id.id): if(lines.table_left_id.id):
templeft = self.table_depth(cr,uid,[lines.table_left_id.id],context) templeft = self.table_depth(cr,uid,[lines.table_left_id.id],context)
if templeft: if templeft:
for temp in templeft: for temp in templeft:
if not res.has_key(temp): if not res.has_key(temp):
@ -76,24 +76,24 @@ class wizard_olap_extract(wizard.interface):
if(lines.table_right_id.id): if(lines.table_right_id.id):
tempright = self.table_depth(cr,uid,[lines.table_right_id.id],context) tempright = self.table_depth(cr,uid,[lines.table_right_id.id],context)
if tempright: if tempright:
for temp in tempright: for temp in tempright:
if not res.has_key(temp): if not res.has_key(temp):
res[temp]= tempright[temp] res[temp]= tempright[temp]
return res return res
def _extract_schema(self, cr, uid, data, context={}): def _extract_schema(self, cr, uid, data, context={}):
_name = data['form']['module_name'] _name = data['form']['module_name']
_modulename = "olap_"+_name _modulename = "olap_"+_name
dirname = _modulename dirname = _modulename
if not os.path.isdir("./addons/" + dirname + "/"): if not os.path.isdir("./addons/" + dirname + "/"):
os.mkdir("./addons/" + dirname + "/") os.mkdir("./addons/" + dirname + "/")
os.chdir("./addons/"+dirname) os.chdir("./addons/"+dirname)
_init = "import %s" % _modulename _init = "import %s" % _modulename
@ -101,17 +101,17 @@ class wizard_olap_extract(wizard.interface):
f.write(_init) f.write(_init)
f.close() f.close()
self.zipper(_modulename, "__init__.py","w") self.zipper(_modulename, "__init__.py","w")
_init_files = { _init_files = {
"1":"olap.fact.database.csv", "1":"olap.fact.database.csv",
"2":"olap.schema.csv", "2":"olap.schema.csv",
"5":"olap.cube.table.csv", "5":"olap.cube.table.csv",
"6":"olap.cube.csv", "6":"olap.cube.csv",
"7":"olap.dimension.csv", "7":"olap.dimension.csv",
"8":"olap.hierarchy.csv", "8":"olap.hierarchy.csv",
"9":"olap.level.csv", "9":"olap.level.csv",
"10":"olap.measure.csv" "10":"olap.measure.csv"
} }
_init_xml = """"%(1)s", _init_xml = """"%(1)s",
"%(2)s", "%(2)s",
"%(5)s", "%(5)s",
@ -121,7 +121,7 @@ class wizard_olap_extract(wizard.interface):
"%(9)s", "%(9)s",
"%(10)s", "%(10)s",
""" % _init_files """ % _init_files
data['modulename'] = _modulename data['modulename'] = _modulename
data['init_xml'] = _init_xml data['init_xml'] = _init_xml
@ -144,36 +144,36 @@ class wizard_olap_extract(wizard.interface):
f = open("__terp__.py","w") f = open("__terp__.py","w")
f.write(_terp) f.write(_terp)
f.close() f.close()
self.zipper(_modulename, "__terp__.py") self.zipper(_modulename, "__terp__.py")
schema_id = data['id'] schema_id = data['id']
lines=pooler.get_pool(cr.dbname).get('olap.schema').browse(cr, uid, schema_id,context) lines=pooler.get_pool(cr.dbname).get('olap.schema').browse(cr, uid, schema_id,context)
_extract=[] _extract=[]
_extract.append(['id','name','db_name','db_login','db_password']) _extract.append(['id','name','db_name','db_login','db_password'])
_extract.append(["db_"+str(lines.database_id.id),lines.database_id.name,lines.database_id.db_name,lines.database_id.db_login,lines.database_id.db_password]) _extract.append(["db_"+str(lines.database_id.id),lines.database_id.name,lines.database_id.db_name,lines.database_id.db_login,lines.database_id.db_password])
self.write_csv('olap.fact.database.csv',_extract) self.write_csv('olap.fact.database.csv',_extract)
self.zipper(_modulename, "olap.fact.database.csv") self.zipper(_modulename, "olap.fact.database.csv")
_extract=[] _extract=[]
_extract.append(['id','name','database_id:id','loaded','configure','ready','state','note']) _extract.append(['id','name','database_id:id','loaded','configure','ready','state','note'])
_extract.append(["schema_"+str(lines.id),lines.name,"db_"+str(lines.database_id.id),lines.loaded and lines.loaded or '',lines.configure and lines.configure or '', lines.ready and lines.ready or '',lines.state,lines.note and lines.note or '']) _extract.append(["schema_"+str(lines.id),lines.name,"db_"+str(lines.database_id.id),lines.loaded and lines.loaded or '',lines.configure and lines.configure or '', lines.ready and lines.ready or '',lines.state,lines.note and lines.note or ''])
self.write_csv('olap.schema.csv',_extract) self.write_csv('olap.schema.csv',_extract)
self.zipper(_modulename, "olap.schema.csv") self.zipper(_modulename, "olap.schema.csv")
cube_ids = lines.cube_ids cube_ids = lines.cube_ids
_extractcubes=[] _extractcubes=[]
_extractcubes.append(['id','name','table_id:id','schema_id:id']) _extractcubes.append(['id','name','table_id:id','schema_id:id'])
_extractmeasures=[] _extractmeasures=[]
_extractmeasures.append(['id','name','cube_id:id','value_column','value_sql','agregator','datatype','formatstring']) _extractmeasures.append(['id','name','cube_id:id','value_column','value_sql','agregator','datatype','formatstring'])
_extractdimension=[] _extractdimension=[]
_extractdimension.append(['id','name','foreign_key','foreign_key_table','cube_id:id']) _extractdimension.append(['id','name','foreign_key','foreign_key_table','cube_id:id'])
_extracthiers=[] _extracthiers=[]
_extracthiers.append(['id','name','primary_key','primary_key_table','field_name','member_all','member_default','sequence','type','dimension_id:id','table_id:id']) _extracthiers.append(['id','name','primary_key','primary_key_table','field_name','member_all','member_default','sequence','type','dimension_id:id','table_id:id'])
@ -182,26 +182,26 @@ class wizard_olap_extract(wizard.interface):
_cube_table_ids = [] _cube_table_ids = []
for cube in cube_ids: for cube in cube_ids:
_extractcubes.append(["cube_"+str(cube.id),cube.name,"cubetable_"+str(cube.table_id.id),"schema_"+str(cube.schema_id.id)]) _extractcubes.append(["cube_"+str(cube.id),cube.name,"cubetable_"+str(cube.table_id.id),"schema_"+str(cube.schema_id.id)])
_cube_table_ids.append(cube.table_id.id) _cube_table_ids.append(cube.table_id.id)
measure_ids = cube.measure_ids measure_ids = cube.measure_ids
for measure in measure_ids: for measure in measure_ids:
_extractmeasures.append(["msr_"+str(measure.id),measure.name,"cube_"+str(measure.cube_id.id),measure.value_column and measure.value_column or '',measure.value_sql and measure.value_sql or '',measure.agregator,measure.datatype and measure.datatype or '',measure.formatstring]) _extractmeasures.append(["msr_"+str(measure.id),measure.name,"cube_"+str(measure.cube_id.id),measure.value_column and measure.value_column or '',measure.value_sql and measure.value_sql or '',measure.agregator,measure.datatype and measure.datatype or '',measure.formatstring])
dimension_ids = cube.dimension_ids dimension_ids = cube.dimension_ids
for dimension in dimension_ids: for dimension in dimension_ids:
_extractdimension.append(["dim_"+str(dimension.id),dimension.name,dimension.foreign_key and dimension.foreign_key or '',dimension.foreign_key_table and dimension.foreign_key_table or '',"cube_"+str(dimension.cube_id.id)]) _extractdimension.append(["dim_"+str(dimension.id),dimension.name,dimension.foreign_key and dimension.foreign_key or '',dimension.foreign_key_table and dimension.foreign_key_table or '',"cube_"+str(dimension.cube_id.id)])
hiers_ids = dimension.hierarchy_ids hiers_ids = dimension.hierarchy_ids
for hier in hiers_ids: for hier in hiers_ids:
_extracthiers.append(["hier_"+str(hier.id),hier.name,hier.primary_key,hier.primary_key_table and hier.primary_key_table or '',hier.field_name,hier.member_all,hier.member_default,hier.sequence,hier.type,"dim_"+str(hier.dimension_id.id),"cubetable_"+str(hier.table_id.id)]) _extracthiers.append(["hier_"+str(hier.id),hier.name,hier.primary_key,hier.primary_key_table and hier.primary_key_table or '',hier.field_name,hier.member_all,hier.member_default,hier.sequence,hier.type,"dim_"+str(hier.dimension_id.id),"cubetable_"+str(hier.table_id.id)])
_cube_table_ids.append(hier.table_id.id) _cube_table_ids.append(hier.table_id.id)
level_ids = hier.level_ids level_ids = hier.level_ids
for level in level_ids: for level in level_ids:
_extractlevels.append(["lvl_"+str(level.id),level.name,level.column_name,level.column_id_name,level.type,level.table_name,level.sequence,"hier_"+str(level.hierarchy_id.id)]) _extractlevels.append(["lvl_"+str(level.id),level.name,level.column_name,level.column_id_name,level.type,level.table_name,level.sequence,"hier_"+str(level.hierarchy_id.id)])
res={} res={}
_extract=[] _extract=[]
_extract.append(['id','name','table_alias','key_left','key_right','table_left_id:id','table_right_id:id']) _extract.append(['id','name','table_alias','key_left','key_right','table_left_id:id','table_right_id:id'])
@ -209,37 +209,37 @@ class wizard_olap_extract(wizard.interface):
key = res.keys() key = res.keys()
key = map(lambda x: int(x),key) key = map(lambda x: int(x),key)
key.sort() key.sort()
for k in key: for k in key:
_extract.append(res[str(k)]) _extract.append(res[str(k)])
self.write_csv('olap.cube.csv',_extractcubes) self.write_csv('olap.cube.csv',_extractcubes)
self.zipper(_modulename, "olap.cube.csv") self.zipper(_modulename, "olap.cube.csv")
self.write_csv('olap.measure.csv',_extractmeasures) self.write_csv('olap.measure.csv',_extractmeasures)
self.zipper(_modulename, "olap.measure.csv") self.zipper(_modulename, "olap.measure.csv")
self.write_csv('olap.dimension.csv',_extractdimension) self.write_csv('olap.dimension.csv',_extractdimension)
self.zipper(_modulename, "olap.dimension.csv") self.zipper(_modulename, "olap.dimension.csv")
self.write_csv('olap.hierarchy.csv',_extracthiers) self.write_csv('olap.hierarchy.csv',_extracthiers)
self.zipper(_modulename, "olap.hierarchy.csv") self.zipper(_modulename, "olap.hierarchy.csv")
self.write_csv('olap.level.csv',_extractlevels) self.write_csv('olap.level.csv',_extractlevels)
self.zipper(_modulename, "olap.level.csv") self.zipper(_modulename, "olap.level.csv")
self.write_csv('olap.cube.table.csv',_extract) self.write_csv('olap.cube.table.csv',_extract)
self.zipper(_modulename, "olap.cube.table.csv") self.zipper(_modulename, "olap.cube.table.csv")
return {} return {}
states = { states = {
'init': { 'init': {
'actions': [], 'actions': [],
'result': {'type':'form','arch':form1, 'fields':field1, 'state':[('end','Cancel'),('ok','OK')]} 'result': {'type':'form','arch':form1, 'fields':field1, 'state':[('end','Cancel'),('ok','OK')]}
}, },
'ok' : { 'ok' : {
'actions' : [], 'actions' : [],
'result' : {'type' : 'action' ,'action':_extract_schema,'state':'end'} 'result' : {'type' : 'action' ,'action':_extract_schema,'state':'end'}

View File

@ -65,7 +65,7 @@ cube table and cube table line
<field name="table_db_name">res_partner_address</field> <field name="table_db_name">res_partner_address</field>
<field name="fact_database_id" ref="fact_databases_BI"/> <field name="fact_database_id" ref="fact_databases_BI"/>
<field name="active">True</field> <field name="active">True</field>
</record> </record>
<record model="olap.database.tables" id="table_res_country"> <record model="olap.database.tables" id="table_res_country">
<field name="name">res_country</field> <field name="name">res_country</field>
@ -87,7 +87,7 @@ cube table and cube table line
<field name="fact_database_id" ref="fact_databases_BI"/> <field name="fact_database_id" ref="fact_databases_BI"/>
<field name="active">True</field> <field name="active">True</field>
</record> </record>
<record model="olap.database.columns" id="columns_product_id_sale_order_line"> <record model="olap.database.columns" id="columns_product_id_sale_order_line">
<field name="name">product_id</field> <field name="name">product_id</field>
<field name="column_db_name">product_id</field> <field name="column_db_name">product_id</field>
@ -105,15 +105,7 @@ cube table and cube table line
<field name="primary_key">True</field> <field name="primary_key">True</field>
<field name="active">True</field> <field name="active">True</field>
</record> </record>
<!-- <record model="olap.database.columns" id="columns_sale_order_line_product_id">
<field name="name">product_id</field>
<field name="column_db_name">id</field>
<field name="type">int4</field>
<field name="table_id" ref="table_sale_order_line"/>
<field name="active">True</field>
<field name="related_to" ref="table_product_product"/>
</record>
-->
<record model="olap.database.columns" id="columns_product_template_id"> <record model="olap.database.columns" id="columns_product_template_id">
<field name="name">id</field> <field name="name">id</field>
<field name="column_db_name">id</field> <field name="column_db_name">id</field>
@ -265,16 +257,6 @@ cube table and cube table line
<field name="active">True</field> <field name="active">True</field>
</record> </record>
<!-- <record model="olap.database.columns" id="columns_sale_order_line_product_id">
<field name="name">product_id</field>
<field name="column_db_name">product_id</field>
<field name="type">int4</field>
<field name="table_id" ref="table_sale_order_line"/>
<field name="related_to" ref="table_product_product"/>
<field name="active">True</field>
</record>
-->
<record model="olap.database.columns" id="columns_sale_order_line_order_id"> <record model="olap.database.columns" id="columns_sale_order_line_order_id">
<field name="name">order_id</field> <field name="name">order_id</field>
<field name="column_db_name">order_id</field> <field name="column_db_name">order_id</field>
@ -360,7 +342,7 @@ cube table and cube table line
<field name="type">varchar</field> <field name="type">varchar</field>
<field name="table_id" ref="table_res_country"/> <field name="table_id" ref="table_res_country"/>
<field name="active">True</field> <field name="active">True</field>
</record> </record>
<record model="olap.database.columns" id="columns_res_partner_address_country_id"> <record model="olap.database.columns" id="columns_res_partner_address_country_id">
<field name="name">country_id</field> <field name="name">country_id</field>
@ -369,7 +351,7 @@ cube table and cube table line
<field name="table_id" ref="table_res_partner_address"/> <field name="table_id" ref="table_res_partner_address"/>
<field name="related_to" ref="table_res_country"/> <field name="related_to" ref="table_res_country"/>
<field name="active">True</field> <field name="active">True</field>
</record> </record>
<record model="olap.database.columns" id="columns_res_partner_address_city"> <record model="olap.database.columns" id="columns_res_partner_address_city">
<field name="name">city</field> <field name="name">city</field>
@ -388,16 +370,6 @@ cube table and cube table line
<field name="active">True</field> <field name="active">True</field>
</record> </record>
<!-- <record model="olap.database.columns" id="columns_sale_order_line_product_id">
<field name="name">product_id</field>
<field name="column_db_name">product_id</field>
<field name="type">int4</field>
<field name="table_id" ref="table_sale_order_line"/>
<field name="related_to" ref="table_product_product"/>
<field name="active">True</field>
</record>
-->
<record model="olap.database.columns" id="columns_sale_order_line_product_uom_qty"> <record model="olap.database.columns" id="columns_sale_order_line_product_uom_qty">
<field name="name">product_uom_qty</field> <field name="name">product_uom_qty</field>
<field name="column_db_name">product_uom_qty</field> <field name="column_db_name">product_uom_qty</field>
@ -425,7 +397,7 @@ cube table and cube table line
<!-- <!--
Making of the olap.cube.table and olap.cube.table.lines Making of the olap.cube.table and olap.cube.table.lines
--> -->
<record model="olap.cube.table" id="cube_table_sale_order_line"> <record model="olap.cube.table" id="cube_table_sale_order_line">

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -33,7 +33,7 @@ based on geolocalization.
'data': [ 'data': [
'res_partner_view.xml', 'res_partner_view.xml',
'crm_lead_view.xml', 'crm_lead_view.xml',
], ],
'installable': True, 'installable': True,
'active': False, 'active': False,
'certificate': False, 'certificate': False,

View File

@ -41,29 +41,28 @@ Main features :
'update_xml': [ 'update_xml': [
'security/point_of_sale_security.xml', 'security/point_of_sale_security.xml',
'security/ir.model.access.csv', 'security/ir.model.access.csv',
'wizard/pos_details.xml', 'wizard/pos_details.xml',
'wizard/pos_add_product.xml', 'wizard/pos_add_product.xml',
'wizard/pos_confirm.xml', 'wizard/pos_confirm.xml',
'wizard/pos_discount.xml', 'wizard/pos_discount.xml',
'wizard/pos_get_sale.xml', 'wizard/pos_get_sale.xml',
'wizard/pos_open_statement.xml', 'wizard/pos_open_statement.xml',
'wizard/pos_close_statement.xml', 'wizard/pos_close_statement.xml',
'wizard/pos_box_entries.xml', 'wizard/pos_box_entries.xml',
'wizard/pos_payment_report_user_view.xml', 'wizard/pos_payment_report_user_view.xml',
'wizard/pos_payment_report_date_view.xml', 'wizard/pos_payment_report_date_view.xml',
'wizard/pos_box_out.xml', 'wizard/pos_box_out.xml',
'wizard/pos_sales_user.xml', 'wizard/pos_sales_user.xml',
'wizard/all_closed_cashbox_of_the_day.xml', 'wizard/all_closed_cashbox_of_the_day.xml',
'wizard/pos_sales_user_current_user.xml', 'wizard/pos_sales_user_current_user.xml',
'wizard/pos_sale_user_today.xml', 'wizard/pos_sale_user_today.xml',
'wizard/pos_receipt_view.xml', 'wizard/pos_receipt_view.xml',
'wizard/pos_payment_report_user.xml', 'wizard/pos_payment_report_user.xml',
'wizard/pos_payment_report.xml', 'wizard/pos_payment_report.xml',
'wizard/pos_payment.xml', 'wizard/pos_payment.xml',
'wizard/pos_scan_product_view.xml', 'wizard/pos_scan_product_view.xml',
'wizard/pos_return_view.xml', 'wizard/pos_return_view.xml',
'pos_report.xml', 'pos_report.xml',
# 'pos_wizard.xml',
'pos_view.xml', 'pos_view.xml',
'report/report_pos_order_view.xml', 'report/report_pos_order_view.xml',
'report/report_cash_register_view.xml', 'report/report_cash_register_view.xml',
@ -76,7 +75,6 @@ Main features :
'statement_data.xml', 'statement_data.xml',
], ],
'demo_xml': ['pos_demo.xml','singer_statement_demo.xml','multi_company_stock_data.xml'], 'demo_xml': ['pos_demo.xml','singer_statement_demo.xml','multi_company_stock_data.xml'],
# 'test':['test/pos_test.yml',],
'installable': True, 'installable': True,
} }
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -310,7 +310,6 @@ class pos_order(osv.osv):
'pickings': fields.one2many('stock.picking', 'pos_order', 'Picking', readonly=True), 'pickings': fields.one2many('stock.picking', 'pos_order', 'Picking', readonly=True),
'picking_id': fields.many2one('stock.picking', 'Last Output Picking', readonly=True), 'picking_id': fields.many2one('stock.picking', 'Last Output Picking', readonly=True),
'first_name': fields.char('First Name', size=64), 'first_name': fields.char('First Name', size=64),
# 'state_2': fields.function(_get_v,type='selection',selection=[('to_verify', 'To Verify'), ('accepted', 'Accepted'),('refused', 'Refused')], string='State', readonly=True, method=True, store=True),
'note': fields.text('Internal Notes'), 'note': fields.text('Internal Notes'),
'nb_print': fields.integer('Number of Print', readonly=True), 'nb_print': fields.integer('Number of Print', readonly=True),
'sale_journal': fields.many2one('account.journal', 'Journal', required=True, states={'draft': [('readonly', False)]}, readonly=True, ), 'sale_journal': fields.many2one('account.journal', 'Journal', required=True, states={'draft': [('readonly', False)]}, readonly=True, ),
@ -353,7 +352,6 @@ class pos_order(osv.osv):
'sale_manager': lambda self, cr, uid, context: uid, 'sale_manager': lambda self, cr, uid, context: uid,
'state': lambda *a: 'draft', 'state': lambda *a: 'draft',
'price_type': lambda *a: 'tax_excluded', 'price_type': lambda *a: 'tax_excluded',
# 'state_2': lambda *a: 'to_verify',
'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'pos.order'), 'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'pos.order'),
'date_order': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'), 'date_order': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'date_validity': lambda *a: (DateTime.now() + DateTime.RelativeDateTime(months=+6)).strftime('%Y-%m-%d'), 'date_validity': lambda *a: (DateTime.now() + DateTime.RelativeDateTime(months=+6)).strftime('%Y-%m-%d'),
@ -479,7 +477,7 @@ class pos_order(osv.osv):
'invoice_state': 'none', 'invoice_state': 'none',
'auto_picking': True, 'auto_picking': True,
'pos_order': order.id, 'pos_order': order.id,
}) })
self.write(cr, uid, [order.id], {'picking_id': picking_id}) self.write(cr, uid, [order.id], {'picking_id': picking_id})
else: else:
picking_id = order.picking_id.id picking_id = order.picking_id.id
@ -501,7 +499,6 @@ class pos_order(osv.osv):
cr.execute("select s.id from stock_location s, stock_warehouse w where w.lot_stock_id=s.id and w.id= %d "%(order.shop_id.warehouse_id.id)) cr.execute("select s.id from stock_location s, stock_warehouse w where w.lot_stock_id=s.id and w.id= %d "%(order.shop_id.warehouse_id.id))
res=cr.fetchone() res=cr.fetchone()
location_id=res and res[0] or None location_id=res and res[0] or None
# location_id = order and order.shop_id and order.shop_id.warehouse_id and order.shop_id.warehouse_id.lot_stock_id.id or None
stock_dest_id = val.id stock_dest_id = val.id
if line.qty < 0: if line.qty < 0:
location_id, stock_dest_id = stock_dest_id, location_id location_id, stock_dest_id = stock_dest_id, location_id
@ -556,28 +553,6 @@ class pos_order(osv.osv):
raise osv.except_osv(_('Error'), _('You don\'t have enough access to validate this sale!')) raise osv.except_osv(_('Error'), _('You don\'t have enough access to validate this sale!'))
return True return True
# def button_validate(self, cr, uid, ids, *args):
#
# """ Check the access for the sale order and update the date_validation
# @return: True
# """
# res_obj = self.pool.get('res.company')
# try:
# part_company=res_obj.browse(cr,uid,uid) and res_obj.browse(cr,uid,uid).parent_id and res_obj.browse######(cr,uid,uid).parent_id.id or None
# except Exception, e:
# raise osv.except_osv(_('Error'), _('You don\'t have enough access to validate this sale!'))
# if part_company:
# raise osv.except_osv(_('Error'), _('You don\'t have enough access to validate this sale!'))
# for order in self.browse(cr, uid, ids):
# if not order.date_validation:
# cr.execute("select max(date) from account_bank_statement_line where pos_statement_id=%d"%(order.id))
# val=cr.fetchone()
# val=val and val[0] or None
# if val:
# cr.execute("Update pos_order set date_validation='%s', state_2 ='%s' where id = %d"%(val, 'accepted', order.id))
# return True
def cancel_order(self, cr, uid, ids, context=None): def cancel_order(self, cr, uid, ids, context=None):
""" Changes order state to cancel """ Changes order state to cancel
@ -601,11 +576,9 @@ class pos_order(osv.osv):
if not order.num_sale and data['num_sale']: if not order.num_sale and data['num_sale']:
self.write(cr,uid,order_id,{'num_sale': data['num_sale']}) self.write(cr,uid,order_id,{'num_sale': data['num_sale']})
ids_new=[] ids_new=[]
# if order.invoice_wanted and not order.partner_id:
# raise osv.except_osv(_('Error'), _('Cannot create invoice without a partner.'))
args = { args = {
'amount': data['amount'], 'amount': data['amount'],
} }
if 'payment_date' in data.keys(): if 'payment_date' in data.keys():
args['date'] = data['payment_date'] args['date'] = data['payment_date']
if 'payment_name' in data.keys(): if 'payment_name' in data.keys():
@ -660,7 +633,7 @@ class pos_order(osv.osv):
'product_id': product_id, 'product_id': product_id,
'qty': qty, 'qty': qty,
'price_unit': price, 'price_unit': price,
}) })
wf_service = netsvc.LocalService("workflow") wf_service = netsvc.LocalService("workflow")
wf_service.trg_write(uid, 'pos.order', order_id, cr) wf_service.trg_write(uid, 'pos.order', order_id, cr)
@ -954,13 +927,15 @@ class pos_order(osv.osv):
for st in stat_l.move_ids: for st in stat_l.move_ids:
for s in st.line_id: for s in st.line_id:
if s.credit: if s.credit:
account_move_line_obj.copy(cr, uid, s.id, { 'debit': s.credit,
'statement_id': False,
'credit': s.debit})
account_move_line_obj.copy(cr, uid, s.id, { account_move_line_obj.copy(cr, uid, s.id, {
'statement_id': False, 'debit': s.credit,
'account_id':order_account 'statement_id': False,
}) 'credit': s.debit
})
account_move_line_obj.copy(cr, uid, s.id, {
'statement_id': False,
'account_id':order_account
})
self.write(cr,uid,order.id,{'state':'done'}) self.write(cr,uid,order.id,{'state':'done'})
return True return True
@ -1019,7 +994,7 @@ pos_order()
class account_bank_statement(osv.osv): class account_bank_statement(osv.osv):
_inherit = 'account.bank.statement' _inherit = 'account.bank.statement'
_columns={ _columns= {
'user_id': fields.many2one('res.users',ondelete='cascade',string='User', readonly=True), 'user_id': fields.many2one('res.users',ondelete='cascade',string='User', readonly=True),
} }
_defaults = { _defaults = {
@ -1034,7 +1009,7 @@ class account_bank_statement_line(osv.osv):
for line in self.browse(cr, uid, ids): for line in self.browse(cr, uid, ids):
res[line.id] = line.statement_id and line.statement_id.journal_id and line.statement_id.journal_id.name or None res[line.id] = line.statement_id and line.statement_id.journal_id and line.statement_id.journal_id.name or None
return res return res
_columns={ _columns= {
'journal_id': fields.function(_get_statement_journal, method=True,store=True, string='Journal', type='char', size=64), 'journal_id': fields.function(_get_statement_journal, method=True,store=True, string='Journal', type='char', size=64),
'am_out':fields.boolean("To count"), 'am_out':fields.boolean("To count"),
'is_acc':fields.boolean("Is accompte"), 'is_acc':fields.boolean("Is accompte"),
@ -1123,7 +1098,7 @@ class pos_order_line(osv.osv):
def onchange_dis(self, cr, uid,ids, qty, price_subtotal_incl, discount,*a): def onchange_dis(self, cr, uid,ids, qty, price_subtotal_incl, discount,*a):
price_sub = price_subtotal_incl price_sub = price_subtotal_incl
sub_total_discount = price_sub-(price_subtotal_incl*(discount*0.01)) sub_total_discount = price_sub-(price_subtotal_incl*(discount*0.01))
return {'value': {'price_subtotal_incl':sub_total_discount}} return {'value': {'price_subtotal_incl':sub_total_discount}}
def onchange_ded(self, cr, uid,ids, val_ded,price_u,*a): def onchange_ded(self, cr, uid,ids, val_ded,price_u,*a):
pos_order = self.pool.get('pos.order.line') pos_order = self.pool.get('pos.order.line')
@ -1169,7 +1144,7 @@ class pos_order_line(osv.osv):
'discount': fields.float('Discount (%)', digits=(16, 2)), 'discount': fields.float('Discount (%)', digits=(16, 2)),
'order_id': fields.many2one('pos.order', 'Order Ref', ondelete='cascade'), 'order_id': fields.many2one('pos.order', 'Order Ref', ondelete='cascade'),
'create_date': fields.datetime('Creation Date', readonly=True), 'create_date': fields.datetime('Creation Date', readonly=True),
} }
_defaults = { _defaults = {
'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'pos.order.line'), 'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'pos.order.line'),
@ -1180,17 +1155,6 @@ class pos_order_line(osv.osv):
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
} }
# def _check_qty(self, cr, uid, ids):
# lines = self.browse(cr, uid, ids)
# for line in lines:
# if line.qty <= 0:
# return False
# return True
# _constraints = [
# (_check_qty, 'Order quantity cannot be negative or zero !', ['qty']),
# ]
def create(self, cr, user, vals, context={}): def create(self, cr, user, vals, context={}):
if vals.get('product_id'): if vals.get('product_id'):
return super(pos_order_line, self).create(cr, user, vals, context) return super(pos_order_line, self).create(cr, user, vals, context)
@ -1230,7 +1194,7 @@ class pos_order_line(osv.osv):
'qty': qty, 'qty': qty,
'name': product_name, 'name': product_name,
'order_id': order, 'order_id': order,
} }
line_id = self.create(cr, uid, vals) line_id = self.create(cr, uid, vals)
if not line_id: if not line_id:
raise osv.except_osv(_('Error'), _('Create line failed !')) raise osv.except_osv(_('Error'), _('Create line failed !'))
@ -1245,7 +1209,13 @@ class pos_order_line(osv.osv):
line_id = order_line_id line_id = order_line_id
price_line = float(qty)*float(price) price_line = float(qty)*float(price)
return {'name': product_name, 'product_id': product_id[0], 'price': price, 'price_line': price_line ,'qty': qty } return {
'name': product_name,
'product_id': product_id[0],
'price': price,
'price_line': price_line ,
'qty': qty
}
pos_order_line() pos_order_line()
@ -1346,10 +1316,10 @@ class product_product(osv.osv):
'expense_pdt': fields.boolean('Product for expenses'), 'expense_pdt': fields.boolean('Product for expenses'),
'am_out': fields.boolean('Controle for Outgoing Operations'), 'am_out': fields.boolean('Controle for Outgoing Operations'),
'disc_controle': fields.boolean('Discount Controle '), 'disc_controle': fields.boolean('Discount Controle '),
} }
_defaults = { _defaults = {
'disc_controle': lambda *a: True, 'disc_controle': lambda *a: True,
} }
product_product() product_product()
class stock_picking(osv.osv): class stock_picking(osv.osv):

View File

@ -12,7 +12,6 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Sales Order POS"> <form string="Sales Order POS">
<group col="6" colspan="4"> <group col="6" colspan="4">
<!--field name="user_salesman_id" />
<field name="partner_id" on_change="onchange_partner_pricelist(partner_id)"/> <field name="partner_id" on_change="onchange_partner_pricelist(partner_id)"/>
<field name="contract_number" groups="base.group_extended"/> --> <field name="contract_number" groups="base.group_extended"/> -->
@ -23,13 +22,10 @@
<tree string="Order lines" editable="bottom"> <tree string="Order lines" editable="bottom">
<field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,qty,parent.partner_id)" width="275" /> <field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,qty,parent.partner_id)" width="275" />
<field name="qty"/> <field name="qty"/>
<!--<field name="qty" on_change="onchange_qty(qty,price_unit)"/>-->
<!--field name="qty_rfd" groups="base.group_extended"/-->
<field name="price_ded" on_change="onchange_ded(price_ded, price_subtotal_incl,price_unit)" invisible="1"/> <field name="price_ded" on_change="onchange_ded(price_ded, price_subtotal_incl,price_unit)" invisible="1"/>
<field name="price_unit" readonly="1"/> <field name="price_unit" readonly="1"/>
<field name="discount" on_change="onchange_discount(discount,price_unit)" /> <field name="discount" on_change="onchange_discount(discount,price_unit)" />
<field name="notice" on_change="onchange_dis(qty,price_subtotal_incl,discount)"/> <field name="notice" on_change="onchange_dis(qty,price_subtotal_incl,discount)"/>
<!--field name="serial_number"/-->
<field name="price_subtotal" /> <field name="price_subtotal" />
<field name="price_subtotal_incl" sum="Subtotal"/> <field name="price_subtotal_incl" sum="Subtotal"/>
</tree> </tree>
@ -48,21 +44,8 @@
<group colspan="4" col="7"> <group colspan="4" col="7">
<field name="amount_tax"/> <field name="amount_tax"/>
<field name="amount_total"/> <field name="amount_total"/>
<!--button name="%(action_pos_discount)d" string="D_iscount" type="action" states="draft"/>
<button name="dummy_button" string="Compute" type="object" /-->
</group> </group>
<!-- <group colspan="4" col="9" groups="base.group_extended">-->
<!-- <separator colspan="4" string="Validation of the Sale"/>-->
<!-- <newline/>-->
<!-- <field name="state_2" />-->
<!-- <button name="button_validate"-->
<!-- string="Accept"-->
<!-- type="object"-->
<!-- icon="gtk-ok"-->
<!-- states="paid, draft"-->
<!-- attrs="{'invisible':[('state_2','=','accepted')]}"/>-->
<!-- </group>-->
<separator colspan="4" string="Actions"/> <separator colspan="4" string="Actions"/>
<group colspan="4" col="6"> <group colspan="4" col="6">
<field name="state" /> <field name="state" />
@ -83,24 +66,17 @@
<field name="company_id" groups="base.group_multi_company"/> <field name="company_id" groups="base.group_multi_company"/>
<field name="price_type" /> <field name="price_type" />
<field name="user_id" string="Salesman" groups="base.group_extended"/> <field name="user_id" string="Salesman" groups="base.group_extended"/>
<!--field name="sale_manager" /-->
</group> </group>
<group colspan="2" col="2" name="Type"> <group colspan="2" col="2" name="Type">
<separator string="Dates" colspan="4"/> <separator string="Dates" colspan="4"/>
<field name="date_order"/> <field name="date_order"/>
<field name="date_validation" /> <field name="date_validation" />
<field name="date_payment" groups="base.group_extended"/> <field name="date_payment" groups="base.group_extended"/>
<!-- <field name="type_rec" colspan="4"/>-->
</group> </group>
<group colspan="4"> <group colspan="4">
<!-- <separator string="Invoicing" colspan="4"/>-->
<field name="partner_id" on_change="onchange_partner_pricelist(partner_id)" invisible="1"/> <field name="partner_id" on_change="onchange_partner_pricelist(partner_id)" invisible="1"/>
<field name="sale_journal" domain="[('type','=','sale')]" widget="selection" invisible="1"/> <field name="sale_journal" domain="[('type','=','sale')]" widget="selection" invisible="1"/>
<field name="pricelist_id" domain="[('type','=','sale')]" widget="selection" invisible="1"/> <field name="pricelist_id" domain="[('type','=','sale')]" widget="selection" invisible="1"/>
<!-- <field name="invoice_id"/>-->
<!-- <group colspan="2" col="4">-->
<!-- <button name="invoice" icon="gtk-execute" string="Create _Invoice" states="paid"/>-->
<!-- </group>-->
</group> </group>
<field name="statement_ids" colspan="4" nolabel="1"> <field name="statement_ids" colspan="4" nolabel="1">
@ -800,8 +776,6 @@
id="products_for_output_operations" id="products_for_output_operations"
groups="base.group_system"/> groups="base.group_system"/>
<!-- <menuitem name="Register Management" parent="menu_point_root"-->
<!-- id="menu_point_config" sequence="4"/>-->
<menuitem <menuitem
name="Input Operations" parent="menu_point_of_sale" name="Input Operations" parent="menu_point_of_sale"
string="Refloat" string="Refloat"
@ -866,40 +840,6 @@
<!-- Miscelleanous Operations/Reporting --> <!-- Miscelleanous Operations/Reporting -->
<menuitem name="Reporting" parent="menu_point_root" id="menu_point_rep" sequence="20" groups="group_pos_manager,base.group_system"/> <menuitem name="Reporting" parent="menu_point_root" id="menu_point_rep" sequence="20" groups="group_pos_manager,base.group_system"/>
<!-- <menuitem name="Registers" parent="menu_point_rep" id="menu_point_report_register" sequence="0" />
<menuitem name="Sales" parent="menu_point_rep" id="menu_point_report_sale" sequence="1" />
<menuitem name="Details Of Operations" parent="menu_point_report_sale" id="menu_details_of_oper" sequence="1" groups="base.group_extended,group_pos_manager,base.group_system"/>
<menuitem name="All Sales" parent="menu_details_of_oper"
id="menu_action_all_sales_tree3" action="action_pos_order_tree3" sequence="1" groups="base.group_extended,base.group_system,group_pos_manager"/>
<menuitem name="Sales of the day" parent="menu_action_all_sales_tree3"
id="menu_action_sale_of_day_tree2" action="action_trans_pos_tree_today"/>
<menuitem name="Accepted Sales" parent="menu_action_all_sales_tree3"
id="menu_action_sale_of_day_accept" action="action_pos_order_accepted"/>
<menuitem name="Sales Reports" parent="menu_point_report_sale" id="menu_sales_report" sequence="2"/>
<menuitem name="Sales of the day" parent="menu_sales_report"
action="action_trans_pos_tree_today" id="menu_trans_pos_tree_today"/>
<menuitem name="Sales of the month" parent="menu_sales_report"
action="action_trans_pos_tree_month" id="menu_trans_pos_tree_month"/>
<menuitem name="All the sales" parent="menu_sales_report"
action="action_trans_pos_tree" id="menu_trans_pos_tree"/>
<menuitem name="Sales by User" parent="menu_sales_report"
action="action_report_sales_by_user_pos_today" id="menu_report_sales_by_user_pos_tree"/>
<menuitem name="Sales by User Monthly" parent="menu_sales_report"
action="action_report_sales_by_user_pos_month" id="menu_report_sales_by_user_pos_month_tree"/>
<menuitem name="Sales by User Daily Margin" parent="menu_sales_report"
action="action_report_sales_by_margin_pos_today" id="menu_report_sales_by_user_margin_daily_pos_tree"/>
<menuitem name="Sales by User Monthly Margin" parent="menu_sales_report"
action="action_report_sales_by_margin_pos_month" id="menu_report_sales_by_user_pos_month_margin_tree"/>
-->
<!-- Invoice --> <!-- Invoice -->
<record model="ir.actions.act_window" id="action_pos_invoice"> <record model="ir.actions.act_window" id="action_pos_invoice">
@ -910,41 +850,9 @@
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="domain">[('origin','like','POS')]</field> <field name="domain">[('origin','like','POS')]</field>
</record> </record>
<!-- <menuitem name="All Invoices" parent="menu_details_of_oper"
action="action_pos_invoice" id="menu_pos_invoice_tree"/>
<menuitem name="Payments and Sales" parent="menu_point_report_sale"
id="menu_cashboxes_closing_tree" sequence="1"/>
<menuitem name="Today" parent="menu_cashboxes_closing_tree"
id="menu_cashboxes_by_day" sequence="1"/>
<menuitem name="All Sales Lines" parent="menu_details_of_oper"
id="menu_action_pos_order_line" action="action_pos_order_line" sequence="2"/>
<menuitem name="Sales Lines of the day" parent="menu_action_pos_order_line"
id="menu_action_pos_order_line_day" action="action_pos_order_line_day"/>
<menuitem icon="STOCK_PRINT" action="action_report_pos_sale_user"
id="menu_pos_sales_user" parent="menu_trans_pos_tree" sequence="3" groups="base.group_extended" />
-->
<menuitem icon="STOCK_PRINT" action="action_report_pos_payment_repport_date" <menuitem icon="STOCK_PRINT" action="action_report_pos_payment_repport_date"
id="menu_pos_payment_report_date" parent="menu_point_rep" sequence="8" groups="base.group_extended"/> id="menu_pos_payment_report_date" parent="menu_point_rep" sequence="8" groups="base.group_extended"/>
<!--
<menuitem icon="STOCK_PRINT" action="action_report_pos_payment_report_user"
id="menu_pos_payment_report_user" parent="menu_trans_pos_tree_today" sequence="6" groups="base.group_extended"/>
<menuitem icon="STOCK_PRINT" action="action_pos_sales_user_today"
id="menu_pos_sales_user_today" parent="menu_trans_pos_tree_today" sequence="2" groups="base.group_extended"/>
<menuitem icon="STOCK_PRINT" action="action_report_pos_payment_repport_date"
id="menu_pos_payment_report_date" parent="menu_trans_pos_tree" sequence="5" groups="base.group_extended"/>
<menuitem icon="STOCK_PRINT" action="action_report_pos_payment_report_user"
id="menu_pos_payment_report_user" parent="menu_trans_pos_tree_today" sequence="6" groups="base.group_extended"/>
<menuitem icon="STOCK_PRINT" action="action_report_pos_sales_user_today_current_user"
id="menu_pos_sales_user_today_current_user" parent="menu_cashboxes_by_day" sequence="7"/>
-->
<menuitem icon="STOCK_PRINT" action="action_report_pos_details" <menuitem icon="STOCK_PRINT" action="action_report_pos_details"
id="menu_pos_details" parent="menu_point_rep" sequence="6" /> id="menu_pos_details" parent="menu_point_rep" sequence="6" />

View File

@ -219,7 +219,6 @@
<field name="act_from" ref="act_paid"/> <field name="act_from" ref="act_paid"/>
<field name="act_to" ref="act_done"/> <field name="act_to" ref="act_done"/>
<field name="signal">done</field> <field name="signal">done</field>
<!-- <field name="role_id" ref="role_pos"/-->
</record> </record>
<record model="workflow.transition" id="trans_paid_invoice"> <record model="workflow.transition" id="trans_paid_invoice">

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -29,9 +29,9 @@ class account_statement(report_sxw.rml_parse):
super(account_statement, self).__init__(cr, uid, name, context) super(account_statement, self).__init__(cr, uid, name, context)
self.total = 0.0 self.total = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'get_total':self._get_total, 'get_total':self._get_total,
}) })
def _get_total(self, statement_line_ids): def _get_total(self, statement_line_ids):
total = 0.0 total = 0.0
for line in statement_line_ids: for line in statement_line_ids:

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -37,7 +37,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse):
'get_user':self._get_user, 'get_user':self._get_user,
'get_sub_total':self._get_sub_total, 'get_sub_total':self._get_sub_total,
'get_net_total_starting':self._get_net_total_starting, 'get_net_total_starting':self._get_net_total_starting,
}) })
def _get_user(self,line_ids): def _get_user(self,line_ids):
sql = "select name from res_users where id = %d"%(line_ids['create_uid']) sql = "select name from res_users where id = %d"%(line_ids['create_uid'])
self.cr.execute(sql) self.cr.execute(sql)
@ -109,7 +109,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse):
total_starting_bal = 0.0 total_starting_bal = 0.0
sql = """ SELECT abs.id,abs.balance_end_real as net_total FROM account_bank_statement as abs sql = """ SELECT abs.id,abs.balance_end_real as net_total FROM account_bank_statement as abs
WHERE to_char(date_trunc('day',abs.date),'YYYY-MM-DD')::date = current_date WHERE to_char(date_trunc('day',abs.date),'YYYY-MM-DD')::date = current_date
and abs.state IN ('confirm','open') and abs.state IN ('confirm','open')
and abs.user_id = %d"""%(user.id) and abs.user_id = %d"""%(user.id)
self.cr.execute(sql) self.cr.execute(sql)
res = self.cr.dictfetchall() res = self.cr.dictfetchall()

View File

@ -148,10 +148,8 @@ class report_sales_by_margin_pos(osv.osv):
_description = "Sales by margin" _description = "Sales by margin"
_auto = False _auto = False
_columns = { _columns = {
# 'pos_name': fields.char('POS Order', size=64, readonly=True),
'product_name':fields.char('Product Name', size=64, readonly=True), 'product_name':fields.char('Product Name', size=64, readonly=True),
'date_order': fields.date('Order Date',required=True, select=True), 'date_order': fields.date('Order Date',required=True, select=True),
# 'amount': fields.float('Total', readonly=True, select=True),
'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True),
'qty': fields.float('Qty', readonly=True, select=True), 'qty': fields.float('Qty', readonly=True, select=True),
'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True), 'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True),
@ -197,14 +195,12 @@ class report_sales_by_margin_pos_month(osv.osv):
_description = "Sales by margin monthly" _description = "Sales by margin monthly"
_auto = False _auto = False
_columns = { _columns = {
'product_name':fields.char('Product Name', size=64, readonly=True), 'product_name':fields.char('Product Name', size=64, readonly=True),
'date_order': fields.date('Order Date',required=True, select=True), 'date_order': fields.date('Order Date',required=True, select=True),
'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True),
'qty': fields.float('Qty', readonly=True, select=True), 'qty': fields.float('Qty', readonly=True, select=True),
'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True), 'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True),
'total':fields.float('Margin', readonly=True, select=True), 'total':fields.float('Margin', readonly=True, select=True),
} }
def init(self, cr): def init(self, cr):

View File

@ -96,17 +96,6 @@ class pos_details(report_sxw.rml_parse):
self.total_paid=res3[0] self.total_paid=res3[0]
return res3[0] or False return res3[0] or False
# def _get_qty_total(self, objects):
# #code for the sum of qty_total
# return reduce(lambda acc, object:
# acc + reduce(
# lambda sum_qty, line:
# sum_qty + line.qty,
# object.lines,
# 0),
# objects,
# 0)
def _get_sum_discount(self, objects): def _get_sum_discount(self, objects):
#code for the sum of discount value #code for the sum of discount value
return reduce(lambda acc, object: return reduce(lambda acc, object:
@ -119,18 +108,6 @@ class pos_details(report_sxw.rml_parse):
0.0) 0.0)
def _get_payments(self, form,user, ignore_gift=False): def _get_payments(self, form,user, ignore_gift=False):
# gift_journal_id = None
# if ignore_gift:
# config_journal_ids = self.pool.get("pos.config.journal").search(self.cr, self.uid, [('code', '=', 'GIFT')])
# if len(config_journal_ids):
# config_journal = self.pool.get("pos.config.journal").browse(self.cr, self.uid, config_journal_ids, {})[0]
# gift_journal_id = config_journal.journal_id.id
#
# result = {}
# for obj in objects:
# for payment in obj.statement_ids:
# result[payment.journal_id] = result.get(payment.journal_id, 0.0) + payment.amount
# return result
statement_line_obj = self.pool.get("account.bank.statement.line") statement_line_obj = self.pool.get("account.bank.statement.line")
gift_journal_id = None gift_journal_id = None
if ignore_gift: if ignore_gift:
@ -200,13 +177,6 @@ class pos_details(report_sxw.rml_parse):
temp.update({'amount':temp2}) temp.update({'amount':temp2})
return [temp] or False return [temp] or False
# def _get_period(self, form):
# min_date = form['date_start']
# max_date = form['date_end']
# if min_date == max_date:
# return '%s' % min_date
# else:
# return '%s - %s' % (min_date, max_date)
def _get_period(self, form): def _get_period(self, form):
return form['date_start'] return form['date_start']

View File

@ -29,9 +29,9 @@ class pos_lines(report_sxw.rml_parse):
super(pos_lines, self).__init__(cr, uid, name, context) super(pos_lines, self).__init__(cr, uid, name, context)
self.total = 0.0 self.total = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'total_quantity': self.__total_quantity__, 'total_quantity': self.__total_quantity__,
'taxes':self.__taxes__, 'taxes':self.__taxes__,
}) })

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
import time import time
@ -28,10 +28,10 @@ class pos_payment_report(report_sxw.rml_parse):
super(pos_payment_report, self).__init__(cr, uid, name, context) super(pos_payment_report, self).__init__(cr, uid, name, context)
self.total = 0.0 self.total = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'pos_payment': self._pos_payment, 'pos_payment': self._pos_payment,
'pos_payment_total':self._pos_payment_total, 'pos_payment_total':self._pos_payment_total,
}) })
def _pos_payment(self,obj): def _pos_payment(self,obj):
data={} data={}
@ -51,19 +51,13 @@ class pos_payment_report(report_sxw.rml_parse):
"where pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id " \ "where pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id " \
"and po.state IN ('paid','invoiced') and to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::date = current_date") "and po.state IN ('paid','invoiced') and to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::date = current_date")
data=self.cr.dictfetchall() data=self.cr.dictfetchall()
for d in data: for d in data:
self.total += d['price_unit'] * d['qty'] self.total += d['price_unit'] * d['qty']
return data return data
def _pos_payment_total(self,o): def _pos_payment_total(self,o):
# res=[]
# self.cr.execute ("select sum(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) " \
# "from pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt " \
# "where pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id " \
# "and po.state='paid' and po.date_order = current_date and po.id=%d"%(o.id))
# res=self.cr.fetchone()[0]
return self.total return self.total

View File

@ -28,10 +28,10 @@ class pos_payment_report_date(report_sxw.rml_parse):
super(pos_payment_report_date, self).__init__(cr, uid, name, context) super(pos_payment_report_date, self).__init__(cr, uid, name, context)
self.total = 0.0 self.total = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'pos_payment_date': self.__pos_payment_date__, 'pos_payment_date': self.__pos_payment_date__,
'pos_payment_date_total':self.__pos_payment_date__total__, 'pos_payment_date_total':self.__pos_payment_date__total__,
}) })
def __pos_payment_date__(self,form): def __pos_payment_date__(self,form):
dt1 = form['date_start'] + ' 00:00:00' dt1 = form['date_start'] + ' 00:00:00'

View File

@ -27,10 +27,10 @@ class pos_payment_report_user(report_sxw.rml_parse):
super(pos_payment_report_user, self).__init__(cr, uid, name, context) super(pos_payment_report_user, self).__init__(cr, uid, name, context)
self.total = 0.0 self.total = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'pos_payment_user': self.__pos_payment_user__, 'pos_payment_user': self.__pos_payment_user__,
'pos_payment_user_total':self.__pos_payment_user__total__, 'pos_payment_user_total':self.__pos_payment_user__total__,
}) })
def __pos_payment_user__(self,form): def __pos_payment_user__(self,form):
data={} data={}

View File

@ -28,10 +28,10 @@ class pos_sales_user(report_sxw.rml_parse):
super(pos_sales_user, self).__init__(cr, uid, name, context) super(pos_sales_user, self).__init__(cr, uid, name, context)
self.total = 0.0 self.total = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'get_data':self._get_data, 'get_data':self._get_data,
}) })
def _get_data(self,form): def _get_data(self,form):
dt1 = form['date_start'] + ' 00:00:00' dt1 = form['date_start'] + ' 00:00:00'

View File

@ -28,10 +28,10 @@ class pos_sales_user_today(report_sxw.rml_parse):
super(pos_sales_user_today, self).__init__(cr, uid, name, context) super(pos_sales_user_today, self).__init__(cr, uid, name, context)
self.total = 0.0 self.total = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'get_data':self._get_data, 'get_data':self._get_data,
}) })
def _get_data(self,form): def _get_data(self,form):
data={} data={}

View File

@ -29,12 +29,12 @@ class pos_sales_user_today_current_user(report_sxw.rml_parse):
self.total = 0.0 self.total = 0.0
self.qty = 0.0 self.qty = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'get_user':self._get_user, 'get_user':self._get_user,
'get_data_current_user':self._get_data_current_user, 'get_data_current_user':self._get_data_current_user,
'get_data_current_user_tot':self._get_data_current_user_tot, 'get_data_current_user_tot':self._get_data_current_user_tot,
'get_data_current_user_qty':self._get_data_current_user_qty, 'get_data_current_user_qty':self._get_data_current_user_qty,
}) })
def _get_user(self, user): def _get_user(self, user):
pos_user={} pos_user={}
@ -58,15 +58,6 @@ class pos_sales_user_today_current_user(report_sxw.rml_parse):
return data return data
def _get_data_current_user_tot(self, user): def _get_data_current_user_tot(self, user):
# res={}
# self.cr.execute("select sum(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) " \
# "from pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt ,res_users as ru,res_company as rc " \
# "where pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id " \
# "and po.date_order = current_date and po.user_id = ru.id and rc.id = %s and ru.id = %s " \
# ,(str(self.uid),str(user.company_id.id)))
#
# res=self.cr.dictfetchone()
# return res['sum']
return self.total return self.total
def _get_data_current_user_qty(self, user): def _get_data_current_user_qty(self, user):

View File

@ -28,12 +28,12 @@ class pos_user_product(report_sxw.rml_parse):
super(pos_user_product, self).__init__(cr, uid, name, context) super(pos_user_product, self).__init__(cr, uid, name, context)
self.total = 0.0 self.total = 0.0
self.localcontext.update({ self.localcontext.update({
'time': time, 'time': time,
'get_data':self._get_data, 'get_data':self._get_data,
'get_user':self._get_user, 'get_user':self._get_user,
'get_total':self._get_total, 'get_total':self._get_total,
}) })
def _get_data(self,o): def _get_data(self,o):
data={} data={}
sql1=""" SELECT distinct(o.id) from account_bank_statement s, account_bank_statement_line l,pos_order o,pos_order_line i where i.order_id=o.id and o.state='paid' and l.statement_id=s.id and l.pos_statement_id=o.id and s.id=%d"""%(o.id) sql1=""" SELECT distinct(o.id) from account_bank_statement s, account_bank_statement_line l,pos_order o,pos_order_line i where i.order_id=o.id and o.state='paid' and l.statement_id=s.id and l.pos_statement_id=o.id and s.id=%d"""%(o.id)

View File

@ -25,15 +25,15 @@ class report_cash_register(osv.osv):
_name = "report.cash.register" _name = "report.cash.register"
_description = "Point of Sale Cash Register Analysis" _description = "Point of Sale Cash Register Analysis"
_auto = False _auto = False
_columns ={ _columns = {
'date': fields.date('Create Date', readonly=True), 'date': fields.date('Create Date', readonly=True),
'year': fields.char('Year', size=4), 'year': fields.char('Year', size=4),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
'day': fields.char('Day', size=128, readonly=True), 'day': fields.char('Day', size=128, readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True), 'user_id':fields.many2one('res.users', 'User', readonly=True),
'state':fields.selection([('draft', 'Draft'),('confirm', 'Confirmed')],'State'), 'state':fields.selection([('draft', 'Draft'),('confirm', 'Confirmed')],'State'),
'journal_id': fields.many2one('account.journal', 'Journal'), 'journal_id': fields.many2one('account.journal', 'Journal'),
'balance_start': fields.float('Opening Balance'), 'balance_start': fields.float('Opening Balance'),
'balance_end_real': fields.float('Closing Balance'), 'balance_end_real': fields.float('Closing Balance'),
@ -43,9 +43,9 @@ class report_cash_register(osv.osv):
tools.drop_view_if_exists(cr, 'report_cash_register') tools.drop_view_if_exists(cr, 'report_cash_register')
cr.execute(""" cr.execute("""
create or replace view report_cash_register as ( create or replace view report_cash_register as (
select select
min(s.id) as id, min(s.id) as id,
to_date(to_char(s.create_date, 'dd-MM-YYYY'),'dd-MM-YYYY') as date, to_date(to_char(s.create_date, 'dd-MM-YYYY'),'dd-MM-YYYY') as date,
s.user_id as user_id, s.user_id as user_id,
s.journal_id as journal_id, s.journal_id as journal_id,
s.state as state, s.state as state,
@ -54,8 +54,8 @@ class report_cash_register(osv.osv):
to_char(s.create_date, 'YYYY') as year, to_char(s.create_date, 'YYYY') as year,
to_char(s.create_date, 'MM') as month, to_char(s.create_date, 'MM') as month,
to_char(s.create_date, 'YYYY-MM-DD') as day to_char(s.create_date, 'YYYY-MM-DD') as day
from account_bank_statement as s where s.user_id=1 from account_bank_statement as s where s.user_id=1
group by group by
s.user_id,s.journal_id, s.balance_start, s.balance_end_real,s.state,to_char(s.create_date, 'dd-MM-YYYY'), s.user_id,s.journal_id, s.balance_start, s.balance_end_real,s.state,to_char(s.create_date, 'dd-MM-YYYY'),
to_char(s.create_date, 'YYYY'), to_char(s.create_date, 'YYYY'),
to_char(s.create_date, 'MM'), to_char(s.create_date, 'MM'),

View File

@ -26,7 +26,7 @@ class report_pos_order(osv.osv):
_name = "report.pos.order" _name = "report.pos.order"
_description = "Point of Sale Orders Statistics" _description = "Point of Sale Orders Statistics"
_auto = False _auto = False
_columns ={ _columns = {
'date': fields.date('Date Order', readonly=True), 'date': fields.date('Date Order', readonly=True),
'year': fields.char('Year', size=4, readonly=True), 'year': fields.char('Year', size=4, readonly=True),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
@ -39,8 +39,6 @@ class report_pos_order(osv.osv):
('advance','Advance'), ('advance','Advance'),
('paid', 'Paid'), ('done', 'Done'), ('invoiced', 'Invoiced'), ('cancel', 'Cancel')], ('paid', 'Paid'), ('done', 'Done'), ('invoiced', 'Invoiced'), ('cancel', 'Cancel')],
'State'), 'State'),
# 'state_2': fields.function([('to_verify', 'To Verify'), ('accepted', 'Accepted'),
# ('refused', 'Refused')], string='State'),
'user_id':fields.many2one('res.users', 'Salesman', readonly=True), 'user_id':fields.many2one('res.users', 'Salesman', readonly=True),
'price_total':fields.float('Total Price', readonly=True), 'price_total':fields.float('Total Price', readonly=True),
'total_discount':fields.float('Total Discount', readonly=True), 'total_discount':fields.float('Total Discount', readonly=True),

View File

@ -78,9 +78,7 @@
<filter string="Customer" icon="terp-personal" context="{'group_by':'partner_id'}"/> <filter string="Customer" icon="terp-personal" context="{'group_by':'partner_id'}"/>
<separator orientation="vertical"/> <separator orientation="vertical"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/> <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
<!--<filter string="Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/>-->
<separator orientation="vertical"/> <separator orientation="vertical"/>
<!--<filter string="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>-->
<filter string="Day" icon="terp-go-today" context="{'group_by':'day'}"/> <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}"/>
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}"/> <filter string="Month" icon="terp-go-month" context="{'group_by':'month'}"/>
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}"/> <filter string="Year" icon="terp-go-year" context="{'group_by':'year'}"/>

View File

@ -1,21 +1,6 @@
<openerp> <openerp>
<data> <data>
<!-- <wizard
id="close_statement"
model="account.bank.statement"
menu="True"
name="statement.close"
string="Close Statements"/>
<menuitem
name="Close Register" parent="point_of_sale.menu_point_config"
string="Close Register"
action="close_statement"
type="wizard"
id="menu_close_statement" sequence="4" />
-->
<menuitem icon="STOCK_PRINT" <menuitem icon="STOCK_PRINT"
action="action_report_all_closed_cashbox_of_the_day" action="action_report_all_closed_cashbox_of_the_day"
id="menu_all_closed_cashbox_of_the_day" id="menu_all_closed_cashbox_of_the_day"

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -30,28 +30,28 @@ class all_closed_cashbox_of_the_day(osv.osv_memory):
_description = 'All closed cashbox of the day' _description = 'All closed cashbox of the day'
_columns = { _columns = {
} }
def print_report(self, cr, uid, ids, context=None): def print_report(self, cr, uid, ids, context=None):
""" """
To get the date and print the report To get the date and print the report
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return : retrun report @return : retrun report
""" """
datas = {'ids' : context.get('active_ids',[])} datas = {'ids' : context.get('active_ids',[])}
res = {} res = {}
datas['form'] = res datas['form'] = res
return { return {
'type' : 'ir.actions.report.xml', 'type' : 'ir.actions.report.xml',
'report_name':'all.closed.cashbox.of.the.day', 'report_name':'all.closed.cashbox.of.the.day',
'datas' : datas, 'datas' : datas,
} }
all_closed_cashbox_of_the_day() all_closed_cashbox_of_the_day()

View File

@ -71,16 +71,16 @@ class pos_box_entries(osv.osv_memory):
_columns = { _columns = {
'name': fields.char('Description', size=32, required=True), 'name': fields.char('Description', size=32, required=True),
'journal_id': fields.selection(get_journal, "Register", required=True), 'journal_id': fields.selection(get_journal, "Register", required=True),
'product_id': fields.selection(_get_income_product, "Operation", required=True), 'product_id': fields.selection(_get_income_product, "Operation", required=True),
'amount': fields.float('Amount', digits=(16, 2)), 'amount': fields.float('Amount', digits=(16, 2)),
'ref': fields.char('Ref', size=32), 'ref': fields.char('Ref', size=32),
} }
_defaults = { _defaults = {
'journal_id': lambda *a: 1, 'journal_id': lambda *a: 1,
'product_id': lambda *a: 1, 'product_id': lambda *a: 1,
} }
def get_in(self, cr, uid, ids, context): def get_in(self, cr, uid, ids, context):
""" """
@ -109,11 +109,12 @@ class pos_box_entries(osv.osv_memory):
if statement_id: if statement_id:
statement_id = statement_id[0] statement_id = statement_id[0]
if not statement_id: if not statement_id:
statement_id = statement_obj.create(cr, uid, {'date': time.strftime('%Y-%m-%d 00:00:00'), statement_id = statement_obj.create(cr, uid, {
'journal_id': data['journal_id'], 'date': time.strftime('%Y-%m-%d 00:00:00'),
'company_id': curr_company, 'journal_id': data['journal_id'],
'user_id': uid, 'company_id': curr_company,
}) 'user_id': uid,
})
args['statement_id'] = statement_id args['statement_id'] = statement_id
args['journal_id'] = data['journal_id'] args['journal_id'] = data['journal_id']

View File

@ -49,16 +49,16 @@ class pos_box_out(osv.osv_memory):
return res return res
_columns = { _columns = {
'name': fields.char('Description', size=32, required=True), 'name': fields.char('Description', size=32, required=True),
'journal_id': fields.selection(pos_box_entries.get_journal, "Register", required=True), 'journal_id': fields.selection(pos_box_entries.get_journal, "Register", required=True),
'product_id': fields.selection(_get_expense_product, "Operation", required=True), 'product_id': fields.selection(_get_expense_product, "Operation", required=True),
'amount': fields.float('Amount', digits=(16, 2)), 'amount': fields.float('Amount', digits=(16, 2)),
'ref': fields.char('Ref', size=32), 'ref': fields.char('Ref', size=32),
} }
_defaults = { _defaults = {
'journal_id': lambda *a: 1, 'journal_id': lambda *a: 1,
'product_id': lambda *a: 1, 'product_id': lambda *a: 1,
} }
def get_out(self, cr, uid, ids, context): def get_out(self, cr, uid, ids, context):
""" """
@ -102,11 +102,12 @@ class pos_box_out(osv.osv_memory):
if statement_id: if statement_id:
statement_id = statement_id[0] statement_id = statement_id[0]
if not statement_id: if not statement_id:
statement_id = statement_obj.create(cr, uid, {'date': time.strftime('%Y-%m-%d 00:00:00'), statement_id = statement_obj.create(cr, uid, {
'journal_id': data['journal_id'], 'date': time.strftime('%Y-%m-%d 00:00:00'),
'company_id': curr_company, 'journal_id': data['journal_id'],
'user_id': uid, 'company_id': curr_company,
}) 'user_id': uid,
})
args['statement_id'] = statement_id args['statement_id'] = statement_id
args['journal_id'] = data['journal_id'] args['journal_id'] = data['journal_id']
if acc_id: if acc_id:

View File

@ -14,7 +14,6 @@
<field name="journal_id"/> <field name="journal_id"/>
<field name="product_id"/> <field name="product_id"/>
<field name="amount"/> <field name="amount"/>
<!-- <field name="ref"/>-->
<group colspan="4" col="2"> <group colspan="4" col="2">
<button icon='gtk-cancel' special="cancel" <button icon='gtk-cancel' special="cancel"
string="Close" /> string="Close" />

View File

@ -61,13 +61,14 @@ class pos_close_statement(osv.osv_memory):
if id3: if id3:
id3 = data_obj.browse(cr, uid, id3, context=context).res_id id3 = data_obj.browse(cr, uid, id3, context=context).res_id
return { return {
'domain': "[('id','in'," + str(list_statement) + ")]", 'domain': "[('id','in'," + str(list_statement) + ")]",
'name': 'Close Statements', 'name': 'Close Statements',
'view_type': 'form', 'view_type': 'form',
'view_mode': 'tree,form', 'view_mode': 'tree,form',
'res_model': 'account.bank.statement', 'res_model': 'account.bank.statement',
'views': [(id2, 'tree'),(id3, 'form')], 'views': [(id2, 'tree'),(id3, 'form')],
'type': 'ir.actions.act_window'} 'type': 'ir.actions.act_window'
}
pos_close_statement() pos_close_statement()

View File

@ -35,18 +35,18 @@ class pos_discount(osv.osv_memory):
'discount': lambda *a: 5, 'discount': lambda *a: 5,
} }
def view_init(self, cr, uid, fields_list, context=None): def view_init(self, cr, uid, fields_list, context=None):
""" """
Creates view dynamically and adding fields at runtime. Creates view dynamically and adding fields at runtime.
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return: New arch of view with new columns. @return: New arch of view with new columns.
""" """
res = super(pos_discount, self).view_init(cr, uid, fields_list, context=context) res = super(pos_discount, self).view_init(cr, uid, fields_list, context=context)
record_id = context and context.get('active_id', False) or False record_id = context and context.get('active_id', False) or False
order = self.pool.get('pos.order').browse(cr, uid, record_id) order = self.pool.get('pos.order').browse(cr, uid, record_id)
if not order.lines: if not order.lines:
raise osv.except_osv('Error!','No Order Lines ') raise osv.except_osv('Error!','No Order Lines ')
@ -68,7 +68,7 @@ class pos_discount(osv.osv_memory):
order_ref = self.pool.get('pos.order') order_ref = self.pool.get('pos.order')
order_line_ref = self.pool.get('pos.order.line') order_line_ref = self.pool.get('pos.order.line')
for order in order_ref.browse(cr, uid, record_id, context=context): for order in order_ref.browse(cr, uid, record_id, context=context):
for line in order.lines: for line in order.lines:
@ -101,29 +101,6 @@ class pos_discount(osv.osv_memory):
order_line_ref.write(cr, uid, [line.id], res_new, context=context) order_line_ref.write(cr, uid, [line.id], res_new, context=context)
return {} return {}
# def check_discount(self, cr, uid, record_id, discount, context):
# """
# Check the discount of define by company .
# @param self: The object pointer.
# @param cr: A database cursor
# @param uid: ID of the user currently logged in
# @param record_id:Current Order id
# @param discount:Select Discount
# @param context: A standard dictionary
# @return : retrun to apply and used the company discount base on condition
# """
# order_ref = self.pool.get('pos.order')
#
# for order in order_ref.browse(cr, uid, record_id, context=context):
# company_disc = order.company_id.company_discount
# for line in order.lines :
# prod_disc = discount
# if prod_disc <= company_disc :
# return 'apply_discount'
# else :
# return 'disc_discount'
pos_discount() pos_discount()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -60,9 +60,9 @@ class pos_get_sale(osv.osv_memory):
}) })
order = proxy_pick.write(cr, uid, [this.picking_id.id], { order = proxy_pick.write(cr, uid, [this.picking_id.id], {
'invoice_state': 'none', 'invoice_state': 'none',
'pos_order': record_id 'pos_order': record_id
}) })
for line in pick.move_lines: for line in pick.move_lines:
proxy_order_line.create(cr, uid, { proxy_order_line.create(cr, uid, {

View File

@ -50,12 +50,12 @@ class pos_open_statement(osv.osv_memory):
ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)]) ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)])
if len(ids): if len(ids):
raise osv.except_osv(_('Message'), _('You can not open a Cashbox for "%s". \n Please close the cashbox related to. ' %(journal.name))) raise osv.except_osv(_('Message'), _('You can not open a Cashbox for "%s". \n Please close the cashbox related to. ' %(journal.name)))
statement_ids = sorted(statement_obj.search(cr, uid, [('state', '=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)])) statement_ids = sorted(statement_obj.search(cr, uid, [('state', '=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)]))
if statement_ids: if statement_ids:
res = [] res = []
statement_ids.reverse() statement_ids.reverse()
statement = statement_obj.browse(cr, uid, statement_ids[0]) statement = statement_obj.browse(cr, uid, statement_ids[0])
for end_bal in statement.ending_details_ids: for end_bal in statement.ending_details_ids:
dct = { dct = {
'pieces': end_bal.pieces, 'pieces': end_bal.pieces,
@ -71,8 +71,8 @@ class pos_open_statement(osv.osv_memory):
number = sequence_obj.get_id(cr, uid, journal.sequence_id.id) number = sequence_obj.get_id(cr, uid, journal.sequence_id.id)
else: else:
number = sequence_obj.get(cr, uid, 'account.bank.statement') number = sequence_obj.get(cr, uid, 'account.bank.statement')
data.update({'journal_id': journal.id, data.update({'journal_id': journal.id,
'company_id': company_id, 'company_id': company_id,
'user_id': uid, 'user_id': uid,
'state': 'open', 'state': 'open',
@ -96,7 +96,7 @@ class pos_open_statement(osv.osv_memory):
'res_model': 'account.bank.statement', 'res_model': 'account.bank.statement',
'views': [(id2, 'tree'),(id3, 'form')], 'views': [(id2, 'tree'),(id3, 'form')],
'type': 'ir.actions.act_window' 'type': 'ir.actions.act_window'
} }
pos_open_statement() pos_open_statement()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -137,15 +137,10 @@ class pos_make_payment(osv.osv_memory):
invoice_wanted = data['invoice_wanted'] invoice_wanted = data['invoice_wanted']
# Todo need to check ... # Todo need to check ...
# if amount <= 0.0: if amount != 0.0:
# context.update({'flag':True})
# order_obj.action_paid(cr, uid, [active_id], context)
# return self.print_report(cr, uid, ids, context)
if amount != 0.0:
order_obj.write(cr, uid, [active_id], {'invoice_wanted': invoice_wanted, 'partner_id': data['partner_id']}) order_obj.write(cr, uid, [active_id], {'invoice_wanted': invoice_wanted, 'partner_id': data['partner_id']})
order_obj.add_payment(cr, uid, active_id, data, context=context) order_obj.add_payment(cr, uid, active_id, data, context=context)
if order_obj.test_paid(cr, uid, [active_id]): if order_obj.test_paid(cr, uid, [active_id]):
if data['partner_id'] and invoice_wanted: if data['partner_id'] and invoice_wanted:
order_obj.action_invoice(cr, uid, [active_id], context) order_obj.action_invoice(cr, uid, [active_id], context)
@ -162,7 +157,7 @@ class pos_make_payment(osv.osv_memory):
else: else:
order_obj.write(cr, uid, [active_id],{'state':'paid'}) order_obj.write(cr, uid, [active_id],{'state':'paid'})
return self.print_report(cr, uid, ids, context) return self.print_report(cr, uid, ids, context)
if order.amount_paid > 0.0: if order.amount_paid > 0.0:
context.update({'flag': True}) context.update({'flag': True})
# Todo need to check # Todo need to check
@ -180,9 +175,9 @@ class pos_make_payment(osv.osv_memory):
datas = {'ids': active_ids} datas = {'ids': active_ids}
datas['form'] = {} datas['form'] = {}
return { return {
'type' : 'ir.actions.report.xml', 'type' : 'ir.actions.report.xml',
'report_name':'pos.invoice', 'report_name':'pos.invoice',
'datas' : datas, 'datas' : datas,
} }
def print_report(self, cr, uid, ids, context=None): def print_report(self, cr, uid, ids, context=None):

View File

@ -43,19 +43,19 @@ class pos_payment_report_date(osv.osv_memory):
datas['form'] = res datas['form'] = res
return { return {
'type': 'ir.actions.report.xml', 'type': 'ir.actions.report.xml',
'report_name': 'pos.payment.report.date', 'report_name': 'pos.payment.report.date',
'datas': datas, 'datas': datas,
} }
_columns = { _columns = {
'date_start': fields.date('Start Date', required=True), 'date_start': fields.date('Start Date', required=True),
'date_end': fields.date('End Date', required=True), 'date_end': fields.date('End Date', required=True),
'user_id': fields.many2many('res.users', 'res_user_sale', 'user_id', 'sale_id', 'Salesman') 'user_id': fields.many2many('res.users', 'res_user_sale', 'user_id', 'sale_id', 'Salesman')
} }
_defaults = { _defaults = {
'date_start': lambda *a: time.strftime('%Y-%m-%d'), 'date_start': lambda *a: time.strftime('%Y-%m-%d'),
'date_end': lambda *a: time.strftime('%Y-%m-%d'), 'date_end': lambda *a: time.strftime('%Y-%m-%d'),
} }
pos_payment_report_date() pos_payment_report_date()

View File

@ -42,13 +42,13 @@ class pos_payment_report_user(osv.osv_memory):
datas['form'] = res datas['form'] = res
return { return {
'type': 'ir.actions.report.xml', 'type': 'ir.actions.report.xml',
'report_name': 'pos.payment.report.user', 'report_name': 'pos.payment.report.user',
'datas': datas, 'datas': datas,
} }
_columns = { _columns = {
'user_id': fields.many2many('res.users', 'res_user_sale', 'user_id', 'sale_id', 'Salesman') 'user_id': fields.many2many('res.users', 'res_user_sale', 'user_id', 'sale_id', 'Salesman')
} }
pos_payment_report_user() pos_payment_report_user()

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <openerp>
<data> <data>
<!-- pos.details --> <!-- pos.details -->
<record id="view_pos_payment_report" model="ir.ui.view"> <record id="view_pos_payment_report" model="ir.ui.view">
<field name="name">Pyament Report</field> <field name="name">Pyament Report</field>
<field name="model">pos.payment.report</field> <field name="model">pos.payment.report</field>
@ -28,13 +28,6 @@
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>
<!-- <act_window name="POS Details"
res_model="pos.details"
src_model="pos.order"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_report_pos_details"/> -->
</data> </data>
</openerp> </openerp>

View File

@ -31,19 +31,15 @@ class pos_receipt(osv.osv_memory):
} }
def view_init(self, cr, uid, fields_list, context=None): def view_init(self, cr, uid, fields_list, context=None):
""" """
Creates view dynamically and adding fields at runtime. Creates view dynamically and adding fields at runtime.
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return: New arch of view with new columns. @return: New arch of view with new columns.
""" """
order_lst = self. pool.get('pos.order').browse(cr, uid, context['active_id']) order_lst = self. pool.get('pos.order').browse(cr, uid, context['active_id'])
# for order in order_lst:
# if order.state_2 in ('to_verify'):
# raise osv.except_osv(_('Error!', 'Can not print the receipt because of discount and/or payment '))
# True
def print_report(self, cr, uid, ids, context=None): def print_report(self, cr, uid, ids, context=None):

View File

@ -33,18 +33,18 @@ class pos_return(osv.osv_memory):
_description = 'Point of sale return' _description = 'Point of sale return'
def default_get(self, cr, uid, fields, context=None): def default_get(self, cr, uid, fields, context=None):
""" """
To get default values for the object. To get default values for the object.
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param fields: List of fields for which we want default values @param fields: List of fields for which we want default values
@param context: A standard dictionary @param context: A standard dictionary
@return: A dictionary which of fields with values. @return: A dictionary which of fields with values.
""" """
res = super(pos_return, self).default_get(cr, uid, fields, context=context) res = super(pos_return, self).default_get(cr, uid, fields, context=context)
order_obj = self.pool.get('pos.order') order_obj = self.pool.get('pos.order')
@ -54,44 +54,44 @@ class pos_return(osv.osv_memory):
for order in order_obj.browse(cr, uid, active_ids): for order in order_obj.browse(cr, uid, active_ids):
for line in order.lines: for line in order.lines:
if 'return%s'%(line.id) in fields: if 'return%s'%(line.id) in fields:
res['return%s'%(line.id)] = line.qty res['return%s'%(line.id)] = line.qty
return res return res
def view_init(self, cr, uid, fields_list, context=None): def view_init(self, cr, uid, fields_list, context=None):
""" """
Creates view dynamically and adding fields at runtime. Creates view dynamically and adding fields at runtime.
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return: New arch of view with new columns. @return: New arch of view with new columns.
""" """
res = super(pos_return, self).view_init(cr, uid, fields_list, context=context) res = super(pos_return, self).view_init(cr, uid, fields_list, context=context)
order_obj=self.pool.get('pos.order') order_obj=self.pool.get('pos.order')
if not context: if not context:
context={} context={}
active_ids=context.get('active_ids') active_ids=context.get('active_ids')
for order in order_obj.browse(cr, uid, active_ids): for order in order_obj.browse(cr, uid, active_ids):
for line in order.lines: for line in order.lines:
if 'return%s'%(line.id) not in self._columns: if 'return%s'%(line.id) not in self._columns:
self._columns['return%s'%(line.id)] = fields.float("Quantity") self._columns['return%s'%(line.id)] = fields.float("Quantity")
return res return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False,submenu=False): def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False,submenu=False):
""" """
Changes the view dynamically Changes the view dynamically
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return: New arch of view. @return: New arch of view.
""" """
result = super(pos_return, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu) result = super(pos_return, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu)
if not context: if not context:
context={} context={}
@ -104,25 +104,25 @@ class pos_return(osv.osv_memory):
_moves_arch_lst="""<?xml version="1.0"?> _moves_arch_lst="""<?xml version="1.0"?>
<form string="Return lines"> <form string="Return lines">
<label string="Quantities you enter, match to products that will return to the stock." colspan="4"/>""" <label string="Quantities you enter, match to products that will return to the stock." colspan="4"/>"""
_line_fields = result['fields'] _line_fields = result['fields']
order=order_obj.browse(cr, uid, active_id) order=order_obj.browse(cr, uid, active_id)
for line in order.lines: for line in order.lines:
quantity=line.qty quantity=line.qty
_line_fields.update({ _line_fields.update({
'return%s'%(line.id) : { 'return%s'%(line.id) : {
'string': line.product_id.name, 'string': line.product_id.name,
'type' : 'float', 'type' : 'float',
'required': True, 'required': True,
'default':quantity 'default':quantity
}, },
}) })
_moves_arch_lst += """ _moves_arch_lst += """
<field name="return%s"/> <field name="return%s"/>
<newline/> <newline/>
"""%(line.id) """%(line.id)
_moves_arch_lst+=""" _moves_arch_lst+="""
<newline/> <newline/>
<separator colspan="4"/> <separator colspan="4"/>
<button icon='gtk-cancel' special="cancel" <button icon='gtk-cancel' special="cancel"
string="Cancel" /> string="Cancel" />
@ -130,36 +130,36 @@ class pos_return(osv.osv_memory):
string="Return goods and Exchange" type="object"/> string="Return goods and Exchange" type="object"/>
<button icon='gtk-ok' name="create_returns2" <button icon='gtk-ok' name="create_returns2"
string="Return without Refund" type="object"/> string="Return without Refund" type="object"/>
</form>""" </form>"""
result['arch'] = _moves_arch_lst result['arch'] = _moves_arch_lst
result['fields'] = _line_fields result['fields'] = _line_fields
return result return result
def create_returns(self, cr, uid, data, context): def create_returns(self, cr, uid, data, context):
""" """
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return: Return the add product form again for adding more product @return: Return the add product form again for adding more product
""" """
return { return {
'name': _('Add Product'), 'name': _('Add Product'),
'view_type': 'form', 'view_type': 'form',
'view_mode': 'form', 'view_mode': 'form',
'res_model': 'pos.add.product', 'res_model': 'pos.add.product',
'view_id': False, 'view_id': False,
'target':'new', 'target':'new',
'views': False, 'views': False,
'context': context, 'context': context,
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
} }
def create_returns2(self, cr, uid, ids, context): def create_returns2(self, cr, uid, ids, context):
active_id = context.get('active_id', False) active_id = context.get('active_id', False)
order_obj =self.pool.get('pos.order') order_obj =self.pool.get('pos.order')
line_obj = self.pool.get('pos.order.line') line_obj = self.pool.get('pos.order.line')
picking_obj = self.pool.get('stock.picking') picking_obj = self.pool.get('stock.picking')
@ -182,10 +182,10 @@ class pos_return(osv.osv_memory):
location_id = res and res[0] or None location_id = res and res[0] or None
stock_dest_id = val.id stock_dest_id = val.id
new_picking = picking_obj.copy(cr, uid, order_id.picking_id.id, {'name':'%s (return)' % order_id.name, new_picking = picking_obj.copy(cr, uid, order_id.picking_id.id, {'name':'%s (return)' % order_id.name,
'move_lines': [], 'move_lines': [],
'state':'draft', 'state':'draft',
'type': 'in', 'type': 'in',
'address_id': order_id.partner_id.id, 'address_id': order_id.partner_id.id,
'date': date_cur }) 'date': date_cur })
new_order = order_obj.copy(cr, uid, order_id.id, {'name': 'Refund %s'%order_id.name, new_order = order_obj.copy(cr, uid, order_id.id, {'name': 'Refund %s'%order_id.name,
'lines':[], 'lines':[],
@ -197,7 +197,7 @@ class pos_return(osv.osv_memory):
qty = data['return%s' %line.id] qty = data['return%s' %line.id]
except : except :
qty = line.qty qty = line.qty
new_move = stock_move_obj.create(cr, uid,{ new_move = stock_move_obj.create(cr, uid, {
'product_qty': qty , 'product_qty': qty ,
'product_uos_qty': uom_obj._compute_qty(cr, uid, qty ,line.product_id.uom_id.id), 'product_uos_qty': uom_obj._compute_qty(cr, uid, qty ,line.product_id.uom_id.id),
'picking_id': new_picking, 'picking_id': new_picking,
@ -207,7 +207,8 @@ class pos_return(osv.osv_memory):
'location_dest_id': stock_dest_id, 'location_dest_id': stock_dest_id,
'name': '%s (return)' %order_id.name, 'name': '%s (return)' %order_id.name,
'date': date_cur, 'date': date_cur,
'date_planned': date_cur,}) 'date_planned': date_cur
})
line_obj.copy(cr, uid, line.id, {'qty': -qty, 'order_id': new_order}) line_obj.copy(cr, uid, line.id, {'qty': -qty, 'order_id': new_order})
order_obj.write(cr,uid, [active_id,new_order], {'state': 'done'}) order_obj.write(cr,uid, [active_id,new_order], {'state': 'done'})
wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr) wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr)
@ -225,25 +226,25 @@ class pos_return(osv.osv_memory):
'type': 'ir.actions.act_window' 'type': 'ir.actions.act_window'
} }
return act return act
pos_return() pos_return()
class add_product(osv.osv_memory): class add_product(osv.osv_memory):
_inherit = 'pos.add.product' _inherit = 'pos.add.product'
def select_product(self, cr, uid, ids, context): def select_product(self, cr, uid, ids, context):
""" """
To get the product and quantity and add in order . To get the product and quantity and add in order .
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param context: A standard dictionary @param context: A standard dictionary
@return : Retrun the add product form again for adding more product @return : Retrun the add product form again for adding more product
""" """
active_id=context.get('active_id', False) active_id=context.get('active_id', False)
data = self.read(cr, uid, ids) data = self.read(cr, uid, ids)
data = data and data[0] or False data = data and data[0] or False
if active_id: if active_id:
order_obj = self.pool.get('pos.order') order_obj = self.pool.get('pos.order')
lines_obj = self.pool.get('pos.order.line') lines_obj = self.pool.get('pos.order.line')
picking_obj = self.pool.get('stock.picking') picking_obj = self.pool.get('stock.picking')
@ -259,7 +260,7 @@ class add_product(osv.osv_memory):
wf_service = netsvc.LocalService("workflow") wf_service = netsvc.LocalService("workflow")
return_boj=self.pool.get('pos.return') return_boj=self.pool.get('pos.return')
order_obj.add_product(cr, uid, active_id, data['product_id'], data['quantity'], context=context) order_obj.add_product(cr, uid, active_id, data['product_id'], data['quantity'], context=context)
for order_id in order_obj.browse(cr, uid, [active_id], context=context): for order_id in order_obj.browse(cr, uid, [active_id], context=context):
prod=data['product_id'] prod=data['product_id']
qty=data['quantity'] qty=data['quantity']
@ -269,15 +270,16 @@ class add_product(osv.osv_memory):
res=cr.fetchone() res=cr.fetchone()
location_id=res and res[0] or None location_id=res and res[0] or None
stock_dest_id = val.id stock_dest_id = val.id
prod_id=prod_obj.browse(cr, uid, prod) prod_id=prod_obj.browse(cr, uid, prod)
new_picking=picking_obj.create(cr, uid,{ new_picking=picking_obj.create(cr, uid, {
'name':'%s (Added)' %order_id.name, 'name':'%s (Added)' %order_id.name,
'move_lines':[], 'move_lines':[],
'state':'draft', 'state':'draft',
'type':'out', 'type':'out',
'date':date_cur, }) 'date':date_cur
new_move=stock_move_obj.create(cr, uid,{ })
new_move=stock_move_obj.create(cr, uid, {
'product_qty': qty, 'product_qty': qty,
'product_uos_qty': uom_obj._compute_qty(cr, uid, prod_id.uom_id.id, qty, prod_id.uom_id.id), 'product_uos_qty': uom_obj._compute_qty(cr, uid, prod_id.uom_id.id, qty, prod_id.uom_id.id),
'picking_id':new_picking, 'picking_id':new_picking,
@ -287,33 +289,34 @@ class add_product(osv.osv_memory):
'location_dest_id':stock_dest_id, 'location_dest_id':stock_dest_id,
'name':'%s (return)' %order_id.name, 'name':'%s (return)' %order_id.name,
'date':date_cur, 'date':date_cur,
'date_planned':date_cur,}) 'date_planned':date_cur
})
wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr) wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr)
picking_obj.force_assign(cr, uid, [new_picking], context) picking_obj.force_assign(cr, uid, [new_picking], context)
order_obj.write(cr,uid,active_id,{'picking_id':new_picking}) order_obj.write(cr,uid,active_id,{'picking_id':new_picking})
return { return {
'name': _('Add Product'), 'name': _('Add Product'),
'view_type': 'form', 'view_type': 'form',
'view_mode': 'form', 'view_mode': 'form',
'res_model': 'pos.add.product', 'res_model': 'pos.add.product',
'view_id': False, 'view_id': False,
'target':'new', 'target':'new',
'context':context, 'context':context,
'views': False, 'views': False,
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
} }
def close_action(self, cr, uid, ids, context): def close_action(self, cr, uid, ids, context):
active_ids=context.get('active_ids', False) active_ids=context.get('active_ids', False)
order_obj = self.pool.get('pos.order') order_obj = self.pool.get('pos.order')
lines_obj = self.pool.get('pos.order.line') lines_obj = self.pool.get('pos.order.line')
picking_obj = self.pool.get('stock.picking') picking_obj = self.pool.get('stock.picking')
stock_move_obj = self.pool.get('stock.move') stock_move_obj = self.pool.get('stock.move')
move_obj = self.pool.get('stock.move') move_obj = self.pool.get('stock.move')
property_obj= self.pool.get("ir.property") property_obj= self.pool.get("ir.property")
invoice_obj=self.pool.get('account.invoice') invoice_obj=self.pool.get('account.invoice')
picking_ids = picking_obj.search(cr, uid, [('pos_order', 'in', active_ids), ('state', '=', 'done')]) picking_ids = picking_obj.search(cr, uid, [('pos_order', 'in', active_ids), ('state', '=', 'done')])
clone_list = [] clone_list = []
@ -330,19 +333,20 @@ class add_product(osv.osv_memory):
res=cr.fetchone() res=cr.fetchone()
location_id=res and res[0] or None location_id=res and res[0] or None
stock_dest_id = val.id stock_dest_id = val.id
order_obj.write(cr,uid,[order_id.id],{'type_rec':'Exchange'}) order_obj.write(cr,uid,[order_id.id],{'type_rec':'Exchange'})
if order_id.invoice_id: if order_id.invoice_id:
invoice_obj.refund(cr, uid, [order_id.invoice_id.id], time.strftime('%Y-%m-%d'), False, order_id.name) invoice_obj.refund(cr, uid, [order_id.invoice_id.id], time.strftime('%Y-%m-%d'), False, order_id.name)
new_picking=picking_obj.create(cr, uid,{ new_picking=picking_obj.create(cr, uid, {
'name':'%s (return)' %order_id.name, 'name':'%s (return)' %order_id.name,
'move_lines':[], 'state':'draft', 'move_lines':[], 'state':'draft',
'type':'in', 'type':'in',
'date':date_cur}) 'date':date_cur
})
for line in order_id.lines: for line in order_id.lines:
key=('return%s') %line.id key=('return%s') %line.id
if line.id and data.has_key(key): if line.id and data.has_key(key):
new_move=stock_move_obj.create(cr, uid,{ new_move=stock_move_obj.create(cr, uid, {
'product_qty': data['return%s' %line.id ], 'product_qty': data['return%s' %line.id ],
'product_uos_qty': uom_obj._compute_qty(cr, uid, data['return%s' %line.id], line.product_id.uom_id.id), 'product_uos_qty': uom_obj._compute_qty(cr, uid, data['return%s' %line.id], line.product_id.uom_id.id),
'picking_id':new_picking, 'picking_id':new_picking,
@ -352,29 +356,30 @@ class add_product(osv.osv_memory):
'location_dest_id':stock_dest_id, 'location_dest_id':stock_dest_id,
'name':'%s (return)' %order_id.name, 'name':'%s (return)' %order_id.name,
'date':date_cur, 'date':date_cur,
'date_planned':date_cur,}) 'date_planned':date_cur
lines_obj.write(cr,uid,[line.id],{'qty_rfd':(line.qty or 0.0) + data['return%s' %line.id],
'qty':line.qty-(data['return%s' %line.id] or 0.0)
}) })
lines_obj.write(cr,uid,[line.id], {
'qty_rfd':(line.qty or 0.0) + data['return%s' %line.id],
'qty':line.qty-(data['return%s' %line.id] or 0.0)
})
wf_service.trg_validate(uid, 'stock.picking',new_picking,'button_confirm', cr) wf_service.trg_validate(uid, 'stock.picking',new_picking,'button_confirm', cr)
picking_obj.force_assign(cr, uid, [new_picking], context) picking_obj.force_assign(cr, uid, [new_picking], context)
obj=order_obj.browse(cr,uid, active_ids[0]) obj=order_obj.browse(cr,uid, active_ids[0])
context.update({'return':'return'}) context.update({'return':'return'})
if obj.amount_total != obj.amount_paid: if obj.amount_total != obj.amount_paid:
return { return {
'name': _('Make Payment'), 'name': _('Make Payment'),
'context ':context, 'context ':context,
'view_type': 'form', 'view_type': 'form',
'view_mode': 'form', 'view_mode': 'form',
'res_model': 'pos.make.payment', 'res_model': 'pos.make.payment',
'view_id': False, 'view_id': False,
'target': 'new', 'target': 'new',
'views': False, 'views': False,
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
} }
return True return True
add_product() add_product()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <openerp>
<data> <data>
<!-- pos sales user --> <!-- pos sales user -->
<record id="view_pos_sale_user" model="ir.ui.view"> <record id="view_pos_sale_user" model="ir.ui.view">
<field name="name">Sale By User</field> <field name="name">Sale By User</field>
<field name="model">pos.sale.user</field> <field name="model">pos.sale.user</field>
@ -31,13 +31,6 @@
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>
<!-- <act_window name="POS Details"
res_model="pos.details"
src_model="pos.order"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_report_pos_details"/> -->
</data> </data>
</openerp> </openerp>

View File

@ -37,7 +37,10 @@
'website': 'http://www.openerp.com', 'website': 'http://www.openerp.com',
'depends': ['base'], 'depends': ['base'],
'init_xml': [], 'init_xml': [],
'update_xml': ['security/ir.model.access.csv', 'process_view.xml'], 'update_xml': [
'security/ir.model.access.csv',
'process_view.xml'
],
'demo_xml': [], 'demo_xml': [],
'installable': True, 'installable': True,
'active': False, 'active': False,

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# #
@ -15,7 +15,7 @@
# GNU Affero General Public License for more details. # GNU Affero General Public License for more details.
# #
# You should have received a copy of the GNU Affero General Public License # 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/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
@ -25,22 +25,22 @@ import pooler, tools
from osv import fields, osv from osv import fields, osv
class Env(dict): class Env(dict):
def __init__(self, obj, user): def __init__(self, obj, user):
self.__obj = obj self.__obj = obj
self.__usr = user self.__usr = user
def __getitem__(self, name): def __getitem__(self, name):
if name in ('__obj', '__user'): if name in ('__obj', '__user'):
return super(ExprContext, self).__getitem__(name) return super(ExprContext, self).__getitem__(name)
if name == 'user': if name == 'user':
return self.__user return self.__user
if name == 'object': if name == 'object':
return self.__obj return self.__obj
return self.__obj[name] return self.__obj[name]
class process_process(osv.osv): class process_process(osv.osv):
@ -85,7 +85,7 @@ class process_process(osv.osv):
def graph_get(self, cr, uid, id, res_model, res_id, scale, context): def graph_get(self, cr, uid, id, res_model, res_id, scale, context):
pool = pooler.get_pool(cr.dbname) pool = pooler.get_pool(cr.dbname)
process = pool.get('process.process').browse(cr, uid, [id], context)[0] process = pool.get('process.process').browse(cr, uid, [id], context)[0]
name = process.name name = process.name
@ -135,7 +135,7 @@ class process_process(osv.osv):
if node.menu_id: if node.menu_id:
data['menu'] = {'name': node.menu_id.complete_name, 'id': node.menu_id.id} data['menu'] = {'name': node.menu_id.complete_name, 'id': node.menu_id.id}
if node.model_id and node.model_id.model == res_model: if node.model_id and node.model_id.model == res_model:
try: try:
data['active'] = eval(node.model_states, expr_context) data['active'] = eval(node.model_states, expr_context)
@ -233,7 +233,7 @@ class process_process(osv.osv):
# calculate graph layout # calculate graph layout
g = tools.graph(nodes.keys(), map(lambda x: (x['source'], x['target']), transitions.values())) g = tools.graph(nodes.keys(), map(lambda x: (x['source'], x['target']), transitions.values()))
g.process(start) g.process(start)
g.scale(*scale) #g.scale(100, 100, 180, 120) g.scale(*scale) #g.scale(100, 100, 180, 120)
graph = g.result_get() graph = g.result_get()

View File

@ -28,10 +28,10 @@ class company(osv.osv):
help="This is the time frame analysed by the scheduler when "\ help="This is the time frame analysed by the scheduler when "\
"computing procurements. All procurements that are not between "\ "computing procurements. All procurements that are not between "\
"today and today+range are skipped for futur computation."), "today and today+range are skipped for futur computation."),
} }
_defaults = { _defaults = {
'schedule_range': 80.0, 'schedule_range': 80.0,
} }
company() company()

View File

@ -263,12 +263,5 @@
res_model="stock.warehouse.orderpoint" res_model="stock.warehouse.orderpoint"
src_model="procurement.order"/> src_model="procurement.order"/>
<!-- <act_window-->
<!-- domain="[('id', '=', product_id)]"-->
<!-- id="act_product_product_2_stock_warehouse_orderpoint"-->
<!-- name="Product"-->
<!-- res_model="product.product"-->
<!-- src_model="procurement.order"/>-->
</data> </data>
</openerp> </openerp>

View File

@ -259,7 +259,7 @@ class procurement_order(osv.osv):
'act_from': user_id, 'act_from': user_id,
'act_to': user_id, 'act_to': user_id,
'body': '\n'.join(report) 'body': '\n'.join(report)
}) })
if use_new_cursor: if use_new_cursor:
cr.commit() cr.commit()
cr.close() cr.close()

View File

@ -47,27 +47,27 @@ class make_procurement(osv.osv_memory):
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True), 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True),
'date_planned': fields.date('Planned Date', required=True), 'date_planned': fields.date('Planned Date', required=True),
} }
_defaults = { _defaults = {
'date_planned': lambda *args: time.strftime('%Y-%m-%d'), 'date_planned': lambda *args: time.strftime('%Y-%m-%d'),
'qty': lambda *args: 1.0, 'qty': lambda *args: 1.0,
} }
def make_procurement(self, cr, uid, ids, context=None): def make_procurement(self, cr, uid, ids, context=None):
""" Creates procurement order for selected product. """ Creates procurement order for selected product.
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param ids: List of IDs selected @param ids: List of IDs selected
@param context: A standard dictionary @param context: A standard dictionary
@return: A dictionary which loads Procurement form view. @return: A dictionary which loads Procurement form view.
""" """
user = self.pool.get('res.users').browse(cr, uid, uid, context).login user = self.pool.get('res.users').browse(cr, uid, uid, context).login
wh_obj = self.pool.get('stock.warehouse') wh_obj = self.pool.get('stock.warehouse')
procurement_obj = self.pool.get('procurement.order') procurement_obj = self.pool.get('procurement.order')
wf_service = netsvc.LocalService("workflow") wf_service = netsvc.LocalService("workflow")
data_obj = self.pool.get('ir.model.data') data_obj = self.pool.get('ir.model.data')
for proc in self.browse(cr, uid, ids): for proc in self.browse(cr, uid, ids):
wh = wh_obj.browse(cr, uid, proc.warehouse_id.id, context) wh = wh_obj.browse(cr, uid, proc.warehouse_id.id, context)
procure_id = procurement_obj.create(cr, uid, { procure_id = procurement_obj.create(cr, uid, {
@ -79,42 +79,42 @@ class make_procurement(osv.osv_memory):
'location_id': wh.lot_stock_id.id, 'location_id': wh.lot_stock_id.id,
'procure_method':'make_to_order', 'procure_method':'make_to_order',
}) })
wf_service.trg_validate(uid, 'procurement.order', procure_id, 'button_confirm', cr) wf_service.trg_validate(uid, 'procurement.order', procure_id, 'button_confirm', cr)
id2 = data_obj._get_id(cr, uid, 'procurement', 'procurement_tree_view') id2 = data_obj._get_id(cr, uid, 'procurement', 'procurement_tree_view')
id3 = data_obj._get_id(cr, uid, 'procurement', 'procurement_form_view') id3 = data_obj._get_id(cr, uid, 'procurement', 'procurement_form_view')
if id2: if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id id2 = data_obj.browse(cr, uid, id2, context=context).res_id
if id3: if id3:
id3 = data_obj.browse(cr, uid, id3, context=context).res_id id3 = data_obj.browse(cr, uid, id3, context=context).res_id
return { return {
'view_type': 'form', 'view_type': 'form',
'view_mode': 'tree,form', 'view_mode': 'tree,form',
'res_model': 'procurement.order', 'res_model': 'procurement.order',
'res_id' : procure_id, 'res_id' : procure_id,
'views': [(id3,'form'),(id2,'tree')], 'views': [(id3,'form'),(id2,'tree')],
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
} }
def default_get(self, cr, uid, fields, context=None): def default_get(self, cr, uid, fields, context=None):
""" To get default values for the object. """ To get default values for the object.
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param fields: List of fields for which we want default values @param fields: List of fields for which we want default values
@param context: A standard dictionary @param context: A standard dictionary
@return: A dictionary which of fields with values. @return: A dictionary which of fields with values.
""" """
record_id = context and context.get('active_id', False) or False record_id = context and context.get('active_id', False) or False
res = super(make_procurement, self).default_get(cr, uid, fields, context=context) res = super(make_procurement, self).default_get(cr, uid, fields, context=context)
product_id = self.pool.get('product.product').browse(cr, uid, record_id, context=context).id product_id = self.pool.get('product.product').browse(cr, uid, record_id, context=context).id
if 'product_id' in fields: if 'product_id' in fields:
res.update({'product_id':product_id}) res.update({'product_id':product_id})
return res return res
make_procurement() make_procurement()

View File

@ -25,28 +25,27 @@ from osv import osv, fields
class procurement_compute(osv.osv_memory): class procurement_compute(osv.osv_memory):
_name = 'procurement.order.compute' _name = 'procurement.order.compute'
_description = 'Compute Procurement' _description = 'Compute Procurement'
def _procure_calculation_procure(self, cr, uid, ids, context): def _procure_calculation_procure(self, cr, uid, ids, context):
try: try:
proc_obj = self.pool.get('procurement.order') proc_obj = self.pool.get('procurement.order')
proc_obj._procure_confirm(cr, uid, use_new_cursor=cr.dbname, context=context) proc_obj._procure_confirm(cr, uid, use_new_cursor=cr.dbname, context=context)
finally: finally:
pass pass
#cr.close()
return {} return {}
def procure_calculation(self, cr, uid, ids, context): def procure_calculation(self, cr, uid, ids, context):
""" """
@param self: The object pointer. @param self: The object pointer.
@param cr: A database cursor @param cr: A database cursor
@param uid: ID of the user currently logged in @param uid: ID of the user currently logged in
@param ids: List of IDs selected @param ids: List of IDs selected
@param context: A standard dictionary @param context: A standard dictionary
""" """
threaded_calculation = threading.Thread(target=self._procure_calculation_procure, args=(cr, uid, ids, context)) threaded_calculation = threading.Thread(target=self._procure_calculation_procure, args=(cr, uid, ids, context))
threaded_calculation.start() threaded_calculation.start()
return {} return {}
procurement_compute() procurement_compute()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -22,13 +22,5 @@
</field> </field>
</record> </record>
<!-- <act_window name="Compute Procurements" -->
<!-- res_model="procurement.order.compute"-->
<!-- src_model="procurement.order"-->
<!-- view_mode="form"-->
<!-- target="new" -->
<!-- key2="client_action_multi" -->
<!-- id="act_compute_procurement"/> -->
</data> </data>
</openerp> </openerp>

Some files were not shown because too many files have changed in this diff Show More