[MERGE]: Merge with lp:openobject-addons-trunk
bzr revid: ksa@tinyerp.co.in-20100920102029-a3b2jpn21xbs0dyl
This commit is contained in:
@@ -2508,8 +2508,6 @@
|
||||
<field domain="[('journal_id','=',parent.journal_id)]" name="account_id"/>
|
||||
<field name="analytic_account_id" groups="base.group_extended" />
|
||||
<field name="amount"/>
|
||||
<field context="{'partner_id': partner_id, 'amount': amount, 'account_id': account_id, 'currency_id': parent.currency, 'journal_id': parent.journal_id, 'date':date}" name="reconcile_id"/>
|
||||
<field invisible="1" name="reconcile_amount"/>
|
||||
</tree>
|
||||
<form string="Statement lines">
|
||||
<field name="date"/>
|
||||
@@ -2519,7 +2517,6 @@
|
||||
<field domain="[('journal_id', '=', parent.journal_id), ('type', '<>', 'view')]" name="account_id"/>
|
||||
<field name="analytic_account_id" groups="base.group_extended" />
|
||||
<field name="amount"/>
|
||||
<field context="{'partner_id':partner_id,'amount':amount,'account_id':account_id,'currency_id': parent.currency,'journal_id':parent.journal_id, 'date':date}" name="reconcile_id"/>
|
||||
<field name="ref"/>
|
||||
<field name="sequence"/>
|
||||
<separator colspan="4" string="Notes"/>
|
||||
|
||||
@@ -2668,10 +2668,10 @@ msgid ""
|
||||
"partners accounts (for debit/credit computations), closed for deprecated "
|
||||
"accounts."
|
||||
msgstr ""
|
||||
"Pogled: Sintetički zbrojni konto, ne sadrži knjiženja\r\n"
|
||||
"Konsolidacija: Zbrojni konto za više poduzeća i paralelne kontne planove\r\n"
|
||||
"Obveze: Salda konta partnera - dobavljači\r\n"
|
||||
"Potraživanja: Salda konta partnera - kupci\r\n"
|
||||
"Pogled: Sintetički zbrojni konto, ne sadrži knjiženja\n"
|
||||
"Konsolidacija: Zbrojni konto za više poduzeća i paralelne kontne planove\n"
|
||||
"Obveze: Salda konta partnera - dobavljači\n"
|
||||
"Potraživanja: Salda konta partnera - kupci\n"
|
||||
"Zatvoren: Za konta koja se više ne koriste"
|
||||
|
||||
#. module: account
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
|
||||
class account_tax_chart(osv.osv_memory):
|
||||
"""
|
||||
For Chart of taxes
|
||||
"""
|
||||
_name = "account.tax.chart"
|
||||
_description = "Account tax chart"
|
||||
_columns = {
|
||||
'period_id': fields.many2one('account.period', \
|
||||
'Period', \
|
||||
),
|
||||
'target_move': fields.selection([('all', 'All Entries'),
|
||||
('posted', 'All Posted Entries')], 'Target Moves', required=True),
|
||||
}
|
||||
|
||||
def _get_period(self, cr, uid, context=None):
|
||||
"""Return default period value"""
|
||||
period_ids = self.pool.get('account.period').find(cr, uid)
|
||||
return period_ids and period_ids[0] or False
|
||||
|
||||
def account_tax_chart_open_window(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Opens chart of Accounts
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of account chart’s IDs
|
||||
@return: dictionary of Open account chart window on given fiscalyear and all Entries or posted entries
|
||||
"""
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
act_obj = self.pool.get('ir.actions.act_window')
|
||||
period_obj = self.pool.get('account.period')
|
||||
if context is None:
|
||||
context = {}
|
||||
data = self.read(cr, uid, ids, [], context=context)[0]
|
||||
result = mod_obj._get_id(cr, uid, 'account', 'action_tax_code_tree')
|
||||
id = mod_obj.read(cr, uid, [result], ['res_id'], context=context)[0]['res_id']
|
||||
result = act_obj.read(cr, uid, [id], context=context)[0]
|
||||
if data['period_id']:
|
||||
fiscalyear_id = period_obj.read(cr, uid, [data['period_id']], context=context)[0]['fiscalyear_id'][0]
|
||||
result['context'] = str({'period_id': data['period_id'], \
|
||||
'fiscalyear_id': fiscalyear_id, \
|
||||
'state': data['target_move']})
|
||||
else:
|
||||
result['context'] = str({'state': data['target_move']})
|
||||
|
||||
if data['period_id']:
|
||||
result['name'] += ':' + self.pool.get('account.period').read(cr, uid, [data['period_id']], context=context)[0]['code']
|
||||
return result
|
||||
|
||||
_defaults = {
|
||||
'period_id': _get_period,
|
||||
'target_move': 'all'
|
||||
}
|
||||
|
||||
account_tax_chart()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_account_tax_chart" model="ir.ui.view">
|
||||
<field name="name">account.tax.chart.form</field>
|
||||
<field name="model">account.tax.chart</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Account tax charts">
|
||||
<group colspan="4" >
|
||||
<field name="period_id"/>
|
||||
<label align="0.7" colspan="6" string="(If you do not select period it will take all open periods)"/>
|
||||
<field name="target_move"/>
|
||||
</group>
|
||||
<separator string="" colspan="4" />
|
||||
<group colspan="4" col="6">
|
||||
<label string ="" colspan="2"/>
|
||||
<button icon="gtk-cancel" special="cancel" string="Cancel" />
|
||||
<button icon="terp-gtk-go-back-rtl" string="Open Charts" name="account_tax_chart_open_window" type="object" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_account_tax_chart" model="ir.actions.act_window">
|
||||
<field name="name">Chart of Taxes</field>
|
||||
<field name="res_model">account.tax.chart</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('parent_id','=',False)]</field>
|
||||
<field name="view_id" ref="view_account_tax_chart"/>
|
||||
<field name="help">Chart of Taxes is a tree view reflecting the structure of the Tax Cases (or tax codes) and shows the current tax situation. The tax chart represents the amount of each area of the tax declaration for your country. It’s presented in a hierarchical structure, which can be modified to fit your needs.</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
icon="STOCK_INDENT"
|
||||
action="action_account_tax_chart"
|
||||
id="menu_action_tax_code_tree"
|
||||
parent="menu_finance_charts"
|
||||
sequence="12"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
<record id="demo_message1" model="notify.message">
|
||||
<field name="name">OpenERP SA</field>
|
||||
<field name="msg">ERP & CRM Solutions....</field>
|
||||
<field name="msg">ERP & CRM Solutions....</field>
|
||||
</record>
|
||||
<record id="demo_message1" model="notify.message">
|
||||
<field name="name">Tiny sprl</field>
|
||||
<field name="msg">Be Expert with the Experts...</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
<group col="2" colspan="1">
|
||||
<separator string="Payment Options" colspan="2"/>
|
||||
<field name="pay_now" on_change="onchange_payment(pay_now, journal_id, partner_id)" required="1"/>
|
||||
<field name="account_id"
|
||||
<field name="account_id"
|
||||
attrs="{'invisible':[('pay_now','!=','pay_now')]}"
|
||||
domain="[('type','=','liquidity')]"/>
|
||||
<!-- should select income accounts only. Or use the journal for this ? -->
|
||||
@@ -159,7 +159,7 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Sales Voucher -->
|
||||
<record id="action_sale_receipt" model="ir.actions.act_window">
|
||||
<field name="name">Sales Receipt</field>
|
||||
@@ -284,8 +284,8 @@
|
||||
<field name="act_window_id" ref="action_purchase_receipt"/>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_action_purchase_receipt" icon="STOCK_JUSTIFY_FILL"
|
||||
action="action_purchase_receipt" parent="account.menu_finance_payables" sequence="10"/>
|
||||
|
||||
<menuitem id="menu_action_purchase_receipt" icon="STOCK_JUSTIFY_FILL"
|
||||
action="action_purchase_receipt" parent="account.menu_finance_payables" sequence="10"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -388,8 +388,9 @@
|
||||
string="Sold" help="Buy object"
|
||||
domain="[('state','=','sold')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name" string="Object Name"/>
|
||||
<field name="lot_type"/>
|
||||
<field name="name"/>
|
||||
<field name="ach_uid"/>
|
||||
<field name="bord_vnd_id"/>
|
||||
<field name="state"/>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="16">
|
||||
|
||||
@@ -54,9 +54,8 @@ class quality_test(base_module_quality.abstract_quality_check):
|
||||
flag = True
|
||||
file_path = os.path.join(module_path, file_py)
|
||||
try:
|
||||
import pylint
|
||||
res = os.popen('pylint --rcfile=' + config_file_path + ' ' + file_path).read()
|
||||
except Exception, e:
|
||||
except Exception:
|
||||
self.error = True
|
||||
self.log.exception("Cannot run pylint test for %s", file_path)
|
||||
self.result += _("Error. Is pylint correctly installed? (http://pypi.python.org/pypi/pylint)")+"\n"
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#
|
||||
##############################################################################
|
||||
from osv import fields, osv
|
||||
import netsvc
|
||||
|
||||
class base_setup_installer(osv.osv_memory):
|
||||
_name = 'base.setup.installer'
|
||||
|
||||
@@ -96,9 +96,9 @@
|
||||
|
||||
<menuitem name="Inbound" id="menu_crm_case_phone_inbound"
|
||||
parent="crm.menu_crm_case_phone"
|
||||
action="crm_case_categ_phone_incoming0"/>
|
||||
action="crm_case_categ_phone_incoming0" />
|
||||
|
||||
<record model="ir.actions.act_window" id="crm_case_categ_phone_outgoing0">
|
||||
<record model="ir.actions.act_window" id="crm_case_categ_phone_outgoing0">
|
||||
<field name="name">Outbound</field>
|
||||
<field name="res_model">crm.phonecall</field>
|
||||
<field name="view_type">form</field>
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
|
||||
|
||||
from osv import fields,osv
|
||||
import time
|
||||
import tools
|
||||
|
||||
class report_document_user(osv.osv):
|
||||
|
||||
@@ -65,12 +65,14 @@
|
||||
<record id="employee2" model="hr.employee">
|
||||
<field name="name">Quentin Paolino</field>
|
||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="category_ids" eval="[(6, 0, [ref('category_jr_exec'),ref('category_managers')])]"/>
|
||||
</record>
|
||||
|
||||
<record id="employee3" model="hr.employee">
|
||||
<field name="name">Antoine Philippe</field>
|
||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="category_ids" eval="[(6, 0, [ref('category_trainee')])]"/>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -220,8 +220,8 @@ msgid ""
|
||||
"managers can obtain an easy view on best ideas from all the users. Once "
|
||||
"installed, check the menu 'Ideas' in the 'Tools' main menu."
|
||||
msgstr ""
|
||||
"这模块允许你在企业创新里简单和有效地使用.\r\n"
|
||||
"它允许每个人对不同注意表达构想, 其它用户能评价这些构想和对具体的构想进行投票. 每个构想根据不同投票决定得分.\r\n"
|
||||
"这模块允许你在企业创新里简单和有效地使用.\n"
|
||||
"它允许每个人对不同注意表达构想, 其它用户能评价这些构想和对具体的构想进行投票. 每个构想根据不同投票决定得分.\n"
|
||||
"管理人员可以很容易得到所有用户对构想的评价."
|
||||
|
||||
#. module: idea
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
- |
|
||||
In order to test the Idea module in OpenERP,
|
||||
In order to test the Idea module in OpenERP,
|
||||
we will create a full flow, from the idea definition up to the votes and discussions on the idea.
|
||||
- |
|
||||
Given that I have an Idea category "Technical".
|
||||
-
|
||||
-
|
||||
!record {model: idea.category, id: idea_category_technical0}:
|
||||
name: Technical
|
||||
- |
|
||||
I create a New Idea of "Technical presentation for 1 hours in every day" and specify category "Technical".
|
||||
-
|
||||
!record {model: idea.idea, id: idea_idea_0}:
|
||||
-
|
||||
!record {model: idea.idea, id: idea_idea_0}:
|
||||
category_id: idea_category_technical0
|
||||
created_date: '2010-05-13 19:16:26'
|
||||
description: I want that Technical presentation are arranged for 1 hours in every
|
||||
@@ -17,23 +17,22 @@
|
||||
are done in our company.\n\n\n\n\n
|
||||
name: Technical presentation for 1 hours in every day
|
||||
user_id: base.user_root
|
||||
|
||||
|
||||
- |
|
||||
I check that the idea is in draft state.
|
||||
-
|
||||
!assert {model: idea.idea, id: idea_idea_0}:
|
||||
- state == 'draft'
|
||||
|
||||
- state == 'draft'
|
||||
|
||||
- |
|
||||
I open this idea by clicking on the "Open" button.
|
||||
-
|
||||
-
|
||||
!workflow {model: idea.idea, action: idea_open, ref: idea_idea_0}
|
||||
|
||||
|
||||
- |
|
||||
In order to check voting statistics in real systems I will create 2 new Users "test_idea_user1".
|
||||
|
||||
-
|
||||
!record {model: res.users, id: test_idea_user1}:
|
||||
-
|
||||
!record {model: res.users, id: test_idea_user1}:
|
||||
company_id: base.main_company
|
||||
context_lang: en_US
|
||||
login: test_idea_user1
|
||||
@@ -41,8 +40,8 @@
|
||||
password: test_idea_user1
|
||||
groups_id: [ base.group_tool_user, ]
|
||||
- |
|
||||
And I will also create user2.
|
||||
-
|
||||
And I will also create user2.
|
||||
-
|
||||
!record {model: res.users, id: test_idea_user2}:
|
||||
company_id: base.main_company
|
||||
context_lang: en_US
|
||||
@@ -53,39 +52,39 @@
|
||||
- |
|
||||
In order to post vote I connect as test_idea_user1 and open the idea page
|
||||
I click on "Submit Vote" wizard button and vote the idea as "Normal"
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
!python {model: idea.post.vote}: |
|
||||
uid2 = ref('test_idea_user1')
|
||||
new_id = self.create(cr, uid2, {'vote': 50}, {"active_ids": [ref("idea_idea_0")]})
|
||||
self.do_vote(cr, uid2, [new_id], {"active_ids": [ref("idea_idea_0")]})
|
||||
|
||||
|
||||
- |
|
||||
To add other vote I connect as test_idea_user2 and open the idea page.
|
||||
|
||||
|
||||
I click on "Submit Vote" wizard button and vote the idea as "Very Good".
|
||||
|
||||
|
||||
and put comment "We can learn many things from technical presentation".
|
||||
|
||||
|
||||
-
|
||||
!python {model: idea.post.vote}: |
|
||||
uid2 = ref('test_idea_user2')
|
||||
new_id = self.create(cr, uid2, {'vote': 100, 'note': 'We can learn many things from technical presentation'}, {"active_ids": [ref("idea_idea_0")]})
|
||||
self.do_vote(cr, uid2, [new_id], {'active_ids': [ref('idea_idea_0')]})
|
||||
|
||||
self.do_vote(cr, uid2, [new_id], {'active_ids': [ref('idea_idea_0')]})
|
||||
|
||||
- |
|
||||
I can see that the Average score changed in "Average score" field with value 75
|
||||
-
|
||||
!record {model: idea.idea, id: idea_idea_0}:
|
||||
vote_avg: 75
|
||||
|
||||
!record {model: idea.idea, id: idea_idea_0}:
|
||||
vote_avg: 75
|
||||
|
||||
- |
|
||||
I connect as Manager and close this idea by click on "Close" button.
|
||||
-
|
||||
!workflow {model: idea.idea, action: idea_close, ref: idea_idea_0}
|
||||
|
||||
|
||||
- |
|
||||
I check that the idea's state is now Accepted
|
||||
-
|
||||
!assert {model: idea.idea, id: idea_idea_0}:
|
||||
- state == 'close'
|
||||
!assert {model: idea.idea, id: idea_idea_0}:
|
||||
- state == 'close'
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
- |
|
||||
In order to test the Lunch module in OpenERP,
|
||||
In order to test the Lunch module in OpenERP,
|
||||
I will create one lunch order and then check the effect on cashboxes and cashmoves
|
||||
|
||||
|
||||
- |
|
||||
Given that I have a category of lunch products "Burger".
|
||||
-
|
||||
-
|
||||
!record {model: lunch.category, id: lunch_category_burger0}:
|
||||
name: Burger
|
||||
- |
|
||||
Given that I have a product "Club1" in this category with a price of "2.75".
|
||||
|
||||
-
|
||||
-
|
||||
!record {model: lunch.product, id: lunch_product_club1}:
|
||||
category_id: lunch_category_burger0
|
||||
name: Club1
|
||||
price: 2.75
|
||||
price: 2.75
|
||||
- |
|
||||
Given that I have a cashbox "Employee Cashbox"
|
||||
-
|
||||
-
|
||||
!record {model: lunch.cashbox, id: lunch_cashbox_cashbox0}:
|
||||
manager: base.user_root
|
||||
name: Employee Cashbox
|
||||
@@ -25,48 +25,63 @@
|
||||
I create a lunch order "LU001" for the "Club1" product
|
||||
- |
|
||||
When I select the product "club1", the price of 2.75 is automatically proposed
|
||||
-
|
||||
-
|
||||
!record {model: lunch.order, id: lunch_order_0}:
|
||||
date: '2010-04-19'
|
||||
product: 'lunch_product_club1'
|
||||
price: 2.75
|
||||
user_id: base.user_root
|
||||
|
||||
|
||||
- |
|
||||
I check that lunch order is on draft state after having created it.
|
||||
-
|
||||
!assert {model: lunch.order, id: lunch_order_0}:
|
||||
- state == 'draft'
|
||||
- state == 'draft'
|
||||
- |
|
||||
I confirm the order "LU001" using the "Confirm Order" wizard.
|
||||
-
|
||||
-
|
||||
!record {model: lunch.order.confirm, id: lunch_order_confirm_0}:
|
||||
confirm_cashbox: 'lunch_cashbox_cashbox0'
|
||||
-
|
||||
I click on "Confirm Order" button of this wizard.
|
||||
I click on "Confirm Order" button of this wizard.
|
||||
-
|
||||
!python {model: lunch.order.confirm}: |
|
||||
self.confirm(cr, uid, [ref('lunch_order_confirm_0')], {'active_ids': [ref('lunch_order_0')]})
|
||||
self.confirm(cr, uid, [ref('lunch_order_confirm_0')], {'active_ids': [ref('lunch_order_0')]})
|
||||
|
||||
- |
|
||||
I check that the Cash Moves have been generated with the right box
|
||||
name
|
||||
-
|
||||
!assert {model: lunch.order, id: lunch_order_0}:
|
||||
- cashmove.id != False
|
||||
|
||||
- |
|
||||
I check that the Total on the "Employee Cashbox" is -2.75
|
||||
|
||||
-
|
||||
!assert {model: lunch.cashbox, id: lunch_cashbox_cashbox0}:
|
||||
- sum_remain == -2.75
|
||||
|
||||
- |
|
||||
I create a new lunch order "LU002" for the "Club1" product, at another date.
|
||||
-
|
||||
-
|
||||
!record {model: lunch.order, id: lunch_order_1}:
|
||||
date: '2010-04-22'
|
||||
product: 'lunch_product_club1'
|
||||
price: 2.75
|
||||
user_id: base.user_root
|
||||
|
||||
|
||||
- |
|
||||
I confirm this order.open wizard and select "Employee Cashbox".
|
||||
-
|
||||
-
|
||||
!record {model: lunch.order.confirm, id: lunch_order_confirm_1}:
|
||||
confirm_cashbox: 'lunch_cashbox_cashbox0'
|
||||
- |
|
||||
Now I click on "Confirm Order" button of this wizard.
|
||||
Now I click on "Confirm Order" button of this wizard.
|
||||
-
|
||||
!python {model: lunch.order.confirm}: |
|
||||
self.confirm(cr, uid, [ref('lunch_order_confirm_1')], {'active_ids': [ref('lunch_order_1')]})
|
||||
|
||||
|
||||
- |
|
||||
I check that the Total on the "Employee Cashbox" is -5.50
|
||||
-
|
||||
@@ -75,21 +90,22 @@
|
||||
|
||||
- |
|
||||
I cancel the order "LU002"
|
||||
-
|
||||
-
|
||||
!record {model: lunch.order.cancel, id: lunch_order_cancel_0}:
|
||||
{}
|
||||
- |
|
||||
I click on "Yes" button of this wizard for cancel order.
|
||||
|
||||
-
|
||||
!python {model: lunch.order.cancel}: |
|
||||
self.cancel(cr, uid, [ref('lunch_order_cancel_0')], {'active_ids': [ref('lunch_order_1')]})
|
||||
|
||||
|
||||
- |
|
||||
I test that the Cash Moves record have been removed for the order LU002.
|
||||
-
|
||||
!assert {model: lunch.order, id: lunch_order_1}:
|
||||
- cashmove.id == False
|
||||
|
||||
|
||||
- |
|
||||
I check that the Total on the "Employee Cashbox" is -2.75
|
||||
-
|
||||
@@ -97,7 +113,7 @@
|
||||
- sum_remain == -2.75
|
||||
- |
|
||||
I reset the "Employee Cashbox" to zero using the "Set CashBox to Zero" wizard.
|
||||
-
|
||||
-
|
||||
!record {model: lunch.cashbox.clean, id: lunch_cashbox_clean_0}:
|
||||
{}
|
||||
-
|
||||
@@ -105,10 +121,10 @@
|
||||
-
|
||||
!python {model: lunch.cashbox.clean, id: lunch_cashbox_clean_0}: |
|
||||
self.set_to_zero(cr, uid, [ref('lunch_cashbox_clean_0')], {'active_ids': [ref('lunch_cashbox_cashbox0')]})
|
||||
|
||||
|
||||
- |
|
||||
I cancel the order
|
||||
I check that the Total on the "Employee Cashbox" is 0.0
|
||||
-
|
||||
!assert {model: lunch.cashbox, id: lunch_cashbox_cashbox0}:
|
||||
- sum_remain == 0.00
|
||||
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_mailgate_thread_tree">
|
||||
<record model="ir.ui.view" id="view_mailgate_thread_tree">
|
||||
<field name="name">mailgate.thread.tree</field>
|
||||
<field name="model">mailgate.thread</field>
|
||||
<field name="type">tree</field>
|
||||
@@ -191,11 +191,7 @@
|
||||
view_id="view_mailgate_message_tree"
|
||||
/>
|
||||
|
||||
<!-- <act_window
|
||||
id="act_res_partner_open_email" name="Open Documents"
|
||||
res_model="ir.attachment"
|
||||
src_model="mailgate.message"
|
||||
key2="client_action_multi"/> -->
|
||||
|
||||
|
||||
<menuitem name="Emails" id="menu_base_config_mail"
|
||||
parent="base.menu_base_partner" sequence="5" />
|
||||
|
||||
+15
-17
@@ -19,11 +19,11 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from mx import DateTime
|
||||
from datetime import datetime, timedelta
|
||||
import itertools
|
||||
import operator
|
||||
from datetime import datetime
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
import ir
|
||||
import netsvc
|
||||
import time
|
||||
|
||||
@@ -178,8 +178,8 @@ class mrp_bom(osv.osv):
|
||||
'code': fields.char('Reference', size=16),
|
||||
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the bills of material without removing it."),
|
||||
'type': fields.selection([('normal','Normal BoM'),('phantom','Sets / Phantom')], 'BoM Type', required=True,
|
||||
help= "If a sub-product is used in several products, it can be useful to create its own BoM."\
|
||||
"Though if you don't want separated production orders for this sub-product, select Set/Phantom as BoM type."\
|
||||
help= "If a sub-product is used in several products, it can be useful to create its own BoM. "\
|
||||
"Though if you don't want separated production orders for this sub-product, select Set/Phantom as BoM type. "\
|
||||
"If a Phantom BoM is used for a root product, it will be sold and shipped as a set of components, instead of being produced."),
|
||||
'method': fields.function(_compute_type, string='Method', method=True, type='selection', selection=[('',''),('stock','On Stock'),('order','On Order'),('set','Set / Pack')]),
|
||||
'date_start': fields.date('Valid From', help="Validity of this BoM or component. Keep empty if it's always valid."),
|
||||
@@ -250,7 +250,6 @@ class mrp_bom(osv.osv):
|
||||
@param properties: List of related properties.
|
||||
@return: False or BoM id.
|
||||
"""
|
||||
bom_result = False
|
||||
cr.execute('select id from mrp_bom where product_id=%s and bom_id is null order by sequence', (product_id,))
|
||||
ids = map(lambda x: x[0], cr.fetchall())
|
||||
max_prop = 0
|
||||
@@ -359,8 +358,7 @@ class many2many_domain(fields.many2many):
|
||||
res = {}
|
||||
move_obj = obj.pool.get('stock.move')
|
||||
for prod in obj.browse(cr, user, ids, context=context):
|
||||
cr.execute("SELECT move_id from mrp_production_move_ids where\
|
||||
production_id=%s" % (prod.id))
|
||||
cr.execute("SELECT move_id from mrp_production_move_ids where production_id=%s" % (prod.id))
|
||||
m_ids = map(lambda x: x[0], cr.fetchall())
|
||||
final = move_obj.search(cr, user, self._domain + [('id', 'in', tuple(m_ids))])
|
||||
res[prod.id] = final
|
||||
@@ -374,13 +372,15 @@ class one2many_domain(fields.one2many):
|
||||
def get(self, cr, obj, ids, name, user=None, offset=0, context=None, values=None):
|
||||
if not context:
|
||||
context = {}
|
||||
res = {}
|
||||
|
||||
move_obj = obj.pool.get('stock.move')
|
||||
for prod in obj.browse(cr, user, ids, context=context):
|
||||
cr.execute("SELECT id from stock_move where production_id=%s" % (prod.id))
|
||||
m_ids = map(lambda x: x[0], cr.fetchall())
|
||||
final = move_obj.search(cr, user, self._domain + [('id', 'in', tuple(m_ids))])
|
||||
res[prod.id] = final
|
||||
res = {}.fromkeys(ids, [])
|
||||
key = operator.itemgetter(0)
|
||||
move_ids = move_obj.search(cr, user, self._domain+[('production_id', 'in', tuple(ids))], context=context)
|
||||
related_move_map = [(o.production_id.id, o.id) for o in move_obj.browse(cr, user, move_ids, context=context)]
|
||||
related_move_dict = dict((k, [v[1] for v in itr]) for k, itr in itertools.groupby(related_move_map, key))
|
||||
res.update(related_move_dict)
|
||||
|
||||
return res
|
||||
|
||||
class mrp_production(osv.osv):
|
||||
@@ -479,7 +479,7 @@ class mrp_production(osv.osv):
|
||||
'name': lambda x, y, z, c: x.pool.get('ir.sequence').get(y, z, 'mrp.production') or '/',
|
||||
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'mrp.production', context=c),
|
||||
}
|
||||
_order = 'date_planned asc, priority desc';
|
||||
_order = 'priority desc, date_planned asc';
|
||||
|
||||
def _check_qty(self, cr, uid, ids):
|
||||
orders = self.browse(cr, uid, ids)
|
||||
@@ -681,7 +681,6 @@ class mrp_production(osv.osv):
|
||||
stock_mov_obj = self.pool.get('stock.move')
|
||||
production = self.browse(cr, uid, production_id)
|
||||
|
||||
raw_product_todo = []
|
||||
final_product_todo = []
|
||||
|
||||
produced_qty = 0
|
||||
@@ -800,7 +799,6 @@ class mrp_production(osv.osv):
|
||||
""" Changes state to In Production and writes starting date.
|
||||
@return: True
|
||||
"""
|
||||
move_ids = []
|
||||
self.write(cr, uid, ids, {'state': 'in_production', 'date_start': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
return True
|
||||
|
||||
|
||||
+47
-31
@@ -33,7 +33,7 @@
|
||||
</field>
|
||||
</record>
|
||||
<record id="mrp_property_group_action" model="ir.actions.act_window">
|
||||
<field name="name">Property Categories</field>
|
||||
<field name="name">Property Groups</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.property.group</field>
|
||||
<field name="view_type">form</field>
|
||||
@@ -64,7 +64,6 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Properties">
|
||||
<separator colspan="4" string="General Information"/>
|
||||
<field colspan="4" name="name" select="1"/>
|
||||
<field name="group_id" select="1"/>
|
||||
<field name="composition" select="1"/>
|
||||
@@ -82,8 +81,8 @@
|
||||
<search string="Search">
|
||||
<group col='15' colspan='4'>
|
||||
<field name="name"/>
|
||||
<field name="group_id" widget="selection" />
|
||||
<field name="composition"/>
|
||||
<field name="group_id" widget="selection" />
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="20">
|
||||
@@ -132,7 +131,7 @@
|
||||
<field name="name"/>
|
||||
<field name="resource_id"/>
|
||||
<field name="resource_type"/>
|
||||
<field name="company_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -192,9 +191,11 @@
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="20" groups="base.group_extended">
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'resource_type'}"/>
|
||||
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}"/>
|
||||
<filter string="Resource" icon="terp-personal" domain="[]" context="{'group_by':'resource_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'resource_type'}"/>
|
||||
<separator orientation="vertical" groups="base.group_multi_company"/>
|
||||
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -252,15 +253,18 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Routing">
|
||||
<separator colspan="4" string="General Information"/>
|
||||
<field name="name" select="1"/>
|
||||
<field name="active" select="1" groups="base.group_extended"/>
|
||||
<field name="code" select="1"/>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="location_id"/>
|
||||
<separator colspan="4" string="Description"/>
|
||||
<field colspan="4" name="note" nolabel="1"/>
|
||||
<separator colspan="4" string="Work Center Operations"/>
|
||||
<field colspan="4" name="workcenter_lines" nolabel="1" widget="one2many_list"/>
|
||||
<field name="active" groups="base.group_extended"/>
|
||||
<notebook colspan="4">
|
||||
<page string="Work Center Operations">
|
||||
<field colspan="4" name="workcenter_lines" nolabel="1" widget="one2many_list"/>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<field colspan="4" name="note" nolabel="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -276,12 +280,25 @@
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="mrp_routing_search_view" model="ir.ui.view">
|
||||
<field name="name">mrp.routing.search</field>
|
||||
<field name="model">mrp.routing</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Routing">
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="location_id"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="mrp_routing_action" model="ir.actions.act_window">
|
||||
<field name="name">Routings</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.routing</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="mrp_routing_tree_view"/>
|
||||
<field name="search_view_id" ref="mrp_routing_search_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>
|
||||
</record>
|
||||
<menuitem action="mrp_workcenter_action" id="menu_mrp_workcenter_action" parent="mrp.menu_mrp_property" groups="base.group_extended" sequence="40" />
|
||||
@@ -358,16 +375,14 @@
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By" colspan="4" col="8" groups="base.group_extended">
|
||||
<group expand="0" string="Group By..." colspan="4" col="8" groups="base.group_extended">
|
||||
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="Routing" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'routing_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string='Default UOM' icon="terp-mrp" domain="[]" context="{'group_by' : 'product_uom'}" />
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Routing" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'routing_id'}"/>
|
||||
<filter string='Type' icon="terp-stock_symbol-selection" domain="[]" context="{'group_by' : 'type'}" />
|
||||
<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'}" help="Starting Date"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -497,10 +512,10 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree colors="blue:state in ('draft','confirmed');red:date_planned<current_date and state not in ('done','cancel');black:date_planned>=current_date;gray:state in ('done','cancel') " string="Manufacturing Orders">
|
||||
<field name="name"/>
|
||||
<field name="date_planned"/>
|
||||
<field name="product_id"/>
|
||||
<field name="product_qty" sum="Total Qty"/>
|
||||
<field name="product_uom"/>
|
||||
<field name="date_planned"/>
|
||||
<field name="routing_id" groups="base.group_extended"/>
|
||||
<field name="hour_total" sum="Total Hours" groups="base.group_extended"/>
|
||||
<field name="cycle_total" sum="Total Cycles" groups="base.group_extended"/>
|
||||
@@ -625,16 +640,16 @@
|
||||
states="done,cancel"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
<separator colspan="4"/>
|
||||
<group col="9" colspan="4">
|
||||
<field name="state"/>
|
||||
<button name="action_compute" states="draft" string="Compute Data" type="object" icon="gtk-execute"/>
|
||||
<button name="action_compute" states="draft" string="Compute Data" type="object" icon="terp-stock_format-scientific"/>
|
||||
<button name="button_confirm" states="draft" string="Confirm Production" icon="gtk-apply"/>
|
||||
<button name="button_produce" states="ready" string="Start Production" icon="gtk-execute"/>
|
||||
<button name="button_produce" states="ready" string="Start Production" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="%(act_mrp_product_produce)d" states="in_production" string="Produce" icon="gtk-ok" type="action"/>
|
||||
<button name="force_production" states="confirmed,picking_except" string="Force Reservation" type="object" icon="gtk-jump-to"/>
|
||||
<button name="button_cancel" states="draft,ready,confirmed,in_production,picking_except" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="button_recreate" states="picking_except" string="Recreate Picking" icon="gtk-convert"/>
|
||||
<button name="button_cancel" states="draft,ready,confirmed,in_production,picking_except" string="Cancel" icon="gtk-stop"/>
|
||||
<button name="button_recreate" states="picking_except" string="Recreate Picking" icon="terp-document-new"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Finished Products">
|
||||
@@ -736,12 +751,13 @@
|
||||
<field name="origin"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By" colspan="10" col="8">
|
||||
<group expand="0" string="Group By..." colspan="10" col="8">
|
||||
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="Routing" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'routing_id'}" groups="base.group_extended"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_planned'}"/>
|
||||
<filter string="Routing" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'routing_id'}" groups="base.group_extended"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_planned'}" help="Scheduled Date"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -761,12 +777,12 @@
|
||||
</record>
|
||||
<menuitem action="mrp_production_action" id="menu_mrp_production_action" parent="menu_mrp_manufacturing" groups="base.group_system,mrp.group_mrp_user,mrp.group_mrp_manager" sequence="1"/>
|
||||
|
||||
<record id="mrp_production_action2_gantt" model="ir.actions.act_window">
|
||||
<record id="mrp_production_action_planning" model="ir.actions.act_window">
|
||||
<field name="name">Manufacturing Orders Planning</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.production</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">gantt,tree,form,calendar,graph</field>
|
||||
<field name="view_mode">tree,form,calendar,graph</field>
|
||||
<field name="domain">[('state','in',('ready','confirmed','in_production'))]</field>
|
||||
<field name="help">Manufacturing Orders describe the operations that need to be carried out and the raw materials usage for each stage of production. You use specifications (bills of materials or BoM) to work out the raw material requirements and the manufacturing orders needed for the finished products. Once the bills of materials have been defined, OpenERP becomes capable of automatically deciding on the manufacturing route depending on the needs of the company.</field>
|
||||
</record>
|
||||
|
||||
@@ -40,6 +40,7 @@ class bom_structure(report_sxw.rml_parse):
|
||||
res = {}
|
||||
res['name'] = l.name
|
||||
res['pname'] = l.product_id.name
|
||||
res['pcode'] = l.product_id.default_code
|
||||
res['pqty'] = l.product_qty
|
||||
res['uname'] = l.product_uom.name
|
||||
res['code'] = l.code
|
||||
|
||||
@@ -67,7 +67,9 @@
|
||||
<paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_Bold_Centre_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_Bold_Right_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_8_Italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
@@ -82,7 +84,7 @@
|
||||
<blockTable colWidths="166.0,208.0,79.0,55.0" style="Table3">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_tblheader_General">BOM</para>
|
||||
<para style="terp_tblheader_General">BOM Name</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General">Product Name</para>
|
||||
@@ -91,23 +93,23 @@
|
||||
<para style="terp_tblheader_General_Right">Quantity</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Code</para>
|
||||
<para style="terp_tblheader_General_Centre">BOM Ref</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<blockTable colWidths="166.0,208.0,79.0,55.0" style="Table4">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ o.name ]]</para>
|
||||
<para style="terp_default_Bold_9">[[ o.name ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ o.product_id.name ]]</para>
|
||||
<para style="terp_default_Bold_9"><font> [ [[ (o.product_id.default_code) or removeParentNode('font') ]] ] </font> <font> [[ o.product_id.name ]] </font> </para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ o.product_qty ]] [[ o.product_uom.name ]]</para>
|
||||
<para style="terp_default_Bold_Right_9">[[ o.product_qty ]] [[ o.product_uom.name ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_9">[[ o.code ]]</para>
|
||||
<para style="terp_default_Bold_Centre_9">[[ o.code ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
@@ -116,10 +118,10 @@
|
||||
<blockTable colWidths="166.0,208.0,79.0,55.0" style="Table1">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="P1"><font color="white">[[ '... '*(l['level']) ]]</font>-[[ l['name'] ]]</para>
|
||||
<para style="P1"><font color="white">[[ '... '*2*(l['level']) ]]</font>-[[ l['name'] ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="P1">[[ l['pname'] ]]</para>
|
||||
<para style="P1"><font> [ [[ (l['pcode']) or removeParentNode('font') ]] ] </font> <font> [[ l['pname'] ]] </font> </para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="P2">[[ l['pqty'] ]] [[ l['uname'] ]]</para>
|
||||
|
||||
@@ -48,18 +48,18 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search">
|
||||
<group col="16" colspan="6">
|
||||
<filter icon="terp-go-year" string=" 365 Days "
|
||||
domain="[('date_start','<=', time.strftime('%%Y-%%m-%%d')),('date_start','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Production performed in last 365 Days"/>
|
||||
<filter icon="terp-go-month" string=" 30 Days "
|
||||
<filter icon="terp-go-year" string="Year"
|
||||
domain="[('year','=',time.strftime('%%Y'))]"
|
||||
help="Production performed during current year"/>
|
||||
<filter icon="terp-go-month" string="Month"
|
||||
name="month"
|
||||
domain="[('date_start','<=', time.strftime('%%Y-%%m-%%d')), ('date_start','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Production performed in last 30 days"/>
|
||||
domain="[('month','=',time.strftime('%%m'))]"
|
||||
help="Production performed during current month"/>
|
||||
<filter icon="terp-go-week"
|
||||
string=" 7 Days "
|
||||
string="Month -1"
|
||||
separator="1"
|
||||
domain="[('date_start','<=', time.strftime('%%Y-%%m-%%d')), ('date_start','>',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Production during last 7 days"/>
|
||||
domain="[('date_start','<=', time.strftime('%%Y-%%m-%%d')), ('date_start','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Production during last month"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Current" icon="terp-check" domain="[('state','in',('open','draft'))]"/>
|
||||
<filter icon="terp-check" string="In Production" domain="[('state','=','in_production')]"/>
|
||||
@@ -79,10 +79,12 @@
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
<separator orientation="vertical" groups="base.group_multi_company"/>
|
||||
<filter string="Day" icon="terp-go-today" context="{'group_by':'day'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Month" name="terp-go-month" icon="terp-go-month" context="{'group_by':'month'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}"/>
|
||||
</group>
|
||||
<newline/>
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
<field name="model">report.workcenter.load</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Work Ccenters load">
|
||||
<field name="name" select="1"/>
|
||||
<field name="workcenter_id" select="1"/>
|
||||
<tree string="Work Centers load">
|
||||
<field name="name"/>
|
||||
<field name="workcenter_id"/>
|
||||
<field name="cycle"/>
|
||||
<field name="hour"/>
|
||||
</tree>
|
||||
@@ -22,26 +22,23 @@
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Work Center load" type="bar">
|
||||
<field name="name"/>
|
||||
<field group="True" name="name"/>
|
||||
<field name="cycle" operator="+"/>
|
||||
<field name="hour" operator="+"/>
|
||||
<field group="True" name="workcenter_id"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="view_workcenter_load_form" model="ir.ui.view">
|
||||
<field name="name">report.workcenter.load.form</field>
|
||||
|
||||
<record id="view_workcenter_load_search" model="ir.ui.view">
|
||||
<field name="name">report.workcenter.load.search</field>
|
||||
<field name="model">report.workcenter.load</field>
|
||||
<field name="type">form</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Work Center load" type="bar">
|
||||
<field name="name" select="1"/>
|
||||
<field name="workcenter_id" select="1"/>
|
||||
<field name="cycle"/>
|
||||
<field name="hour"/>
|
||||
</form>
|
||||
<search string="Work Center load">
|
||||
<field name="name"/>
|
||||
<field name="workcenter_id" widget="selection"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_report_workcenter_load_tree" model="ir.actions.act_window">
|
||||
@@ -49,6 +46,7 @@
|
||||
<field name="res_model">report.workcenter.load</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree</field>
|
||||
<field name="search_view_id" ref="view_workcenter_load_search"/>
|
||||
<field name="help">Work Center Load is a projection of load in a work center given a period. The load is express in hour and cycle (for machines).</field>
|
||||
</record>
|
||||
<menuitem id="next_id_77" name="Reporting"
|
||||
|
||||
@@ -147,6 +147,7 @@ class report_custom(report_int):
|
||||
FROM mrp_production_workcenter_line, mrp_production, mrp_workcenter, resource_resource \
|
||||
WHERE (mrp_production_workcenter_line.production_id=mrp_production.id) \
|
||||
AND (mrp_production_workcenter_line.workcenter_id=mrp_workcenter.id) \
|
||||
AND (mrp_workcenter.resource_id=resource_resource.id) \
|
||||
AND (mrp_workcenter.id=%s) \
|
||||
AND (mrp_production.date_planned BETWEEN %s AND %s) \
|
||||
GROUP BY mrp_production_workcenter_line.workcenter_id, resource_resource.name, mrp_workcenter.id \
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
-
|
||||
!workflow {model: mrp.production, action: button_confirm, ref: mrp_production_mo1}
|
||||
-
|
||||
I am checking Procurement orders.
|
||||
I am checking Procurement orders for components of PC1.
|
||||
-
|
||||
!python {model: procurement.order}: |
|
||||
from tools.translate import _
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
<newline/>
|
||||
<separator colspan="4"/>
|
||||
<group col="2" colspan="4">
|
||||
<button icon='gtk-close' special="cancel"
|
||||
string="Close" />
|
||||
<button icon='gtk-stop' special="cancel"
|
||||
string="Cancel" />
|
||||
<button name="change_prod_qty" string="Approve"
|
||||
colspan="1" type="object" icon="gtk-ok" />
|
||||
</group>
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
<newline/>
|
||||
<separator string="" colspan="4"/>
|
||||
<group col="2" colspan="4">
|
||||
<button icon='gtk-close' special="cancel"
|
||||
string="Close" />
|
||||
<button icon='gtk-stop' special="cancel"
|
||||
string="Cancel" />
|
||||
<button name="print_report" string="Print"
|
||||
colspan="1" type="object" icon="gtk-print" />
|
||||
</group>
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
<separator string="" colspan="4" />
|
||||
<label string="" colspan="2" />
|
||||
<group col="2" colspan="1">
|
||||
<button icon='gtk-close' special="cancel"
|
||||
string="Close" />
|
||||
<button icon='gtk-stop' special="cancel"
|
||||
string="Cancel" />
|
||||
<button name="do_produce" string="Confirm"
|
||||
colspan="1" type="object" icon="gtk-ok" />
|
||||
</group>
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
<field name="measure_unit"/>
|
||||
<newline/>
|
||||
<group col="2" colspan="4">
|
||||
<button icon='gtk-close' special="cancel"
|
||||
string="Close" />
|
||||
<button icon='gtk-stop' special="cancel"
|
||||
string="Cancel" />
|
||||
<button name="print_report" string="Print"
|
||||
colspan="1" type="object" icon="gtk-ok" />
|
||||
colspan="1" type="object" icon="gtk-print" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
|
||||
from osv import fields
|
||||
from osv import osv
|
||||
import ir
|
||||
import datetime
|
||||
import netsvc
|
||||
import time
|
||||
@@ -135,8 +134,6 @@ class mrp_production_workcenter_line(osv.osv):
|
||||
result = super(mrp_production_workcenter_line, self).write(cr, uid, ids, vals, context=context)
|
||||
prod_obj = self.pool.get('mrp.production')
|
||||
if vals.get('date_planned', False) and update:
|
||||
pids = {}
|
||||
pids2 = {}
|
||||
for prod in self.browse(cr, uid, ids, context=context):
|
||||
if prod.production_id.workcenter_lines:
|
||||
dstart = min(vals['date_planned'], prod.production_id.workcenter_lines[0]['date_planned'])
|
||||
@@ -496,25 +493,25 @@ class mrp_operations_operation(osv.osv):
|
||||
production_obj=self.pool.get('mrp.production').browse(cr,uid,vals['production_id'])
|
||||
wc_op_id.append(self.pool.get('mrp.production.workcenter.line').create(cr,uid,{'production_id':vals['production_id'],'name':production_obj.product_id.name,'workcenter_id':vals['workcenter_id']}))
|
||||
if code.start_stop=='start':
|
||||
tmp=self.pool.get('mrp.production.workcenter.line').action_start_working(cr,uid,wc_op_id)
|
||||
self.pool.get('mrp.production.workcenter.line').action_start_working(cr,uid,wc_op_id)
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_start_working', cr)
|
||||
|
||||
|
||||
if code.start_stop=='done':
|
||||
tmp=self.pool.get('mrp.production.workcenter.line').action_done(cr,uid,wc_op_id)
|
||||
self.pool.get('mrp.production.workcenter.line').action_done(cr,uid,wc_op_id)
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_done', cr)
|
||||
self.pool.get('mrp.production').write(cr,uid,vals['production_id'],{'date_finnished':DateTime.now().strftime('%Y-%m-%d %H:%M:%S')})
|
||||
|
||||
if code.start_stop=='pause':
|
||||
tmp=self.pool.get('mrp.production.workcenter.line').action_pause(cr,uid,wc_op_id)
|
||||
self.pool.get('mrp.production.workcenter.line').action_pause(cr,uid,wc_op_id)
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_pause', cr)
|
||||
|
||||
if code.start_stop=='resume':
|
||||
tmp=self.pool.get('mrp.production.workcenter.line').action_resume(cr,uid,wc_op_id)
|
||||
self.pool.get('mrp.production.workcenter.line').action_resume(cr,uid,wc_op_id)
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_resume', cr)
|
||||
|
||||
if code.start_stop=='cancel':
|
||||
tmp=self.pool.get('mrp.production.workcenter.line').action_cancel(cr,uid,wc_op_id)
|
||||
self.pool.get('mrp.production.workcenter.line').action_cancel(cr,uid,wc_op_id)
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_cancel', cr)
|
||||
|
||||
if not self.check_operation(cr, uid, vals):
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
<xpath expr="/form/notebook/page/field[@name='workcenter_lines']/form/field[@name='hour']" position="after">
|
||||
<group colspan="8" col="8">
|
||||
<field name="state"/>
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="gtk-go-forward"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-cancel"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="gtk-ok"/>
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert" help="Set to Draft"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="terp-gtk-jump-to-ltr" help="Start Working"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause" help="Resume Work Order"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop" help="Cancel Order"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause" help="Pause Work Order"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="terp-dialog-close" help="Finish Order"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
@@ -32,12 +32,12 @@
|
||||
<field name="inherit_id" ref="mrp.mrp_production_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/notebook/page/field[@name='workcenter_lines']/tree/field[@name='hour']" position="after">
|
||||
<button name="button_done" string="Finished" states="startworking" icon="gtk-ok"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-cancel"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="gtk-go-forward"/>
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="terp-dialog-close"/>
|
||||
<field name="state"/>
|
||||
</xpath>
|
||||
</field>
|
||||
@@ -49,7 +49,7 @@
|
||||
<field name="type">tree</field>
|
||||
<field name="inherit_id" eval="False"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Work Orders" colors="gray:state in ('done','cancel');black:state in ('draft','startworking');red: state=='pause'">
|
||||
<tree string="Work Orders" colors="gray:state in ('done','cancel');black:state in ('draft','startworking') and date_planned>=current_date;red:date_planned<current_date and state not in ('done','cancel')">
|
||||
<field name="production_id"/>
|
||||
<field name="date_planned"/>
|
||||
<field name="product"/>
|
||||
@@ -61,11 +61,11 @@
|
||||
<field name="hour"/>
|
||||
<field name="state" />
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert" help="Set to Draft"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="gtk-go-forward" help="Start Working"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="terp-gtk-jump-to-ltr" help="Start Working"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause" help="Resume Work Order"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-cancel" help="Cancel Order"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop" help="Cancel Order"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause" help="Pause Work Order"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="gtk-ok" help="Finish Order"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="terp-dialog-close" help="Finish Order"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -111,15 +111,15 @@
|
||||
<field name="uom"/>
|
||||
</group>
|
||||
|
||||
<separator string="State" colspan="4"/>
|
||||
<separator string="" colspan="4"/>
|
||||
<group colspan="8" col="8">
|
||||
<field name="state"/>
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="gtk-go-forward"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-cancel"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-stop"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="gtk-ok"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="terp-dialog-close"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
@@ -153,9 +153,9 @@
|
||||
<field name="date_planned" widget="date"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By" colspan="10" col="8" groups="base.group_extended">
|
||||
<filter string="Workcenter" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'workcenter_id'}"/>
|
||||
<filter string="Production" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'production_id'}"/>
|
||||
<group expand="0" string="Group By..." colspan="10" col="8" groups="base.group_extended">
|
||||
<filter string="Workcenter" icon="terp-go-home" domain="[]" context="{'group_by':'workcenter_id'}"/>
|
||||
<filter string="Production" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'production_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
@@ -249,7 +249,7 @@
|
||||
|
||||
</record>
|
||||
|
||||
<menuitem action="mrp.mrp_production_action"
|
||||
<menuitem action="mrp.mrp_production_action_planning"
|
||||
id="menu_mrp_production_order_action"
|
||||
parent="menu_mrp_planning" sequence="1"
|
||||
groups="base.group_extended"/>
|
||||
|
||||
@@ -109,7 +109,7 @@ class mrp_repair(osv.osv):
|
||||
('invoice_except','Invoice Exception'),
|
||||
('done','Done'),
|
||||
('cancel','Cancel')
|
||||
], 'Repair State', readonly=True,
|
||||
], 'State', readonly=True,
|
||||
help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed repair order. \
|
||||
\n* The \'Confirmed\' state is used when a user confirms the repair order. \
|
||||
\n* The \'Ready to Repair\' state is used to start to repairing, user can start repairing only after repair order is confirmed. \
|
||||
|
||||
@@ -7,14 +7,13 @@
|
||||
<field name="model">mrp.repair</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Repairs order">
|
||||
<field name="name" select="1" />
|
||||
<tree string="Repairs order" colors="gray:state in ('done','cancel');black:state not in ('done','cancel');blue:state=='draft'">
|
||||
<field name="name" select="1" />
|
||||
<field name="product_id" select="1" />
|
||||
<field name="prodlot_id"/>
|
||||
<field name="move_id"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="address_id"/>
|
||||
<field name="location_id"/>
|
||||
<field name="move_id"/>
|
||||
<field name="location_dest_id"/>
|
||||
<field name="guarantee_limit"/>
|
||||
<field name="state"/>
|
||||
@@ -94,22 +93,22 @@
|
||||
<field name="amount_untaxed" sum="Untaxed amount"/>
|
||||
<field name="amount_tax"/>
|
||||
<field name="amount_total" sum="Total amount"/>
|
||||
<button name="button_dummy" states="draft" string="Compute" type="object"/>
|
||||
<button name="button_dummy" states="draft" string="Compute" type="object" icon="terp-stock_format-scientific"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<separator string="" colspan="4"/>
|
||||
<group col="13" colspan="4">
|
||||
<field name="state"/>
|
||||
<button name="repair_confirm" states="draft" string="Confirm Repair" icon="gtk-apply"/>
|
||||
<button name="repair_ready" states="confirmed" string="Start Repair" icon="gtk-go-forward"/>
|
||||
<button name="action_repair_start" states="ready" string="Start Repair" icon="gtk-go-forward"/>
|
||||
<button name="action_repair_end" states="under_repair" string="End Repair" icon="gtk-ok"/>
|
||||
<button name="invoice_recreate" states="invoice_except" string="Recreate Invoice" icon="gtk-convert"/>
|
||||
<button name="invoice_corrected" states="invoice_except" string="Invoice Corrected" icon="gtk-apply"/>
|
||||
<button name="action_invoice_create" states="2binvoiced" string="Make Invoice" icon="gtk-ok"/>
|
||||
<button name="%(action_cancel_repair)d" states="invoice_except" string="Cancel Repair" type="action" icon="gtk-cancel"/>
|
||||
<button name="repair_confirm" states="draft" string="Confirm Repair" icon="terp-camera_test"/>
|
||||
<button name="repair_ready" states="confirmed" string="Start Repair" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="action_repair_start" states="ready" string="Start Repair" icon="terp-gtk-jump-to-ltr"/>
|
||||
<button name="action_repair_end" states="under_repair" string="End Repair" icon="terp-dialog-close"/>
|
||||
<button name="invoice_recreate" states="invoice_except" string="Recreate Invoice" icon="terp-dolar"/>
|
||||
<button name="invoice_corrected" states="invoice_except" string="Invoice Corrected" icon="terp-emblem-important"/>
|
||||
<button name="action_invoice_create" states="2binvoiced" string="Make Invoice" icon="terp-dolar"/>
|
||||
<button name="%(action_cancel_repair)d" states="invoice_except" string="Cancel Repair" type="action" icon="gtk-stop"/>
|
||||
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" icon="gtk-convert"/>
|
||||
<button name="cancel" states="draft" string="Cancel Repair" icon="gtk-cancel"/>
|
||||
<button name="%(action_cancel_repair)d" states="confirmed,2binvoiced,ready,under_repair" string="Cancel Repair" type="action" icon="gtk-cancel"/>
|
||||
<button name="cancel" states="draft" string="Cancel Repair" icon="gtk-stop"/>
|
||||
<button name="%(action_cancel_repair)d" states="confirmed,2binvoiced,ready,under_repair" string="Cancel Repair" type="action" icon="gtk-stop"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Invoicing">
|
||||
@@ -153,18 +152,18 @@
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Quality">
|
||||
<separator colspan="4" string="Internal Notes"/>
|
||||
<field colspan="4" name="internal_notes" nolabel="1"/>
|
||||
<separator colspan="4" string="Quotation Notes"/>
|
||||
<field colspan="4" name="quotation_notes" nolabel="1"/>
|
||||
</page>
|
||||
<page string="Extra Info" groups="base.group_extended">
|
||||
<field name="invoice_id"/>
|
||||
<field name="picking_id"/>
|
||||
<field name="location_id"/>
|
||||
<field name="location_dest_id" attrs="{'readonly':[('deliver_bool','=', False)], 'required':[('deliver_bool','=', True)]}"/>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<separator colspan="4" string="Internal Notes"/>
|
||||
<field colspan="4" name="internal_notes" nolabel="1"/>
|
||||
<separator colspan="4" string="Quotation Notes"/>
|
||||
<field colspan="4" name="quotation_notes" nolabel="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
@@ -183,7 +182,7 @@
|
||||
<filter icon="terp-check" string="Confirmed" domain="[('state','=','confirmed')]" name="current" />
|
||||
<filter icon="terp-emblem-important" string="Ready To Repair" domain="[('state','=','ready')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-dolar" string="invoiced" domain="[('state','=','2binvoiced')]"/>
|
||||
<filter icon="terp-dolar" string="invoiced" domain="[('invoiced','=',True)]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name"/>
|
||||
<field name="product_id"/>
|
||||
@@ -192,10 +191,11 @@
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="10" col="8" groups="base.group_extended">
|
||||
<filter string="Partner" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Partner" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'guarantee_limit'}"/>
|
||||
</group>
|
||||
</search>
|
||||
|
||||
@@ -69,8 +69,8 @@ class repair_cancel(osv.osv_memory):
|
||||
<group col="2" colspan="2">
|
||||
<label string="Do you want to continue?" colspan="4"/>
|
||||
<separator colspan="4"/>
|
||||
<button icon="gtk-cancel" special="cancel" string="No" readonly="0"/>
|
||||
<button name="cancel_repair" string="Yes" type="object" icon="gtk-ok"/>
|
||||
<button icon="gtk-stop" special="cancel" string="_No" readonly="0"/>
|
||||
<button name="cancel_repair" string="_Yes" type="object" icon="gtk-ok"/>
|
||||
</group>
|
||||
</form>
|
||||
"""
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
<label string="This operation will cancel the Repair process, but will not cancel it's Invoice. Do you want to continue?" colspan="4"/>
|
||||
<newline/>
|
||||
<group col="2" colspan="4">
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="No" />
|
||||
<button name="cancel_repair" string="Yes"
|
||||
<button icon="gtk-stop" special="cancel"
|
||||
string="_No" />
|
||||
<button name="cancel_repair" string="_Yes"
|
||||
colspan="1" type="object" icon="gtk-ok" />
|
||||
</group>
|
||||
</form>
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
<field name="group"/>
|
||||
<newline/>
|
||||
<group col="2" colspan="4">
|
||||
<button icon='gtk-close' special="cancel"
|
||||
string="Close" />
|
||||
<button name="make_invoices" string="Create Invoice"
|
||||
colspan="1" type="object" icon="gtk-ok" />
|
||||
<button icon="gtk-stop" special="cancel"
|
||||
string="_Cancel" />
|
||||
<button name="make_invoices" string="Create _Invoice"
|
||||
colspan="1" type="object" icon="terp-dolar" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -280,8 +280,8 @@ class pos_order(osv.osv):
|
||||
'date_validation': fields.function(_get_date_payment, method=True, string='Validation Date', type='date', store=True),
|
||||
'date_payment': fields.function(_get_date_payment2, method=True, string='Payment Date', type='date', store=True),
|
||||
'date_validity': fields.date('Validity Date', required=True),
|
||||
'user_id': fields.many2one('res.users', 'Connected Salesman'),
|
||||
'user_salesman_id': fields.many2one('res.users', 'Cashier', required=True),
|
||||
'user_id': fields.many2one('res.users', 'Connected Salesman', help="Person who uses the the register. It could be a reliever, a student or an interim employee."),
|
||||
'user_salesman_id': fields.many2one('res.users', 'Cashier', required=True, help="User who is logged into the system."),
|
||||
'sale_manager': fields.many2one('res.users', 'Salesman Manager'),
|
||||
'amount_tax': fields.function(_amount_all, method=True, string='Taxes', digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
|
||||
'amount_total': fields.function(_amount_total, method=True, string='Total'),
|
||||
@@ -295,7 +295,7 @@ class pos_order(osv.osv):
|
||||
'payments': fields.one2many('pos.payment', 'order_id', 'Order Payments', states={'draft': [('readonly', False)]}, readonly=True),
|
||||
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, states={'draft': [('readonly', False)]}, readonly=True),
|
||||
'partner_id': fields.many2one( 'res.partner', 'Customer', change_default=True, select=1, states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}),
|
||||
'state': fields.selection([('draft', 'Draft'), ('payment', 'Payment'),
|
||||
'state': fields.selection([('draft', 'Quotation'), ('payment', 'Payment'),
|
||||
('advance','Advance'),
|
||||
('paid', 'Paid'), ('done', 'Done'), ('invoiced', 'Invoiced'), ('cancel', 'Cancel')],
|
||||
'State', readonly=True, ),
|
||||
@@ -358,7 +358,7 @@ class pos_order(osv.osv):
|
||||
|
||||
|
||||
def test_order_lines(self, cr, uid, order, context=None):
|
||||
""" Test order line is created or not for the order "
|
||||
""" Test order line is created or not for the order "
|
||||
@param name: Names of fields.
|
||||
@return: True
|
||||
"""
|
||||
@@ -581,7 +581,7 @@ class pos_order(osv.osv):
|
||||
account_def = property_obj.get(cr, uid, 'property_account_receivable', 'res.partner', context=context)
|
||||
args['account_id'] = order.partner_id and order.partner_id.property_account_receivable and order.partner_id.property_account_receivable.id or account_def.id or curr_c.account_receivable.id
|
||||
if data.get('is_acc',False):
|
||||
args['is_acc']=data['is_acc']
|
||||
args['is_acc'] = data['is_acc']
|
||||
args['account_id']= prod_obj.browse(cr,uid, data['product_id']).property_account_income and prod_obj.browse(cr,uid, data['product_id']).property_account_income.id
|
||||
if not args['account_id']:
|
||||
raise osv.except_osv(_('Error'), _('Please provide an account for the product: %s')%(prod_obj.browse(cr,uid, data['product_id']).name))
|
||||
@@ -631,7 +631,7 @@ class pos_order(osv.osv):
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_write(uid, 'pos.order', order_id, cr)
|
||||
|
||||
return order_line_id
|
||||
return order_line_id, price
|
||||
|
||||
def refund(self, cr, uid, ids, context=None):
|
||||
"""Create a copy of order for refund order"""
|
||||
@@ -1270,9 +1270,9 @@ pos_payment()
|
||||
class product_product(osv.osv):
|
||||
_inherit = 'product.product'
|
||||
_columns = {
|
||||
'income_pdt': fields.boolean('Product for Incoming'),
|
||||
'income_pdt': fields.boolean('Product for Input'),
|
||||
'expense_pdt': fields.boolean('Product for expenses'),
|
||||
'am_out': fields.boolean('Controle for Outgoing Operations'),
|
||||
'am_out': fields.boolean('Controle for Output Operations'),
|
||||
'disc_controle': fields.boolean('Discount Controle '),
|
||||
}
|
||||
_defaults = {
|
||||
|
||||
@@ -12,12 +12,14 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Sales Order POS">
|
||||
<group col="6" colspan="4">
|
||||
<field name="name"/>
|
||||
<field name="date_order"/>
|
||||
<field name="shop_id" widget="selection"/>
|
||||
<field name="partner_id" on_change="onchange_partner_pricelist(partner_id)"/>
|
||||
<field name="contract_number" groups="base.group_extended"/>
|
||||
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Sale Order ">
|
||||
<notebook colspan="4">
|
||||
<page string="Sale Order">
|
||||
<field name="lines" colspan="4" nolabel="1">
|
||||
<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" />
|
||||
@@ -29,7 +31,7 @@
|
||||
<field name="price_subtotal" />
|
||||
<field name="price_subtotal_incl" sum="Subtotal"/>
|
||||
</tree>
|
||||
<form string="Order lines" >
|
||||
<form string="Order lines">
|
||||
<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_rfd" groups="base.group_extended"/>
|
||||
@@ -39,46 +41,23 @@
|
||||
<field name="notice"/>
|
||||
<field name="serial_number"/>
|
||||
</form>
|
||||
|
||||
</field>
|
||||
<group colspan="4" col="7">
|
||||
<field name="amount_tax"/>
|
||||
<field name="amount_total"/>
|
||||
</group>
|
||||
|
||||
<separator colspan="4" string="Actions"/>
|
||||
<separator colspan="4"/>
|
||||
<group colspan="4" col="6">
|
||||
<field name="state" />
|
||||
<button name="%(action_pos_payment)d" string="Ma_ke Payment" icon="gtk-ok" type="action" states="draft,advance" />
|
||||
<button name="%(action_report_pos_receipt)d" string="_Reprint" icon="gtk-print" type="action" states="paid,done,invoiced"/>
|
||||
<button name="%(action_pos_payment)d" string="Make Payment" icon="terp-dolar" type="action" states="draft,advance" />
|
||||
<button name="%(action_report_pos_receipt)d" string="Reprint" icon="gtk-print" type="action" states="paid,done,invoiced"/>
|
||||
<button name="set_to_draft" string="Set to draft" states="paid" icon="gtk-execute" type="object" />
|
||||
<button name="%(action_view_pos_return)d" string="Return Picking" type="action" icon="gtk-ok" states="paid"
|
||||
attrs="{'invisible':[('state','!=','paid'),('state','!=','invoiced')]}" context="{'return':'return'}" />
|
||||
</group>
|
||||
</page>
|
||||
|
||||
<page string="Order and Payment">
|
||||
<group colspan="2" col="2" name="Type">
|
||||
<separator string="Order Information" colspan="4"/>
|
||||
<field name="name"/>
|
||||
<field name="shop_id" widget="selection"/>
|
||||
<field name="user_salesman_id" />
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="price_type" />
|
||||
<field name="user_id" string="Salesman" groups="base.group_extended"/>
|
||||
</group>
|
||||
<group colspan="2" col="2" name="Type">
|
||||
<separator string="Dates" colspan="4"/>
|
||||
<field name="date_order"/>
|
||||
<field name="date_validation" />
|
||||
<field name="date_payment" groups="base.group_extended"/>
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<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="pricelist_id" domain="[('type','=','sale')]" widget="selection" invisible="1"/>
|
||||
</group>
|
||||
|
||||
<page string="Payment">
|
||||
<field name="statement_ids" colspan="4" nolabel="1">
|
||||
<tree editable="bottom" string="Statement lines">
|
||||
<field name="amount"/>
|
||||
@@ -92,12 +71,28 @@
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
|
||||
<page string="Extra Info">
|
||||
<group colspan="2" col="2" name="Type">
|
||||
<separator string="Other Information" colspan="4"/>
|
||||
<field name="user_salesman_id" />
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="price_type" />
|
||||
<field name="user_id" string="Salesman" groups="base.group_extended"/>
|
||||
</group>
|
||||
<group colspan="2" col="2" name="Type">
|
||||
<separator string="Dates" colspan="4"/>
|
||||
<field name="date_validation" />
|
||||
<field name="date_payment" groups="base.group_extended"/>
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<field name="sale_journal" domain="[('type','=','sale')]" widget="selection" invisible="1"/>
|
||||
<field name="pricelist_id" domain="[('type','=','sale')]" widget="selection" invisible="1"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Notes" >
|
||||
<field colspan="4" name="note" nolabel="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -114,16 +109,17 @@
|
||||
<field name="model">pos.order</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="POS Orders">
|
||||
<tree string="POS Orders" colors="blue:state == 'draft';gray:state in ('done','cancel');black:state not in('done','cancel')">
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="date_order"/>
|
||||
<field name="date_validation"/>
|
||||
<field name="date_payment"/>
|
||||
<field name="user_id"/>
|
||||
<field name="invoice_id"/>
|
||||
<field name="state" />
|
||||
<field name="amount_total" sum="Amount total"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -136,16 +132,18 @@
|
||||
<filter icon="terp-document-new" string="Quotations" domain="[('state','=','draft')]"/>
|
||||
<filter icon="terp-check" string="Running" domain="[('state','in',('payment','advance'))]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name" select="1"/>
|
||||
<field name="partner_id" select="1"/>
|
||||
<field name="user_id" select="1"/>
|
||||
<field name="date_order" select="1" string="Order date" />
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="date_order" string="Order date"/>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="11" col="11" groups="base.group_extended">
|
||||
<filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
|
||||
<filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
|
||||
<separator string="" orientation="vertical"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||
<separator string="" orientation="vertical"/>
|
||||
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_order'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -788,33 +786,6 @@
|
||||
action="action_box_out"
|
||||
id="menu_wizard_enter_jrnl2" sequence="3" />
|
||||
|
||||
<record model="ir.ui.view" id="view_pos_order_tree_all_sales">
|
||||
<field name="name">POS Sales</field>
|
||||
<field name="model">pos.order</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="POS Orders">
|
||||
<field name="name"/>
|
||||
<field name="date_order" select="1"/>
|
||||
<field name="partner_id" />
|
||||
<field name="date_validation"/>
|
||||
<field name="date_payment"/>
|
||||
<field name="user_id"/>
|
||||
<field name="invoice_id"/>
|
||||
<field name="note" select="1" />
|
||||
<field name="state" select="1"/>
|
||||
<field name="amount_total" sum="Amount total"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="action_pos_all_sales">
|
||||
<field name="name">All sales</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">pos.order</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_pos_order_tree_all_sales" />
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_pos_order_tree_all_sales_lines">
|
||||
<field name="name">POS Sales Lines</field>
|
||||
<field name="model">pos.order.line</field>
|
||||
|
||||
@@ -37,12 +37,20 @@ class pos_payment_report_date(report_sxw.rml_parse):
|
||||
dt1 = form['date_start'] + ' 00:00:00'
|
||||
dt2 = form['date_end'] + ' 23:59:59'
|
||||
data={}
|
||||
self.cr.execute ("select pt.name,pol.qty,pol.discount,pol.price_unit, " \
|
||||
"(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) as total " \
|
||||
"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 IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s and po.user_id IN %s " \
|
||||
,(dt1,dt2,tuple(form['user_id'])))
|
||||
if form['user_id']:
|
||||
self.cr.execute ("select pt.name,pol.qty,pol.discount,pol.price_unit, " \
|
||||
"(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) as total " \
|
||||
"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 IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s and po.user_id IN %s " \
|
||||
,(dt1,dt2,tuple(form['user_id'])))
|
||||
else:
|
||||
self.cr.execute ("select pt.name,pol.qty,pol.discount,pol.price_unit, " \
|
||||
"(pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0)) as total " \
|
||||
"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 IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s" \
|
||||
,(dt1,dt2))
|
||||
data=self.cr.dictfetchall()
|
||||
return data
|
||||
|
||||
@@ -50,11 +58,18 @@ class pos_payment_report_date(report_sxw.rml_parse):
|
||||
dt1 = form['date_start'] + ' 00:00:00'
|
||||
dt2 = form['date_end'] + ' 23:59:59'
|
||||
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 IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s and po.user_id IN %s " \
|
||||
,(dt1,dt2,tuple(form['user_id'])))
|
||||
if form['user_id']:
|
||||
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 IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s and po.user_id IN %s " \
|
||||
,(dt1,dt2,tuple(form['user_id'])))
|
||||
else:
|
||||
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 IN ('paid','invoiced') and po.date_order >= %s and po.date_order <= %s" \
|
||||
,(dt1,dt2))
|
||||
res=self.cr.fetchone()[0] or 0.0
|
||||
return res
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ class report_cash_register(osv.osv):
|
||||
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
|
||||
'day': fields.char('Day', size=128, readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'state':fields.selection([('draft', 'Draft'),('confirm', 'Confirmed')],'State'),
|
||||
'state': fields.selection([('draft', 'Quotation'),('open','Open'),('confirm', 'Confirmed')],'State'),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal'),
|
||||
'balance_start': fields.float('Opening Balance'),
|
||||
'balance_end_real': fields.float('Closing Balance'),
|
||||
|
||||
@@ -27,17 +27,17 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Point of Sale Cash Register Analysis">
|
||||
<group>
|
||||
<filter icon="terp-go-year" string=" 365 Days "
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')),('date','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Cash Analysis created last 365 days"/>
|
||||
<filter icon="terp-go-month" string=" 30 Days "
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Cash Analysis created in last 30 days"/>
|
||||
<filter icon="terp-go-week"
|
||||
string=" 7 Days "
|
||||
<filter icon="terp-go-year" string="Year"
|
||||
domain="[('year','=',time.strftime('%%Y'))]"
|
||||
help="Cash Analysis created during this year"/>
|
||||
<filter icon="terp-go-month" string="Month"
|
||||
domain="[('month','=',time.strftime('%%m'))]"
|
||||
help="Cash Analysis created in current month"/>
|
||||
<filter icon="terp-go-month"
|
||||
string="Month -1"
|
||||
separator="1"
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Cash Analysis created last 7 days"/>
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Cash Analysis created in last month"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-go-today"
|
||||
string=" Today "
|
||||
@@ -67,16 +67,16 @@
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="state" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Day" icon="terp-go-today" context="{'group_by':'day'}"/>
|
||||
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}"/>
|
||||
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}"/>
|
||||
<filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Day from Creation date of register"/>
|
||||
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}" help="Month from Creation date of register"/>
|
||||
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Year from Creation date of register"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_report_cash_register_all" model="ir.actions.act_window">
|
||||
<field name="name">Cash Register Analysis</field>
|
||||
<field name="name">Register Analysis</field>
|
||||
<field name="res_model">report.cash.register</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
|
||||
@@ -88,6 +88,8 @@ class report_pos_order(osv.osv):
|
||||
to_char(s.date_order, 'dd-MM-YYYY'),to_char(s.date_order, 'YYYY'),to_char(s.date_order, 'MM'),
|
||||
to_char(s.date_order, 'YYYY-MM-DD'), s.partner_id,s.state,
|
||||
s.user_id,s.shop_id,s.company_id,s.sale_journal,l.product_id,s.date_validation,
|
||||
s.date_payment)""")
|
||||
s.date_payment
|
||||
having
|
||||
sum(l.qty * u.factor) != 0)""")
|
||||
|
||||
report_pos_order()
|
||||
|
||||
@@ -38,20 +38,20 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Point of Sale Analysis">
|
||||
<group>
|
||||
<filter icon="terp-go-year" string=" 365 Days "
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')),('date','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="POS ordered created last 365 days"/>
|
||||
<filter icon="terp-go-month" string=" 30 Days "
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="POS ordered created in last 30 days"/>
|
||||
<filter icon="terp-go-week"
|
||||
string=" 7 Days "
|
||||
<filter icon="terp-go-year" string="Year"
|
||||
domain="[('year','=',time.strftime('%%Y'))]"
|
||||
help="POS ordered created during current year"/>
|
||||
<filter icon="terp-go-month" string="Month"
|
||||
domain="[('month','=',time.strftime('%%m'))]"
|
||||
help="POS ordered created during current month"/>
|
||||
<filter icon="terp-go-month"
|
||||
string="Month -1"
|
||||
separator="1"
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="POS ordered created last 7 days"/>
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="POS ordered created last month"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-go-today"
|
||||
string=" Today "
|
||||
string="Today"
|
||||
name="today"
|
||||
separator="1"
|
||||
domain="[('date','<=', time.strftime('%%Y-%%m-%%d'))]"
|
||||
@@ -79,9 +79,9 @@
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Day" icon="terp-go-today" context="{'group_by':'day'}"/>
|
||||
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}"/>
|
||||
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}"/>
|
||||
<filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Day of order date"/>
|
||||
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}" help="Month of order date"/>
|
||||
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Year of order date"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Extended Filters..." groups="base.group_extended">
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"access_report_pos_order_system","report.pos.order.system","model_report_pos_order","base.group_system",1,1,1,1
|
||||
"access_report_pos_order","report.pos.order","model_report_pos_order","group_pos_manager",1,1,1,1
|
||||
"access_account_bank_statement","account.bank.statement","account.model_account_bank_statement","group_pos_user",1,1,1,0
|
||||
"access_account_bank_statement_manager","account.bank.statement manager","account.model_account_bank_statement","group_pos_manager",1,0,0,0
|
||||
"access_account_bank_statement_manager","account.bank.statement manager","account.model_account_bank_statement","group_pos_manager",1,1,1,1
|
||||
"access_account_bank_statement_system","account.bank.statement system","account.model_account_bank_statement","base.group_system",1,0,0,0
|
||||
"access_account_bank_statement_line","account.bank.statement.line","account.model_account_bank_statement_line","group_pos_user",1,1,1,0
|
||||
"access_account_period_pos","account.period pos user","account.model_account_period","group_pos_user",1,1,1,0
|
||||
@@ -35,11 +35,13 @@
|
||||
"access_account_fiscalyear_pos_manager","account.fiscalyear manager","account.model_account_fiscalyear","group_pos_manager",1,0,0,0
|
||||
"access_account_fiscalyear_pos_system","account.fiscalyear user","account.model_account_fiscalyear","base.group_system",1,0,0,0
|
||||
"access_account_cashbox_line","account.cashbox.line","account.model_account_cashbox_line","group_pos_user",1,1,1,0
|
||||
"access_account_cashbox_line_manager","account.cashbox.line manager","account.model_account_cashbox_line","group_pos_manager",1,1,1,1
|
||||
"access_product_product","product.product","product.model_product_product","group_pos_user",1,0,0,0
|
||||
"access_product_template_pos_user","product.template pos user","product.model_product_template","group_pos_user",1,0,0,0
|
||||
"access_product_product_pos_manager","product.product.pos manager","product.model_product_product","group_pos_manager",1,0,0,0
|
||||
"access_product_template_pos_manager","product.template pos manager","product.model_product_template","group_pos_manager",1,0,0,0
|
||||
"access_account_move_line","account.move.line","account.model_account_move_line","group_pos_user",1,1,1,0
|
||||
"access_account_move_line_manager","account.move.line manager","account.model_account_move_line","group_pos_manager",1,1,1,1
|
||||
"access_account_move","account.move","account.model_account_move","group_pos_user",1,1,1,0
|
||||
"access_account_journal","account.journal","account.model_account_journal","group_pos_user",1,1,1,0
|
||||
"access_account_journal_manager","account.journal manager","account.model_account_journal","group_pos_manager",1,0,0,0
|
||||
@@ -57,7 +59,7 @@
|
||||
"access_product_template_pos","product.template pos","product.model_product_template","base.group_system",1,1,1,1
|
||||
"access_pos_order_system","pos.order system","model_pos_order","base.group_system",1,0,0,0
|
||||
"access_pos_order_line_system","pos.order.line system","model_pos_order_line","base.group_system",1,0,0,0
|
||||
"access_account_bank_statement_line_manager","account.bank.statement.line manager","account.model_account_bank_statement_line","group_pos_manager",1,0,0,0
|
||||
"access_account_bank_statement_line_manager","account.bank.statement.line manager","account.model_account_bank_statement_line","group_pos_manager",1,1,1,1
|
||||
"access_account_invoice_manager","account.invoice manager","account.model_account_invoice","group_pos_manager",1,1,1,1
|
||||
"access_pos_payment_manager","pos.payment manager","model_pos_payment","group_pos_manager",1,0,0,0
|
||||
"access_report_transaction_pos_system","report.transaction.pos system","model_report_transaction_pos","base.group_system",1,1,1,1
|
||||
|
||||
|
@@ -32,6 +32,57 @@
|
||||
id="menu_all_menu_cash_register"
|
||||
sequence="4"
|
||||
/>-->
|
||||
|
||||
<record id="view_pos_open_cash_statement_filter" model="ir.ui.view">
|
||||
<field name="name">account.bank.statement.inherit</field>
|
||||
<field name="model">account.bank.statement</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Cash Statements">
|
||||
<group col="8" colspan="4">
|
||||
<filter string="Open" domain="[('state','=','open')]" icon="terp-document-new" name="open"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="date"/>
|
||||
<field name="name"/>
|
||||
<field name="journal_id"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Journal" context="{'group_by': 'journal_id'}" icon="terp-folder-orange"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Period" context="{'group_by': 'period_id'}" icon="terp-go-month"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="State" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_pos_confirm_cash_statement_filter" model="ir.ui.view">
|
||||
<field name="name">account.bank.statement.inherit2</field>
|
||||
<field name="model">account.bank.statement</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Cash Statements">
|
||||
<group col="8" colspan="4">
|
||||
<filter string="Open" domain="[('state','=','open')]" icon="terp-document-new" name="open"/>
|
||||
<filter string="Confirm" domain="[('state','=','confirm')]" icon="terp-camera_test"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="date"/>
|
||||
<field name="name"/>
|
||||
<field name="journal_id"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Journal" context="{'group_by': 'journal_id'}" icon="terp-folder-orange"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Period" context="{'group_by': 'period_id'}" icon="terp-go-month"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="State" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_new_bank_statement_tree" model="ir.actions.act_window">
|
||||
<field name="name">Cash Register</field>
|
||||
@@ -56,8 +107,20 @@
|
||||
<field name="act_window_id" ref="action_new_bank_statement_tree"/>
|
||||
</record>
|
||||
|
||||
<record id="view_cash_statement_pos_tree" model="ir.ui.view">
|
||||
<field name="name">account.bank.statement.tree</field>
|
||||
<field name="model">account.bank.statement</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="inherit_id" ref="account.view_cash_statement_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="journal_id" position="after">
|
||||
<field name="user_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_new_bank_statement_all_tree" model="ir.actions.act_window">
|
||||
<field name="name">All Register</field>
|
||||
<field name="name">Registers</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">account.bank.statement</field>
|
||||
<field name="view_type">form</field>
|
||||
@@ -68,7 +131,7 @@
|
||||
<record model="ir.actions.act_window.view" id="act_cash_statement_all_register1">
|
||||
<field name="sequence" eval="0"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="account.view_bank_statement_tree"/>
|
||||
<field name="view_id" ref="view_cash_statement_pos_tree"/>
|
||||
<field name="act_window_id" ref="action_new_bank_statement_all_tree"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="act_cash_statement_all_register">
|
||||
@@ -79,7 +142,7 @@
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
name="All Registers"
|
||||
name="Registers"
|
||||
parent="menu_cash_register"
|
||||
action="action_new_bank_statement_all_tree"
|
||||
id="menu_all_menu_all_register"
|
||||
@@ -89,14 +152,14 @@
|
||||
<menuitem name="Register management" parent="point_of_sale.menu_point_root"
|
||||
id="menu_point_open_config" sequence="1"/>
|
||||
<menuitem
|
||||
name="Open my Cash Registers" parent="menu_point_open_config"
|
||||
string="Open my Cash Register"
|
||||
name="Open Registers" parent="menu_point_open_config"
|
||||
string="Open Registers"
|
||||
action="action_pos_open_statement"
|
||||
id="menu_open_statement" sequence="1" />
|
||||
|
||||
<menuitem
|
||||
name="Close my Cash Register" parent="menu_point_open_config"
|
||||
string="Close my Cash Register"
|
||||
name="Close Registers" parent="menu_point_open_config"
|
||||
string="Close Registers"
|
||||
action="action_pos_close_statement"
|
||||
id="menu_close_statement" sequence="2" />
|
||||
|
||||
|
||||
@@ -1,48 +1,40 @@
|
||||
-
|
||||
In order to test the POS in module, To gives business owners a convenient way of checking out customers and of recording sales.
|
||||
In order to test the POS in module, To give business owners a convenient way of checking out customers and of recording sales.
|
||||
|
||||
-
|
||||
I configure all details for the customer,Salesman and Product ,Account.
|
||||
I configure all details for the Customer, Salesman and Product, Account.
|
||||
-
|
||||
I create View Account Type.
|
||||
I create View Account Type.
|
||||
-
|
||||
!record {model: account.account.type, id: account_account_type_view0}:
|
||||
close_method: none
|
||||
code: View
|
||||
name: View
|
||||
sign: 1
|
||||
|
||||
|
||||
-
|
||||
I create Income Account Type.
|
||||
I create Income Account Type.
|
||||
-
|
||||
!record {model: account.account.type, id: account_account_type_income0}:
|
||||
close_method: unreconciled
|
||||
code: Income
|
||||
name: Income
|
||||
sign: 1
|
||||
|
||||
|
||||
-
|
||||
I create Expense Account Type.
|
||||
I create Expense Account Type.
|
||||
-
|
||||
!record {model: account.account.type, id: account_account_type_expense0}:
|
||||
close_method: unreconciled
|
||||
code: Expense
|
||||
name: Expense
|
||||
sign: 1
|
||||
|
||||
|
||||
-
|
||||
I create Cash Account Type.
|
||||
I create Cash Account Type.
|
||||
-
|
||||
!record {model: account.account.type, id: account_account_type_cash0}:
|
||||
close_method: balance
|
||||
code: Cash
|
||||
name: Cash
|
||||
sign: 1
|
||||
|
||||
|
||||
-
|
||||
I create Minimal Chart Account.
|
||||
-
|
||||
@@ -69,8 +61,6 @@
|
||||
reconcile: true
|
||||
type: payable
|
||||
user_type: account_account_type_expense0
|
||||
|
||||
|
||||
-
|
||||
I create Receivable Account.
|
||||
-
|
||||
@@ -85,8 +75,6 @@
|
||||
reconcile: true
|
||||
type: receivable
|
||||
user_type: account_account_type_income0
|
||||
|
||||
|
||||
-
|
||||
I create Cash Account.
|
||||
-
|
||||
@@ -100,8 +88,6 @@
|
||||
parent_right: 7
|
||||
type: other
|
||||
user_type: account_account_type_cash0
|
||||
|
||||
|
||||
-
|
||||
I create Purchases Account.
|
||||
-
|
||||
@@ -116,7 +102,7 @@
|
||||
type: other
|
||||
user_type: account_account_type_expense0
|
||||
-
|
||||
I create Sales Account.
|
||||
I create Sales Account.
|
||||
-
|
||||
!record {model: account.account, id: account_account_sales0}:
|
||||
code: Sale
|
||||
@@ -128,7 +114,6 @@
|
||||
parent_right: 11
|
||||
type: other
|
||||
user_type: account_account_type_income0
|
||||
|
||||
-
|
||||
I create Purchase Journal.
|
||||
-
|
||||
@@ -141,10 +126,8 @@
|
||||
sequence_id: account.sequence_purchase_journal
|
||||
type: purchase
|
||||
view_id: account.account_journal_view
|
||||
|
||||
|
||||
-
|
||||
I create Sale Journal.
|
||||
I create Sale Journal.
|
||||
-
|
||||
!record {model: account.journal, id: account_journal_salejournal0}:
|
||||
code: SAJ
|
||||
@@ -155,10 +138,8 @@
|
||||
sequence_id: account.sequence_sale_journal
|
||||
type: sale
|
||||
view_id: account.account_journal_view
|
||||
|
||||
|
||||
-
|
||||
I create Bank Journal.
|
||||
I create Bank Journal.
|
||||
-
|
||||
!record {model: account.journal, id: account_journal_bankjournal0}:
|
||||
code: BNK
|
||||
@@ -169,7 +150,6 @@
|
||||
sequence_id: account.sequence_journal
|
||||
type: cash
|
||||
view_id: account.account_journal_bank_view
|
||||
|
||||
-
|
||||
I create property for account payable.
|
||||
-
|
||||
@@ -178,10 +158,8 @@
|
||||
fields_id: account.field_res_partner_property_account_payable
|
||||
name: property_account_expense_categ
|
||||
value_reference: account.account,5
|
||||
|
||||
|
||||
-
|
||||
I create property for account receivable.
|
||||
I create property for account receivable.
|
||||
-
|
||||
!record {model: ir.property, id: ir_property_propertyaccountincomecateg0}:
|
||||
company_id: base.main_company
|
||||
@@ -200,25 +178,19 @@
|
||||
category_id:
|
||||
- res_partner_category_customers0
|
||||
name: Cleartrail
|
||||
|
||||
|
||||
-
|
||||
I create partner address.
|
||||
I create partner address.
|
||||
-
|
||||
!record {model: res.partner.address, id: res_partner_address_1}:
|
||||
partner_id: res_partner_cleartrail0
|
||||
street: onam plaza, 14 B palasia A B Road
|
||||
type: contact
|
||||
|
||||
|
||||
-
|
||||
I create partner invoice address.
|
||||
-
|
||||
!record {model: res.partner.address, id: res_partner_address_2}:
|
||||
partner_id: res_partner_cleartrail0
|
||||
type: invoice
|
||||
|
||||
|
||||
-
|
||||
I create partner delivery address.
|
||||
-
|
||||
@@ -241,7 +213,6 @@
|
||||
property_account_payable: account_account_payable1
|
||||
property_account_receivable: account_account_receivable0
|
||||
supplier: true
|
||||
|
||||
-
|
||||
I create partner address .
|
||||
-
|
||||
@@ -270,7 +241,6 @@
|
||||
type: product
|
||||
uom_id: product.product_uom_unit
|
||||
uom_po_id: product.product_uom_unit
|
||||
|
||||
-
|
||||
I create product LG Viewty Smart.
|
||||
-
|
||||
@@ -294,7 +264,6 @@
|
||||
-
|
||||
!record {model: product.category, id: product_category_computer0}:
|
||||
name: Computer
|
||||
|
||||
-
|
||||
I create product HP Pavilion Desktop PCs
|
||||
-
|
||||
@@ -315,11 +284,9 @@
|
||||
uom_po_id: product.product_uom_unit
|
||||
property_account_expense: account_account_payable1
|
||||
property_account_income: account_account_receivable0
|
||||
|
||||
-
|
||||
I create New Order by adding the details of Salesman and "Product" as LG Viewty Smart Quantity as 10.
|
||||
-
|
||||
|
||||
!record {model: pos.order, id: pos_order_pos0}:
|
||||
company_id: base.main_company
|
||||
date_order: '2010-05-13 15:02:48'
|
||||
@@ -351,13 +318,11 @@
|
||||
self.apply_discount(cr, uid, [ref("pos_discount_0")], {"lang": "en_US", "active_model":
|
||||
"pos.order", "active_ids": [ref("pos_order_pos0")], "tz": False, "active_id":
|
||||
ref("pos_order_pos0"), })
|
||||
|
||||
-
|
||||
I open the register.
|
||||
-
|
||||
!record {model: pos.open.statement, id: pos_open_statement_0}:
|
||||
{}
|
||||
|
||||
-
|
||||
I open the statement.
|
||||
-
|
||||
@@ -365,19 +330,17 @@
|
||||
self.open_statement(cr, uid, [ref("pos_open_statement_0")], {"lang": "en_US", "active_model":
|
||||
"ir.ui.menu", "active_ids": [ref("point_of_sale.menu_open_statement")], "tz":
|
||||
False, "active_id": ref("point_of_sale.menu_open_statement"), })
|
||||
|
||||
-
|
||||
I click on the "Make Payment" wizard.
|
||||
-
|
||||
!record {model: pos.make.payment, id: pos_make_payment_0}:
|
||||
amount: 1615.0
|
||||
journal: 7
|
||||
payment_date: 2010-05-13
|
||||
payment_date: "2010-05-13"
|
||||
payment_name: Payment
|
||||
product_id: product_product_hppaviliondesktoppcs0
|
||||
pricelist_id: product.list0
|
||||
partner_id: base.res_partner_agrolait
|
||||
|
||||
-
|
||||
I make the payment.
|
||||
-
|
||||
@@ -391,7 +354,6 @@
|
||||
!python {model: pos.order}: |
|
||||
order=self.browse(cr,uid,ref("pos_order_pos0"))
|
||||
assert(order.statement_ids!=[]), "Statement lines not created"
|
||||
|
||||
-
|
||||
When I click on Return picking button , I get three option.
|
||||
-
|
||||
@@ -412,8 +374,6 @@
|
||||
self.create_returns(cr, uid, [ref("pos_return_0")], {"lang": "en_US", "active_model":
|
||||
"pos.order", "active_ids": [ref("point_of_sale.pos_order_pos0")], "tz":
|
||||
False, "active_id": ref("point_of_sale.pos_order_pos0"), })
|
||||
|
||||
|
||||
-
|
||||
Then it allows me to define the quantity of products, which will return to the stock.
|
||||
-
|
||||
@@ -432,19 +392,17 @@
|
||||
self.close_action(cr, uid, [ref("pos_add_product_0")], {"lang": "en_US", "active_model":
|
||||
"pos.order", "active_ids": [ref("pos_order_pos0")], "tz": False, "active_id": ref("pos_order_pos0"),
|
||||
})
|
||||
|
||||
-
|
||||
I create payment.
|
||||
-
|
||||
!record {model: pos.make.payment, id: pos_make_payment_1}:
|
||||
amount: 680.0
|
||||
journal: 7
|
||||
payment_date: 2010-05-13
|
||||
payment_date: "2010-05-13"
|
||||
payment_name: Payment
|
||||
product_id: product_product_hppaviliondesktoppcs0
|
||||
pricelist_id: product.list0
|
||||
partner_id: base.res_partner_agrolait
|
||||
|
||||
-
|
||||
For payment, I click on Make Payment.
|
||||
-
|
||||
@@ -452,7 +410,6 @@
|
||||
self.check(cr, uid, [ref("pos_make_payment_1")], {"lang": "en_US", "active_model":
|
||||
"pos.order", "active_ids": [ref("pos_order_pos0")], "tz":
|
||||
False, "active_id": ref("pos_order_pos0"), })
|
||||
|
||||
-
|
||||
To check the Return without Refund . I click button "Return without Refund ".
|
||||
-
|
||||
|
||||
@@ -36,8 +36,9 @@ def get_journal(self, cr, uid, context):
|
||||
|
||||
obj = self.pool.get('account.journal')
|
||||
statement_obj = self.pool.get('account.bank.statement')
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid)
|
||||
ids = obj.search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', user.company_id.id)])
|
||||
cr.execute("""select DISTINCT journal_id from pos_journal_users where user_id=%d order by journal_id"""%(uid))
|
||||
j_ids = map(lambda x1: x1[0], cr.fetchall())
|
||||
ids = obj.search(cr, uid, [('type', '=', 'cash'), ('id', 'in', j_ids)])
|
||||
obj_ids= statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', 'in', ids)])
|
||||
res_obj = obj.read(cr, uid, ids, ['journal_id'], context)
|
||||
res_obj = [(r1['id'])for r1 in res_obj]
|
||||
|
||||
@@ -14,11 +14,13 @@
|
||||
<field name="journal_id"/>
|
||||
<field name="product_id"/>
|
||||
<field name="amount"/>
|
||||
<group colspan="4" col="2">
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="Close" />
|
||||
<button name="get_in" string="Take Money"
|
||||
colspan="1" type="object" icon="gtk-ok" />
|
||||
<separator colspan="4"/>
|
||||
<group colspan="4" col="4">
|
||||
<group col="2" colspan="2"/>
|
||||
<button icon="gtk-stop" special="cancel"
|
||||
string="Cancel" />
|
||||
<button name="get_in" string="Put Money"
|
||||
colspan="1" type="object" icon="terp-dolar_ok!" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -14,12 +14,14 @@
|
||||
<field name="journal_id"/>
|
||||
<field name="product_id"/>
|
||||
<field name="amount"/>
|
||||
<group colspan="4" col="2">
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="Close" />
|
||||
<button name="get_out" string="Put Money"
|
||||
colspan="1" type="object" icon="gtk-ok" />
|
||||
</group>
|
||||
<separator colspan="4"/>
|
||||
<group colspan="4" col="4">
|
||||
<group col="2" colspan="2"/>
|
||||
<button icon="gtk-stop" special="cancel"
|
||||
string="Cancel" />
|
||||
<button name="get_out" string="Take Money"
|
||||
colspan="1" type="object" icon="terp-dolar" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -43,28 +43,29 @@ class pos_close_statement(osv.osv_memory):
|
||||
cr.execute("""select DISTINCT journal_id from pos_journal_users where user_id=%d order by journal_id"""%(uid))
|
||||
j_ids = map(lambda x1: x1[0], cr.fetchall())
|
||||
journal_ids = journal_obj.search(cr, uid, [('auto_cash', '=', True), ('type', '=', 'cash'), ('id', 'in', j_ids)])
|
||||
|
||||
ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', 'in', journal_ids)])
|
||||
for journal in journal_obj.browse(cr, uid, journal_ids):
|
||||
ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)])
|
||||
if not ids:
|
||||
raise osv.except_osv(_('Message'), _('Journals are already closed'))
|
||||
raise osv.except_osv(_('Message'), _('Registers are already closed.'))
|
||||
else:
|
||||
list_statement.append(ids[0])
|
||||
if not journal.check_dtls:
|
||||
statement_obj.button_confirm_cash(cr, uid, ids, context)
|
||||
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
id2 = data_obj._get_id(cr, uid, 'account', 'view_bank_statement_tree')
|
||||
id3 = data_obj._get_id(cr, uid, 'account', 'view_bank_statement_form2')
|
||||
result = data_obj._get_id(cr, uid, 'point_of_sale', 'view_pos_confirm_cash_statement_filter')
|
||||
search_id = mod_obj.read(cr, uid, result, ['res_id'], context=context)
|
||||
if id2:
|
||||
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
|
||||
if id3:
|
||||
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
|
||||
return {
|
||||
'domain': "[('id','in'," + str(list_statement) + ")]",
|
||||
'domain': "[('id','in'," + str(ids) + ")]",
|
||||
'name': 'Close Statements',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'search_view_id': search_id['res_id'],
|
||||
'res_model': 'account.bank.statement',
|
||||
'views': [(id2, 'tree'),(id3, 'form')],
|
||||
'type': 'ir.actions.act_window'
|
||||
|
||||
@@ -9,11 +9,15 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Close Statements">
|
||||
<separator string="Are you sure you want to close the statements ?" colspan="4"/>
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="No" colspan="1" />
|
||||
<button name="close_statement" string="Yes"
|
||||
colspan="1" type="object" icon="gtk-ok"/>
|
||||
<label string="Are you sure you want to close the statements ?"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="4" colspan="4">
|
||||
<group col="2" colspan="2"/>
|
||||
<button icon='gtk-stop' special="cancel"
|
||||
string="No" />
|
||||
<button name="close_statement" string="Yes"
|
||||
type="object" icon="gtk-ok"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<group col="2" colspan="4">
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<separator colspan="4"/>
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="Close" />
|
||||
<button name="print_report" string="Print Report"
|
||||
|
||||
@@ -49,7 +49,7 @@ class pos_open_statement(osv.osv_memory):
|
||||
for journal in journal_obj.browse(cr, uid, journal_ids):
|
||||
ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)])
|
||||
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".\nPlease close its related Register.' %(journal.name)))
|
||||
|
||||
statement_ids = sorted(statement_obj.search(cr, uid, [('state', '=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)]))
|
||||
if statement_ids:
|
||||
@@ -83,18 +83,22 @@ class pos_open_statement(osv.osv_memory):
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
id2 = data_obj._get_id(cr, uid, 'account', 'view_bank_statement_tree')
|
||||
id3 = data_obj._get_id(cr, uid, 'account', 'view_bank_statement_form2')
|
||||
result = data_obj._get_id(cr, uid, 'point_of_sale', 'view_pos_open_cash_statement_filter')
|
||||
search_id = mod_obj.read(cr, uid, result, ['res_id'], context=context)
|
||||
if id2:
|
||||
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
|
||||
if id3:
|
||||
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
|
||||
|
||||
return {
|
||||
'domain': "[('state','=','open')]",
|
||||
'domain': "[('state','=','open'),('user_id','=',"+ str(uid) +")]",
|
||||
'name': 'Open Statement',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'search_view_id': search_id['res_id'],
|
||||
'res_model': 'account.bank.statement',
|
||||
'views': [(id2, 'tree'),(id3, 'form')],
|
||||
'context': {'search_default_open': 1},
|
||||
'type': 'ir.actions.act_window'
|
||||
}
|
||||
pos_open_statement()
|
||||
|
||||
@@ -9,11 +9,15 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Open Statements">
|
||||
<separator string="Are you sure you want to open the statements ?" colspan="4"/>
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="No" />
|
||||
<button name="open_statement" string="Yes"
|
||||
type="object" icon="gtk-ok"/>
|
||||
<label string="Are you sure you want to open the statements ?"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="4" colspan="4">
|
||||
<group col="2" colspan="2"/>
|
||||
<button icon='gtk-stop' special="cancel"
|
||||
string="No" />
|
||||
<button name="open_statement" string="Yes"
|
||||
type="object" icon="gtk-ok"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -47,8 +47,9 @@ class pos_make_payment(osv.osv_memory):
|
||||
active_id = context and context.get('active_id',False)
|
||||
if active_id:
|
||||
j_obj = self.pool.get('account.journal')
|
||||
company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id
|
||||
journal = j_obj.search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', company_id)])
|
||||
cr.execute("""select DISTINCT journal_id from pos_journal_users where user_id=%d order by journal_id"""%(uid))
|
||||
j_ids = map(lambda x1: x1[0], cr.fetchall())
|
||||
journal = j_obj.search(cr, uid, [('type', '=', 'cash'), ('id', 'in', j_ids)])
|
||||
|
||||
if journal:
|
||||
journal = journal[0]
|
||||
@@ -79,6 +80,10 @@ class pos_make_payment(osv.osv_memory):
|
||||
res.update({'payment_date':current_date})
|
||||
if 'payment_name' in fields:
|
||||
res.update({'payment_name':'Payment'})
|
||||
if 'partner_id' in fields:
|
||||
res.update({'partner_id': order.partner_id.id or False})
|
||||
if 'pricelist_id' in fields:
|
||||
res.update({'pricelist_id': order.pricelist_id.id or False})
|
||||
return res
|
||||
|
||||
def view_init(self, cr, uid, fields_list, context=None):
|
||||
@@ -123,6 +128,18 @@ class pos_make_payment(osv.osv_memory):
|
||||
"""
|
||||
return result
|
||||
|
||||
def onchange_product_id(self, cr, uid, ids, product_id, amount):
|
||||
""" Changes amount if product_id changes.
|
||||
@param product_id: Changed product_id
|
||||
@param amount: Amount to be paid
|
||||
@return: Dictionary of changed values
|
||||
"""
|
||||
prod_obj = self.pool.get('product.product')
|
||||
if product_id:
|
||||
product = prod_obj.browse(cr, uid, product_id)
|
||||
amount = amount - product.list_price
|
||||
return {'value': {'amount': amount}}
|
||||
|
||||
def check(self, cr, uid, ids, context):
|
||||
|
||||
"""Check the order:
|
||||
@@ -135,8 +152,12 @@ class pos_make_payment(osv.osv_memory):
|
||||
amount = order.amount_total - order.amount_paid
|
||||
data = self.read(cr, uid, ids)[0]
|
||||
invoice_wanted = data['invoice_wanted']
|
||||
is_accompte = data['is_acc']
|
||||
# Todo need to check ...
|
||||
|
||||
if is_accompte:
|
||||
line_id, price = order_obj.add_product(cr, uid, order.id, data['product_id'], -1.0, context)
|
||||
amount = order.amount_total - order.amount_paid - price
|
||||
|
||||
if amount != 0.0:
|
||||
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)
|
||||
@@ -205,11 +226,11 @@ class pos_make_payment(osv.osv_memory):
|
||||
|
||||
_columns = {
|
||||
'journal':fields.selection(pos_box_entries.get_journal, "Cash Register",required=True),
|
||||
'product_id': fields.many2one('product.product', "Acompte"),
|
||||
'product_id': fields.many2one('product.product', "Advance"),
|
||||
'amount':fields.float('Amount', digits=(16,2) ,required= True),
|
||||
'payment_name': fields.char('Payment name', size=32, required=True),
|
||||
'payment_date': fields.date('Payment date', required=True),
|
||||
'is_acc': fields.boolean('Accompte'),
|
||||
'is_acc': fields.boolean('Advance'),
|
||||
'invoice_wanted': fields.boolean('Invoice'),
|
||||
'num_sale':fields.char('Num.File', size=32),
|
||||
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist'),
|
||||
|
||||
@@ -12,26 +12,28 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Add payment :">
|
||||
<group colspan="4" width="600" height="200">
|
||||
<group colspan="4" width="600" height="220">
|
||||
<field name="journal"/>
|
||||
<field name="amount" />
|
||||
<field name="payment_date" />
|
||||
<!--field name="payment_name" /-->
|
||||
<field name="invoice_wanted" />
|
||||
<field name="num_sale" />
|
||||
<field name="is_acc" />
|
||||
<field name="is_acc"/>
|
||||
<group attrs="{'invisible':[('is_acc','=',False)]}" colspan="4" col="2">
|
||||
<field name="product_id" attrs="{'required':[('is_acc', '=', True)]}" domain="[('type','=','service')]"/>
|
||||
<field name="product_id" attrs="{'required':[('is_acc', '=', True)]}" domain="[('type','=','service')]"
|
||||
on_change="onchange_product_id(product_id, amount)"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('invoice_wanted','=',False)]}" colspan="4">
|
||||
<field name="partner_id" attrs="{'required':[('invoice_wanted', '=', True)]}" colspan="2"/>
|
||||
<field name="pricelist_id" attrs="{'required':[('invoice_wanted', '=', True)]}" colspan="2"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group col="2" colspan="4">
|
||||
<button icon='gtk-cancel' special="cancel" string="Cancel" />
|
||||
<button name="check" string="Make Payment" colspan="1" type="object" icon="gtk-ok"/>
|
||||
<separator colspan="4"/>
|
||||
<group col="4" colspan="4">
|
||||
<group col="2" colspan="2"/>
|
||||
<button icon='gtk-stop' special="cancel" string="Cancel" />
|
||||
<button name="check" string="Make Payment" colspan="1" type="object" icon="terp-dolar"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
|
||||
@@ -7,15 +7,21 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Sale by Date and User">
|
||||
<group col="2" colspan="4">
|
||||
<group col="4" colspan="4">
|
||||
<separator string="Dates" colspan="4"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<field name="user_id"/>
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="Close" />
|
||||
<button name="print_report" string="Print Report"
|
||||
colspan="1" type="object" icon="gtk-print" />
|
||||
</group>
|
||||
<separator string="User" colspan="4"/>
|
||||
<field name="user_id" nolabel="1" colspan="4"/>
|
||||
<separator string="" colspan="4"/>
|
||||
<label string="" colspan="2"/>
|
||||
<group colspan="2" col="2">
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="Close" />
|
||||
<button name="print_report" string="Print Report"
|
||||
colspan="1" type="object" icon="gtk-print" />
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<form string="Receipt :">
|
||||
<separator string="Print the receipt of the sale" colspan="4"/>
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="Close" />
|
||||
<button name="print_report" string="Print Report"
|
||||
string="Cancel" />
|
||||
<button name="print_report" string="Print Receipt"
|
||||
colspan="1" type="object" icon="gtk-print" />
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from mx import DateTime
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
import netsvc
|
||||
|
||||
@@ -91,7 +91,6 @@
|
||||
help="Procurement started late" />
|
||||
<filter icon="terp-gtk-go-back-rtl" string="To Fix" domain="[('state', '=', 'exception'),('message','=','')]" help="Procurement Orders with exceptions and without message"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name"/>
|
||||
<field name="origin"/>
|
||||
<field name="product_id" />
|
||||
<field name="date_planned" widget="date"/>
|
||||
|
||||
@@ -421,7 +421,7 @@ msgid ""
|
||||
"reception of products."
|
||||
msgstr ""
|
||||
"Preço Padrão: o preço é fixo e recalculado periodicamente (geralmente no "
|
||||
"final do ano).\r\n"
|
||||
"final do ano).\n"
|
||||
"Preço Médio: o preço de custo é recalculado a cada recepção de produtos."
|
||||
|
||||
#. module: product
|
||||
|
||||
@@ -399,7 +399,7 @@ msgid ""
|
||||
"at the end of the year), Average Price: the cost price is recomputed at each "
|
||||
"reception of products."
|
||||
msgstr ""
|
||||
"标准价格: 成本价格是定期重新计算(通常在年底).\r\n"
|
||||
"标准价格: 成本价格是定期重新计算(通常在年底).\n"
|
||||
"平均价格: 成本价格是在每次接收产品时重新计算."
|
||||
|
||||
#. module: product
|
||||
@@ -557,7 +557,7 @@ msgid ""
|
||||
"and the reception of goods for this product and for the default supplier. It "
|
||||
"is used by the scheduler to order requests based on reordering delays."
|
||||
msgstr ""
|
||||
"产品供应在确认采购订单到接收产品之间的默认平均延迟. \r\n"
|
||||
"产品供应在确认采购订单到接收产品之间的默认平均延迟. \n"
|
||||
"用于在调度订单请求时要考虑的重订货延迟."
|
||||
|
||||
#. module: product
|
||||
@@ -671,7 +671,7 @@ msgid ""
|
||||
"supplying. 'Make to Order': When needed, purchase or produce for the "
|
||||
"procurement request."
|
||||
msgstr ""
|
||||
"按库存生产: 在仓库或等待重新供应时得到需求.\r\n"
|
||||
"按库存生产: 在仓库或等待重新供应时得到需求.\n"
|
||||
" 按订单生产: 在采购或产品获得请求时得到需求."
|
||||
|
||||
#. module: product
|
||||
@@ -1214,7 +1214,7 @@ msgid ""
|
||||
"The computed quantity will be a multiple of this value. Use 1.0 for products "
|
||||
"that can not be split."
|
||||
msgstr ""
|
||||
"这数量计算将乘于一个数值.\r\n"
|
||||
"这数量计算将乘于一个数值.\n"
|
||||
"产品使用1.0表示不能拆分."
|
||||
|
||||
#. module: product
|
||||
@@ -1444,7 +1444,7 @@ msgid ""
|
||||
"the delivery of the finished products. It's the time you promise to your "
|
||||
"customers."
|
||||
msgstr ""
|
||||
"这是确认客户订单和交付的平均时间.\r\n"
|
||||
"这是确认客户订单和交付的平均时间.\n"
|
||||
"是承诺客户的时间."
|
||||
|
||||
#. module: product
|
||||
@@ -1668,7 +1668,7 @@ msgid ""
|
||||
"reception of the products in your warehouse. Used by the scheduler for "
|
||||
"automatic computation of the purchase order planning."
|
||||
msgstr ""
|
||||
"延迟天数是确认采购订单到仓库接收产品之间的延迟天数.\r\n"
|
||||
"延迟天数是确认采购订单到仓库接收产品之间的延迟天数.\n"
|
||||
"用于制定采购订单计划时调度程序自动计算."
|
||||
|
||||
#. module: product
|
||||
|
||||
@@ -21,13 +21,10 @@
|
||||
|
||||
from osv import osv, fields
|
||||
import decimal_precision as dp
|
||||
import pooler
|
||||
|
||||
import math
|
||||
import logging
|
||||
from _common import rounding
|
||||
|
||||
from tools import config
|
||||
from tools.translate import _
|
||||
|
||||
def is_pair(x):
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
-
|
||||
Test project template feature
|
||||
-
|
||||
-
|
||||
Create project 'OpenERP Training Programme'
|
||||
-
|
||||
-
|
||||
!record {model: project.project, id: project_project_openerptrainingprogramme0}:
|
||||
company_id: base.main_company
|
||||
name: OpenERP Training Programme
|
||||
-
|
||||
name: OpenERP Training Programme
|
||||
-
|
||||
Create task 'Technical Training' for this project
|
||||
-
|
||||
-
|
||||
!record {model: project.task, id: project_task_technicaltraining0}:
|
||||
date_start: '2010-05-31 11:48:38'
|
||||
name: Technical Training
|
||||
planned_hours: 30.0
|
||||
project_id: project_project_openerptrainingprogramme0
|
||||
remaining_hours: 30.0
|
||||
state: draft
|
||||
-
|
||||
state: draft
|
||||
-
|
||||
Create task 'Functional Training' for this project
|
||||
-
|
||||
-
|
||||
!record {model: project.task, id: project_task_functionaltraining0}:
|
||||
date_start: '2010-05-31 11:49:11'
|
||||
name: Functional Training
|
||||
planned_hours: 30.0
|
||||
project_id: project_project_openerptrainingprogramme0
|
||||
remaining_hours: 30.0
|
||||
state: draft
|
||||
-
|
||||
state: draft
|
||||
-
|
||||
Set project as project template
|
||||
-
|
||||
-
|
||||
!python {model: project.project}: |
|
||||
self.set_template(cr, uid, [ref("project_project_openerptrainingprogramme0")],
|
||||
{"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")],
|
||||
"tz": False, "active_id": ref("project.menu_open_view_project_all"), })
|
||||
-
|
||||
-
|
||||
Check if project in template state
|
||||
-
|
||||
-
|
||||
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in template state}:
|
||||
- state == "template"
|
||||
-
|
||||
- state == "template"
|
||||
-
|
||||
Create new project based on this template
|
||||
-
|
||||
-
|
||||
!python {model: project.project}: |
|
||||
new_prj = self.duplicate_template(cr, uid, [ref("project_project_openerptrainingprogramme0")],
|
||||
{"lang": "en_US", "active_model": "ir.ui.menu", "active_ids": [ref("project.menu_open_view_project_all")],
|
||||
@@ -60,53 +60,53 @@
|
||||
[ref("project.menu_open_view_project_all")], "tz": False, "active_model":
|
||||
"ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
|
||||
})
|
||||
-
|
||||
-
|
||||
Check if project in open state
|
||||
-
|
||||
-
|
||||
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}:
|
||||
- state == "open"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-
|
||||
Test for different project-states
|
||||
|
||||
-
|
||||
Test for different project-states
|
||||
-
|
||||
Keep project pending
|
||||
-
|
||||
-
|
||||
!python {model: project.project}: |
|
||||
self.set_pending(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids":
|
||||
[ref("project.menu_open_view_project_all")], "tz": False, "active_model":
|
||||
"ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
|
||||
})
|
||||
-
|
||||
-
|
||||
Check if project in pending state
|
||||
-
|
||||
-
|
||||
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in pending state}:
|
||||
- state == "pending"
|
||||
-
|
||||
- state == "pending"
|
||||
-
|
||||
Cancel the project
|
||||
-
|
||||
-
|
||||
!python {model: project.project}: |
|
||||
self.set_cancel(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids":
|
||||
[ref("project.menu_open_view_project_all")], "tz": False, "active_model":
|
||||
"ir.ui.menu", "project_id": False, "active_id": ref("project.menu_open_view_project_all"),
|
||||
})
|
||||
-
|
||||
-
|
||||
Check if project in cancel state
|
||||
-
|
||||
-
|
||||
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in cancel state}:
|
||||
- state == "cancelled"
|
||||
-
|
||||
-
|
||||
Re-open the project
|
||||
-
|
||||
-
|
||||
!python {model: project.project}: |
|
||||
self.set_open(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")],
|
||||
"tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id":
|
||||
ref("project.menu_open_view_project_all"), })
|
||||
-
|
||||
-
|
||||
Check if project in open state
|
||||
-
|
||||
-
|
||||
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}:
|
||||
- state == "open"
|
||||
|
||||
@@ -130,17 +130,17 @@
|
||||
self.compute_hours(cr, uid, [ref('project_task_technicaltraining_remainingwiz0')], {'active_id': ref("project_task_technicaltraining0"),'button_reactivate': True})
|
||||
- |
|
||||
Check if task 'Technical Training' in open state and for other initial values
|
||||
-
|
||||
-
|
||||
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Project is in open state}:
|
||||
- state == "open"
|
||||
- planned_hours == 30
|
||||
- remaining_hours == 30
|
||||
- delay_hours == 0.0
|
||||
- total_hours == 30
|
||||
- effective_hours == 0.0
|
||||
-
|
||||
- effective_hours == 0.0
|
||||
-
|
||||
Make a work task entry 'Training on OpenERP modules, models and classes' of 10 hours
|
||||
-
|
||||
-
|
||||
!record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}:
|
||||
work_ids:
|
||||
- date: '2010-05-31 15:04:22'
|
||||
@@ -154,10 +154,10 @@
|
||||
- remaining_hours == 20
|
||||
- effective_hours == 10.0
|
||||
- total_hours == effective_hours + remaining_hours
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
Make a work task entry 'Training on OpenERP xml views' of 10 hours
|
||||
-
|
||||
-
|
||||
!record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}:
|
||||
work_ids:
|
||||
- date: '2010-06-01 15:04:46'
|
||||
@@ -196,13 +196,13 @@
|
||||
remaining_hours: 10.0
|
||||
-
|
||||
Reevaluate the task
|
||||
-
|
||||
-
|
||||
!python {model: project.task.reevaluate}: |
|
||||
self.compute_hours(cr, uid, [ref("config_compute_remaining_0")], {"lang": "en_US",
|
||||
"project_id": False, "tz": False, "active_model": "project.task", "search_default_project_id":
|
||||
False, "search_default_user_id": 1, "search_default_current": 1, "active_ids":
|
||||
[ref("project_task_technicaltraining0")], "active_id": ref("project_task_technicaltraining0"), })
|
||||
|
||||
|
||||
-
|
||||
Check for effective hours and remaining hours, remaining_hours must be 10 while planned_hours remains 30
|
||||
-
|
||||
@@ -211,10 +211,10 @@
|
||||
- remaining_hours == 10.0
|
||||
- effective_hours == 30.0
|
||||
- total_hours == effective_hours + remaining_hours
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
Make a work task entry 'Training on reports and wizards' of 10 hours
|
||||
-
|
||||
-
|
||||
!record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}:
|
||||
work_ids:
|
||||
- date: '2010-05-31 15:08:40'
|
||||
@@ -230,14 +230,14 @@
|
||||
- effective_hours == 40.0
|
||||
- total_hours == effective_hours + remaining_hours
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
-
|
||||
Close the task
|
||||
-
|
||||
-
|
||||
!python {model: project.task}: |
|
||||
self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False})
|
||||
-
|
||||
-
|
||||
Check if task in done state
|
||||
-
|
||||
-
|
||||
!assert {model: project.task, id: project_task_technicaltraining0, severity: error, string: Task is in done state}:
|
||||
- state == "done"
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
remaining_hours: 10.0
|
||||
-
|
||||
Reevaluate the task with 10 hours remaining
|
||||
-
|
||||
-
|
||||
!python {model: project.task.reevaluate}: |
|
||||
self.compute_hours(cr, uid, [ref("config_compute_remaining_1")], {"lang": "en_US",
|
||||
"project_id": False, "tz": False, "button_reactivate": True, "active_model":
|
||||
@@ -266,10 +266,10 @@
|
||||
- remaining_hours == 10.0
|
||||
- effective_hours == 40.0
|
||||
- total_hours == effective_hours + remaining_hours
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
Make a work task entry 'Training on yml' of 5 hours
|
||||
-
|
||||
-
|
||||
!record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}:
|
||||
work_ids:
|
||||
- date: '2010-05-31 16:55:27'
|
||||
@@ -284,17 +284,17 @@
|
||||
- remaining_hours == 5.0
|
||||
- effective_hours == 45.0
|
||||
- total_hours == effective_hours + remaining_hours
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
Close the task
|
||||
-
|
||||
-
|
||||
!python {model: project.task}: |
|
||||
self.do_close(cr, uid, [ref("project_task_technicaltraining0")], {'mail_send': False})
|
||||
-
|
||||
-
|
||||
Check if task in done state
|
||||
-
|
||||
-
|
||||
!assert {model: project.task, id: project_task_technicaltraining0, severity: error}:
|
||||
- state == "done"
|
||||
- state == "done"
|
||||
-
|
||||
Check for effective hours and remaining hours
|
||||
-
|
||||
@@ -303,17 +303,17 @@
|
||||
- remaining_hours == 0.0
|
||||
- effective_hours == 45.0
|
||||
- total_hours == effective_hours + remaining_hours
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
- delay_hours == total_hours - planned_hours
|
||||
-
|
||||
Close project 'OpenERP Training Programme'
|
||||
-
|
||||
-
|
||||
!python {model: project.project}: |
|
||||
self.set_done(cr, uid, [ref("project_project_openerptrainingprogramme0")], {"lang": "en_US", "active_ids": [ref("project.menu_open_view_project_all")],
|
||||
"tz": False, "active_model": "ir.ui.menu", "project_id": False, "active_id":
|
||||
ref("project.menu_open_view_project_all"), })
|
||||
-
|
||||
-
|
||||
Check if project in close state
|
||||
-
|
||||
-
|
||||
!assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: "Project must be in closed state"}:
|
||||
- state == "close"
|
||||
|
||||
- state == "close"
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="active" position="after">
|
||||
<field name="project_id" attrs="{'readonly':[('type','!=','service')]}" />
|
||||
</field>
|
||||
</field>
|
||||
|
||||
@@ -0,0 +1,323 @@
|
||||
# Estonian translation for openobject-addons
|
||||
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-08-18 06:50+0000\n"
|
||||
"PO-Revision-Date: 2010-08-28 08:21+0000\n"
|
||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
||||
"Language-Team: Estonian <et@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-29 03:48+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: resource
|
||||
#: help:resource.calendar.leaves,resource_id:0
|
||||
msgid ""
|
||||
"If empty, this is a generic holiday for the company. If a resource is set, "
|
||||
"the holiday/leave is only for this resource"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.calendar.attendance,dayofweek:0
|
||||
msgid "Friday"
|
||||
msgstr "Reede"
|
||||
|
||||
#. module: resource
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr ""
|
||||
"Objekti nimi peab algama x_'ga ja ei tohi sisaldada ühtegi erisümbolit !"
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.resource,resource_type:0
|
||||
msgid "Resource Type"
|
||||
msgstr "Ressursi tüüp"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.model,name:resource.model_resource_calendar_leaves
|
||||
#: view:resource.calendar.leaves:0
|
||||
msgid "Leave Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.actions.act_window,name:resource.resource_calendar_resources_leaves
|
||||
msgid "Resources Leaves"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar,attendance_ids:0
|
||||
#: view:resource.calendar.attendance:0
|
||||
#: view:resource.calendar.leaves:0
|
||||
msgid "Working Time"
|
||||
msgstr "Tööaeg"
|
||||
|
||||
#. module: resource
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "Vigane XML vaate arhitektuurile!"
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.calendar.attendance,dayofweek:0
|
||||
msgid "Thursday"
|
||||
msgstr "Neljapäev"
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.calendar:0
|
||||
#: view:resource.calendar.leaves:0
|
||||
#: view:resource.resource:0
|
||||
msgid "Group By..."
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.calendar.attendance,dayofweek:0
|
||||
msgid "Sunday"
|
||||
msgstr "Pühapäev"
|
||||
|
||||
#. module: resource
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "Vigane mudeli nimi toimingu definitsioonis."
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.resource:0
|
||||
msgid "Search Resource"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.resource:0
|
||||
msgid "Type"
|
||||
msgstr "Tüüp"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.actions.act_window,name:resource.action_resource_resource_tree
|
||||
#: view:resource.resource:0
|
||||
msgid "Resources"
|
||||
msgstr "Ressursid"
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar,manager:0
|
||||
msgid "Workgroup manager"
|
||||
msgstr "Töörühma juhataja"
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.calendar:0
|
||||
msgid "Search Working Period"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.calendar.attendance,dayofweek:0
|
||||
msgid "Monday"
|
||||
msgstr "Esmaspäev"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.model,name:resource.model_resource_calendar
|
||||
msgid "Resource Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar,company_id:0
|
||||
#: view:resource.calendar.leaves:0
|
||||
#: field:resource.calendar.leaves,company_id:0
|
||||
#: view:resource.resource:0
|
||||
#: field:resource.resource,company_id:0
|
||||
msgid "Company"
|
||||
msgstr "Ettevõte"
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.resource,resource_type:0
|
||||
msgid "Material"
|
||||
msgstr "Materjal"
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar.attendance,dayofweek:0
|
||||
msgid "Day of week"
|
||||
msgstr "Nädalapäev"
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar.attendance,date_from:0
|
||||
msgid "Starting date"
|
||||
msgstr "Alustamise kuupäev"
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.resource:0
|
||||
#: field:resource.resource,user_id:0
|
||||
msgid "User"
|
||||
msgstr "Kasutaja"
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.calendar.leaves:0
|
||||
msgid "Date"
|
||||
msgstr "Kuupäev"
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.calendar.leaves:0
|
||||
msgid "Search Working Period Leaves"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar.leaves,date_to:0
|
||||
msgid "End Date"
|
||||
msgstr "Lõppkuupäev"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.actions.act_window,name:resource.resource_calendar_closing_days
|
||||
msgid "Closing Days"
|
||||
msgstr "Sulgemise päevad"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.module.module,shortdesc:resource.module_meta_information
|
||||
#: view:resource.calendar.leaves:0
|
||||
#: field:resource.calendar.leaves,resource_id:0
|
||||
#: view:resource.resource:0
|
||||
msgid "Resource"
|
||||
msgstr "Ressurss"
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.calendar:0
|
||||
#: field:resource.calendar,name:0
|
||||
#: field:resource.calendar.attendance,name:0
|
||||
#: view:resource.calendar.leaves:0
|
||||
#: field:resource.calendar.leaves,name:0
|
||||
#: field:resource.resource,name:0
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.module.module,description:resource.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" Module for resource management\n"
|
||||
" A resource represent something that can be scheduled\n"
|
||||
" (a developer on a task or a workcenter on manufacturing orders).\n"
|
||||
" This module manages a resource calendar associated to every resource.\n"
|
||||
" It also manages the leaves of every resource.\n"
|
||||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: help:resource.resource,active:0
|
||||
msgid ""
|
||||
"If the active field is set to true, it will allow you to hide the resource "
|
||||
"record without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.calendar.attendance,dayofweek:0
|
||||
msgid "Wednesday"
|
||||
msgstr "Kolmapäev"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.actions.act_window,name:resource.action_resource_calendar_form
|
||||
#: view:resource.calendar:0
|
||||
msgid "Working Period"
|
||||
msgstr "Tööaeg"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.model,name:resource.model_resource_resource
|
||||
msgid "Resource Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.resource,active:0
|
||||
msgid "Active"
|
||||
msgstr "Aktiivne"
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar.attendance,calendar_id:0
|
||||
msgid "Resource's Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: help:resource.resource,user_id:0
|
||||
msgid "Related user name for the resource to manage its access."
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: help:resource.resource,calendar_id:0
|
||||
msgid "Define the schedule of resource"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar.attendance,hour_from:0
|
||||
msgid "Work from"
|
||||
msgstr "Töötab alates"
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.resource,code:0
|
||||
msgid "Code"
|
||||
msgstr "Kood"
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar.attendance,hour_to:0
|
||||
msgid "Work to"
|
||||
msgstr "Töötab kuni"
|
||||
|
||||
#. module: resource
|
||||
#: help:resource.resource,time_efficiency:0
|
||||
msgid ""
|
||||
"This field depict the efficiency of the resource to complete tasks. e.g "
|
||||
"resource put alone on a phase of 5 days with 5 tasks assigned to him, will "
|
||||
"show a load of 100% for this phase by default, but if we put a efficency of "
|
||||
"200%, then his load will only be 50%."
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.calendar.attendance,dayofweek:0
|
||||
msgid "Tuesday"
|
||||
msgstr "Teisipäev"
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar.leaves,calendar_id:0
|
||||
#: field:resource.resource,calendar_id:0
|
||||
msgid "Working time"
|
||||
msgstr "Tööaeg"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.actions.act_window,name:resource.action_resource_calendar_leave_tree
|
||||
msgid "Resource Leaves"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: view:resource.calendar:0
|
||||
msgid "Manager"
|
||||
msgstr "Haldur"
|
||||
|
||||
#. module: resource
|
||||
#: code:addons/resource/faces/resource.py:0
|
||||
#, python-format
|
||||
msgid "(vacation)"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.resource,time_efficiency:0
|
||||
msgid "Efficiency factor"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.resource,resource_type:0
|
||||
msgid "Human"
|
||||
msgstr "Inimene"
|
||||
|
||||
#. module: resource
|
||||
#: model:ir.model,name:resource.model_resource_calendar_attendance
|
||||
msgid "Work Detail"
|
||||
msgstr ""
|
||||
|
||||
#. module: resource
|
||||
#: field:resource.calendar.leaves,date_from:0
|
||||
msgid "Start Date"
|
||||
msgstr "Alguskuupäev"
|
||||
|
||||
#. module: resource
|
||||
#: selection:resource.calendar.attendance,dayofweek:0
|
||||
msgid "Saturday"
|
||||
msgstr "Laupäev"
|
||||
@@ -18,9 +18,13 @@
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="20" groups="base.group_extended">
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'resource_type'}"/>
|
||||
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}"/>
|
||||
<filter string="User" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'resource_type'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
<separator orientation="vertical" groups="base.group_multi_company"/>
|
||||
<filter string="Working Time" icon="terp-go-today" domain="[]" context="{'group_by':'calendar_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -53,16 +57,17 @@
|
||||
<search string="Search Working Period Leaves">
|
||||
<group col='15' colspan='4'>
|
||||
<field name="name" string="Name"/>
|
||||
<field name="company_id" string="Company" widget="selection" />
|
||||
<field name="calendar_id" string="Working Time" widget="selection"/>
|
||||
<field name="resource_id" string="Resource"/>
|
||||
<field name="company_id" string="Company" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="calendar_id" string="Working Time" widget="selection"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="20">
|
||||
<filter string="Resource" icon="terp-personal" domain="[]" context="{'group_by':'resource_id'}"/>
|
||||
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_from'}"/>
|
||||
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
<separator orientation="vertical" groups="base.group_multi_company"/>
|
||||
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date_from'}" help="Starting Date of Leave"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -74,9 +79,11 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Working Period">
|
||||
<field name="name" select="1"/>
|
||||
<field name="manager" select="1"/>
|
||||
<field name="company_id" select="1" groups="base.group_multi_company"/>
|
||||
<field name="name"/>
|
||||
<field name="manager"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<separator string="" colspan="4"/>
|
||||
<field name="attendance_ids" colspan="4" nolabel="1"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
@@ -196,7 +203,7 @@
|
||||
<field name="name">Resources</field>
|
||||
<field name="res_model">resource.resource</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{"search_default_user_id":uid}</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="search_view_id" ref="view_resource_resource_search"/>
|
||||
<field name="help">There you can find clusters of your resources type involved in a specific project phase as well as their workload.</field>
|
||||
</record>
|
||||
@@ -210,7 +217,7 @@
|
||||
<field name="name"/>
|
||||
<field name="resource_id" on_change="onchange_resource(resource_id)"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="calendar_id"/>
|
||||
<field name="calendar_id" widget="selection"/>
|
||||
<newline/>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
@@ -224,11 +231,11 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Leave Detail">
|
||||
<field name="name" />
|
||||
<field name="resource_id" />
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="calendar_id" />
|
||||
<field name="date_from" />
|
||||
<field name="date_to" />
|
||||
<field name="resource_id" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -81,7 +81,6 @@ class crm_make_sale(osv.osv_memory):
|
||||
sale_line_obj = self.pool.get('sale.order.line')
|
||||
|
||||
result = mod_obj._get_id(cr, uid, 'sale', 'view_sales_order_filter')
|
||||
id = mod_obj.read(cr, uid, result, ['res_id'])
|
||||
|
||||
data = context and context.get('active_ids', []) or []
|
||||
|
||||
|
||||
@@ -2013,7 +2013,7 @@ msgid ""
|
||||
"This stock location will be used, instead of the default one, as the "
|
||||
"destination location for goods you send to this partner"
|
||||
msgstr ""
|
||||
"Koristiće se ova lokacija zaliha, umjesto podrazumjevane, kao \r\n"
|
||||
"Koristiće se ova lokacija zaliha, umjesto podrazumjevane, kao \n"
|
||||
"odredišna lokacija za robu koju šaljete ovom partneru"
|
||||
|
||||
#. module: stock
|
||||
@@ -2151,8 +2151,8 @@ msgid ""
|
||||
"instead of the default one, as the source location for stock moves generated "
|
||||
"by production orders"
|
||||
msgstr ""
|
||||
"Za ovaj proizvod (šablon) biće korištena ova lokacija zaliha, \r\n"
|
||||
"umjesto podrazumjevane, kao izvorna lokacija za premještanja zaliha \r\n"
|
||||
"Za ovaj proizvod (šablon) biće korištena ova lokacija zaliha, \n"
|
||||
"umjesto podrazumjevane, kao izvorna lokacija za premještanja zaliha \n"
|
||||
"kada ga inicira nalog za proizvodnju"
|
||||
|
||||
#. module: stock
|
||||
@@ -2238,7 +2238,7 @@ msgid ""
|
||||
"by procurements"
|
||||
msgstr ""
|
||||
"Za ovaj proizvod (šablon) biće korištena ova lokacija zaliha, umjesto "
|
||||
"podrazumjevane, kao izvorna lokacija za premještanja zaliha \r\n"
|
||||
"podrazumjevane, kao izvorna lokacija za premještanja zaliha \n"
|
||||
"kada ga inicira nabavka"
|
||||
|
||||
#. module: stock
|
||||
|
||||
@@ -67,7 +67,6 @@ class product_product(osv.osv):
|
||||
stock_output_acc = datas.get('stock_output_account', False)
|
||||
stock_input_acc = datas.get('stock_input_account', False)
|
||||
journal_id = datas.get('stock_journal', False)
|
||||
property_obj=self.pool.get('ir.property')
|
||||
product_obj=self.browse(cr,uid,ids)[0]
|
||||
account_variation = product_obj.categ_id.property_stock_variation
|
||||
account_variation_id = account_variation and account_variation.id or False
|
||||
|
||||
+1
-22
@@ -23,7 +23,6 @@ from dateutil.relativedelta import relativedelta
|
||||
import time
|
||||
|
||||
from osv import fields, osv
|
||||
from tools import config
|
||||
from tools.translate import _
|
||||
import netsvc
|
||||
import tools
|
||||
@@ -856,7 +855,6 @@ class stock_picking(osv.osv):
|
||||
""" Gets payment term from partner.
|
||||
@return: Payment term
|
||||
"""
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
partner = picking.address_id.partner_id
|
||||
return partner.property_payment_term and partner.property_payment_term.id or False
|
||||
|
||||
@@ -1132,12 +1130,8 @@ class stock_picking(osv.osv):
|
||||
price_type_obj = self.pool.get('product.price.type')
|
||||
sequence_obj = self.pool.get('ir.sequence')
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
partner_id = partial_datas.get('partner_id', False)
|
||||
address_id = partial_datas.get('address_id', False)
|
||||
delivery_date = partial_datas.get('delivery_date', False)
|
||||
for pick in self.browse(cr, uid, ids, context=context):
|
||||
new_picking = None
|
||||
new_moves = []
|
||||
complete, too_many, too_few = [], [], []
|
||||
move_product_qty = {}
|
||||
for move in pick.move_lines:
|
||||
@@ -1197,7 +1191,7 @@ class stock_picking(osv.osv):
|
||||
})
|
||||
if product_qty != 0:
|
||||
|
||||
new_obj = move_obj.copy(cr, uid, move.id,
|
||||
move_obj.copy(cr, uid, move.id,
|
||||
{
|
||||
'product_qty' : product_qty,
|
||||
'product_uos_qty': product_qty, #TODO: put correct uos_qty
|
||||
@@ -1682,7 +1676,6 @@ class stock_move(osv.osv):
|
||||
"""
|
||||
moves = self.browse(cr, uid, ids)
|
||||
self.write(cr, uid, ids, {'state': 'confirmed'})
|
||||
i = 0
|
||||
|
||||
def create_chained_picking(self, cr, uid, moves, context=None):
|
||||
new_moves = []
|
||||
@@ -1815,7 +1808,6 @@ class stock_move(osv.osv):
|
||||
|
||||
def setlast_tracking(self, cr, uid, ids, context=None):
|
||||
tracking_obj = self.pool.get('stock.tracking')
|
||||
tracking = context.get('tracking', False)
|
||||
picking = self.browse(cr, uid, ids)[0].picking_id
|
||||
if picking:
|
||||
last_track = [line.tracking_id.id for line in picking.move_lines if line.tracking_id]
|
||||
@@ -1895,7 +1887,6 @@ class stock_move(osv.osv):
|
||||
amount = q * move.price_unit
|
||||
# Base computation on valuation price type
|
||||
else:
|
||||
company_id = move.company_id.id
|
||||
context['currency_id'] = move.company_id.currency_id.id
|
||||
pricetype = price_type_obj.browse(cr,uid,move.company_id.property_valuation_price_type.id)
|
||||
amount_unit = move.product_id.price_get(pricetype.field, context)[move.product_id.id]
|
||||
@@ -1906,11 +1897,7 @@ class stock_move(osv.osv):
|
||||
""" Makes the move done and if all moves are done, it will finish the picking.
|
||||
@return:
|
||||
"""
|
||||
track_flag = False
|
||||
picking_ids = []
|
||||
product_uom_obj = self.pool.get('product.uom')
|
||||
price_type_obj = self.pool.get('product.price.type')
|
||||
product_obj = self.pool.get('product.product')
|
||||
move_obj = self.pool.get('account.move')
|
||||
if context is None:
|
||||
context = {}
|
||||
@@ -2205,12 +2192,7 @@ class stock_move(osv.osv):
|
||||
users_obj = self.pool.get('res.users')
|
||||
uom_obj = self.pool.get('product.uom')
|
||||
price_type_obj = self.pool.get('product.price.type')
|
||||
sequence_obj = self.pool.get('ir.sequence')
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
partner_id = partial_datas.get('partner_id', False)
|
||||
address_id = partial_datas.get('address_id', False)
|
||||
delivery_date = partial_datas.get('delivery_date', False)
|
||||
new_moves = []
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
@@ -2303,7 +2285,6 @@ class stock_move(osv.osv):
|
||||
picking_obj.action_move(cr, uid, [move.picking_id.id])
|
||||
wf_service.trg_validate(uid, 'stock.picking', move.picking_id.id, 'button_done', cr)
|
||||
|
||||
ref = {}
|
||||
done_move_ids = []
|
||||
for move in complete:
|
||||
done_move_ids.append(move.id)
|
||||
@@ -2345,7 +2326,6 @@ class stock_inventory(osv.osv):
|
||||
context = {}
|
||||
for inv in self.browse(cr, uid, ids):
|
||||
move_ids = []
|
||||
move_line = []
|
||||
for line in inv.inventory_line_id:
|
||||
pid = line.product_id.id
|
||||
|
||||
@@ -2495,7 +2475,6 @@ class stock_picking_move_wizard(osv.osv_memory):
|
||||
def action_move(self, cr, uid, ids, context=None):
|
||||
move_obj = self.pool.get('stock.move')
|
||||
picking_obj = self.pool.get('stock.picking')
|
||||
account_move_obj = self.pool.get('account.move')
|
||||
for act in self.read(cr, uid, ids):
|
||||
move_lines = move_obj.browse(cr, uid, act['move_ids'])
|
||||
for line in move_lines:
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
|
||||
class stock_move_track(osv.osv_memory):
|
||||
_name = "stock.move.track"
|
||||
@@ -220,7 +219,6 @@ class split_in_production_lot(osv.osv_memory):
|
||||
@return:
|
||||
"""
|
||||
prodlot_obj = self.pool.get('stock.production.lot')
|
||||
ir_sequence_obj = self.pool.get('ir.sequence')
|
||||
move_obj = self.pool.get('stock.move')
|
||||
new_move = []
|
||||
for data in self.browse(cr, uid, ids):
|
||||
|
||||
@@ -36,7 +36,6 @@ class stock_partial_move(osv.osv_memory):
|
||||
move_obj = self.pool.get('stock.move')
|
||||
if not context:
|
||||
context={}
|
||||
moveids = []
|
||||
for m in move_obj.browse(cr, uid, context.get('active_ids', [])):
|
||||
if m.state in ('done', 'cancel'):
|
||||
raise osv.except_osv(_('Invalid action !'), _('Cannot delivery products which are already delivered !'))
|
||||
@@ -63,7 +62,7 @@ class stock_partial_move(osv.osv_memory):
|
||||
move_ids = move_obj.search(cr, uid, [('id','in',move_ids)])
|
||||
_moves_arch_lst = """<form string="Deliver Products">
|
||||
<separator colspan="4" string="Delivery Information"/>
|
||||
<field name="date" colspan="2"/>
|
||||
<field name="date" colspan="2"/>
|
||||
<separator colspan="4" string="Move Detail"/>
|
||||
"""
|
||||
_moves_fields = result['fields']
|
||||
@@ -147,7 +146,6 @@ class stock_partial_move(osv.osv_memory):
|
||||
move_obj = self.pool.get('stock.move')
|
||||
if not context:
|
||||
context={}
|
||||
moveids = address_delivery = address_default = []
|
||||
if 'date' in fields:
|
||||
res.update({'date': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
move_ids = context.get('active_ids', [])
|
||||
@@ -203,7 +201,6 @@ class stock_partial_move(osv.osv_memory):
|
||||
@return: A dictionary which of fields with values.
|
||||
"""
|
||||
|
||||
rec_id = context and context.get('active_id', False)
|
||||
move_obj = self.pool.get('stock.move')
|
||||
move_ids = context.get('active_ids', False)
|
||||
partial = self.browse(cr, uid, ids[0], context)
|
||||
@@ -224,7 +221,7 @@ class stock_partial_move(osv.osv_memory):
|
||||
'product_price' : getattr(partial, 'move%s_product_price'%(m.id)),
|
||||
'product_currency': getattr(partial, 'move%s_product_currency'%(m.id)).id
|
||||
})
|
||||
res = move_obj.do_partial(cr, uid, move_ids, partial_datas, context=context)
|
||||
move_obj.do_partial(cr, uid, move_ids, partial_datas, context=context)
|
||||
return {}
|
||||
|
||||
stock_partial_move()
|
||||
|
||||
@@ -75,7 +75,7 @@ class stock_return_picking(osv.osv_memory):
|
||||
self._columns['return%s'%(m.id)] = fields.float(string=m.name, required=True)
|
||||
if 'invoice_state' not in self._columns:
|
||||
self._columns['invoice_state'] = fields.selection([('2binvoiced', 'To be Invoiced'), ('none', 'None')], string='Invoice State', required=True)
|
||||
except Exception, e:
|
||||
except Exception:
|
||||
return res
|
||||
return res
|
||||
|
||||
@@ -117,10 +117,6 @@ class stock_return_picking(osv.osv_memory):
|
||||
raise osv.except_osv(_('Warning!'),_('There is no product to return!'))
|
||||
|
||||
arch_lst.append('<field name="invoice_state"/>\n<newline/>')
|
||||
if pick.invoice_state=='invoiced':
|
||||
new_invoice_state='2binvoiced'
|
||||
else:
|
||||
new_invoice_state=pick.invoice_state
|
||||
res['fields']['invoice_state']={'string':_('Invoice state'), 'type':'selection','required':True, 'selection':[('2binvoiced', _('To Be Invoiced')), ('none', _('None'))]}
|
||||
arch_lst.append('<group col="2" colspan="4">')
|
||||
arch_lst.append('<button icon="gtk-cancel" special="cancel" string="Cancel" />')
|
||||
|
||||
@@ -69,7 +69,7 @@ class stock_split_into(osv.osv_memory):
|
||||
'state': move.state,
|
||||
'product_uos': move.product_uom.id
|
||||
}
|
||||
current_move = move_obj.copy(cr, uid, move.id, default_val)
|
||||
move_obj.copy(cr, uid, move.id, default_val)
|
||||
return {}
|
||||
stock_split_into()
|
||||
|
||||
|
||||
@@ -50,14 +50,14 @@ class email_server_tools(osv.osv_memory):
|
||||
|
||||
def parse_message(self, message):
|
||||
#TOCHECK: put this function in mailgateway module
|
||||
if isinstance(message, unicode):
|
||||
message = message.encode('utf-8')
|
||||
msg_txt = email.message_from_string(message)
|
||||
message_id = msg_txt.get('message-id', False)
|
||||
msg = {}
|
||||
msg_txt = email.message_from_string(message)
|
||||
fields = msg_txt.keys()
|
||||
msg['id'] = message_id
|
||||
msg['message-id'] = message_id
|
||||
|
||||
if 'Subject' in fields:
|
||||
msg['subject'] = self._decode_header(msg_txt.get('Subject'))
|
||||
|
||||
@@ -156,10 +156,12 @@ class thunderbird_partner(osv.osv_memory):
|
||||
server_tools_pool = self.pool.get('email.server.tools')
|
||||
message_id = msg.get('message-id', False)
|
||||
msg_pool = self.pool.get('mailgate.message')
|
||||
|
||||
msg_ids = []
|
||||
res = {}
|
||||
res_ids = []
|
||||
|
||||
if message_id:
|
||||
msg_ids = msg_pool.search(cr, uid, [('message_id','=',message_id)])
|
||||
if msg_ids and len(msg_ids): return 0
|
||||
for ref_id in ref_ids:
|
||||
msg_new = dictcreate.get('message')
|
||||
ref = ref_id.split(',')
|
||||
|
||||
Reference in New Issue
Block a user