bzr revid: vir@tinyerp.com-20100708043820-2i15atdobtz3h67w
This commit is contained in:
Vir (Open ERP)
2010-07-08 10:08:20 +05:30
88 changed files with 2142 additions and 1858 deletions
+48 -34
View File
@@ -136,7 +136,6 @@ class account_account_type(osv.osv):
'name': fields.char('Acc. Type Name', size=64, required=True, translate=True),
'code': fields.char('Code', size=32, required=True),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of account types."),
'partner_account': fields.boolean('Partner account'),
'close_method': fields.selection([('none', 'None'), ('balance', 'Balance'), ('detail', 'Detail'), ('unreconciled', 'Unreconciled')], 'Deferral Method', required=True),
'sign': fields.selection([(-1, 'Negative'), (1, 'Positive')], 'Sign on Reports', required=True, help='Allows you to change the sign of the balance amount displayed in the reports, so that you can see positive figures instead of negative ones in expenses accounts.'),
'report_type':fields.selection([
@@ -366,11 +365,11 @@ class account_account(osv.osv):
'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),
'code': fields.char('Code', size=64, required=True),
'type': fields.selection([
('view', 'View'),
('other', 'Regular'),
('receivable', 'Receivable'),
('payable', 'Payable'),
('view', 'View'),
('consolidation', 'Consolidation'),
('other', 'Others'),
('closed', 'Closed'),
], 'Internal Type', required=True, help="This type is used to differentiate types with "\
"special effects in Open ERP: view can not have entries, consolidation are accounts that "\
@@ -1203,9 +1202,11 @@ class account_move(osv.osv):
def validate(self, cr, uid, ids, context={}):
if context and ('__last_update' in context):
del context['__last_update']
ok = True
valid_moves = [] #Maintains a list of moves which can be responsible to create analytic entries
for move in self.browse(cr, uid, ids, context):
#unlink analytic lines on move_lines
# Unlink old analytic lines on move_lines
for obj_line in move.line_id:
for obj in obj_line.analytic_lines:
self.pool.get('account.analytic.line').unlink(cr,uid,obj.id)
@@ -1214,7 +1215,7 @@ class account_move(osv.osv):
amount = 0
line_ids = []
line_draft_ids = []
company_id=None
company_id = None
for line in move.line_id:
amount += line.debit - line.credit
line_ids.append(line.id)
@@ -1231,45 +1232,59 @@ class account_move(osv.osv):
raise osv.except_osv(_('Error'), _("""Couldn't create move with currency different from the secondary currency of the account "%s - %s". Clear the secondary currency field of the account definition if you want to accept all currencies.""" % (line.account_id.code, line.account_id.name)))
if abs(amount) < 10 ** -4:
# If the move is balanced
# Add to the list of valid moves
# (analytic lines will be created later for valid moves)
valid_moves.append(move)
# Check whether the move lines are confirmed
if not len(line_draft_ids):
continue
# Update the move lines (set them as valid)
self.pool.get('account.move.line').write(cr, uid, line_draft_ids, {
'journal_id': move.journal_id.id,
'period_id': move.period_id.id,
'state': 'valid'
}, context, check=False)
todo = []
account = {}
account2 = {}
if journal.type not in ('purchase','sale'):
continue
if journal.type in ('purchase','sale'):
for line in move.line_id:
code = amount = 0
key = (line.account_id.id, line.tax_code_id.id)
if key in account2:
code = account2[key][0]
amount = account2[key][1] * (line.debit + line.credit)
elif line.account_id.id in account:
code = account[line.account_id.id][0]
amount = account[line.account_id.id][1] * (line.debit + line.credit)
if (code or amount) and not (line.tax_code_id or line.tax_amount):
self.pool.get('account.move.line').write(cr, uid, [line.id], {
'tax_code_id': code,
'tax_amount': amount
}, context, check=False)
elif journal.centralisation:
# If the move is not balanced, it must be centralised...
# Add to the list of valid moves
# (analytic lines will be created later for valid moves)
valid_moves.append(move)
for line in move.line_id:
code = amount = 0
key = (line.account_id.id, line.tax_code_id.id)
if key in account2:
code = account2[key][0]
amount = account2[key][1] * (line.debit + line.credit)
elif line.account_id.id in account:
code = account[line.account_id.id][0]
amount = account[line.account_id.id][1] * (line.debit + line.credit)
if (code or amount) and not (line.tax_code_id or line.tax_amount):
self.pool.get('account.move.line').write(cr, uid, [line.id], {
'tax_code_id': code,
'tax_amount': amount
}, context, check=False)
#
# Compute VAT
# Update the move lines (set them as valid)
#
continue
if journal.centralisation:
self._centralise(cr, uid, move, 'debit', context=context)
self._centralise(cr, uid, move, 'credit', context=context)
self.pool.get('account.move.line').write(cr, uid, line_draft_ids, {
'state': 'valid'
}, context, check=False)
continue
else:
# We can't validate it (it's unbalanced)
# Setting the lines as draft
self.pool.get('account.move.line').write(cr, uid, line_ids, {
'journal_id': move.journal_id.id,
'period_id': move.period_id.id,
@@ -1277,13 +1292,12 @@ class account_move(osv.osv):
#'tax_amount': False,
'state': 'draft'
}, context, check=False)
ok = False
if ok:
list_ids = []
for tmp in move.line_id:
list_ids.append(tmp.id)
self.pool.get('account.move.line').create_analytic_lines(cr, uid, list_ids, context)
return ok
# Create analytic lines for the valid moves
for record in valid_moves:
self.pool.get('account.move.line').create_analytic_lines(cr, uid, [line.id for line in record.line_id], context)
return len(valid_moves) > 0
account_move()
class account_move_reconcile(osv.osv):
+47 -65
View File
@@ -3,8 +3,8 @@
<data>
<!--
Fiscal Year
-->
Fiscal Year
-->
<record id="view_account_fiscalyear_form" model="ir.ui.view">
<field name="name">account.fiscalyear.form</field>
@@ -12,7 +12,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Fiscalyear">
<group>
<group>
<field name="name"/>
<field name="code"/>
<field name="date_start"/>
@@ -32,7 +32,7 @@
</field>
<separator colspan="4" string="States"/>
<group>
<field name="state" select="1" readonly="1"/>
<field name="state" select="1" readonly="1"/>
<button name="create_period" states="draft" string="Create Monthly Periods" type="object" icon="gtk-dnd"/>
<button name="create_period3" states="draft" string="Create 3 Months Periods" type="object" icon="gtk-dnd"/>
</group>
@@ -57,17 +57,17 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Fiscalyear">
<group>
<filter string="Done" domain="[('state','=','done')]" icon="terp-dolar_ok!"/>
<filter string="Draft" domain="[('state','=','draft')]" icon="terp-document-new"/>
<separator orientation="vertical"/>
<field name="code"/>
<field name="name"/>
<field name="state"/>
<group>
<filter string="Done" domain="[('state','=','done')]" icon="terp-dolar_ok!"/>
<filter string="Draft" domain="[('state','=','draft')]" icon="terp-document-new"/>
<separator orientation="vertical"/>
<field name="code"/>
<field name="name"/>
<field name="state"/>
</group>
<newline/>
<group expand="0" string="Group By...">
<filter string="State" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
<filter string="State" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
</group>
</search>
</field>
@@ -133,9 +133,8 @@
<!--
Accounts
-->
Accounts
-->
<record id="view_account_form" model="ir.ui.view">
<field name="name">account.account.form</field>
<field name="model">account.account</field>
@@ -143,21 +142,21 @@
<field name="arch" type="xml">
<form string="Account">
<group col="6" colspan="4">
<field name="name" select="1" colspan="4"/>
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="parent_id"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<newline/>
<field name="parent_id"/>
<field name="type" select="1"/>
<field name="user_type" select="1"/>
</group>
<notebook colspan="4">
<page string="General Information">
<newline/>
<field name="currency_id"/>
<field name="active"/>
<field name="currency_mode"/>
<field name="reconcile"/>
<field name="active"/>
<field name="check_history"/>
<field name="type" select="1"/>
<newline/>
<separator string="Default Taxes" colspan="4"/>
<field colspan="4" name="tax_ids" nolabel="1" domain="[('parent_id','=',False)]"/>
@@ -178,21 +177,21 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Accounts">
<group col="10" colspan="4">
<group col="10" colspan="4">
<filter icon="terp-sale" string="Receivable Accounts" domain="[('type','=','receivable')]"/>
<filter icon="terp-purchase" string="Purchase Accounts" domain="[('type','=','purchase')]"/>
<separator orientation="vertical"/>
<field name="code"/>
<field name="name"/>
<field name="user_type"/>
<field name="type"/>
<field name="code"/>
<field name="name"/>
<field name="user_type"/>
<field name="type"/>
</group>
<newline/>
<group expand="0" string="Group By...">
<filter string="Parent Account" icon="terp-folder-orange" domain="" context="{'group_by':'parent_id'}"/>
<separator orientation="vertical"/>
<filter string="User Type" icon="terp-folder-blue" domain="" context="{'group_by':'user_type'}"/>
<filter string="Internal Type" icon="terp-folder-yellow" domain="" context="{'group_by':'type'}"/>
<filter string="Parent Account" icon="terp-folder-orange" domain="" context="{'group_by':'parent_id'}"/>
<separator orientation="vertical"/>
<filter string="User Type" icon="terp-folder-blue" domain="" context="{'group_by':'user_type'}"/>
<filter string="Internal Type" icon="terp-folder-yellow" domain="" context="{'group_by':'type'}"/>
</group>
</search>
</field>
@@ -308,11 +307,11 @@
<field name="type">search</field>
<field name="arch" type="xml">
<tree string="Search Account Journal">
<group>
<filter domain="[('type', '=', 'sale')]" string="Sale Journals" icon="terp-sale"/>
<filter domain="[('type', '=', 'purchase')]" string="Purchase Journals" icon="terp-purchase"/>
<filter domain="[('centralisation', '=', 'True')]" string="Centralized Journals" icon="terp-stock"/>
<separator orientation="vertical"/>
<group>
<filter domain="[('type', '=', 'sale')]" string="Sale Journals" icon="terp-sale"/>
<filter domain="[('type', '=', 'purchase')]" string="Purchase Journals" icon="terp-purchase"/>
<filter domain="[('centralisation', '=', 'True')]" string="Centralized Journals" icon="terp-stock"/>
<separator orientation="vertical"/>
<field name="code"/>
<field name="name"/>
</group>
@@ -376,7 +375,7 @@
<separator string="Other Configuration" colspan="4"/>
<field name="centralisation" groups="base.group_extended"/>
<field name="entry_posted"/>
<field name="update_posted"/>
<!-- <field name="update_posted"/> -->
</group>
</group>
</page>
@@ -443,19 +442,19 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Bank Statements">
<group>
<filter string="Draft" domain="[('state','=','draft')]" icon="terp-document-new"/>
<filter string="Confirm" domain="[('state','=','confirm')]" icon="terp-camera_test"/>
<separator orientation="vertical"/>
<field name="date"/>
<field name="name"/>
<field name="journal_id"/>
<group>
<filter string="Draft" domain="[('state','=','draft')]" icon="terp-document-new"/>
<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"/>
<filter string="Period" context="{'group_by': 'period_id'}" icon="terp-go-month"/>
<filter string="State" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
<filter string="Journal" context="{'group_by': 'journal_id'}" icon="terp-folder-orange"/>
<filter string="Period" context="{'group_by': 'period_id'}" icon="terp-go-month"/>
<filter string="State" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
</group>
</search>
</field>
@@ -596,11 +595,10 @@
<field name="arch" type="xml">
<form string="Account Type">
<group col="6" colspan="4">
<field name="name" select="1" colspan="4"/>
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="sequence"/>
<field name="parent_id"/>
<field name="partner_account"/>
</group>
<group col="2" colspan="2">
<separator string="Reporting Configuration" colspan="4"/>
@@ -1196,7 +1194,7 @@
<!-- <menuitem id="next_id_29" name="Search Entries" parent="account.menu_finance_entries" sequence="40"/>-->
<!-- <menuitem action="action_move_line_form" id="menu_action_move_line_form" parent="next_id_29"/>-->
<record id="action_move_line_form_encode_by_move" model="ir.actions.act_window">
<!-- <record id="action_move_line_form_encode_by_move" model="ir.actions.act_window">
<field name="name">Journal Entries</field>
<field name="res_model">account.move</field>
<field name="view_type">form</field>
@@ -1205,7 +1203,7 @@
<field name="search_view_id" ref="view_account_move_filter"/>
</record>
<menuitem action="action_move_line_form_encode_by_move" id="menu_encode_entries_by_move" parent="menu_finance_entries"/>
<menuitem action="action_move_line_form_encode_by_move" id="menu_encode_entries_by_move" parent="menu_finance_entries"/>-->
<record id="action_account_moves_sale" model="ir.actions.act_window">
<field name="name">Journal Items</field>
@@ -2239,22 +2237,6 @@
id="menu_action_account_fiscal_position_form_template"
parent="account_template_folder" sequence="20"/>
<record id="action_move_journal_line" model="ir.actions.act_window">
<field name="name">Journal Entries</field>
<field name="res_model">account.move</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_move_tree"/>
<field name="search_view_id" ref="view_account_move_filter"/>
</record>
<menuitem
icon="STOCK_JUSTIFY_FILL"
action="action_move_journal_line"
id="menu_action_move_journal_line_form"
parent="account.menu_finance_entries"
sequence="5"/>
<record id="action_account_moves_all" model="ir.actions.act_window">
<field name="name">Journal Items</field>
<field name="res_model">account.move.line</field>
+486 -270
View File
File diff suppressed because it is too large Load Diff
+472 -255
View File
File diff suppressed because it is too large Load Diff
@@ -54,7 +54,7 @@
</field>
</group>
<newline/>
<group expand="0" string="Group By...">
<group expand="1" string="Group By...">
<filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Currency" icon="terp-dolar" context="{'group_by':'currency_id'}"/>
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
@@ -74,13 +74,10 @@
icon="terp-check"
domain="[('state','in',('draft','open'))]"
help = "Draft and Open Invoices"/>
<filter string="Pro-forma"
icon="terp-check"
domain="[('state','=','proforma'),('state','=','proforma2')]"
help = "Pro-forma Invoices"/>
<filter string="Current"
domain="[('state', '=' ,'open')]"
help = "open Invoices"/>
<filter string="Pro-forma"
icon="terp-check"
domain="[('state','=','proforma'),('state','=','proforma2')]"
help = "Pro-forma Invoices"/>
<filter string="Done"
icon="terp-dialog-close"
domain="[('state','=','paid')]"
@@ -95,7 +92,7 @@
</field>
</group>
<newline/>
<group expand="0" string="Group By...">
<group expand="1" string="Group By...">
<filter string="Salesman" name='user' icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Partner" icon="terp-personal" context="{'group_by':'partner_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id','set_visible':True}"/>
@@ -88,3 +88,6 @@
"access_report_account_type_sales","report.account_type.sales","model_report_account_type_sales","account.group_account_manager",1,0,0,0
"access_report_account_sales","report.account.sales","model_report_account_sales","account.group_account_manager",1,0,0,0
"access_account_invoice_report","account.invoice.report","model_account_invoice_report","account.group_account_manager",1,0,0,0
"access_account_account_report_manager","account.account.report","model_account_account_report","account.group_account_manager",1,0,0,0
"access_account_entries_report_manager","account.entries.report","model_account_entries_report","account.group_account_manager",1,0,0,0
"access_analytic_entries_report_manager","analytic.entries.report","model_analytic_entries_report","account.group_account_manager",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
88 access_report_account_type_sales report.account_type.sales model_report_account_type_sales account.group_account_manager 1 0 0 0
89 access_report_account_sales report.account.sales model_report_account_sales account.group_account_manager 1 0 0 0
90 access_account_invoice_report account.invoice.report model_account_invoice_report account.group_account_manager 1 0 0 0
91 access_account_account_report_manager account.account.report model_account_account_report account.group_account_manager 1 0 0 0
92 access_account_entries_report_manager account.entries.report model_account_entries_report account.group_account_manager 1 0 0 0
93 access_analytic_entries_report_manager analytic.entries.report model_analytic_entries_report account.group_account_manager 1 0 0 0
@@ -8,7 +8,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Journal Select">
<label string="Are you sure you want to open Journal Entries!" colspan="4"/>
<label string="Are you sure you want to open Journal Entries?" colspan="4"/>
<separator string="" colspan="4" />
<group colspan="4" col="6">
<button icon="terp-gtk-stop" special="cancel" string="Cancel"/>
@@ -7,7 +7,7 @@
<field name="type">form</field>
<field name="inherit_id" ref="account.view_account_journal_form"/>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page[@string='General Information']/group/field[@name='centralisation']" position="after">
<xpath expr="/form/notebook/page[@string='General Information']/group/group/field[@name='centralisation']" position="after">
<field name="update_posted"/>
</xpath>
</field>
+10 -10
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-07-07 09:15+0000\n"
"Last-Translator: Bojan Markovic <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:02+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_followup
@@ -29,7 +29,7 @@ msgstr "Partneri"
#. module: account_followup
#: rml:account_followup.followup.print:0
msgid "Customer Ref :"
msgstr ""
msgstr "Refernca kupca:"
#. module: account_followup
#: model:ir.actions.act_window,name:account_followup.act_account_partner_account_move_payable_all
@@ -102,7 +102,7 @@ msgstr ""
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(followup_amount)s: Total Amount Due"
msgstr ""
msgstr "%(followup_amount): Ukupan dospjeli iznos"
#. module: account_followup
#: view:account_followup.followup.line:0
@@ -280,12 +280,12 @@ msgstr "Linije"
#: model:ir.actions.wizard,name:account_followup.action_account_followup_all_wizard
#: model:ir.ui.menu,name:account_followup.account_followup_wizard_menu
msgid "Send followups"
msgstr ""
msgstr "Pošaljite napomene"
#. module: account_followup
#: field:account.move.line,followup_line_id:0
msgid "Follow-up Level"
msgstr ""
msgstr "Stupanj napomene"
#. module: account_followup
#: field:account_followup.stat,credit:0
@@ -331,7 +331,7 @@ msgstr ""
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(company_currency)s: User's Company Currency"
msgstr ""
msgstr "%(company_currency): Valuta poduzeća korisnika"
#. module: account_followup
#: field:account_followup.stat,balance:0
@@ -412,7 +412,7 @@ msgstr "Dospijeće"
#. module: account_followup
#: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report
msgid "Followup Report"
msgstr ""
msgstr "Izvještaj o napomenama"
#. module: account_followup
#: model:account_followup.followup.line,description:account_followup.demo_followup_line3
@@ -454,7 +454,7 @@ msgstr "Sekvenca"
#. module: account_followup
#: wizard_view:account_followup.followup.print.all,next:0
msgid "%(heading)s: Move line header"
msgstr ""
msgstr "%(heading)s: Zaglavlje retka izmjena"
#. module: account_followup
#: view:account_followup.followup.line:0
+57 -56
View File
@@ -7,172 +7,173 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:45+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-07-07 09:53+0000\n"
"Last-Translator: Bojan Markovic <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:10+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_invoice_layout
#: selection:account.invoice.line,state:0
msgid "Sub Total"
msgstr ""
msgstr "Suma"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Invoice Date:"
msgstr ""
msgstr "Datum Fakture:"
#. module: account_invoice_layout
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Naziv objekta mora počinjati sa x_ i ne smije sadržavati specijalne znakove!"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Cancelled Invoice"
msgstr ""
msgstr "Poništena faktura"
#. module: account_invoice_layout
#: selection:account.invoice.line,state:0
#: field:notify.message,name:0
msgid "Title"
msgstr ""
msgstr "Naslov"
#. module: account_invoice_layout
#: model:ir.actions.wizard,name:account_invoice_layout.wizard_notify_message
msgid "Invoices with Layout and Message"
msgstr ""
msgstr "Fakture sa izgledom i porukom"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Disc. (%)"
msgstr ""
msgstr "Rab. (%)"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "(Incl. taxes):"
msgstr ""
msgstr "(Uklj. porez):"
#. module: account_invoice_layout
#: selection:account.invoice.line,state:0
msgid "Note"
msgstr ""
msgstr "Bilješka"
#. module: account_invoice_layout
#: wizard_button:wizard.notify_message,init,print:0
msgid "Print"
msgstr ""
msgstr "Ispis"
#. module: account_invoice_layout
#: help:notify.message,msg:0
msgid ""
"This notification will appear at the bottom of the Invoices when printed."
msgstr ""
msgstr "Ova napomena će se pojaviti na dnu fakture prilikom ispisa."
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Unit Price"
msgstr ""
msgstr "Jedinična cijena"
#. module: account_invoice_layout
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Neispravan naziv modela u definiciji zadatka."
#. module: account_invoice_layout
#: model:ir.model,name:account_invoice_layout.model_notify_message
msgid "Notify By Messages"
msgstr ""
msgstr "Napomeni po porukama"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "PRO-FORMA"
msgstr ""
msgstr "PRO-FORMA"
#. module: account_invoice_layout
#: field:account.invoice,abstract_line_ids:0
msgid "Invoice Lines"
msgstr ""
msgstr "Stavke fakture"
#. module: account_invoice_layout
#: view:account.invoice.line:0
msgid "Seq."
msgstr ""
msgstr "Sek."
#. module: account_invoice_layout
#: model:ir.ui.menu,name:account_invoice_layout.menu_finan_config_notify_message
msgid "Notification Message"
msgstr ""
msgstr "Poruka napomene"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Customer Ref:"
msgstr ""
msgstr "Referenca kupca"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid ")"
msgstr ""
msgstr ")"
#. module: account_invoice_layout
#: field:account.invoice.line,state:0
msgid "Type"
msgstr ""
msgstr "Vrsta"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Price"
msgstr ""
msgstr "Cijena"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "/ ("
msgstr ""
msgstr "/ ("
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Taxes:"
msgstr ""
msgstr "Porezi:"
#. module: account_invoice_layout
#: field:account.invoice.line,functional_field:0
msgid "Source Account"
msgstr ""
msgstr "Izvorni konto"
#. module: account_invoice_layout
#: model:ir.actions.act_window,name:account_invoice_layout.notify_mesage_tree_form
msgid "Write Messages"
msgstr ""
msgstr "Unesi poruke"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Base"
msgstr ""
msgstr "Osnovica"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Fax :"
msgstr ""
msgstr "Fax :"
#. module: account_invoice_layout
#: field:notify.message,msg:0
msgid "Special Message"
msgstr ""
msgstr "Posebna poruka"
#. module: account_invoice_layout
#: view:notify.message:0
msgid "Write a notification or a wishful message."
msgstr ""
msgstr "Unesi napomenu ili molbu."
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Tel. :"
msgstr ""
msgstr "Tel. :"
#. module: account_invoice_layout
#: constraint:ir.ui.view:0
@@ -187,77 +188,77 @@ msgstr ""
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Document:"
msgstr ""
msgstr "Dokument:"
#. module: account_invoice_layout
#: wizard_view:wizard.notify_message,init:0
msgid "Select Message"
msgstr ""
msgstr "Odaberi poruku"
#. module: account_invoice_layout
#: view:notify.message:0
msgid "Messages"
msgstr ""
msgstr "Poruke"
#. module: account_invoice_layout
#: selection:account.invoice.line,state:0
msgid "Product"
msgstr ""
msgstr "Proizvod"
#. module: account_invoice_layout
#: model:ir.actions.report.xml,name:account_invoice_layout.account_invoices_1
msgid "Invoices with Layout"
msgstr ""
msgstr "Fakture sa izgledom"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Description / Taxes"
msgstr ""
msgstr "Opis / Porezi"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Amount"
msgstr ""
msgstr "Iznos"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Description/Taxes"
msgstr ""
msgstr "Opis/Porezi"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Draft Invoice"
msgstr ""
msgstr "Predračun"
#. module: account_invoice_layout
#: field:account.invoice.line,sequence:0
msgid "Sequence Number"
msgstr ""
msgstr "Broj sekvence"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Quantity"
msgstr ""
msgstr "Količina"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Refund"
msgstr ""
msgstr "Povrat"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "VAT :"
msgstr ""
msgstr "PDV :"
#. module: account_invoice_layout
#: selection:account.invoice.line,state:0
msgid "Separator Line"
msgstr ""
msgstr "Linija za razdvajanje"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Supplier Invoice"
msgstr ""
msgstr "Faktura dobavljača"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
@@ -267,7 +268,7 @@ msgstr ""
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Tax"
msgstr ""
msgstr "Porez"
#. module: account_invoice_layout
#: model:ir.module.module,shortdesc:account_invoice_layout.module_meta_information
@@ -277,34 +278,34 @@ msgstr ""
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Total (Excl. taxes):"
msgstr ""
msgstr "Ukupno (bez poreza):"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Invoice"
msgstr ""
msgstr "Faktura"
#. module: account_invoice_layout
#: wizard_button:wizard.notify_message,init,end:0
msgid "Cancel"
msgstr ""
msgstr "Poništi"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Supplier Refund"
msgstr ""
msgstr "Povrat dobavljača"
#. module: account_invoice_layout
#: wizard_field:wizard.notify_message,init,message:0
msgid "Message"
msgstr ""
msgstr "Poruka"
#. module: account_invoice_layout
#: rml:account.invoice.layout:0
msgid "Total"
msgstr ""
msgstr "Ukupno"
#. module: account_invoice_layout
#: model:ir.ui.menu,name:account_invoice_layout.menu_notify_mesage_tree_form
msgid "All Notification Messages"
msgstr ""
msgstr "Sve napomene"
+14 -14
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 07:29+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-07-07 09:59+0000\n"
"Last-Translator: Bojan Markovic <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 03:55+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_report
@@ -41,7 +41,7 @@ msgstr ""
#. module: account_report
#: field:account.report.report,parent_id:0
msgid "Parent"
msgstr ""
msgstr "Sintetika"
#. module: account_report
#: field:account.report.report,disp_graph:0
@@ -56,7 +56,7 @@ msgstr ""
#. module: account_report
#: selection:account.report.report,type:0
msgid "Others"
msgstr ""
msgstr "Ostali"
#. module: account_report
#: view:account.report.report:0
@@ -76,7 +76,7 @@ msgstr ""
#. module: account_report
#: view:account.report.report:0
msgid "= Goodness Indicator Limit:"
msgstr ""
msgstr "= Limit indikatora dobrote:"
#. module: account_report
#: view:account.report.report:0
@@ -87,7 +87,7 @@ msgstr ""
#: field:account.report.history,val:0
#: field:account.report.report,amount:0
msgid "Value"
msgstr ""
msgstr "Vrijednost"
#. module: account_report
#: view:account.report.report:0
@@ -133,12 +133,12 @@ msgstr ""
#. module: account_report
#: view:account.report.report:0
msgid "Report Amount:"
msgstr ""
msgstr "Iznos izvještaja:"
#. module: account_report
#: model:ir.actions.report.xml,name:account_report.fiscal_statements
msgid "Fiscal Statements"
msgstr ""
msgstr "Fiskalni izvod"
#. module: account_report
#: wizard_button:print.indicators,init,next:0
@@ -148,7 +148,7 @@ msgstr ""
#. module: account_report
#: model:ir.module.module,shortdesc:account_report.module_meta_information
msgid "Reporting for accounting"
msgstr ""
msgstr "Izvještavanje za računovodstvo"
#. module: account_report
#: wizard_button:print.indicators,next,print:0
@@ -164,7 +164,7 @@ msgstr ""
#. module: account_report
#: model:ir.actions.report.xml,name:account_report.report_indicator_pdf
msgid "Print Indicators in PDF"
msgstr ""
msgstr "Ispiši indikatore u PDF"
#. module: account_report
#: view:account.report.report:0
@@ -249,7 +249,7 @@ msgstr ""
#. module: account_report
#: selection:account.report.report,status:0
msgid "Normal"
msgstr ""
msgstr "Normalno"
#. module: account_report
#: view:account.report.report:0
@@ -284,7 +284,7 @@ msgstr ""
#. module: account_report
#: rml:print.indicators:0
msgid "Expression :"
msgstr ""
msgstr "Izraz :"
#. module: account_report
#: view:account.report.report:0
@@ -294,7 +294,7 @@ msgstr ""
#. module: account_report
#: field:account.report.report,expression:0
msgid "Expression"
msgstr ""
msgstr "Izraz"
#. module: account_report
#: view:account.report.report:0
+11 -11
View File
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 08:09+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-07-07 09:23+0000\n"
"Last-Translator: Bojan Markovic <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:15+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_reporting
#: field:color.rml,code:0
msgid "code"
msgstr ""
msgstr "šifra"
#. module: account_reporting
#: constraint:ir.model:0
@@ -61,7 +61,7 @@ msgstr ""
#. module: account_reporting
#: selection:account.report.bs,font_style:0
msgid "Courier"
msgstr ""
msgstr "Courier"
#. module: account_reporting
#: selection:account.report.bs,font_style:0
@@ -98,7 +98,7 @@ msgstr ""
#. module: account_reporting
#: selection:account.report.bs,report_type:0
msgid "Report Objects With Accounts"
msgstr ""
msgstr "Objekti izvještaja sa kontima"
#. module: account_reporting
#: selection:account.report.bs,font_style:0
@@ -144,12 +144,12 @@ msgstr ""
#. module: account_reporting
#: selection:account.report.bs,font_style:0
msgid "Courier-Bold"
msgstr ""
msgstr "Courier-Bold"
#. module: account_reporting
#: selection:account.report.bs,font_style:0
msgid "Times-Italic"
msgstr ""
msgstr "Times-Italic"
#. module: account_reporting
#: selection:account.report.bs,report_type:0
@@ -184,12 +184,12 @@ msgstr ""
#. module: account_reporting
#: selection:account.report.bs,font_style:0
msgid "Times-Bold"
msgstr ""
msgstr "Times-Bold"
#. module: account_reporting
#: view:account.report.bs:0
msgid "General"
msgstr ""
msgstr "Općenito"
#. module: account_reporting
#: wizard_field:account.account.balancesheet.report,init,fiscalyear:0
@@ -205,7 +205,7 @@ msgstr ""
#. module: account_reporting
#: wizard_field:account.account.balancesheet.report,init,periods:0
msgid "Periods"
msgstr ""
msgstr "Periodi"
#. module: account_reporting
#: field:account.report.bs,color_back:0
@@ -1,7 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_account_voucher_user","account.voucher","model_account_voucher","account.group_account_user",1,0,0,0
"access_account_voucher_line_user","account.voucher.line","model_account_voucher_line","account.group_account_user",1,0,0,0
"access_account_open_voucher_user","account.open.voucher","model_account_open_voucher","account.group_account_user",1,0,0,0
"access_account_voucher_manager","account.voucher","model_account_voucher","account.group_account_manager",1,1,1,1
"access_account_voucher_line_manager","account.voucher.line","model_account_voucher_line","account.group_account_manager",1,1,1,1
"access_account_open_voucher_manager","account.open.voucher","model_account_open_voucher","account.group_account_manager",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_account_voucher_user account.voucher model_account_voucher account.group_account_user 1 0 0 0
3 access_account_voucher_line_user account.voucher.line model_account_voucher_line account.group_account_user 1 0 0 0
access_account_open_voucher_user account.open.voucher model_account_open_voucher account.group_account_user 1 0 0 0
4 access_account_voucher_manager account.voucher model_account_voucher account.group_account_manager 1 1 1 1
5 access_account_voucher_line_manager account.voucher.line model_account_voucher_line account.group_account_manager 1 1 1 1
access_account_open_voucher_manager account.open.voucher model_account_open_voucher account.group_account_manager 1 1 1 1
+163 -400
View File
@@ -20,14 +20,17 @@
##############################################################################
import time
import netsvc
from osv import fields
from osv import osv
import ir
import pooler
import mx.DateTime
from mx.DateTime import RelativeDateTime
from tools import config
journal2type = {
'cash':'rec_voucher',
'bank':'bank_rec_voucher',
'cash':'pay_voucher',
'sale':'journal_sale_vou',
'purchase':'journal_pur_voucher',
'general':'journal_voucher'
}
type2journal = {
'rec_voucher': 'cash',
@@ -68,8 +71,9 @@ class account_voucher(osv.osv):
return False
def _get_type(self, cr, uid, context={}):
type = context.get('type', 'bank_rec_voucher')
return type
vtype = context.get('type', 'bank')
voucher_type = journal2type.get(vtype)
return voucher_type
def _get_reference_type(self, cursor, user, context=None):
return [('none', 'Free Reference')]
@@ -91,15 +95,15 @@ class account_voucher(osv.osv):
return False
def _get_currency(self, cr, uid, context):
user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid)
user = self.pool.get('res.users').browse(cr, uid, uid)
if user.company_id:
return user.company_id.currency_id.id
else:
return pooler.get_pool(cr.dbname).get('res.currency').search(cr, uid, [('rate','=',1.0)])[0]
return self.pool.get('res.currency').search(cr, uid, [('rate','=',1.0)])[0]
_name = 'account.voucher'
_description = 'Accounting Voucher'
_order = "number"
_order = "id desc"
_columns = {
'name':fields.char('Name', size=256, required=True, readonly=True, states={'draft':[('readonly',False)]}),
'type': fields.selection([
@@ -107,7 +111,7 @@ class account_voucher(osv.osv):
('bank_pay_voucher','Bank Payment'),
('rec_voucher','Cash Receipt'),
('bank_rec_voucher','Bank Receipt'),
('cont_voucher','Contra'),
# ('cont_voucher','Contra'),
('journal_sale_vou','Journal Sale'),
('journal_pur_voucher','Journal Purchase'),
('journal_voucher','Journal Voucher'),
@@ -117,7 +121,7 @@ class account_voucher(osv.osv):
'account_id':fields.many2one('account.account', 'Account', required=True, readonly=True, states={'draft':[('readonly',False)]}, domain=[('type','<>','view')]),
'payment_ids':fields.one2many('account.voucher.line','voucher_id','Voucher Lines', readonly=False, states={'proforma':[('readonly',True)]}),
'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True, states={'posted':[('readonly',True)]}),
'narration':fields.text('Narration', readonly=True, states={'draft':[('readonly',False)]}, required=True),
'narration':fields.text('Narration', readonly=True, states={'draft':[('readonly',False)]}, required=False),
'currency_id': fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'company_id': fields.many2one('res.company', 'Company', required=True),
'state':fields.selection(
@@ -133,10 +137,10 @@ class account_voucher(osv.osv):
\n* The \'Posted\' state is used when user create voucher,a voucher number is generated and voucher entries are created in account \
\n* The \'Cancelled\' state is used when user cancel voucher.'),
'amount':fields.float('Amount', readonly=True),
'number':fields.char('Number', size=32, readonly=True),
'reference': fields.char('Voucher Reference', size=64),
'reference_type': fields.selection(_get_reference_type, 'Reference Type',
required=True),
'number': fields.related('move_id', 'name', type="char", readonly=True, string='Number'),
'move_id':fields.many2one('account.move', 'Account Entry'),
'move_ids':fields.many2many('account.move.line', 'voucher_id', 'account_id', 'rel_account_move', 'Real Entry'),
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True, states={'draft':[('readonly',False)]})
@@ -147,24 +151,17 @@ class account_voucher(osv.osv):
'type': _get_type,
'journal_id':_get_journal,
'currency_id': _get_currency,
'state': lambda *a: 'draft',
'date' : lambda *a: time.strftime('%Y-%m-%d'),
'reference_type': lambda *a: "none",
'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.voucher',context=c),
}
# def _get_analityc_lines(self, cr, uid, id):
# inv = self.browse(cr, uid, [id])[0]
# cur_obj = self.pool.get('res.currency')
def onchange_account(self, cr, uid, ids, account_id):
if not account_id:
return {
'value':{'amount':False}
}
account = self.pool.get('account.account').browse(cr, uid, account_id)
balance=account.balance
return {
@@ -176,7 +173,6 @@ class account_voucher(osv.osv):
return {
'value':{'account_id':False}
}
journal = self.pool.get('account.journal')
if journal_id and (type in ('rec_voucher','bank_rec_voucher','journal_pur_voucher','journal_voucher')):
@@ -196,30 +192,45 @@ class account_voucher(osv.osv):
}
def open_voucher(self, cr, uid, ids, context={}):
obj = self.pool.get('account.voucher').browse(cr, uid, ids)
voucher = self.pool.get('account.voucher').browse(cr, uid, ids)[0]
total = 0
for i in obj[0].payment_ids:
total += i.amount
for line in voucher.payment_ids:
total += line.amount
if total != 0:
self.write(cr, uid, ids, {'amount':total, 'state':'proforma'})
res = {
'amount':total,
'state':'proforma'
}
self.write(cr, uid, ids, res)
else:
raise osv.except_osv('Invalid action !', 'You cannot post to Pro-Forma a voucher with Total amount = 0 !')
return True
def proforma_voucher(self, cr, uid, ids, context={}):
self.action_number(cr, uid, ids)
self.action_move_line_create(cr, uid, ids)
self.write(cr, uid, ids, {'state':'posted'})
return True
def cancel_voucher(self, cr, uid, ids, context={}):
self.action_cancel(cr, uid, ids)
self.write(cr, uid, ids, {'state':'cancel'})
return True
def action_cancel_draft(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {'state':'draft'})
return True
def cancel_voucher(self, cr, uid, ids, context={}):
move_pool = self.pool.get('account.move')
for voucher in self.browse(cr, uid, ids):
if voucher.move_id:
move_pool.button_cancel(cr, uid, [voucher.move_id.id])
move_pool.unlink(cr, uid, [voucher.move_id.id])
res = {
'state':'cancel',
'move_id':False,
'move_ids':[(6, 0,[])]
}
self.write(cr, uid, ids, res)
return True
def unlink(self, cr, uid, ids, context=None):
vouchers = self.read(cr, uid, ids, ['state'])
@@ -231,237 +242,126 @@ class account_voucher(osv.osv):
raise osv.except_osv('Invalid action !', 'Cannot delete Voucher(s) which are already opened or paid !')
return super(account_voucher, self).unlink(cr, uid, unlink_ids, context=context)
def _get_analytic_lines(self, cr, uid, id):
inv = self.browse(cr, uid, [id])[0]
cur_obj = self.pool.get('res.currency')
company_currency = inv.company_id.currency_id.id
if inv.type in ('rec_voucher'):
sign = 1
else:
sign = -1
iml = self.pool.get('account.voucher.line').move_line_get(cr, uid, inv.id)
for il in iml:
if il['account_analytic_id']:
if inv.type in ('pay_voucher', 'rec_voucher','cont_voucher','bank_pay_voucher','bank_rec_voucher','journal_sale_vou','journal_pur_voucher'):
ref = inv.reference
else:
ref = self._convert_ref(cr, uid, inv.number)
il['analytic_lines'] = [(0, 0, {
'name': il['name'],
'date': inv['date'],
'account_id': il['account_analytic_id'],
'amount': inv['amount'] * sign,
'general_account_id': il['account_id'] or False,
'journal_id': self.pool.get('account.voucher').browse(cr, uid, id).journal_id.analytic_journal_id.id or False,
'ref': ref,
})]
return iml
def action_move_line_create(self, cr, uid, ids, *args):
journal_pool = self.pool.get('account.journal')
sequence_pool = self.pool.get('ir.sequence')
move_pool = self.pool.get('account.move')
move_line_pool = self.pool.get('account.move.line')
analytic_pool = self.pool.get('account.analytic.line')
currency_pool = self.pool.get('res.currency')
for inv in self.browse(cr, uid, ids):
if inv.move_id:
continue
company_currency = inv.company_id.currency_id.id
line_ids = self.read(cr, uid, [inv.id], ['payment_ids'])[0]['payment_ids']
ils = self.pool.get('account.voucher.line').read(cr, uid, line_ids)
iml = self._get_analytic_lines(cr, uid, inv.id)
diff_currency_p = inv.currency_id.id <> company_currency
total = 0
if inv.type in ('pay_voucher', 'journal_voucher', 'rec_voucher','cont_voucher','bank_pay_voucher','bank_rec_voucher','journal_sale_vou','journal_pur_voucher'):
ref = inv.reference
else:
ref = self._convert_ref(cr, uid, inv.number)
acc_id = None
date = inv.date
total_currency = 0
acc_id = None
for i in iml:
partner_id=i['partner_id']
acc_id = i['account_id']
if inv.currency_id.id != company_currency:
i['currency_id'] = inv.currency_id.id
i['amount_currency'] = i['amount']
else:
i['amount_currency'] = False
i['currency_id'] = False
if inv.type in ('rec_voucher','bank_rec_voucher','journal_pur_voucher','journal_voucher'):
total += i['amount']
total_currency += i['amount_currency'] or i['amount']
i['amount'] = - i['amount']
else:
total -= i['amount']
total_currency -= i['amount_currency'] or i['amount']
name = inv['name'] or '/'
totlines = False
iml.append({
'type': 'dest',
'name': name,
'amount': total or False,
'account_id': acc_id,
'amount_currency': diff_currency_p \
and total_currency or False,
'currency_id': diff_currency_p \
and inv.currency_id.id or False,
'ref': ref,
'partner_id':partner_id or False,
})
date = inv.date
inv.amount=total
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x,date, context={})) ,iml)
an_journal_id=inv.journal_id.analytic_journal_id.id
journal_id = inv.journal_id.id
journal = self.pool.get('account.journal').browse(cr, uid, journal_id)
ref = inv.reference
journal = journal_pool.browse(cr, uid, inv.journal_id.id)
if journal.sequence_id:
name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
name = sequence_pool.get_id(cr, uid, journal.sequence_id.id)
move = {
'name' : name,
'journal_id': journal_id,
'journal_id': journal.id,
'type' : inv.type,
'narration' : inv.narration,
'narration' : inv.narration and inv.narration or inv.name,
'date':inv.date
}
if inv.period_id:
move['period_id'] = inv.period_id.id
for i in line:
i[2]['period_id'] = inv.period_id.id
move_id = self.pool.get('account.move').create(cr, uid, move)
ref = move['name']
amount=0.0
#create the first line our self
move.update({
'period_id': inv.period_id.id
})
move_id = move_pool.create(cr, uid, move)
#create the first line manually
move_line = {
'name': inv.name,
'debit': False,
'credit':False,
'account_id': inv.account_id.id or False,
'move_id':move_id ,
'journal_id':journal_id ,
'period_id':inv.period_id.id,
'move_id': move_id ,
'journal_id': inv.journal_id.id,
'period_id': inv.period_id.id,
'partner_id': False,
'ref': ref,
'date': inv.date
}
if diff_currency_p:
amount_currency = currency_pool.compute(cr, uid, inv.currency_id.id, company_currency, inv.amount)
inv.amount = amount_currency
move_line.update({
'amount_currency':amount_currency,
'currency_id':inv.currency_id.id
})
if inv.type in ('rec_voucher', 'bank_rec_voucher', 'journal_pur_voucher', 'journal_voucher'):
move_line['debit'] = inv.amount
else:
move_line['credit'] = inv.amount * (-1)
self.pool.get('account.move.line').create(cr, uid, move_line)
move_line['credit'] = inv.amount
line_ids = []
line_ids += [move_line_pool.create(cr, uid, move_line)]
for line in inv.payment_ids:
amount=0.0
move_line = {
'name':line.name,
'debit':False,
'credit':False,
'account_id':line.account_id.id or False,
'move_id':move_id ,
'journal_id':journal_id ,
'period_id':inv.period_id.id,
'partner_id':line.partner_id.id or False,
'ref':ref,
'date':inv.date
}
if line.type == 'dr':
move_line['debit'] = line.amount or False
amount=line.amount
elif line.type == 'cr':
move_line['credit'] = line.amount or False
amount=line.amount * (-1)
move_line['analytic_account_id'] = line.account_analytic_id.id or False
ml_id=self.pool.get('account.move.line').create(cr, uid, move_line)
if inv.narration:
line.name = inv.narration
else:
line.name = line.name
'name': line.name,
'debit': False,
'credit': False,
'account_id': line.account_id.id or False,
'move_id': move_id ,
'journal_id': inv.journal_id.id,
'period_id': inv.period_id.id,
'partner_id': line.partner_id.id or False,
'ref': ref,
'date': inv.date,
'analytic_account_id': False
}
if diff_currency_p:
amount_currency = currency_pool.compute(cr, uid, inv.currency_id.id, company_currency, line.amount)
line.amount = amount_currency
move_line.update({
'amount_currency':amount_currency,
'currency_id':inv.currency_id.id
})
if line.account_analytic_id:
an_line = {
'name':line.name,
'date':inv.date,
'amount':amount,
'account_id':line.account_analytic_id.id or False,
'move_id':ml_id,
'journal_id':an_journal_id ,
'general_account_id':line.account_id.id,
'ref':ref
}
self.pool.get('account.analytic.line').create(cr, uid, an_line)
self.write(cr, uid, [inv.id], {'move_id': move_id})
obj=self.pool.get('account.move').browse(cr, uid, move_id)
for line in obj.line_id :
cr.execute('insert into voucher_id (account_id,rel_account_move) values (%d, %d)',(int(ids[0]),int(line.id)))
move_line.update({
'analytic_account_id':line.account_analytic_id.id
})
if line.type == 'dr':
move_line.update({
'debit': line.amount or False
})
amount = line.amount
elif line.type == 'cr':
move_line.update({
'credit': line.amount or False
})
amount = line.amount * (-1)
move_line_id = move_line_pool.create(cr, uid, move_line)
line_ids += [move_line_id]
rec = {
'move_id': move_id,
'move_ids':[(6, 0,line_ids)]
}
self.write(cr, uid, [inv.id], rec)
return True
def line_get_convert(self, cr, uid, x, date, context={}):
return {
'date':date,
'date_maturity': x.get('date_maturity', False),
'partner_id':x.get('partner_id',False),
'name':x['name'][:64],
'debit':x['amount']>0 and x['amount'],
'credit':x['amount']<0 and -x['amount'],
'account_id':x['account_id'],
'analytic_lines':x.get('analytic_lines', []),
'amount_currency':x.get('amount_currency', False),
'currency_id':x.get('currency_id', False),
'tax_code_id': x.get('tax_code_id', False),
'tax_amount': x.get('tax_amount', False),
'ref':x.get('ref',False)
}
def _convert_ref(self, cr, uid, ref):
return (ref or '').replace('/','')
def action_number(self, cr, uid, ids, *args):
cr.execute('SELECT id, type, number, move_id, reference ' \
'FROM account_voucher ' \
'WHERE id IN %s',(tuple(ids),))
for (id, invtype, number, move_id, reference) in cr.fetchall():
if not number:
number = self.pool.get('ir.sequence').get(cr, uid, invtype)
if type in ('pay_voucher', 'journal_voucher', 'rec_voucher','cont_voucher','bank_pay_voucher','bank_rec_voucher','journal_sale_vou','journal_pur_voucher'):
ref = reference
else:
ref = self._convert_ref(cr, uid, number)
cr.execute('UPDATE account_voucher SET number=%s ' \
'WHERE id=%s', (number, id))
cr.execute('UPDATE account_move_line SET ref=%s ' \
'WHERE move_id=%s AND (ref is null OR ref = \'\')',
(ref, move_id))
cr.execute('UPDATE account_analytic_line SET ref=%s ' \
'FROM account_move_line ' \
'WHERE account_move_line.move_id = %s ' \
'AND account_analytic_line.move_id = account_move_line.id',
(ref, move_id))
return True
def name_get(self, cr, uid, ids, context={}):
if not len(ids):
return []
@@ -498,19 +398,6 @@ class account_voucher(osv.osv):
default['date'] = time.strftime('%Y-%m-%d')
return super(account_voucher, self).copy(cr, uid, id, default, context)
def action_cancel(self, cr, uid, ids, *args):
account_move_obj = self.pool.get('account.move')
voucher = self.read(cr, uid, ids, ['move_id'])
for i in voucher:
if i['move_id']:
account_move_obj.button_cancel(cr, uid, [i['move_id'][0]])
# delete the move this invoice was pointing to
# Note that the corresponding move_lines and move_reconciles
# will be automatically deleted too
account_move_obj.unlink(cr, uid, [i['move_id'][0]])
self.write(cr, uid, ids, {'state':'cancel', 'move_id':False})
return True
account_voucher()
class account_voucher_line(osv.osv):
@@ -530,176 +417,52 @@ class account_voucher_line(osv.osv):
'type': lambda *a: 'cr'
}
def move_line_get(self, cr, uid, voucher_id, context={}):
res = []
cur_obj = self.pool.get('res.currency')
inv = self.pool.get('account.voucher').browse(cr, uid, voucher_id)
company_currency = inv.company_id.currency_id.id
cur = inv.currency_id
for line in inv.payment_ids:
res.append(self.move_line_get_item(cr, uid, line, context))
return res
def onchange_partner(self, cr, uid, ids, partner_id, ttype ,type1):
vals = {}
if not partner_id:
return {'value' : {'account_id' : False, 'type' : False ,'amount':False}}
obj = self.pool.get('res.partner')
vals.update({
'account_id': False,
'type': False ,
'amount': False
})
return {
'value' : vals
}
partner_pool = self.pool.get('res.partner')
account_id = False
partner = partner_pool.browse(cr, uid, partner_id)
if type1 in ('rec_voucher','bank_rec_voucher', 'journal_voucher'):
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
balance = obj.browse(cr,uid,partner_id).credit
account_id = partner.property_account_receivable.id
balance = partner.credit
ttype = 'cr'
elif type1 in ('pay_voucher','bank_pay_voucher','cont_voucher') :
account_id = obj.browse(cr, uid, partner_id).property_account_payable
balance = obj.browse(cr,uid,partner_id).debit
account_id = partner.property_account_payable.id
balance = partner.debit
ttype = 'dr'
elif type1 in ('journal_sale_vou') :
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
balance = obj.browse(cr,uid,partner_id).credit
account_id = partner.property_account_receivable.id
balance = partner.credit
ttype = 'dr'
elif type1 in ('journal_pur_voucher') :
account_id = obj.browse(cr, uid, partner_id).property_account_payable
balance = obj.browse(cr,uid,partner_id).debit
account_id = partner.property_account_payable.id
balance = partner.debit
ttype = 'cr'
vals.update({
'account_id': account_id,
'type': ttype,
'amount':balance
})
return {
'value' : {'account_id' : account_id.id, 'type' : ttype, 'amount':balance}
'value' : vals
}
def onchange_amount(self, cr, uid, ids, partner_id, amount, type, type1):
if not amount:
return {'value' : {}}
if partner_id:
obj = self.pool.get('res.partner')
if type1 in ('rec_voucher', 'bank_rec_voucher', 'journal_voucher'):
if amount < 0 :
account_id = obj.browse(cr, uid, partner_id).property_account_payable
type = 'dr'
else:
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
type = 'cr'
elif type1 in ('pay_voucher','bank_pay_voucher','cont_voucher') :
if amount < 0 :
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
type = 'cr'
else:
account_id = obj.browse(cr, uid, partner_id).property_account_payable
type = 'dr'
elif type1 in ('journal_sale_vou') :
if amount < 0 :
account_id = obj.browse(cr, uid, partner_id).property_account_payable
type = 'cr'
else:
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
type = 'dr'
elif type1 in ('journal_pur_voucher') :
if amount< 0 :
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
type = 'dr'
else:
account_id = obj.browse(cr, uid, partner_id).property_account_payable
type = 'cr'
else:
if type1 in ('rec_voucher', 'bank_rec_voucher', 'journal_voucher'):
if amount < 0 :
type = 'dr'
else:
type = 'cr'
elif type1 in ('pay_voucher','bank_pay_voucher','cont_voucher') :
if amount < 0 :
type = 'cr'
else:
type = 'dr'
elif type1 in ('journal_sale_vou') :
if amount < 0 :
type = 'cr'
else:
type = 'dr'
elif type1 in ('journal_pur_voucher') :
if amount< 0 :
type = 'dr'
else:
type = 'cr'
return {
'value' : { 'type' : type , 'amount':amount}
}
def onchange_type(self, cr, uid, ids, partner_id, amount, type, type1):
if partner_id:
obj = self.pool.get('res.partner')
if type1 in ('rec_voucher','bank_rec_voucher', 'journal_voucher'):
if type == 'dr' :
account_id = obj.browse(cr, uid, partner_id).property_account_payable
total=amount*(-1)
else:
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
total=amount*(-1)
elif type1 in ('pay_voucher','bank_pay_voucher','cont_voucher') :
if type == 'cr' :
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
total=amount*(-1)
else:
account_id = obj.browse(cr, uid, partner_id).property_account_payable
total=amount*(-1)
elif type1 in ('journal_sale_vou') :
if type == 'cr' :
account_id = obj.browse(cr, uid, partner_id).property_account_payable
total=amount*(-1)
else:
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
total=amount*(-1)
elif type1 in ('journal_pur_voucher') :
if type == 'dr' :
account_id = obj.browse(cr, uid, partner_id).property_account_receivable
total=amount*(-1)
else:
account_id = obj.browse(cr, uid, partner_id).property_account_payable
total=amount*(-1)
else:
if type1 in ('rec_voucher','bank_rec_voucher', 'journal_voucher'):
if type == 'dr' :
total=amount*(-1)
else:
total=amount*(-1)
elif type1 in ('pay_voucher','bank_pay_voucher','cont_voucher') :
if type == 'cr' :
total=amount*(-1)
else:
total=amount*(-1)
elif type1 in ('journal_sale_vou') :
if type == 'cr' :
total=amount*(-1)
else:
total=amount*(-1)
elif type1 in ('journal_pur_voucher') :
if type == 'dr' :
total=amount*(-1)
else:
total=amount*(-1)
return {
'value' : {'type' : type , 'amount':total}
}
def move_line_get_item(self, cr, uid, line, context={}):
return {
'type':'src',
'name': line.name[:64],
'amount':line.amount,
'account_id':line.account_id.id,
'partner_id':line.partner_id.id or False ,
'account_analytic_id':line.account_analytic_id.id or False,
'ref' : line.ref
}
account_voucher_line()
+20 -19
View File
@@ -35,32 +35,19 @@
</group>
<notebook colspan="4">
<page string="Journal Entries">
<field name="payment_ids" colspan="4" nolabel="1" height="260">
<field name="payment_ids" colspan="4" nolabel="1" height="250">
<tree string="Voucher Lines" editable="top">
<field name="account_analytic_id"/>
<field name="partner_id" on_change="onchange_partner(partner_id,type,parent.type)"/>
<field name="account_id"/>
<field name="name"/>
<field name="type"/>
<field name="amount"/>
<field name="account_analytic_id"/>
<field name="ref"/>
</tree>
</field>
<separator string="Narration" colspan="4"/>
<field name="narration" colspan="4" nolabel="1" height="50"/>
<group col="6" colspan="6">
<group col="2" colspan="2">
<field name="state"/>
</group>
<group col="8" colspan="4">
<button name="open_voucher" string="Pro-forma" states="draft" icon="terp-check"/>
<button name="proforma_voucher" string="Create" states="proforma" icon="terp-document-new"/>
<button name="recheck_voucher" string="Validate" states="recheck" icon="terp-check"/>
<button name="audit_complete" string="Audit Pass" states="posted" icon="terp-check"/>
<button name="cancel_voucher" string="Cancel" states="proforma,recheck,posted" icon="gtk-cancel"/>
<button name="cancel_to_draft" states="cancel" string="Set to Draft" icon="terp-stock_effects-object-colorize"/>
</group>
</group>
</page>
<page string="Other Info">
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
@@ -71,6 +58,15 @@
<field name="move_ids" colspan="4" nolabel="1" readonly="1"/>
</page>
</notebook>
<group col="8" colspan="4">
<field name="state"/>
<button name="open_voucher" string="Pro-forma" states="draft" icon="terp-check"/>
<button name="proforma_voucher" string="Create" states="proforma" icon="terp-document-new"/>
<button name="recheck_voucher" string="Validate" states="recheck" icon="terp-check"/>
<button name="audit_complete" string="Audit Pass" states="posted" icon="terp-check"/>
<button name="cancel_voucher" string="Cancel" states="proforma,recheck,posted" icon="gtk-cancel"/>
<button name="cancel_to_draft" states="cancel" string="Set to Draft" icon="terp-stock_effects-object-colorize"/>
</group>
</form>
</field>
</record>
@@ -136,14 +132,15 @@
</field>
</record>
<!-- Receipt Vouchers -->
<!-- Receipt Vouchers -->
<record model="ir.actions.act_window" id="action_receipt_vou_voucher_list">
<field name="name">Customer Vouchers</field>
<field name="name">Receivable Vouchers</field>
<field name="res_model">account.voucher</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="view_voucher_tree"/>
<field name="domain">[('journal_id.type','=','sale')]</field>
<field name="context">{'type':'sale'}</field>
<field name="search_view_id" ref="view_voucher_filter_new"/>
</record>
<menuitem id="menu_action_receipt_vou_voucher_list"
@@ -151,12 +148,13 @@
<!-- Purchase Vouchers -->
<record model="ir.actions.act_window" id="action_pay_vou_voucher_list">
<field name="name">Vendor Vouchers</field>
<field name="name">Payable Vouchers</field>
<field name="res_model">account.voucher</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="view_voucher_tree"/>
<field name="domain">[('journal_id.type','=','purchase')]</field>
<field name="context">{'type':'purchase'}</field>
<field name="search_view_id" ref="view_voucher_filter_new"/>
</record>
<menuitem id="menu_action_pay_vou_voucher_list"
@@ -168,6 +166,7 @@
<field name="res_model">account.voucher</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'type':'general'}</field>
<field name="view_id" eval="view_voucher_tree"/>
<field name="search_view_id" ref="view_voucher_filter"/>
</record>
@@ -179,10 +178,12 @@
<field name="res_model">account.voucher</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('journal_id.type', '=', 'bank')]</field>
<field name="context">{'type':'bank'}</field>
<field name="view_id" ref="view_voucher_tree"/>
<field name="search_view_id" ref="view_voucher_filter_new"/>
<field name="domain">[('journal_id.type', '=', 'bank')]</field>
</record>
<menuitem action="action_cheque_register" id="menu_action_cheque_register" parent="account.menu_finance_bank_and_cash"/>
<record model="ir.ui.view" id="view_account_journal_form_inherit">
+1 -1
View File
@@ -41,7 +41,7 @@
<record id="act_cancel" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">cancel</field>
<field name="action">write({'state':'cancel'})</field>
<field name="action">cancel_voucher()</field>
<field name="kind">function</field>
</record>
@@ -38,170 +38,127 @@ class account_voucher(osv.osv):
def action_move_line_create(self, cr, uid, ids, *args):
journal_pool = self.pool.get('account.journal')
sequence_pool = self.pool.get('ir.sequence')
move_pool = self.pool.get('account.move')
move_line_pool = self.pool.get('account.move.line')
analytic_pool = self.pool.get('account.analytic.line')
currency_pool = self.pool.get('res.currency')
invoice_pool = self.pool.get('account.invoice')
for inv in self.browse(cr, uid, ids):
if inv.move_id:
continue
company_currency = inv.company_id.currency_id.id
line_ids = self.read(cr, uid, [inv.id], ['payment_ids'])[0]['payment_ids']
ils = self.pool.get('account.voucher.line').read(cr, uid, line_ids)
iml = self._get_analytic_lines(cr, uid, inv.id)
diff_currency_p = inv.currency_id.id <> company_currency
total = 0
if inv.type in ('pay_voucher', 'journal_voucher', 'rec_voucher','cont_voucher','bank_pay_voucher','bank_rec_voucher','journal_sale_voucher','journal_pur_voucher'):
ref = inv.reference
else:
ref = self._convert_ref(cr, uid, inv.number)
date = inv.date
total_currency = 0
for i in iml:
partner_id=i['partner_id']
acc_id = i['account_id']
if inv.currency_id.id != company_currency:
i['currency_id'] = inv.currency_id.id
i['amount_currency'] = i['amount']
else:
i['amount_currency'] = False
i['currency_id'] = False
if inv.type in ('rec_voucher','bank_rec_voucher','journal_pur_voucher','journal_voucher'):
total += i['amount']
total_currency += i['amount_currency'] or i['amount']
i['amount'] = - i['amount']
else:
total -= i['amount']
total_currency -= i['amount_currency'] or i['amount']
name = inv['name'] or '/'
totlines = False
iml.append({
'type': 'dest',
'name': name,
'amount': total or False,
'account_id': acc_id,
'amount_currency': diff_currency_p \
and total_currency or False,
'currency_id': diff_currency_p \
and inv.currency_id.id or False,
'ref': ref,
'partner_id':partner_id or False,
})
date = inv.date
inv.amount=total
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x,date, context={})) ,iml)
an_journal_id=inv.journal_id.analytic_journal_id.id
journal_id = inv.journal_id.id
journal = self.pool.get('account.journal').browse(cr, uid, journal_id)
ref = inv.reference
journal = journal_pool.browse(cr, uid, inv.journal_id.id)
if journal.sequence_id:
name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
name = sequence_pool.get_id(cr, uid, journal.sequence_id.id)
move = {
'name': name,
'journal_id': journal_id,
'voucher_type':inv.type,
'narration' : inv.narration,
'data':date
'name' : name,
'journal_id': journal.id,
'type' : inv.type,
'narration' : inv.narration and inv.narration or inv.name,
'date':inv.date
}
if inv.period_id:
move['period_id'] = inv.period_id.id
for i in line:
i[2]['period_id'] = inv.period_id.id
move_id = self.pool.get('account.move').create(cr, uid, move)
ref=move['name']
amount=0.0
#create the first line our self
move.update({
'period_id': inv.period_id.id
})
move_id = move_pool.create(cr, uid, move)
#create the first line manually
move_line = {
'name': inv.name,
'voucher_invoice' : iml and iml[0]['invoice'] and iml[0]['invoice'].id or False,
'debit': False,
'credit':False,
'account_id': inv.account_id.id or False,
'move_id':move_id ,
'journal_id':journal_id ,
'period_id':inv.period_id.id,
'move_id': move_id ,
'journal_id': inv.journal_id.id,
'period_id': inv.period_id.id,
'partner_id': False,
'ref': ref,
'date': date
'date': inv.date
}
if diff_currency_p:
amount_currency = currency_pool.compute(cr, uid, inv.currency_id.id, company_currency, inv.amount)
inv.amount = amount_currency
move_line.update({
'amount_currency':amount_currency,
'currency_id':inv.currency_id.id
})
if inv.type in ('rec_voucher', 'bank_rec_voucher', 'journal_pur_voucher', 'journal_voucher'):
move_line['debit'] = inv.amount
else:
move_line['credit'] = inv.amount * (-1)
self.pool.get('account.move.line').create(cr, uid, move_line)
id_mapping_dict = {}
mline_ids = []
for line in inv.voucher_line_ids:
move_line['credit'] = inv.amount
line_ids = []
line_ids += [move_line_pool.create(cr, uid, move_line)]
for line in inv.payment_ids:
amount=0.0
move_line = {
'name':line.name,
'voucher_invoice' : iml and iml[0]['invoice'] and iml[0]['invoice'].id or False,
'debit':False,
'credit':False,
'move_id':move_id,
'account_id':line.account_id.id or False,
'journal_id':journal_id ,
'period_id':inv.period_id.id,
'partner_id':line.partner_id.id or False,
'ref':ref,
'date':date
}
if line.type == 'dr':
move_line['debit'] = line.amount or False
amount=line.amount
elif line.type == 'cr':
move_line['credit'] = line.amount or False
amount=line.amount * (-1)
ml_id=self.pool.get('account.move.line').create(cr, uid, move_line)
id_mapping_dict[line.id] = ml_id
total = 0.0
mline = self.pool.get('account.move.line')
if line.invoice_id.id:
invoice = self.pool.get('account.invoice').browse(cr, uid, line.invoice_id.id)
src_account_id = invoice.account_id.id
cr.execute('select id from account_move_line where move_id in ('+str(invoice.move_id.id)+')')
temp_ids = map(lambda x: x[0], cr.fetchall())
temp_ids.append(ml_id)
mlines = mline.browse(cr, uid, temp_ids)
for ml in mlines:
if ml.account_id.id==src_account_id:
mline_ids.append(ml.id)
total += (ml.debit or 0.0) - (ml.credit or 0.0)
#end if line.invoice_id.id:
if inv.narration:
line.name=inv.narration
else:
line.name=line.name
'name': line.name,
'debit': False,
'credit': False,
'account_id': line.account_id.id or False,
'move_id': move_id ,
'journal_id': inv.journal_id.id,
'period_id': inv.period_id.id,
'partner_id': line.partner_id.id or False,
'ref': ref,
'date': inv.date,
'analytic_account_id': False
}
if diff_currency_p:
amount_currency = currency_pool.compute(cr, uid, inv.currency_id.id, company_currency, line.amount)
line.amount = amount_currency
move_line.update({
'amount_currency':amount_currency,
'currency_id':inv.currency_id.id
})
if line.account_analytic_id:
an_line = {
'name':line.name,
'date':date,
'amount':amount,
'account_id':line.account_analytic_id.id or False,
'move_id':ml_id,
'journal_id':an_journal_id ,
'general_account_id':line.account_id.id,
'ref':ref
}
self.pool.get('account.analytic.line').create(cr, uid, an_line)
if mline_ids:
self.pool.get('account.move.line').reconcile_partial(cr, uid, mline_ids, 'manual', context={})
self.write(cr, uid, [inv.id], {'move_id': move_id})
obj=self.pool.get('account.move').browse(cr, uid, move_id)
for line in obj.line_id :
cr.execute('insert into voucher_id (account_id,rel_account_move) values (%d, %d)',(int(ids[0]),int(line.id)))
return True
move_line.update({
'analytic_account_id':line.account_analytic_id.id
})
if line.type == 'dr':
move_line.update({
'debit': line.amount or False
})
amount = line.amount
elif line.type == 'cr':
move_line.update({
'credit': line.amount or False
})
amount = line.amount
if line.invoice_id:
move_line.update({
'invoice_id':line.invoice_id.id
})
invoice_pool.pay_and_reconcile(cr, uid, [line.invoice_id.id], amount, inv.account_id.id, inv.period_id.id, inv.journal_id.id, False, False, False)
move_line_id = move_line_pool.create(cr, uid, move_line)
line_ids += [move_line_id]
rec = {
'move_id': move_id,
'move_ids':[(6, 0,line_ids)]
}
self.write(cr, uid, [inv.id], rec)
return True
account_voucher()
@@ -222,18 +179,29 @@ class account_voucher_line(osv.osv):
res['invoice'] = line.invoice_id or False
return res
def onchange_invoice_id(self, cr, uid, ids, invoice_id, context={}):
lines = []
if 'lines' in self.voucher_context:
lines = [x[2] for x in self.voucher_context['lines']]
def onchange_invoice_id(self, cr, uid, ids, invoice_id, currency_id):
currency_pool = self.pool.get('res.currency')
invoice_pool = self.pool.get('account.invoice')
res = {
'amount':0.0
}
if not invoice_id:
return {'value':{}}
return {
'value':res
}
else:
invoice_obj = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context)
residual = invoice_obj.residual
same_invoice_amounts = [x['amount'] for x in lines if x['invoice_id']==invoice_id]
residual -= sum(same_invoice_amounts)
return {'value' : {'amount':residual}}
invoice = invoice_pool.browse(cr, uid, invoice_id)
residual = invoice.residual
if invoice.currency_id.id != currency_id:
residual = currency_pool.compute(cr, uid, invoice.currency_id.id, currency_id, invoice.residual)
res.update({
'amount': residual
})
return {
'value':res
}
def onchange_line_account(self, cr, uid, ids, account_id, type, type1):
if not account_id:
@@ -1,21 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--
Voucher line extension
-->
<record id="view_voucher_form" model="ir.ui.view">
<field name="name">account.voucher.line.form.inherit</field>
<field name="model">account.voucher.line</field>
<field name="type">form</field>
<field name="inherit_id" ref="account_voucher.view_voucher_form"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="invoice_id" on_change="onchange_invoice_id(invoice_id)" domain="[('partner_id','=',partner_id),('state','=','open')]"/>
</field>
</field>
</record>
<record id="view_voucher_form" model="ir.ui.view">
<field name="name">account.voucher.form.inherit</field>
<field name="model">account.voucher</field>
@@ -23,15 +8,15 @@
<field name="inherit_id" ref="account_voucher.view_voucher_form"/>
<field name="arch" type="xml">
<field name="payment_ids" position="replace">
<field name="voucher_line_ids" default_get="{'lines': voucher_line_ids }" colspan="4" nolabel="1" height="275">
<field name="voucher_line_ids" default_get="{'lines': voucher_line_ids}" colspan="4" nolabel="1" height="275">
<tree string="Voucher Lines" editable="top">
<field name="account_analytic_id"/>
<field name="partner_id" on_change="onchange_partner(partner_id, type, parent.type)"/>
<field name="account_id" on_change="onchange_line_account(account_id, type, parent.type)"/>
<field name="name"/>
<field name="invoice_id" on_change="onchange_invoice_id(invoice_id)" domain="[('partner_id','=',partner_id),('state','=','open'),('residual','&gt;',0.0)]"/>
<field name="invoice_id" on_change="onchange_invoice_id(invoice_id, parent.currency_id)" domain="[('partner_id','=',partner_id),('state','=','open'),('residual','&gt;',0.0)]"/>
<field name="type"/>
<field name="amount"/>
<field name="account_analytic_id"/>
<field name="ref"/>
</tree>
</field>
@@ -1,3 +1 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_account_voucher_unreconcile_user","account.voucher.unreconcile","model_account_voucher_unreconcile","account.group_account_user",1,0,0,0
"access_account_voucher_unreconcile_manager","account.voucher.unreconcile","model_account_voucher_unreconcile","account.group_account_manager",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
access_account_voucher_unreconcile_user account.voucher.unreconcile model_account_voucher_unreconcile account.group_account_user 1 0 0 0
access_account_voucher_unreconcile_manager account.voucher.unreconcile model_account_voucher_unreconcile account.group_account_manager 1 1 1 1
@@ -27,20 +27,20 @@ class account_voucher_unreconcile(osv.osv_memory):
def trans_unrec(self, cr, uid, ids, context=None):
if context is None:
context = {}
obj_voucher = self.pool.get('account.voucher')
obj_reconcile = self.pool.get('account.move.reconcile')
voucher_pool = self.pool.get('account.voucher')
reconcile_pool = self.pool.get('account.move.reconcile')
if context.get('active_id'):
voucher = obj_voucher.browse(cr, uid, context.get('active_id'), context=context)
recs = []
for line in voucher.move_ids:
if line.reconcile_id:
recs = [line.reconcile_id.id]
for rec in recs:
obj_reconcile.unlink(cr, uid, rec)
return {}
account_voucher_unreconcile()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -2,28 +2,36 @@
<openerp>
<data>
<record id="view_account_voucher_unreconcile" model="ir.ui.view">
<record id="view_account_voucher_unreconcile" model="ir.ui.view">
<field name="name">Account voucher unreconcile</field>
<field name="model">account.voucher.unreconcile</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Unreconciliation">
<separator colspan="4" string="Unreconciliation transactions" />
<label string="If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable" colspan="2"/>
<separator colspan="4"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="trans_unrec" default_focus="1" string="Unreconcile" type="object" icon="gtk-ok"/>
<separator colspan="4" string="Unreconciliation transactions" />
<label string="If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable" colspan="2"/>
<separator colspan="4"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="trans_unrec" default_focus="1" string="Unreconcile" type="object" icon="gtk-ok"/>
</form>
</field>
</record>
<act_window name="Unreconcile entries"
res_model="account.voucher.unreconcile"
src_model="account.voucher"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_view_account_voucher_unreconcile"/>
</record>
<record model="ir.actions.act_window" id="action_view_account_voucher_unreconcile">
<field name="name">Unreconcile entries</field>
<field name="res_model">account.voucher.unreconcile</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_account_voucher_unreconcile"/>
<field name="target">new</field>
</record>
<!-- <act_window name="Unreconcile entries" -->
<!-- res_model="account.voucher.unreconcile"-->
<!-- src_model="account.voucher"-->
<!-- view_mode="form"-->
<!-- target="new" -->
<!-- key2="client_action_multi" -->
<!-- id="action_view_account_voucher_unreconcile"/>-->
</data>
</openerp>
</openerp>
@@ -22,4 +22,3 @@
"access_report_object_encoded","report.object.encoded","model_report_object_encoded","base.group_user",1,0,0,0
"access_report_object_encoded_manager","report.object.encoded.manager","model_report_object_encoded_manager","base.group_user",1,0,0,0
"access_report_unclassified_objects","report.unclassified.objects","model_report_unclassified_objects","base.group_user",1,0,0,0
"access_auction_lots_buyer_map_user","auction_lots_buyer_map_user","model_auction_lots_buyer_map","base.group_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
22 access_report_object_encoded report.object.encoded model_report_object_encoded base.group_user 1 0 0 0
23 access_report_object_encoded_manager report.object.encoded.manager model_report_object_encoded_manager base.group_user 1 0 0 0
24 access_report_unclassified_objects report.unclassified.objects model_report_unclassified_objects base.group_user 1 0 0 0
access_auction_lots_buyer_map_user auction_lots_buyer_map_user model_auction_lots_buyer_map base.group_user 1 0 0 0
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2008-10-30 04:07+0000\n"
"Last-Translator: Sergei Kostigoff <sergei.kostigoff@gmail.com>\n"
"PO-Revision-Date: 2010-07-07 22:35+0000\n"
"Last-Translator: Pomazan Bogdan <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 03:55+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:49+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_iban
@@ -55,7 +55,7 @@ msgstr ""
#. module: base_iban
#: model:res.partner.bank.type,name:base_iban.bank_iban
msgid "IBAN Account"
msgstr ""
msgstr "IBAN Аккаунт"
#. module: base_iban
#: model:res.partner.bank.type.field,name:base_iban.bank_acc_number_field
+112 -6
View File
@@ -12,7 +12,7 @@
<field name="type">lead</field>
<field name="user_id" ref="base.user_root"/>
<field eval="'Luc Latour'" name="partner_name"/>
<field eval="'open'" name="state"/>
<field eval="'draft'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="'(726) 782-0636'" name="mobile"/>
<field eval="1" name="active"/>
@@ -21,13 +21,14 @@
<field eval="'The Oil Company'" name="name"/>
<field eval="'(769) 703-274'" name="phone"/>
</record>
<record id="crm_case_electonicgoodsdealer0" model="crm.lead">
<field name="type_id" ref="crm.type_lead7"/>
<field eval="'4'" name="priority"/>
<field name="type">lead</field>
<field name="user_id" ref="base.user_root"/>
<field eval="'Marc Dufour'" name="partner_name"/>
<field eval="'open'" name="state"/>
<field eval="'draft'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="'(392) 895-7917'" name="mobile"/>
<field eval="1" name="active"/>
@@ -36,13 +37,14 @@
<field eval="'Le Club SARL'" name="name"/>
<field eval="'(956) 293-2595'" name="phone"/>
</record>
<record id="crm_case_developingwebapplications0" model="crm.lead">
<field name="type_id" ref="crm.type_lead5"/>
<field eval="'2'" name="priority"/>
<field name="type">lead</field>
<field name="user_id" ref="base.user_demo"/>
<field eval="'Fabien Pinckaers'" name="partner_name"/>
<field eval="'done'" name="state"/>
<field eval="'draft'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="'(820) 167-3208'" name="mobile"/>
<field eval="1" name="active"/>
@@ -67,13 +69,14 @@
<field eval="'The Gas Company'" name="name"/>
<field eval="'(514) 698-4118'" name="phone"/>
</record>
<record id="crm_case_itdeveloper0" model="crm.lead">
<field name="type_id" ref="crm.type_lead4"/>
<field eval="'3'" name="priority"/>
<field name="type">lead</field>
<field name="user_id" ref="base.user_root"/>
<field eval="'Carrie Helle'" name="partner_name"/>
<field eval="'pending'" name="state"/>
<field eval="'draft'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="'(333) 715-1450'" name="mobile"/>
<field eval="1" name="active"/>
@@ -82,6 +85,7 @@
<field eval="'Stonage IT'" name="name"/>
<field eval="'(855) 924-4364'" name="phone"/>
</record>
<record id="crm_case_mgroperations0" model="crm.lead">
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
@@ -91,7 +95,7 @@
<field name="type">lead</field>
<field name="user_id" ref="base.user_root"/>
<field eval="'Tina Pinero'" name="partner_name"/>
<field eval="'cancel'" name="state"/>
<field eval="'draft'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="'(468) 017-2684'" name="mobile"/>
<field name="categ_id" ref="crm.categ_oppor8"/>
@@ -107,7 +111,7 @@
<field name="type">lead</field>
<field name="user_id" ref="base.user_root"/>
<field eval="'Wendi Baltz'" name="partner_name"/>
<field eval="'done'" name="state"/>
<field eval="'draft'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="'(463) 014-1208'" name="mobile"/>
<field name="categ_id" ref="crm.categ_oppor4"/>
@@ -115,5 +119,107 @@
<field eval="'Gardner Group'" name="name"/>
<field eval="'(282) 603-7489'" name="phone"/>
</record>
<record id="crm_case_webvisitor0" model="crm.lead">
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead5"/>
<field eval="&quot;1&quot;" name="priority"/>
<field name="type">lead</field>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;Questionnaire&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Smith John&quot;" name="partner_name2"/>
<field eval="&quot;(487) 013-1504&quot;" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_oppor6"/>
<field eval="&quot;Website Visitor&quot;" name="partner_name"/>
<field eval="&quot;smith_john@gmail.com&quot;" name="email_from"/>
<field eval="time.strftime('%Y-%m-16 10:05:15')" name="date"/>
</record>
<record id="crm_case_business_card0" model="crm.lead">
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead3"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="type">lead</field>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Marketing Products&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Elvis Borne&quot;" name="partner_name2"/>
<field eval="&quot;(147) 014-6574&quot;" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_oppor5"/>
<field name="stage_id" ref="crm.stage_lead1"/>
<field eval="&quot;Business Card&quot;" name="partner_name"/>
<field eval="&quot;(124) 587-8974&quot;" name="partner_phone"/>
<field eval="time.strftime('%Y-%m-16 11:05:15')" name="date"/>
</record>
<record id="crm_case_imported_contact0" model="crm.lead">
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead8"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="type">lead</field>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;Business Group&quot;" name="name"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Drew Clark&quot;" name="partner_name2"/>
<field eval="&quot;(125) 021-4781&quot;" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_oppor1"/>
<field name="stage_id" ref="crm.stage_lead2"/>
<field eval="&quot;Imported Contact&quot;" name="partner_name"/>
</record>
<record id="crm_case_employee0" model="crm.lead">
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead3"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="type">lead</field>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;OpenERP Campaining&quot;" name="name"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Carl Nelson&quot;" name="partner_name2"/>
<field eval="&quot;(874) 022-6574&quot;" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_oppor3"/>
<field name="stage_id" ref="crm.stage_lead3"/>
<field eval="&quot;Campaining&quot;" name="partner_name"/>
<field eval="&quot;(232) 147-6329&quot;" name="partner_phone"/>
</record>
<record id="crm_case_company_partnership0" model="crm.lead">
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead3"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="type">lead</field>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;Offer&quot;" name="name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Joe Lucas&quot;" name="partner_name2"/>
<field eval="&quot;(234) 031-1254&quot;" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_oppor7"/>
<field name="stage_id" ref="crm.stage_lead1"/>
<field eval="&quot;Partnership Offer&quot;" name="partner_name"/>
<field eval="&quot;(254) 954-2147&quot;" name="partner_phone"/>
</record>
<!-- Call Function to Open the leads-->
<function model="crm.lead" name="case_open">
<value eval="[ref('crm_case_itisatelesalescampaign0'), ref('crm_case_electonicgoodsdealer0'), ref('crm_case_company_partnership0'), ref('crm_case_webvisitor0'), ref('crm_case_business_card0')]"/>
</function>
<!-- Call Function to mark the lead as Pending-->
<function model="crm.lead" name="case_pending">
<value eval="[ref('crm_case_itdeveloper0')]"/>
</function>
<!-- Call Function to Close the leads-->
<function model="crm.lead" name="case_close">
<value eval="[ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')]"/>
</function>
<!-- Call Function to Cancel the leads-->
<function model="crm.lead" name="case_cancel">
<value eval="[ref('crm_case_mgroperations0'), ref('crm_case_imported_contact0')]"/>
</function>
</data>
</openerp>
+1 -1
View File
@@ -146,7 +146,7 @@ class crm_lead_report(osv.osv):
0 as avg_answers,
0.0 as perc_done,
0.0 as perc_cancel,
(SELECT count(id) FROM mailgate_message WHERE model='crm.lead' AND res_id=c.id) AS email,
(SELECT count(id) FROM mailgate_message WHERE model='crm.lead' AND res_id=c.id AND history=True) AS email,
date_trunc('day',c.create_date) as create_date,
extract('epoch' from (c.date_closed-c.create_date))/(3600*24) as delay_close,
extract('epoch' from (c.date_deadline - c.date_closed))/(3600*24) as delay_expected,
+5 -14
View File
@@ -56,15 +56,6 @@
<field name="arch" type="xml">
<search string="Leads Analysis">
<group col="20" colspan="8">
<filter icon="terp-check"
string="Opportunities"
name="opportunity"
domain="[('type','=','opportunity')]"/>
<filter icon="terp-check"
string="Leads"
name="lead"
domain="[('type','=','lead')]"/>
<separator orientation="vertical" />
<filter string="Last 365 Days" icon="terp-go-year"
domain="[('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"/>
<filter string="Last 30 Days" icon="terp-go-month" name="this_month"
@@ -74,7 +65,7 @@
<separator orientation="vertical" />
<filter icon="terp-check"
string="Current"
domain="[('state','in',('draft','open')]"/>
domain="[('state','in',('draft','open'))]"/>
<filter icon="terp-check"
string="Pending"
domain="[('state','=','pending')]"/>
@@ -96,7 +87,7 @@
</field>
</group>
<newline/>
<group expand="0" string="Group By...">
<group expand="1" string="Group By...">
<filter string="User" name="user" icon="terp-personal"
domain="[]" context="{'group_by':'user_id'}" />
<filter string="Partner" icon="terp-personal" context="{'group_by':'partner_id'}" />
@@ -149,7 +140,7 @@
<field name="model">crm.lead.report</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Leads Analysis">
<tree string="Opportunities Analysis">
<field name="name" invisible="1"/>
<field name="month" invisible="1"/>
<field name="section_id" invisible="1" groups="base.group_extended"/>
@@ -181,7 +172,7 @@
<field name="view_type">form</field>
<field name="context">{'search_default_lead':1, "search_default_user":1,"search_default_this_month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[]</field>
<field name="domain">[('type', '=', 'lead')]</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_lead_tree">
@@ -204,7 +195,7 @@
<field name="view_type">form</field>
<field name="context">{"search_default_opportunity": 1, "search_default_user":1,"search_default_this_month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[]</field>
<field name="domain">[('type', '=', 'opportunity')]</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_opportunity_tree">
@@ -114,7 +114,7 @@
</field>
</group>
<newline/>
<group expand="0" string="Group By...">
<group expand="1" string="Group By...">
<filter string="User" name="User" icon="terp-personal"
domain="[]" context="{'group_by':'user_id'}" />
<filter string="Partner" icon="terp-personal" context="{'group_by':'partner_id'}" />
+7 -6
View File
@@ -33,7 +33,7 @@ class hr_employee_category(osv.osv):
'child_ids': fields.one2many('hr.employee.category', 'parent_id', 'Child Categories')
}
def _check_recursion(self, cr, uid, ids):
def _check_recursion(self, cr, uid, ids, context=None):
level = 100
while len(ids):
cr.execute('select distinct parent_id from hr_employee_category where id IN %s', (tuple(ids), ))
@@ -53,9 +53,10 @@ class hr_employee_marital_status(osv.osv):
_name = "hr.employee.marital.status"
_description = "Employee Marital Status"
_columns = {
'name': fields.char('Marital Status', size=30, required=True),
'name': fields.char('Marital Status', size=32, required=True),
'description': fields.text('Status Description'),
}
hr_employee_marital_status()
class hr_job(osv.osv):
@@ -95,11 +96,11 @@ class hr_employee(osv.osv):
'country_id': fields.many2one('res.country', 'Nationality'),
'birthday': fields.date("Birthday"),
'ssnid': fields.char('SSN No', size=32, help='Social Security Number'),
'sinid': fields.char('SIN No', size=32),
'sinid': fields.char('SIN No', size=32, help="Social Insurance Number"),
'otherid': fields.char('Other ID', size=32),
'gender': fields.selection([('male', 'Male'),('female', 'Female')], 'Gender'),
'marital': fields.many2one('hr.employee.marital.status', 'Marital Status'),
'bank_account': fields.char('Bank Account', size=56),
'bank_account': fields.char('Bank Account', size=64),
'partner_id': fields.related('company_id', 'partner_id', type='many2one', relation='res.partner', readonly=True),
'department_id':fields.many2one('hr.department','Department'),
'address_id': fields.many2one('res.partner.address', 'Working Address'),
@@ -127,7 +128,7 @@ class hr_employee(osv.osv):
'photo': _get_photo,
}
def _check_recursion(self, cr, uid, ids):
def _check_recursion(self, cr, uid, ids, context=None):
level = 100
while len(ids):
cr.execute('select distinct parent_id from hr_employee where id IN %s',(tuple(ids),))
@@ -143,4 +144,4 @@ class hr_employee(osv.osv):
hr_employee()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+10 -10
View File
@@ -39,7 +39,7 @@ class hr_department(osv.osv):
return res
def _dept_name_get_fnc(self, cr, uid, ids, prop, unknow_none, context=None):
res = self.name_get(cr, uid, ids, context)
res = self.name_get(cr, uid, ids, context=context)
return dict(res)
_name = "hr.department"
@@ -53,20 +53,20 @@ class hr_department(osv.osv):
'manager_id': fields.many2one('res.users', 'Manager', required=True),
'member_ids': fields.many2many('res.users', 'hr_department_user_rel', 'department_id', 'user_id', 'Members'),
}
_defaults = {
_defaults = {
'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'hr.department', context=c),
}
}
def _get_members(self,cr, uid, context=None):
mids = self.search(cr, uid, [('manager_id', '=', uid)])
result = {uid:1}
for m in self.browse(cr, uid, mids, context):
result = {uid: 1}
for m in self.browse(cr, uid, mids, context=context):
for user in m.member_ids:
result[user.id] = 1
return result.keys()
def _check_recursion(self, cr, uid, ids):
def _check_recursion(self, cr, uid, ids, context=None):
level = 100
while len(ids):
cr.execute('select distinct parent_id from hr_department where id IN %s',(tuple(ids),))
@@ -122,12 +122,12 @@ class res_users(osv.osv):
result[user_id] = parent_ids
return result
def _parent_search(self, cr, uid, obj, name, args, context):
def _parent_search(self, cr, uid, obj, name, args, context=None):
parent = []
for arg in args:
if arg[0] == 'parent_id':
parent = arg[2]
child_ids = self._child_compute(cr, uid, parent, name, args, {})
child_ids = self._child_compute(cr, uid, parent, name, args, context=context)
if not child_ids:
return [('id', 'in', [0])]
return [('id', 'in', child_ids.get(uid,[]))]
@@ -163,7 +163,7 @@ class res_users(osv.osv):
for arg in args:
if arg[0] == 'child_ids':
parent = arg[2]
child_ids = self._child_compute(cr, uid, parent, name, args, {})
child_ids = self._child_compute(cr, uid, parent, name, args, context=context)
if not child_ids:
return [('id', 'in', [0])]
return [('id', 'in', child_ids.get(uid,[]))]
+16 -2
View File
@@ -89,6 +89,7 @@
<field name="department_id"/>
<field name="job_id"/>
<field name="parent_id"/>
<field name="coach_id" invisible="1" />
</tree>
</field>
</record>
@@ -150,9 +151,20 @@
<!--
=======================
Employee marital status
=======================
=======================
-->
<record id="hr_hr_employee_marital_status_tree" model="ir.ui.view">
<field name="name">hr.hr.employee.marital.status.tree</field>
<field name="model">hr.employee.marital.status</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Marital Status">
<field name="name" />
</tree>
</field>
</record>
<record id="hr_hr_employee_marital_status_form" model="ir.ui.view">
<field name="name">hr.hr.employee.marital.status</field>
<field name="model">hr.employee.marital.status</field>
@@ -171,6 +183,7 @@
<field name="res_model">hr.employee.marital.status</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="hr_hr_employee_marital_status_tree"/>
</record>
<menuitem action="action_hr_marital_status" id="hr_menu_marital_status"
@@ -307,6 +320,7 @@
<group col="6" colspan="4">
<field name="name" />
<field name="department_id" />
<newline/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<field name="expected_employees"/>
<field name="no_of_employee"/>
@@ -358,7 +372,7 @@
<separator orientation="vertical"/>
<field name="name"/>
<field name="department_id" widget="selection">
<filter icon="terp-gtk-select-all" domain="[('department_id','=',context.get('department_id',False))]" help="My Departments Jobs"/>
<filter icon="terp-gtk-select-all" domain="[('department_id', '=', context.get('department_id', False))]" help="My Departments Jobs"/>
</field>
</search>
</field>
@@ -2,6 +2,5 @@
"access_hr_action_reason_employee","hr action reason employee","model_hr_action_reason","hr_attendance.group_hr_attendance",1,0,0,0
"access_hr_action_reason_employee","hr action reason employee","model_hr_action_reason","hr.group_hr_manager",1,1,1,1
"access_hr_attendance_employee","hr attendance employee","model_hr_attendance","hr_attendance.group_hr_attendance",1,1,1,1
"access_hr_sign_in_out","hr attendance sign in out","model_hr_sign_in_out","hr_attendance.group_hr_attendance",1,1,1,1
"access_hr_attendance_employee","hr employee attendance sign in out","hr.model_hr_employee","hr_attendance.group_hr_attendance",1,0,0,0
"access_hr_attendance_resource","hr resource attendance sign in out","resource.model_resource_resource","hr_attendance.group_hr_attendance",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_action_reason_employee hr action reason employee model_hr_action_reason hr_attendance.group_hr_attendance 1 0 0 0
3 access_hr_action_reason_employee hr action reason employee model_hr_action_reason hr.group_hr_manager 1 1 1 1
4 access_hr_attendance_employee hr attendance employee model_hr_attendance hr_attendance.group_hr_attendance 1 1 1 1
access_hr_sign_in_out hr attendance sign in out model_hr_sign_in_out hr_attendance.group_hr_attendance 1 1 1 1
5 access_hr_attendance_employee hr employee attendance sign in out hr.model_hr_employee hr_attendance.group_hr_attendance 1 0 0 0
6 access_hr_attendance_resource hr resource attendance sign in out resource.model_resource_resource hr_attendance.group_hr_attendance 1 0 0 0
@@ -38,6 +38,7 @@ class hr_expense_report(osv.osv):
'product_id':fields.many2one('product.product', 'Product', readonly=True),
'journal_id': fields.many2one('account.journal', 'Force Journal', readonly=True),
'product_qty':fields.float('Qty', readonly=True),
'invoiced':fields.integer('# of Invoiced Lines', readonly=True),
'employee_id': fields.many2one('hr.employee', "Employee's Name", readonly=True),
'date_confirm': fields.date('Confirmation Date', readonly=True),
'date_valid': fields.date('Validation Date', readonly=True),
@@ -77,6 +78,7 @@ class hr_expense_report(osv.osv):
to_date(to_char(s.date_confirm, 'dd-MM-YYYY'),'dd-MM-YYYY') as date_confirm,
to_date(to_char(s.date_valid, 'dd-MM-YYYY'),'dd-MM-YYYY') as date_valid,
s.invoice_id,
count(s.invoice_id) as invoiced,
s.user_valid as user_id,
s.department_id,
to_char(date_trunc('day',s.create_date), 'YYYY') as year,
@@ -17,17 +17,17 @@
<field name="analytic_account" invisible="1"/>
<field name="department_id" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="journal_id" invisible="1"/>
<field name="currency_id" invisible="1"/>
<field name="product_id" invisible="1"/>
<field name="product_qty" invisible="1"/>
<field name="state" invisible="1"/>
<field name="invoiced" sum="Total Invoiced Lines"/>
<field name="nbr" sum="# of Lines"/>
<field name="no_of_products" sum="# of Products"/>
<field name="delay_valid"/>
<field name="delay_confirm"/>
<field name="price_average" avg="Average Price"/>
<field name="price_total" sum="Total Price"/>
<field name="delay_confirm"/>
<field name="delay_valid"/>
</tree>
</field>
</record>
@@ -62,15 +62,14 @@
<filter icon="terp-go-week" string=" 7 Days " separator="1"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]" help="Expenses during last 7 days"/>
<separator orientation="vertical"/>
<filter string="Draft" icon="terp-document-new" domain="[('state','=','draft')]" help = "Draft Expenses"/>
<filter string="Waiting" icon="terp-gtk-media-pause" domain="[('state', '=' ,'confirm')]"
<filter string="Draft" icon="terp-document-new" domain="[('state','=','draft')]" help = "Draft Expenses"/>
<filter string="Waiting" icon="terp-gtk-media-pause" domain="[('state', '=' ,'confirm')]"
help = "Confirm Expenses"/>
<filter string="Accepted" icon="terp-camera_test" domain="[('state','=','accepted')]"
<filter string="Accepted" icon="terp-camera_test" domain="[('state','=','accepted')]"
help = "Accepted Expenses"/>
<filter string="Cancelled" icon="terp-dialog-close" domain="[('state','=','cancelled')]"
help = "Cancelled Expenses"/>
<separator orientation="vertical"/>
<separator orientation="vertical"/>
<field name="employee_id"/>
<field name="department_id"/>
</group>
<newline/>
<group expand="1" string="Group By...">
@@ -80,7 +79,6 @@
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
<separator orientation="vertical"/>
<filter string="Analytic account" icon="terp-folder-green" context="{'group_by':'analytic_account'}"/>
<filter string="Force Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/>
<separator orientation="vertical"/>
<filter string="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
@@ -96,10 +94,6 @@
<group expand="0" string="Extended filters..." groups="base.group_extended">
<field name="product_id"/>
<separator orientation="vertical"/>
<field name="journal_id" widget="selection"/>
<separator orientation="vertical"/>
<field name="department_id"/>
<separator orientation="vertical"/>
<field name="user_id"/>
<separator orientation="vertical"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
@@ -10,18 +10,17 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Available Holidays">
<field name="employee_id"/>
<field name="category_id"/>
<field name="holiday_status_id"/>
<field name="employee_id" invisible="1"/>
<field name="category_id" invisible="1"/>
<field name="holiday_status_id" invisible="1"/>
<field name="department_id" invisible="1"/>
<field name="day" invisible="1"/>
<field name="month" invisible="1"/>
<field name="year" invisible="1"/>
<field name="date" invisible="1"/>
<field name="max_leave" sum="Allocated Leaves"/>
<field name="taken_leaves" sum="Taken Leaves"/>
<field name="user_id" invisible="1"/>
<field name="remaining_leave" sum="Remaining Leaves"/>
<field name="year" invisible="1"/>
<field name="day" invisible="1"/>
<field name="month" invisible="1"/>
<field name="date" invisible="1"/>
</tree>
</field>
</record>
@@ -48,11 +47,6 @@
<field name="arch" type="xml">
<search string="Leaves">
<group>
<filter icon="terp-personal" string="Employee" domain="[('category_id', '=', False)]"
help="Leaves by empolyee"/>
<filter icon="terp-stock_symbol-selection" string="Category"
domain="[('employee_id', '=', False)]" help="Leaves by category"/>
<separator orientation="vertical"/>
<filter icon="terp-go-year" string="This Year"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')),('date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Leaves in this year"/>
@@ -61,27 +55,26 @@
<filter icon="terp-go-week" string=" 7 Days " separator="1"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]" help="Leaves during last 7 days"/>
<separator orientation="vertical"/>
<field name="employee_id"/>
<field name="user_id" widget="selection">
<filter icon="terp-personal" string="My Leaves" domain="[('user_id','=',uid)]"/>
</field>
<field name="employee_id"/>
</group>
<newline/>
<group expand="0" string="Extended options..." colspan="10" col="12">
<field name="holiday_status_id" widget="selection"/>
<field name="department_id" widget="selection"/>
</group>
<newline/>
<group expand="0" string="Group By..." colspan="10" col="12">
<filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
<separator orientation="vertical"/>
<filter string="Type" icon="terp-stock_symbol-selection" context="{'group_by':'holiday_status_id'}"/>
<group expand="1" string="Group By..." colspan="10" col="12">
<filter string="Department" icon="terp-personal+" context="{'group_by':'department_id'}"/>
<filter icon="terp-personal" string="Employee"
name="user" context="{'group_by':'employee_id'}"
help="Leaves by employee"/>
<separator orientation="vertical"/>
<filter string="Type" icon="terp-stock_symbol-selection" context="{'group_by':'holiday_status_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'}"/>
</group>
<newline/>
<group expand="0" string="Extended options..." colspan="10" col="12">
<field name="holiday_status_id" widget="selection"/>
<field name="department_id" widget="selection"/>
</group>
</search>
</field>
</record>
@@ -91,7 +84,7 @@
<field name="res_model">available.holidays.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="context">{'search_default_month':1,'search_default_User':1,'group_by':[], "search_default_user_id": uid}</field>
<field name="context">{'search_default_month':1,'search_default_user':1,'group_by':[], "search_default_user_id": uid, 'group_by_no_leaf':1}</field>
<field name="view_id" ref="view_hr_available_holidays_report_search"/>
</record>
@@ -9,8 +9,8 @@
<field name="arch" type="xml">
<tree string="Leaves Statistics">
<field name="date" invisible="1"/>
<field name="employee_id"/>
<field name="category_id"/>
<field name="employee_id" invisible="1"/>
<field name="category_id" invisible="1"/>
<field name="user_id" invisible="1"/>
<field name="date_from" invisible="1"/>
<field name="date_to" invisible="1"/>
@@ -45,11 +45,6 @@
<field name="arch" type="xml">
<search string="Leaves">
<group>
<filter icon="terp-personal" string="Employee" domain="[('category_id', '=', False)]"
help="Leaves by empolyee"/>
<filter icon="terp-stock_symbol-selection" string="Category" domain="[('employee_id', '=', False)]"
help="Leaves by category"/>
<separator orientation="vertical"/>
<filter icon="terp-go-year" string="This Year"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')),('date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]" help="Leaves in this year"/>
<filter icon="terp-go-month" string="This Month" name="month"
@@ -57,43 +52,42 @@
<filter icon="terp-go-week" string=" 7 Days " separator="1"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]" help="Leaves during last 7 days"/>
<separator orientation="vertical"/>
<filter string="Draft" icon="terp-document-new" domain="[('state','=','draft')]"
help = "Draft Leaves"/>
<filter string="Waiting Validation" icon="terp-gtk-media-pause" domain="[('state', '=' ,'confirm')]"
help = "In progress Leaves"/>
<filter string="Future Leaves" icon="terp-gtk-media-pause" domain="[('state', 'in' ,('draft','confirm'))]"
help = "Draft and Confirmed leaves"/>
<filter string="Validated" icon="terp-camera_test" domain="[('state','=','validate')]"
help = "Pending Leaves"/>
<filter icon="terp-gtk-stop" string="Cancelled" domain="[('state','=','cancel')]"/>
<separator orientation="vertical"/>
<field name="employee_id" widget="selection"/>
<field name="user_id" widget="selection">
</field>
<field name="department_id"/>
<field name="employee_id"/>
</group>
<newline/>
<group expand="0" string="Group By..." colspan="10" col="12">
<group expand="1" string="Group By..." colspan="10" col="12">
<filter string="Department" name="department" icon="terp-personal+" context="{'group_by':'department_id'}"/>
<separator orientation="vertical"/>
<filter icon="terp-personal" string="Employee" name="Employee" context="{'group_by':'employee_id'}"
help="Leaves by empolyee"/>
<filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
<separator orientation="vertical"/>
<filter icon="terp-stock_symbol-selection" string="Category" context="{'group_by':'category_id'}"
help="Leaves by category"/>
<filter string="Type" icon="terp-stock_symbol-selection" context="{'group_by':'holiday_status_id'}"/>
<filter string="Department" icon="terp-personal+" context="{'group_by':'department_id'}"/>
<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':'date'}"/>
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}"/>
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}"/>
</group>
<newline/>
<group expand="0" string="Extended options..." colspan="10" col="12">
<filter icon="terp-gtk-stop" string="Refused" name="done"
domain="[('state','=','refuse')]"/>
<field name="holiday_status_id"/>
<field name="category_id"/>
<separator orientation="vertical"/>
<field name="date_from"/>
<separator orientation="vertical"/>
<field name="holiday_status_id" widget="selection"/>
<field name="user_id"/>
<newline/>
<filter icon="terp-gtk-stop" string="Cancelled" domain="[('state','=','cancel')]"/>
<separator orientation="vertical"/>
<field name="date_from"/>
<field name="date_to"/>
<separator orientation="vertical"/>
<field name="department_id" widget="selection"/>
</group>
</search>
</field>
@@ -104,7 +98,7 @@
<field name="res_model">hr.holidays.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="context">{"search_default_user_id": uid, 'search_default_month':1, 'search_default_Employee':1, 'group_by':[]} </field>
<field name="context">{"search_default_user_id": uid, 'search_default_month':1, 'search_default_department':1, 'group_by':[], 'group_by_no_leaf':1} </field>
<field name="search_view_id" ref="view_hr_holidays_report_search"/>
</record>
+36 -35
View File
@@ -194,10 +194,10 @@ class payroll_register(osv.osv):
# 'advice_ids':fields.one2many('hr.payroll.advice', 'register_id', 'Bank Advice'),
'company_id':fields.many2one('res.company', 'Company', required=False),
'period_id': fields.many2one('account.period', 'Force Period', domain=[('state','<>','done')], help="Keep empty to use the period of the validation(Payslip) date."),
'grows': fields.function(_calculate, method=True, store=True, multi='dc', string='Gross Salary', type='float', digits=(16, int(config['price_accuracy']))),
'net': fields.function(_calculate, method=True, store=True, multi='dc', string='Net Salary', digits=(16, int(config['price_accuracy']))),
'allounce': fields.function(_calculate, method=True, store=True, multi='dc', string='Allowance', digits=(16, int(config['price_accuracy']))),
'deduction': fields.function(_calculate, method=True, store=True, multi='dc', string='Deduction', digits=(16, int(config['price_accuracy']))),
'grows': fields.function(_calculate, method=True, store=True, multi='dc', string='Gross Salary', type='float', digits=(16, 4)),
'net': fields.function(_calculate, method=True, store=True, multi='dc', string='Net Salary', digits=(16, 4)),
'allounce': fields.function(_calculate, method=True, store=True, multi='dc', string='Allowance', digits=(16, 4)),
'deduction': fields.function(_calculate, method=True, store=True, multi='dc', string='Deduction', digits=(16, 4)),
'note': fields.text('Description'),
}
@@ -366,8 +366,8 @@ class payroll_advice_line(osv.osv):
'advice_id':fields.many2one('hr.payroll.advice', 'Bank Advice', required=False),
'name':fields.char('Bank Account A/C', size=64, required=True, readonly=False),
'employee_id':fields.many2one('hr.employee', 'Employee', required=True),
'amount': fields.float('Amount', digits=(16, int(config['price_accuracy']))),
'bysal': fields.float('By Salary', digits=(16, int(config['price_accuracy']))),
'amount': fields.float('Amount', digits=(16, 4)),
'bysal': fields.float('By Salary', digits=(16, 4)),
'flag':fields.char('D/C', size=8, required=True, readonly=False),
}
_defaults = {
@@ -434,10 +434,10 @@ class contrib_register(osv.osv):
'analytic_account_id':fields.many2one('account.analytic.account', 'Analytic Account', required=False),
'name':fields.char('Name', size=256, required=True, readonly=False),
'register_line_ids':fields.one2many('hr.contibution.register.line', 'register_id', 'Register Line', readonly=True),
'yearly_total_by_emp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Employee', digits=(16, int(config['price_accuracy']))),
'yearly_total_by_comp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Company', digits=(16, int(config['price_accuracy']))),
'monthly_total_by_emp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Employee', digits=(16, int(config['price_accuracy']))),
'monthly_total_by_comp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Company', digits=(16, int(config['price_accuracy']))),
'yearly_total_by_emp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Employee', digits=(16, 4)),
'yearly_total_by_comp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Company', digits=(16, 4)),
'monthly_total_by_emp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Employee', digits=(16, 4)),
'monthly_total_by_comp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Company', digits=(16, 4)),
'note': fields.text('Description'),
}
_defaults = {
@@ -466,9 +466,9 @@ class contrib_register_line(osv.osv):
'code':fields.char('Code', size=64, required=False, readonly=False),
'employee_id':fields.many2one('hr.employee', 'Employee', required=True),
'period_id': fields.many2one('account.period', 'Period'),
'emp_deduction': fields.float('Employee Deduction', digits=(16, int(config['price_accuracy']))),
'comp_deduction': fields.float('Company Deduction', digits=(16, int(config['price_accuracy']))),
'total': fields.function(_total, method=True, store=True, string='Total', digits=(16, int(config['price_accuracy']))),
'emp_deduction': fields.float('Employee Deduction', digits=(16, 4)),
'comp_deduction': fields.float('Company Deduction', digits=(16, 4)),
'total': fields.function(_total, method=True, store=True, string='Total', digits=(16, 4)),
}
contrib_register_line()
@@ -522,7 +522,7 @@ class company_contribution(osv.osv):
'category_id':fields.many2one('hr.allounce.deduction.categoty', 'Heads', required=False),
'name':fields.char('Name', size=256, required=True, readonly=False),
'code':fields.char('Code', size=64, required=True, readonly=False),
'include_in_salary':fields.boolean('Included in Salary ?', help='If company contribute on this deduction then should company contribution is also deducted from Employee Salary'),
# 'include_in_salary':fields.boolean('Included in Salary ?', help='If company contribute on this deduction then should company contribution is also deducted from Employee Salary'),
'gratuity':fields.boolean('Use for Gratuity ?', required=False),
'line_ids':fields.one2many('company.contribution.line', 'contribution_id', 'Calculations', required=False),
'register_id':fields.property(
@@ -537,19 +537,20 @@ class company_contribution(osv.osv):
),
'amount_type':fields.selection([
('fix','Fixed Amount'),
('per','Percentage'),
('func','Function Calculation'),
],'Amount Type', select=True),
'contribute_per':fields.float('Contribution', digits=(16, int(config['price_accuracy'])), help='Define Company contribution ratio 1.00=100% contribution, If Employee Contribute 5% then company will and here 0.50 defined then company will contribute 50% on employee 5% contribution'),
'account_id':fields.property(
'account.account',
type='many2one',
relation='account.account',
string="Account",
method=True,
view_load=True,
help="Expanse account where company expanse will be encoded",
required=False
),
'contribute_per':fields.float('Contribution', digits=(16, 4), help='Define Company contribution ratio 1.00=100% contribution, If Employee Contribute 5% then company will and here 0.50 defined then company will contribute 50% on employee 5% contribution'),
# 'account_id':fields.property(
# 'account.account',
# type='many2one',
# relation='account.account',
# string="Account",
# method=True,
# view_load=True,
# help="Expanse account where company expanse will be encoded",
# required=False
# ),
'company_id':fields.many2one('res.company', 'Company', required=False),
'active':fields.boolean('Active', required=False),
'note': fields.text('Description'),
@@ -596,13 +597,13 @@ class company_contribution_line(osv.osv):
'contribution_id':fields.many2one('company.contribution', 'Contribution', required=False),
'name':fields.char('Name', size=64, required=False, readonly=False),
'umo_id':fields.many2one('product.uom', 'Unite', required=False),
'from_val': fields.float('From', digits=(16, int(config['price_accuracy']))),
'to_val': fields.float('To', digits=(16, int(config['price_accuracy']))),
'from_val': fields.float('From', digits=(16, 4)),
'to_val': fields.float('To', digits=(16, 4)),
'amount_type':fields.selection([
('fix','Fixed Amount'),
],'Amount Type', select=True),
'sequence':fields.integer('Sequence'),
'value': fields.float('Value', digits=(16, int(config['price_accuracy']))),
'value': fields.float('Value', digits=(16, 4)),
}
company_contribution_line()
@@ -730,8 +731,8 @@ class hr_payslip(osv.osv):
('cancel','Reject'),
],'State', select=True, readonly=True),
'basic_before_leaves': fields.float('Basic Salary', readonly=True, digits=(16, 2)),
'leaves': fields.float('Leaved Deduction', readonly=True, digits=(16, 2)),
'basic': fields.float('Basic Salary - Leaves', readonly=True, digits=(16, 2)),
'leaves': fields.float('Leave Deductions', readonly=True, digits=(16, 2)),
'basic': fields.float('Net Basic', readonly=True, digits=(16, 2)),
'grows': fields.function(_calculate, method=True, store=True, multi='dc', string='Gross Salary', type='float', digits=(16, 2)),
'net': fields.function(_calculate, method=True, store=True, multi='dc', string='Net Salary', digits=(16, 2)),
'allounce': fields.function(_calculate, method=True, store=True, multi='dc', string='Allowance', digits=(16, 2)),
@@ -1213,9 +1214,9 @@ class hr_payslip_line(osv.osv):
'amount': fields.float('Amount / Percentage', digits=(16, 4)),
'analytic_account_id':fields.many2one('account.analytic.account', 'Analytic Account', required=False),
'account_id':fields.many2one('account.account', 'General Account', required=True),
'total': fields.float('Sub Total', readonly=True, digits=(16, int(config['price_accuracy']))),
'total': fields.float('Sub Total', readonly=True, digits=(16, 4)),
#'total': fields.function(_calculate, method=True, type='float', string='Label', store=True),
'company_contrib': fields.float('Company Contribution', readonly=True, digits=(16, int(config['price_accuracy']))),
'company_contrib': fields.float('Company Contribution', readonly=True, digits=(16, 4)),
'expanse_id': fields.many2one('hr.expense.expense', 'Expense'),
'sequence': fields.integer('Sequence'),
'note':fields.text('Description'),
@@ -1251,13 +1252,13 @@ class hr_payslip_line_line(osv.osv):
'slipline_id':fields.many2one('hr.payslip.line', 'Slip Line', required=False),
'name':fields.char('Name', size=64, required=False, readonly=False),
'umo_id':fields.many2one('product.uom', 'Unite', required=False),
'from_val': fields.float('From', digits=(16, int(config['price_accuracy']))),
'to_val': fields.float('To', digits=(16, int(config['price_accuracy']))),
'from_val': fields.float('From', digits=(16, 4)),
'to_val': fields.float('To', digits=(16, 4)),
'amount_type':fields.selection([
('fix','Fixed Amount'),
],'Amount Type', select=True),
'sequence':fields.integer('Sequence'),
'value': fields.float('Value', digits=(16, int(config['price_accuracy']))),
'value': fields.float('Value', digits=(16, 4)),
}
hr_payslip_line_line()
+6 -6
View File
@@ -505,7 +505,7 @@
<button string="Compute Sheet" icon="terp-stock_format-scientific" name="compute_sheet" states="new"/>
<button string="Recompute Sheet" icon="terp-stock_format-scientific" name="compute_sheet" type="object" states="draft"/>
<button string="Verify Sheet" icon="terp-camera_test" name="verify_sheet" states="draft"/>
<button string="Complete HR Checking" icon="terp-camera_test" name="final_verify_sheet" states="hr_check"/>
<button string="Validate Sheet" icon="terp-camera_test" name="final_verify_sheet" states="hr_check"/>
<button string="Pay Salary" icon="terp-dolar_ok!" name="process_sheet" states="confirm"/>
<button string="Cancel" icon="terp-dialog-close" name="cancel_sheet" states="draft,hr_check,confirm"/>
<button string="Set to Draft" icon="terp-stock_effects-object-colorize" name="set_to_draft" states="cancel"/>
@@ -644,8 +644,6 @@
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="category_id"/>
<field name="company_id" select="1"/>
<field name="active" select="1"/>
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Contributions"/>
@@ -654,9 +652,11 @@
<field name="register_id" attrs="{'required': [('contribute','=',True)]}"/>
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Accounts"/>
<field name="include_in_salary" />
<field name="account_id" attrs="{'required': [('include_in_salary','=',True)]}"/>
<separator colspan="2" string="Other Information"/>
<field name="company_id" select="1"/>
<field name="active" select="1"/>
<!-- <field name="include_in_salary" />-->
<!-- <field name="account_id" attrs="{'required': [('include_in_salary','=',True)]}"/>-->
</group>
<notebook colspan="4">
<page string="Function" attrs="{'readonly': [('amount_type','!=','func')]}">
@@ -393,6 +393,11 @@ class hr_payslip(osv.osv):
line_ids += [movel_pool.create(cr, uid, rec)]
for contrub in line.category_id.contribute_ids:
print contrib.name, contrub.code, contrub.amount_type, contrib.contribute_per, line.total
# if line.company_contrib > 0:
# company_contrib = line.company_contrib
## if line.category_id.amount_type == 'per':
-1
View File
@@ -48,7 +48,6 @@ to set up a management by affair.
'wizard/hr_timesheet_print_employee_view.xml',
'wizard/hr_timesheet_print_users_view.xml',
'wizard/hr_timesheet_sign_in_out_view.xml',
'report/hr_timesheet_report_view.xml',
],
'demo_xml': ['hr_timesheet_demo.xml'],
'test': ['test/test_hr_timesheet.yml'],
+2 -3
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,11 +15,10 @@
# 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/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import hr_timesheet_report
import user_timesheet
import users_timesheet
@@ -2,5 +2,3 @@
"access_hr_analytic_timesheet","hr.analytic.timesheet","model_hr_analytic_timesheet","hr.group_hr_user",1,1,1,1
"access_hr_account_analytic_line","account.account.analytic.line","account.model_account_analytic_line","hr.group_hr_user",1,1,1,0
"access_account_analytic_journal","account.account.analytic.journal","account.model_account_analytic_journal","hr.group_hr_user",1,0,0,0
"access_hr_analytal_timesheet_user","hr.analytical.timesheet.user","model_hr_analytical_timesheet_users","hr.group_hr_user",1,1,1,1
"access_hr_timesheet_report","hr.timesheet.report","model_hr_timesheet_report","hr.group_hr_manager",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_analytic_timesheet hr.analytic.timesheet model_hr_analytic_timesheet hr.group_hr_user 1 1 1 1
3 access_hr_account_analytic_line account.account.analytic.line account.model_account_analytic_line hr.group_hr_user 1 1 1 0
4 access_account_analytic_journal account.account.analytic.journal account.model_account_analytic_journal hr.group_hr_user 1 0 0 0
access_hr_analytal_timesheet_user hr.analytical.timesheet.user model_hr_analytical_timesheet_users hr.group_hr_user 1 1 1 1
access_hr_timesheet_report hr.timesheet.report model_hr_timesheet_report hr.group_hr_manager 1 0 0 0
@@ -9,4 +9,3 @@
"access_report_timesheet_invoice","report_timesheet.invoice","model_report_timesheet_invoice","hr.group_hr_manager",1,0,0,0
"access_report_random_timesheet","report_random_timesheet","model_report_random_timesheet","hr.group_hr_manager",1,0,0,0
"access_report_random_timesheet_lines","random_timesheet_lines","model_random_timesheet_lines","hr.group_hr_manager",1,0,0,0
"access_hr_timesheet_analytic_profit","hr_timesheet_analytic_profit","model_hr_timesheet_analytic_profit","account.group_account_invoice",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
9 access_report_timesheet_invoice report_timesheet.invoice model_report_timesheet_invoice hr.group_hr_manager 1 0 0 0
10 access_report_random_timesheet report_random_timesheet model_report_random_timesheet hr.group_hr_manager 1 0 0 0
11 access_report_random_timesheet_lines random_timesheet_lines model_random_timesheet_lines hr.group_hr_manager 1 0 0 0
access_hr_timesheet_analytic_profit hr_timesheet_analytic_profit model_hr_timesheet_analytic_profit account.group_account_invoice 1 1 1 1
+2 -1
View File
@@ -55,9 +55,10 @@ The validation can be configured in the company:
'process/hr_timesheet_sheet_process.xml',
'report/timesheet_report_view.xml',
'board_hr_timesheet_view.xml',
'report/hr_timesheet_report_view.xml',
],
'demo_xml': ['hr_timesheet_sheet_demo.xml',
],
'test':['test/test_hr_timesheet_sheet.yml'],
'installable': True,
+1 -1
View File
@@ -20,6 +20,6 @@
##############################################################################
import timesheet_report
import hr_timesheet_report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -54,12 +54,11 @@
domain="[('date','=', time.strftime('%%Y-%%m-%%d'))]"
help="Timesheet dof the day"/>
<separator orientation="vertical"/>
<field name="account_id"/>
<field name="user_id" />
<field name="date" />
<field name="account_id"/>
<field name="user_id" />
</group>
<newline/>
<group expand="0" string="Group By...">
<group expand="1" string="Group By...">
<filter string="User" name="group_user_id" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
<separator orientation="vertical"/>
@@ -79,6 +78,8 @@
<field name="journal_id"/>
<separator orientation="vertical"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<newline/>
<field name="date" />
</group>
</search>
</field>
@@ -94,6 +95,6 @@
<menuitem
action="action_hr_timesheet_report_stat_all"
id="menu_hr_timesheet_report_all"
parent="menu_hr_reporting_timesheet" sequence="0"/>
parent="hr_timesheet.menu_hr_reporting_timesheet" sequence="0"/>
</data>
</openerp>
@@ -49,18 +49,18 @@
<field name="arch" type="xml">
<search string="Timesheet">
<group col="10" colspan="12">
<filter icon="terp-go-year" string="This Year"
domain="[('date_current','&lt;=', time.strftime('%%Y-%%m-%%d')),('date_current','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Timesheet in this year"/>
<filter icon="terp-go-month" string="This Month"
name="month"
domain="[('date_current','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date_current','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Timesheet in this month"/>
<filter icon="terp-go-week"
string=" 7 Days "
separator="1"
domain="[('date_current','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date_current','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Timesheet during last 7 days"/>
<filter icon="terp-go-month" string="This Month"
name="month"
domain="[('date_current','&lt;=', time.strftime('%%Y-%%m-%%d')), ('date_current','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
help="Timesheet in this month"/>
<filter icon="terp-go-year" string="This Year"
domain="[('date_current','&lt;=', time.strftime('%%Y-%%m-%%d')),('date_current','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
help="Timesheet in this year"/>
<separator orientation="vertical"/>
<filter icon="terp-document-new"
string="Draft"
@@ -1,4 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_hr_timesheet_sheet_sheet","hr_timesheet_sheet.sheet","model_hr_timesheet_sheet_sheet","hr.group_hr_user",1,1,1,1
"access_hr_timesheet_sheet_sheet_day","hr_timesheet_sheet.sheet.day","model_hr_timesheet_sheet_sheet_day","hr.group_hr_user",1,1,1,1
"access_hr_timesheet_sheet_sheet_account","hr_timesheet_sheet.sheet.account","model_hr_timesheet_sheet_sheet_account","hr.group_hr_user",1,1,1,1
"access_hr_timesheet_sheet_sheet_account","hr_timesheet_sheet.sheet.account","model_hr_timesheet_sheet_sheet_account","hr.group_hr_user",1,1,1,1
"access_hr_timesheet_report","hr.timesheet.report","model_hr_timesheet_report","hr.group_hr_manager",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_timesheet_sheet_sheet hr_timesheet_sheet.sheet model_hr_timesheet_sheet_sheet hr.group_hr_user 1 1 1 1
3 access_hr_timesheet_sheet_sheet_day hr_timesheet_sheet.sheet.day model_hr_timesheet_sheet_sheet_day hr.group_hr_user 1 1 1 1
4 access_hr_timesheet_sheet_sheet_account hr_timesheet_sheet.sheet.account model_hr_timesheet_sheet_sheet_account hr.group_hr_user 1 1 1 1
5 access_hr_timesheet_report hr.timesheet.report model_hr_timesheet_report hr.group_hr_manager 1 0 0 0
-1
View File
@@ -4,5 +4,4 @@
"access_idea_vote","idea.vote","model_idea_vote","base.group_user",1,1,1,1
"access_idea_vote_stat","idea.vote.stat","model_idea_vote_stat","base.group_user",1,0,0,0
"access_idea_category_system","idea.category system","model_idea_category","base.group_system",1,1,1,1
"access_idea_select","idea.select","model_idea_select","base.group_user",1,1,1,1
"access_idea_comment","idea.comment","model_idea_comment","base.group_system",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
4 access_idea_vote idea.vote model_idea_vote base.group_user 1 1 1 1
5 access_idea_vote_stat idea.vote.stat model_idea_vote_stat base.group_user 1 0 0 0
6 access_idea_category_system idea.category system model_idea_category base.group_system 1 1 1 1
access_idea_select idea.select model_idea_select base.group_user 1 1 1 1
7 access_idea_comment idea.comment model_idea_comment base.group_system 1 1 1 1
+10 -8
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-10-01 07:47+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-07-07 22:54+0000\n"
"Last-Translator: Pomazan Bogdan <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 03:58+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: membership
@@ -35,7 +35,7 @@ msgstr "Уплативший член"
#. module: membership
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Недопустимое имя модели в определении действия."
#. module: membership
#: field:report.partner_member.year,currency:0
@@ -91,7 +91,7 @@ msgstr ""
#. module: membership
#: constraint:account.account:0
msgid "Error ! You can not create recursive accounts."
msgstr ""
msgstr "Ошибка! Вы не можете создавать взаимно подчиненные счета."
#. module: membership
#: constraint:account.invoice:0
@@ -112,7 +112,7 @@ msgstr "Партнер"
#: model:ir.actions.act_window,name:membership.action_membership_members_free
#: model:ir.ui.menu,name:membership.menu_members_free
msgid "Free members"
msgstr ""
msgstr "Свободные участники"
#. module: membership
#: model:process.transition,name:membership.process_transition_invoicetopaid0
@@ -142,7 +142,7 @@ msgstr "Подтвердить"
#. module: membership
#: model:process.transition.action,name:membership.process_transition_action_create0
msgid "Create"
msgstr ""
msgstr "Создать"
#. module: membership
#: constraint:ir.ui.view:0
@@ -216,6 +216,8 @@ msgstr ""
#: constraint:product.template:0
msgid "Error: UOS must be in a different category than the UOM"
msgstr ""
"Ошибка. Единицы продажи и единицы измерения должны принадлежать к разным "
"категориям."
#. module: membership
#: model:ir.ui.menu,name:membership.menu_membership_products
@@ -405,7 +407,7 @@ msgstr ""
#. module: membership
#: model:ir.actions.act_window,name:membership.action_membership_members_waiting
msgid "Future members"
msgstr ""
msgstr "Будущие пользователи"
#. module: membership
#: wizard_button:wizard_invoice_membership,init,end:0
+1
View File
@@ -27,6 +27,7 @@ import ir
import netsvc
import time
#----------------------------------------------------------
# Work Centers
#----------------------------------------------------------
-1
View File
@@ -885,7 +885,6 @@
</xpath>
</field>
</record>
<act_window
id="action_product_bom_structure"
name="Product BoM Structure"
+1
View File
@@ -31,6 +31,7 @@ class procurement_order(osv.osv):
_inherit = 'procurement.order'
_columns = {
'bom_id': fields.many2one('mrp.bom', 'BoM', ondelete='cascade', select=True),
'property_ids': fields.many2many('mrp.property', 'procurement_property_rel', 'procurement_id','property_id', 'Properties'),
}
def check_produce_product(self, cr, uid, procurement, context=[]):
+8 -8
View File
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-12-08 11:46+0000\n"
"PO-Revision-Date: 2010-02-08 20:23+0000\n"
"Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n"
"PO-Revision-Date: 2010-07-07 22:52+0000\n"
"Last-Translator: Pomazan Bogdan <Unknown>\n"
"Language-Team: Russian <ru@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-06-22 04:20+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: multi_company
#: help:multi_company.default,object_id:0
msgid "Object affect by this rules"
msgstr ""
msgstr "Объект затрагивает эти правила"
#. module: multi_company
#: constraint:ir.model:0
@@ -61,7 +61,7 @@ msgstr ""
#. module: multi_company
#: field:multi_company.default,company_dest_id:0
msgid "Default Company"
msgstr ""
msgstr "Компания по умолчанию"
#. module: multi_company
#: field:multi_company.default,object_id:0
@@ -140,12 +140,12 @@ msgstr ""
#. module: multi_company
#: help:multi_company.default,company_id:0
msgid "Company where the user is connected"
msgstr ""
msgstr "Компании, в составе которых находиться пользователь"
#. module: multi_company
#: model:ir.actions.act_window,name:multi_company.action_inventory_form
msgid "Default Company per Object"
msgstr ""
msgstr "Компании по умолчанию для объекта"
#. module: multi_company
#: field:multi_company.default,expression:0
@@ -180,7 +180,7 @@ msgstr ""
#. module: multi_company
#: model:ir.ui.menu,name:multi_company.menu_action_inventory_form
msgid "Default company per Object"
msgstr ""
msgstr "Компания по умолчанию для объекта"
#. module: multi_company
#: code:addons/multi_company/multi_company.py:0
+7 -12
View File
@@ -25,6 +25,12 @@ from tools.translate import _
import netsvc
import time
# Procurement
# ------------------------------------------------------------------
#
# Produce, Buy or Find products and place a move
# then wizard for picking lists & move
#
class mrp_property_group(osv.osv):
"""
@@ -54,14 +60,6 @@ class mrp_property(osv.osv):
'composition': lambda *a: 'min',
}
mrp_property()
# ------------------------------------------------------------------
# Procurement
# ------------------------------------------------------------------
#
# Produce, Buy or Find products and place a move
# then wizard for picking lists & move
#
class procurement_order(osv.osv):
"""
Procurement Orders
@@ -91,9 +89,6 @@ class procurement_order(osv.osv):
" a make to order method."),
'note': fields.text('Note'),
'property_ids': fields.many2many('mrp.property', 'procurement_property_rel', 'procurement_id','property_id', 'Properties'),
'message': fields.char('Latest error', size=64, help="Exception occurred while computing procurement orders."),
'state': fields.selection([
('draft','Draft'),
@@ -477,7 +472,7 @@ class stock_warehouse_orderpoint(osv.osv):
help="When the virtual stock goes belong the Min Quantity, Open ERP generates "\
"a procurement to bring the virtual stock to the Max Quantity."),
'product_max_qty': fields.float('Max Quantity', required=True,
help="When the virtual stock goes belong the Min Quantity, Open ERP generates "\
help="When the virtual stock goes belong the Mix Quantity, Open ERP generates "\
"a procurement to bring the virtual stock to the Max Quantity."),
'qty_multiple': fields.integer('Qty Multiple', required=True,
help="The procurement quantity will by rounded up to this multiple."),
+4 -4
View File
@@ -67,10 +67,10 @@
<field name="move_id" groups="base.group_extended"/>
<field name="date_close"/>
<field name="close_move" groups="base.group_extended"/>
<group colspan="4" groups="base.group_extended">
<separator colspan="4" string="Properties" />
<field colspan="4" name="property_ids" nolabel="1"/>
</group>
<group colspan="4" groups="base.group_extended">
<separator colspan="4" string="Properties" />
<field colspan="4" name="property_ids" nolabel="1"/>
</group>
</page>
<page string="Notes">
<separator colspan="4" string="Note" />
@@ -183,6 +183,8 @@
<field name="act_from" ref="act_make_done"/>
<field name="act_to" ref="act_done"/>
<field name="condition">action_check_finnished()</field>
<field name="trigger_model">stock.move</field>
<field name="trigger_expr_id">[move_id.id]</field>
</record>
<record id="trans_make_done_confirm" model="workflow.transition">
<field name="act_from" ref="act_make_done"/>
@@ -1,7 +1,8 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_mrp_property_group","mrp.property.group","model_mrp_property_group",stock.group_stock_manager,1,1,1,1
"access_mrp_property","mrp.property","model_mrp_property",stock.group_stock_manager,1,1,1,1
"access_mrp_property_group","mrp.property.group","model_mrp_property_group",,1,0,0,0
"access_mrp_property","mrp.property","model_mrp_property",base.group_user,1,0,0,0
"access_procurement","procurement.order","model_procurement_order",base.group_user,1,0,0,0
"access_stock_warehouse_orderpoint","stock.warehouse.orderpoint","model_stock_warehouse_orderpoint",stock.group_stock_manager,1,1,1,1
"access_procurement","procurement.order","model_procurement_order","base.group_user",1,0,0,0
"access_stock_warehouse_orderpoint","stock.warehouse.orderpoint","model_stock_warehouse_orderpoint","stock.group_stock_manager",1,1,1,1
"access_mrp_property_group","mrp.property.group","model_mrp_property_group","stock.group_stock_manager",1,1,1,1
"access_mrp_property","mrp.property","model_mrp_property","stock.group_stock_manager",1,1,1,1
"access_mrp_property_group","mrp.property.group","model_mrp_property_group","base.group_user",1,0,0,0
"access_mrp_property","mrp.property","model_mrp_property","base.group_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_mrp_property_group access_procurement mrp.property.group procurement.order model_mrp_property_group model_procurement_order stock.group_stock_manager base.group_user 1 1 0 1 0 1 0
3 access_mrp_property access_stock_warehouse_orderpoint mrp.property stock.warehouse.orderpoint model_mrp_property model_stock_warehouse_orderpoint stock.group_stock_manager 1 1 1 1
4 access_mrp_property_group mrp.property.group model_mrp_property_group stock.group_stock_manager 1 0 1 0 1 0 1
5 access_mrp_property mrp.property model_mrp_property base.group_user stock.group_stock_manager 1 0 1 0 1 0 1
6 access_procurement access_mrp_property_group procurement.order mrp.property.group model_procurement_order model_mrp_property_group base.group_user 1 0 0 0
7 access_stock_warehouse_orderpoint access_mrp_property stock.warehouse.orderpoint mrp.property model_stock_warehouse_orderpoint model_mrp_property stock.group_stock_manager base.group_user 1 1 0 1 0 1 0
8
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-06-22 10:03+0000\n"
"Last-Translator: grisha <Unknown>\n"
"PO-Revision-Date: 2010-07-07 22:48+0000\n"
"Last-Translator: Pomazan Bogdan <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-23 03:53+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: product
@@ -251,7 +251,7 @@ msgstr ""
#. module: product
#: model:process.transition,note:product.process_transition_supplierofproduct0
msgid "You can see the list of suppliers for that product."
msgstr ""
msgstr "Вы можете просмотреть список поставщиков этого изделия"
#. module: product
#: help:product.packaging,rows:0
+19 -18
View File
@@ -71,33 +71,34 @@ class product_uom(osv.osv):
_columns = {
'name': fields.char('Name', size=64, required=True, translate=True),
'category_id': fields.many2one('product.uom.categ', 'UoM Category', required=True, ondelete='cascade',
help="Unit of Measure of a category can be converted between each others in the same category."),
help="Quantity conversions may happen automatically between Units of Measure in the same category, according to their respective ratios."),
'factor': fields.float('Ratio', digits=(12, 6), required=True,
help='The coefficient for the formula:\n' \
'1 (base unit) = coeff (this unit). Ratio = 1 / Factor.'),
help='How many times this UoM is smaller than the reference UoM in this category:\n'\
'1 * (reference unit) = ratio * (this unit)'),
'factor_inv': fields.function(_factor_inv, digits=(12, 6),
fnct_inv=_factor_inv_write,
method=True, string='Ratio',
help='The coefficient for the formula:\n' \
'coeff (base unit) = 1 (this unit). Factor = 1 / Rate.'),
help='How many times this UoM is bigger than the reference UoM in this category:\n'\
'1 * (this unit) = ratio * (reference unit)', required=True),
'rounding': fields.float('Rounding Precision', digits=(16, 3), required=True,
help="The computed quantity will be a multiple of this value. Use 1.0 for products that can not be split."),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the unit of measure without removing it."),
'uom_factor': fields.selection([('bigger','Bigger than the default'),
('smaller','Smaller than the default'),
('default','Default UoM for the category')],'Type of Unit', required=1),
help="The computed quantity will be a multiple of this value. "\
"Use 1.0 for a UoM that cannot be further split, such as a piece."),
'active': fields.boolean('Active', help="By unchecking the active field you can disable a unit of measure without deleting it."),
'uom_type': fields.selection([('bigger','Bigger than the reference UoM'),
('reference','Reference UoM for this category (ratio=1)'),
('smaller','Smaller than the reference UoM')],'UoM Type', required=1),
}
_defaults = {
'factor': lambda *a: 1.0,
'factor_inv': lambda *a: 1.0,
'active': lambda *a: 1,
'rounding': lambda *a: 0.01,
'uom_factor': lambda *a: 'default',
'factor': 1.0,
'factor_inv': 1.0,
'active': 1,
'rounding': 0.01,
'uom_type': 'reference',
}
_sql_constraints = [
('factor_gt_zero', 'CHECK (factor!=0)', 'Value of the factor can never be 0 !'),
('factor_gt_zero', 'CHECK (factor!=0)', 'The conversion ratio for a unit of measure cannot be 0!'),
]
def _compute_qty(self, cr, uid, from_uom_id, qty, to_uom_id=False):
@@ -133,8 +134,8 @@ class product_uom(osv.osv):
amount = amount / to_unit.factor
return amount
def onchange_factor(self, cursor, user, ids, value):
if value == 'default':
def onchange_type(self, cursor, user, ids, value):
if value == 'reference':
return {'value': {'factor': 1, 'factor_inv': 1}}
return {}
+31 -14
View File
@@ -24,38 +24,55 @@
<record id="product_uom_unit" model="product.uom">
<field name="category_id" ref="product_uom_categ_unit"/>
<field name="name">PCE</field>
<field name="factor">1.0</field>
<field name="rounding">1.0</field>
<field name="factor" eval="1.0"/>
<field name="rounding" eval="1.0"/>
</record>
<record id="product_uom_kgm" model="product.uom">
<field name="category_id" ref="product_uom_categ_kgm"/>
<field name="name">KGM</field>
<field name="factor">1</field>
<field name="name">kg</field>
<field name="factor" eval="1"/>
</record>
<record id="product_uom_gram" model="product.uom">
<field name="category_id" ref="product_uom_categ_kgm"/>
<field name="name">g</field>
<field name="factor" eval="1000"/>
<field name="uom_type">smaller</field>
</record>
<record id="uom_hour" model="product.uom">
<field name="name">Hour</field>
<field name="name">hour</field>
<field eval="uom_categ_wtime" name="category_id"/>
<field name="factor">8.0</field>
<field name="factor" eval="8.0"/>
<field name="uom_type">smaller</field>
</record>
<record id="uom_day" model="product.uom">
<field name="name">Day</field>
<field name="name">day</field>
<field eval="uom_categ_wtime" name="category_id"/>
<field name="factor">1.0</field>
<field name="factor" eval="1.0"/>
</record>
<record id="product_uom_ton" model="product.uom">
<field name="category_id" ref="product_uom_categ_kgm"/>
<field name="name">TON</field>
<field name="factor">0.001</field>
<!-- 'tonne' is the most common spelling in english-speaking countries,
the alternative is 'metric ton' in the US, abbreviated as 'mt' -->
<field name="name">tonne</field>
<field name="factor" eval="0.001"/>
<field name="uom_type">bigger</field>
</record>
<record id="product_uom_meter" model="product.uom">
<field name="category_id" ref="uom_categ_length"/>
<field name="name">Meter</field>
<field name="factor">1.0</field>
<field name="name">m</field>
<field name="factor" eval="1.0"/>
</record>
<record id="product_uom_km" model="product.uom">
<field name="category_id" ref="uom_categ_length"/>
<field name="name">Kilometer</field>
<field name="factor">0.001</field>
<field name="name">km</field>
<field name="factor" eval="0.001"/>
<field name="uom_type">bigger</field>
</record>
<record id="product_uom_cm" model="product.uom">
<field name="category_id" ref="uom_categ_length"/>
<field name="name">cm</field>
<field name="factor" eval="100"/>
<field name="uom_type">smaller</field>
</record>
+22 -9
View File
@@ -310,16 +310,29 @@
<field name="arch" type="xml">
<form string="Units of Measure">
<group col="6" colspan="4">
<field name="name" select="1"/>
<field name="category_id" select="1" widget="selection"/>
<field name="active"/>
<field name="uom_factor" on_change="onchange_factor(uom_factor)"/>
<group colspan="2" col="2">
<field name="factor" attrs="{'invisible':[('uom_factor','&lt;&gt;','smaller')]}"/>
<field name="factor_inv" string="Factor Data" attrs="{'invisible':[('uom_factor','&lt;&gt;','bigger')]}"/>
<group col="2" colspan="2">
<separator string="Unit of Measure Properties" colspan="4"/>
<field name="name" select="1"/>
<field name="category_id" select="1" widget="selection"/>
<field name="active"/>
</group>
<group col="4" colspan="4">
<separator string="Ratio &amp; Precision" colspan="4"/>
<group colspan="2" col="2">
<field name="uom_type" on_change="onchange_type(uom_type)"/>
<field name="rounding"/>
</group>
<group colspan="2" col="2">
<group col="2" colspan="2" attrs="{'invisible':[('uom_type','!=','smaller')]}">
<field name="factor"/>
<label colspan="2" string=" e.g: 1 * (reference unit) = ratio * (this unit)"/>
</group>
<group col="2" colspan="2" attrs="{'invisible':[('uom_type','!=','bigger')]}">
<field name="factor_inv"/>
<label colspan="2" string=" e.g: 1 * (this unit) = ratio * (reference unit)"/>
</group>
</group>
</group>
<newline/>
<field name="rounding"/>
</group>
</form>
</field>
+89 -69
View File
@@ -1,19 +1,19 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale
# * sale
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-06-11 16:29+0000\n"
"Last-Translator: Sios <Unknown>\n"
"PO-Revision-Date: 2010-07-07 22:47+0000\n"
"Last-Translator: Pomazan Bogdan <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:08+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale
@@ -44,12 +44,10 @@ msgstr "Долевой участник"
#. module: sale
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Недопустимое имя модели в определении действия"
msgstr "Недопустимое имя модели в определении действия."
#. module: sale
#: selection:report.sale.order.category,state:0
#: selection:report.sale.order.created,state:0
#: selection:report.sale.order.product,state:0
#: selection:sale.order,state:0
msgid "Waiting Schedule"
msgstr "В ожидании расписания"
@@ -73,7 +71,8 @@ msgid "Steps To Deliver a Sale Order"
msgstr "Шаги для получения Порядка продажи"
#. module: sale
#: wizard_field:sale.advance_payment_inv,init,qtty:0 rml:sale.order:0
#: wizard_field:sale.advance_payment_inv,init,qtty:0
#: rml:sale.order:0
msgid "Quantity"
msgstr "Количество"
@@ -83,9 +82,10 @@ msgid "You invoice has been successfully created !"
msgstr ""
#. module: sale
#: view:sale.order:0 view:sale.order.line:0
#: view:sale.order:0
#: view:sale.order.line:0
msgid "Automatic Declaration"
msgstr ""
msgstr "Автоматическое обьявление"
#. module: sale
#: model:ir.actions.act_window,name:sale.action_order_line_tree3
@@ -99,11 +99,9 @@ msgid "Set to Draft"
msgstr "Установить в 'Черновик'"
#. module: sale
#: selection:report.sale.order.category,state:0
#: selection:report.sale.order.created,state:0
#: selection:report.sale.order.product,state:0
#: selection:sale.order,state:0
msgid "Invoice Exception"
msgstr "Исключительная ситуация счета"
msgstr ""
#. module: sale
#: help:sale.order,picking_ids:0
@@ -160,7 +158,9 @@ msgid "Manual Designation"
msgstr ""
#. module: sale
#: view:sale.order:0 field:sale.order,note:0 view:sale.order.line:0
#: view:sale.order:0
#: field:sale.order,note:0
#: view:sale.order.line:0
#: field:sale.order.line,notes:0
msgid "Notes"
msgstr "Примечания"
@@ -171,7 +171,8 @@ msgid "Invoice after delivery"
msgstr ""
#. module: sale
#: field:sale.order,amount_tax:0 field:sale.order.line,tax_id:0
#: field:sale.order,amount_tax:0
#: field:sale.order.line,tax_id:0
msgid "Taxes"
msgstr "Налоги"
@@ -186,16 +187,15 @@ msgid "Shipping Policy"
msgstr ""
#. module: sale
#: selection:sale.order,state:0 selection:sale.order.line,state:0
#: selection:sale.order,state:0
#: selection:sale.order.line,state:0
msgid "Cancelled"
msgstr ""
#. module: sale
#: selection:report.sale.order.category,state:0
#: selection:report.sale.order.created,state:0
#: selection:report.sale.order.product,state:0
#: selection:sale.order,state:0
msgid "Shipping Exception"
msgstr "Исключительная ситуация поставки"
msgstr ""
#. module: sale
#: field:sale.order,amount_total:0
@@ -233,7 +233,8 @@ msgid "Procurement is created after confirmation of sale order."
msgstr ""
#. module: sale
#: field:sale.order,project_id:0 field:sale.shop,project_id:0
#: field:sale.order,project_id:0
#: field:sale.shop,project_id:0
msgid "Analytic Account"
msgstr "Счет аналитики"
@@ -319,7 +320,8 @@ msgid "Invoice Based on Sales Orders"
msgstr ""
#. module: sale
#: model:ir.model,name:sale.model_sale_shop view:sale.shop:0
#: model:ir.model,name:sale.model_sale_shop
#: view:sale.shop:0
msgid "Sale Shop"
msgstr ""
@@ -334,7 +336,8 @@ msgid "Order N°"
msgstr ""
#. module: sale
#: field:sale.order,order_line:0 view:sale.order.line:0
#: field:sale.order,order_line:0
#: view:sale.order.line:0
msgid "Order Lines"
msgstr "Позиции заказа"
@@ -344,7 +347,8 @@ msgid "Disc.(%)"
msgstr ""
#. module: sale
#: view:sale.order:0 view:sale.order.line:0
#: view:sale.order:0
#: view:sale.order.line:0
#: field:sale.order.line,invoice_lines:0
msgid "Invoice Lines"
msgstr "Позиции счета"
@@ -437,13 +441,15 @@ msgid "Order Reference"
msgstr "Ссылка на заказ"
#. module: sale
#: selection:sale.order,state:0 view:sale.order.line:0
#: selection:sale.order,state:0
#: view:sale.order.line:0
#: selection:sale.order.line,state:0
msgid "Done"
msgstr "Выполнено"
#. module: sale
#: field:sale.order,pricelist_id:0 field:sale.shop,pricelist_id:0
#: field:sale.order,pricelist_id:0
#: field:sale.shop,pricelist_id:0
msgid "Pricelist"
msgstr "Каталог"
@@ -612,7 +618,8 @@ msgid "Taxes :"
msgstr ""
#. module: sale
#: field:sale.order,invoiced_rate:0 field:sale.order.line,invoiced:0
#: field:sale.order,invoiced_rate:0
#: field:sale.order.line,invoiced:0
msgid "Invoiced"
msgstr "Выставлен счет"
@@ -763,7 +770,8 @@ msgid "Direct Delivery"
msgstr ""
#. module: sale
#: view:sale.order:0 view:sale.order.line:0
#: view:sale.order:0
#: view:sale.order.line:0
#: field:sale.order.line,property_ids:0
msgid "Properties"
msgstr "Свойства"
@@ -793,7 +801,8 @@ msgstr "Вычислить"
#. module: sale
#: model:ir.actions.act_window,name:sale.action_shop_form
#: model:ir.ui.menu,name:sale.menu_action_shop_form field:sale.order,shop_id:0
#: model:ir.ui.menu,name:sale.menu_action_shop_form
#: field:sale.order,shop_id:0
msgid "Shop"
msgstr "Магазин"
@@ -844,7 +853,8 @@ msgid "Delivery Order Only"
msgstr ""
#. module: sale
#: view:sale.order:0 view:sale.order.line:0
#: view:sale.order:0
#: view:sale.order.line:0
msgid "Sales order lines"
msgstr "Позиции заказа"
@@ -859,7 +869,8 @@ msgid "Sales"
msgstr "Продажи"
#. module: sale
#: view:sale.order:0 view:sale.order.line:0
#: view:sale.order:0
#: view:sale.order.line:0
msgid "Qty"
msgstr "Кол-во"
@@ -874,7 +885,8 @@ msgid "Other data"
msgstr "Прочие данные"
#. module: sale
#: wizard_field:sale.advance_payment_inv,init,amount:0 rml:sale.order:0
#: wizard_field:sale.advance_payment_inv,init,amount:0
#: rml:sale.order:0
#: field:sale.order.line,price_unit:0
msgid "Unit Price"
msgstr "Цена за ед."
@@ -900,7 +912,8 @@ msgstr "Счет"
#: model:process.transition.action,name:sale.process_transition_action_cancel1
#: model:process.transition.action,name:sale.process_transition_action_cancel2
#: wizard_button:sale.advance_payment_inv,init,end:0
#: view:sale.config.picking_policy:0 view:sale.order.line:0
#: view:sale.config.picking_policy:0
#: view:sale.order.line:0
#: wizard_button:sale.order.line.make_invoice,init,end:0
#: wizard_button:sale.order.make_invoice,init,end:0
msgid "Cancel"
@@ -917,7 +930,8 @@ msgid ""
msgstr ""
#. module: sale
#: view:sale.order:0 view:sale.order.line:0
#: view:sale.order:0
#: view:sale.order.line:0
msgid "UoM"
msgstr "Ед. изм."
@@ -1030,7 +1044,8 @@ msgid "Ordering Contact"
msgstr ""
#. module: sale
#: rml:sale.order:0 field:sale.order.line,name:0
#: rml:sale.order:0
#: field:sale.order.line,name:0
msgid "Description"
msgstr "Описание"
@@ -1088,7 +1103,8 @@ msgstr ""
"Имя и адрес контакта, разместившего заказ или запросившего предолжение."
#. module: sale
#: field:sale.order,partner_id:0 field:sale.order.line,order_partner_id:0
#: field:sale.order,partner_id:0
#: field:sale.order.line,order_partner_id:0
msgid "Customer"
msgstr "Клиент"
@@ -1100,7 +1116,8 @@ msgstr ""
#. module: sale
#: model:ir.model,name:sale.model_sale_order
#: model:process.node,name:sale.process_node_saleorder0
#: model:res.request.link,name:sale.req_link_sale_order view:sale.order:0
#: model:res.request.link,name:sale.req_link_sale_order
#: view:sale.order:0
#: field:stock.picking,sale_id:0
msgid "Sale Order"
msgstr "Заказ"
@@ -1127,7 +1144,8 @@ msgid "Total amount"
msgstr "Итоговая сумма"
#. module: sale
#: rml:sale.order:0 field:sale.order,date_order:0
#: rml:sale.order:0
#: field:sale.order,date_order:0
msgid "Date Ordered"
msgstr "Дата заказа"
@@ -1212,7 +1230,8 @@ msgstr ""
"позициям)."
#. module: sale
#: view:sale.order:0 view:sale.order.line:0
#: view:sale.order:0
#: view:sale.order.line:0
msgid "States"
msgstr "Cостояния"
@@ -1232,7 +1251,8 @@ msgid "Error: Invalid ean code"
msgstr "Ошибка: Неправильный штрих-код"
#. module: sale
#: field:sale.order,picked_rate:0 field:sale.order,shipped:0
#: field:sale.order,picked_rate:0
#: field:sale.order,shipped:0
msgid "Picked"
msgstr ""
@@ -1265,49 +1285,49 @@ msgstr "Позиция заказа"
#. module: sale
#: model:ir.module.module,shortdesc:sale.module_meta_information
msgid "Dashboard for sales"
msgstr "Панель для продаж"
msgstr ""
#. module: sale
#: model:ir.actions.act_window,name:sale.open_board_sales_manager
#: model:ir.ui.menu,name:sale.menu_board_sales_manager
msgid "Sale Dashboard"
msgstr "Панель аналитики продаж"
msgstr ""
#. module: sale
#: view:board.board:0
msgid "Sales of the month"
msgstr "Продажи месяца"
msgstr ""
#. module: sale
#: view:board.board:0
msgid "Sales manager board"
msgstr "Панель менеджера продаж"
msgstr ""
#. module: sale
#: view:board.board:0
msgid "Cases of the month"
msgstr "Случаи месяца"
msgstr ""
#. module: sale
#: view:board.board:0
msgid "My open quotations"
msgstr "Мои незакрытые предложения"
msgstr ""
#. module: sale
#: view:board.board:0
msgid "Cases statistics"
msgstr "Статистика случаев"
msgstr ""
#. module: sale
#: view:board.board:0
msgid "Top ten sales of the month"
msgstr "10 лучших продаж месяца"
msgstr ""
#. module: sale
#: field:report.sale.order.category,price_average:0
#: field:report.sale.order.product,price_average:0
msgid "Average Price"
msgstr "Средняя цена"
msgstr ""
#. module: sale
#: model:ir.model,name:sale.model_report_sale_order_created
@@ -1317,7 +1337,7 @@ msgstr ""
#. module: sale
#: view:report.sale.order.category:0
msgid "Sales Orders by category"
msgstr "Клиентские заказы по категориям"
msgstr ""
#. module: sale
#: model:ir.report.custom,name:sale.ir_report_custom_6
@@ -1328,7 +1348,7 @@ msgstr ""
#. module: sale
#: model:ir.model,name:sale.model_report_sale_order_product
msgid "Sales Orders by Products"
msgstr "Клиентские заказы по продукции"
msgstr ""
#. module: sale
#: model:ir.ui.menu,name:sale.ir_ui_menu1
@@ -1345,30 +1365,30 @@ msgstr ""
#. module: sale
#: model:ir.ui.menu,name:sale.next_id_82
msgid "All Months"
msgstr "Все месяцы"
msgstr ""
#. module: sale
#: field:report.sale.order.category,price_total:0
#: field:report.sale.order.product,price_total:0
msgid "Total Price"
msgstr "Итоговая цена"
msgstr ""
#. module: sale
#: model:ir.model,name:sale.model_report_sale_order_category
msgid "Sales Orders by Categories"
msgstr "Клиентские заказы по категориям"
msgstr ""
#. module: sale
#: model:ir.actions.act_window,name:sale.action_order_sale_list
#: model:ir.ui.menu,name:sale.menu_report_order_sale_list
msgid "Sales of the Month"
msgstr "Продажи месяца"
msgstr ""
#. module: sale
#: model:ir.actions.act_window,name:sale.action_order_product_tree
#: model:ir.ui.menu,name:sale.menu_report_order_product
msgid "Sales by Product (this month)"
msgstr "Продужи по продуктам (тек. мес.)"
msgstr ""
#. module: sale
#: model:ir.report.custom,name:sale.ir_report_custom_4
@@ -1386,7 +1406,7 @@ msgstr ""
#: model:ir.ui.menu,name:sale.menu_report_order_category_all
#: view:report.sale.order.category:0
msgid "Sales by Category of Products"
msgstr "Продажи по категриям продукции"
msgstr ""
#. module: sale
#: model:ir.ui.menu,name:sale.ir_ui_menu3
@@ -1397,24 +1417,24 @@ msgstr ""
#: field:report.sale.order.category,quantity:0
#: field:report.sale.order.product,quantity:0
msgid "# of Products"
msgstr "Кол-во продукции"
msgstr ""
#. module: sale
#: model:ir.actions.act_window,name:sale.action_order_product_tree_all
#: model:ir.ui.menu,name:sale.menu_report_order_product_all
#: view:report.sale.order.product:0
msgid "Sales by Product"
msgstr "Продажи по продуктам"
msgstr ""
#. module: sale
#: model:ir.ui.menu,name:sale.next_id_81
msgid "This Month"
msgstr "Данный месяц"
msgstr ""
#. module: sale
#: field:report.sale.order.category,category_id:0
msgid "Categories"
msgstr "Категории"
msgstr ""
#. module: sale
#: model:ir.actions.act_window,name:sale.action_view_created_sale_order_dashboard
@@ -1424,7 +1444,7 @@ msgstr ""
#. module: sale
#: model:ir.ui.menu,name:sale.next_id_80
msgid "Reporting"
msgstr "Отчетность"
msgstr ""
#. module: sale
#: model:ir.actions.act_window,name:sale.action_turnover_month_tree
@@ -1441,13 +1461,13 @@ msgstr ""
#. module: sale
#: model:ir.ui.menu,name:sale.next_id_83
msgid "Graphs"
msgstr "Графики"
msgstr ""
#. module: sale
#: selection:report.sale.order.category,state:0
#: selection:report.sale.order.product,state:0
msgid "Manual in progress"
msgstr "Выполняется вручную"
msgstr ""
#. module: sale
#: field:report.turnover.per.month,turnover:0
@@ -1465,7 +1485,7 @@ msgstr "Выполняется"
#: model:ir.actions.act_window,name:sale.action_order_category_tree
#: model:ir.ui.menu,name:sale.menu_report_order_category
msgid "Sales by Category of Product (this month)"
msgstr "Продажи по категории продукции (тек.мес.)"
msgstr ""
#. module: sale
#: model:ir.report.custom,name:sale.ir_report_custom_5
@@ -1478,13 +1498,13 @@ msgstr ""
#: field:report.sale.order.product,name:0
#: field:report.turnover.per.month,name:0
msgid "Month"
msgstr "Месяц"
msgstr ""
#. module: sale
#: field:report.sale.order.category,count:0
#: field:report.sale.order.product,count:0
msgid "# of Lines"
msgstr "Кол-во позиций"
msgstr ""
#. module: sale
#: field:report.sale.order.created,create_date:0
-2
View File
@@ -15,7 +15,5 @@
"access_sale_order_manager","sale.order.manager","model_sale_order","group_sale_manager",1,1,1,1
"access_sale_order_line_manager","sale.order.line.manager","model_sale_order_line","group_sale_manager",1,1,1,1
"access_sale_report_manager","sale.report","model_sale_report","group_sale_manager",1,0,0,0
"access_sale_open_invoice","sale.open.invoice","model_sale_open_invoice","group_sale_user",1,1,1,0
"access_sale_open_invoice_manager","sale.open.invoice","model_sale_open_invoice","group_sale_manager",1,1,1,1
"access_product_product_sale_user","product.product.sale.user","model_product_product","group_sale_user",1,0,0,0
"access_sale_account_journal","account.journal sale order.user","account.model_account_journal","group_sale_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
15 access_sale_order_manager sale.order.manager model_sale_order group_sale_manager 1 1 1 1
16 access_sale_order_line_manager sale.order.line.manager model_sale_order_line group_sale_manager 1 1 1 1
17 access_sale_report_manager sale.report model_sale_report group_sale_manager 1 0 0 0
access_sale_open_invoice sale.open.invoice model_sale_open_invoice group_sale_user 1 1 1 0
access_sale_open_invoice_manager sale.open.invoice model_sale_open_invoice group_sale_manager 1 1 1 1
18 access_product_product_sale_user product.product.sale.user model_product_product group_sale_user 1 0 0 0
19 access_sale_account_journal account.journal sale order.user account.model_account_journal group_sale_user 1 0 0 0
@@ -23,7 +23,6 @@ import time
from osv import fields, osv
class sale_order_line(osv.osv):
_name = 'sale.order.line'
_inherit = 'sale.order.line'
_columns = {
'analytics_id':fields.many2one('account.analytic.plan.instance','Analytic Distribution'),
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<openerp>
<data>
<data>
<record model="ir.ui.view" id="view_order_form_inherit">
<field name="name">sale.order.form.inherit</field>
@@ -36,5 +36,5 @@
</field>
</record>
</data>
</data>
</openerp>
+42 -41
View File
@@ -1,47 +1,48 @@
<?xml version="1.0"?>
<openerp>
<data>
<data>
<record model="ir.ui.view" id="crm_case_form_view_oppor">
<field name="name">CRM - Opportunities - Quote Inherit</field>
<field name="model">crm.lead</field>
<field name="type">form</field>
<field name="inherit_id" ref="crm.crm_case_form_view_oppor"/>
<field name="arch" type="xml">
<field name="priority" position="after">
<button string="Convert to Sale" icon="gtk-go-forward" name="%(action_crm_make_sale)d" type="action"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="crm_case_form_view_oppor">
<field name="name">CRM - Opportunities - Quote Inherit</field>
<field name="model">crm.lead</field>
<field name="type">form</field>
<field name="inherit_id" ref="crm.crm_case_form_view_oppor"/>
<field name="arch" type="xml">
<field name="priority" position="after">
<button string="Convert to Sale" icon="gtk-go-forward" name="%(action_crm_make_sale)d" type="action"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="sale_view_inherit123">
<field name="name">sale.order.inherit</field>
<field name="model">sale.order</field>
<field name="type">form</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<field name="user_id" position="after">
<field name="section_id" widget="selection" groups="base.group_extended"/>
</field>
</field>
</record>
<record id="view_sales_order_filter_inherit" model="ir.ui.view">
<field name="name">sale.order.list.select</field>
<field name="model">sale.order</field>
<field name="type">search</field>
<field name="inherit_id" ref="sale.view_sales_order_filter"/>
<field name="arch" type="xml">
<field name="date_order" position="after">
<field name="section_id" default="context.get('section_id', False)" widget="selection" string="Sale Team" groups="base.group_extended">
<filter icon="terp-personal+"
domain="[('section_id.user_id','=',uid)]"
groups="base.group_extended"
help="My Sales Team"/>
</field>
</field>
</field>
</record>
</data>
<record model="ir.ui.view" id="sale_view_inherit123">
<field name="name">sale.order.inherit</field>
<field name="model">sale.order</field>
<field name="type">form</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<field name="user_id" position="after">
<field name="section_id" widget="selection" groups="base.group_extended"/>
</field>
</field>
</record>
<record id="view_sales_order_filter_inherit" model="ir.ui.view">
<field name="name">sale.order.list.select</field>
<field name="model">sale.order</field>
<field name="type">search</field>
<field name="inherit_id" ref="sale.view_sales_order_filter"/>
<field name="arch" type="xml">
<field name="date_order" position="after">
<field name="section_id" default="context.get('section_id', False)" widget="selection" string="Sale Team" groups="base.group_extended">
<filter icon="terp-personal+"
domain="[('section_id.user_id','=',uid)]"
groups="base.group_extended"
help="My Sales Team"/>
</field>
</field>
</field>
</record>
</data>
</openerp>
@@ -41,7 +41,7 @@ class sale_journal_report(osv.osv):
('done', 'Done'),
('cancel', 'Cancel')
], 'Order State', readonly=True),
'journal_id':fields.many2one('sale_journal.sale.journal', 'Journal', readonly=True),
'journal_id': fields.many2one('sale_journal.sale.journal', 'Journal', readonly=True),
'quantity': fields.float('Quantities', readonly=True),
'price_total': fields.float('Total Price', readonly=True),
'price_average': fields.float('Average Price', readonly=True),
@@ -86,7 +86,7 @@ class sale_journal_picking_report(osv.osv):
_auto = False
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
'month':fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'), ('05', 'May'), ('06', 'June'),
'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'), ('05', 'May'), ('06', 'June'),
('07', 'July'), ('08', 'August'), ('09', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', readonly=True),
'invoice_state':fields.selection([
@@ -103,7 +103,7 @@ class sale_journal_picking_report(osv.osv):
('cancel', 'cancel'),
], 'State', readonly=True),
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoicing method', readonly=True),
'journal_id':fields.many2one('sale_journal.picking.journal', 'Journal', readonly=True),
'journal_id': fields.many2one('sale_journal.picking.journal', 'Journal', readonly=True),
'quantity': fields.float('Quantities', readonly=True),
'price_total': fields.float('Total Price', readonly=True),
'price_average': fields.float('Average Price', readonly=True),
+12 -9
View File
@@ -148,8 +148,8 @@ class picking_journal(osv.osv):
'note': fields.text('Note'),
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d'),
'date_created': lambda *a: time.strftime('%Y-%m-%d'),
'date': time.strftime('%Y-%m-%d'),
'date_created': time.strftime('%Y-%m-%d'),
'user_id': lambda self,cr,uid,context: uid,
'state': lambda self,cr,uid,context: 'draft',
}
@@ -161,12 +161,15 @@ class picking_journal(osv.osv):
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'stock.picking', pickid, 'button_cancel', cr)
return True
def button_open(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'open'})
return True
def button_draft(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'draft'})
return True
def button_close(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'done', 'date_validation':time.strftime('%Y-%m-%d')})
return True
@@ -197,13 +200,13 @@ class res_partner(osv.osv):
_columns = {
'property_invoice_type': fields.property(
'sale_journal.invoice.type',
type='many2one',
relation='sale_journal.invoice.type',
string="Invoicing Method",
method=True,
view_load=True,
group_name="Accounting Properties",
help="The type of journal used for sales and picking."),
type = 'many2one',
relation = 'sale_journal.invoice.type',
string = "Invoicing Method",
method = True,
view_load = True,
group_name = "Accounting Properties",
help = "The type of journal used for sales and picking."),
}
res_partner()
+10 -8
View File
@@ -148,10 +148,12 @@
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<field name="user_id" position="after">
<separator string="Journal" colspan="4"/>
<field name="journal_id" select="1" widget="selection"/>
<field name="invoice_type_id" select="1" widget="selection"/>
<field name="origin" position="after">
<group colspan="2" col="2">
<separator string="Journal" colspan="4"/>
<field name="journal_id" select="1" widget="selection"/>
<field name="invoice_type_id" select="1" widget="selection"/>
</group>
</field>
</field>
</record>
@@ -403,10 +405,10 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Picking Journal">
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="user_id" select="1"/>
<field name="date" select="1"/>
<field name="name"/>
<field name="code"/>
<field name="user_id"/>
<field name="date"/>
<field name="state"/>
</tree>
</field>
+4 -4
View File
@@ -1,5 +1,5 @@
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
@@ -14,12 +14,12 @@
# 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/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import invoice_margin
import report
import sale_margin
import report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+5 -1
View File
@@ -21,8 +21,12 @@
{
"name":"Margins in Sale Orders",
"version":"1.0",
"author":"Tiny",
"category" : "Generic Modules/Sales & Purchases",
"description": """
This module adds the 'Margin' on sales order,
which gives the profitability by calculating the difference between the Unit Price and Cost Price
""",
"author":"Tiny",
"depends":["sale"],
"demo_xml":[],
"update_xml":["security/ir.model.access.csv","sale_margin_view.xml","report/report_margin_view.xml"],
-44
View File
@@ -1,44 +0,0 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields,osv
import pooler
from tools import config
class account_invoice_line(osv.osv):
_name = "account.invoice.line"
_inherit = "account.invoice.line"
_columns = {
'cost_price': fields.float('Cost Price', digits=(16, 2)),
}
def write(self, cr, uid, ids, vals, context={}):
if vals.get('product_id', False):
res = self.pool.get('product.product').read(cr, uid, [vals['product_id']], ['standard_price'])
vals['cost_price'] = res[0]['standard_price']
return super(account_invoice_line, self).write(cr, uid, ids, vals, context)
def create(self, cr, uid, vals, context={}):
if vals.get('product_id',False):
res = self.pool.get('product.product').read(cr, uid, [vals['product_id']], ['standard_price'])
vals['cost_price'] = res[0]['standard_price']
return super(account_invoice_line, self).create(cr, uid, vals, context)
account_invoice_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+24 -5
View File
@@ -23,7 +23,6 @@ import pooler
from tools import config
class sale_order_line(osv.osv):
_name = "sale.order.line"
_inherit = "sale.order.line"
def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,
@@ -32,8 +31,9 @@ class sale_order_line(osv.osv):
res = super(sale_order_line, self).product_id_change(cr, uid, ids, pricelist, product, qty=qty,
uom=uom, qty_uos=qty_uos, uos=uos, name=name, partner_id=partner_id,
lang=lang, update_tax=update_tax, date_order=date_order, packaging=packaging, fiscal_position=fiscal_position, flag=flag)
purchase_price = self.pool.get('product.product').browse(cr, uid, product).standard_price
res['value'].update({'purchase_price':purchase_price})
if product:
purchase_price = self.pool.get('product.product').browse(cr, uid, product).standard_price
res['value'].update({'purchase_price':purchase_price})
return res
def _product_margin(self, cr, uid, ids, field_name, arg, context=None):
@@ -66,7 +66,7 @@ class sale_order(osv.osv):
return result
_columns = {
'margin': fields.function(_product_margin, method=True, string='Margin', store=True),
'margin': fields.function(_product_margin, method=True, string='Margin', store=True, help="It gives profitability by calculating the difference between the Unit Price and Cost Price"),
}
sale_order()
@@ -75,7 +75,7 @@ class stock_picking(osv.osv):
_inherit = 'stock.picking'
_columns = {
'invoice_ids': fields.many2many('account.invoice', 'picking_invoice_rel', 'picking_id', 'invoice_id', 'Invoices', domain=[('type','=','in_invoice')]),
'invoice_ids': fields.many2many('account.invoice', 'picking_invoice_rel', 'picking_id', 'invoice_id', 'Invoices', domain=[('type','=','out_invoice')]),
}
def create_invoice(self, cr, uid, ids, *args):
@@ -90,4 +90,23 @@ class stock_picking(osv.osv):
return True
stock_picking()
class account_invoice_line(osv.osv):
_inherit = "account.invoice.line"
_columns = {
'cost_price': fields.float('Cost Price', digits=(16, 2)),
}
def write(self, cr, uid, ids, vals, context={}):
if vals.get('product_id', False):
res = self.pool.get('product.product').read(cr, uid, [vals['product_id']], ['standard_price'])
vals['cost_price'] = res[0]['standard_price']
return super(account_invoice_line, self).write(cr, uid, ids, vals, context)
def create(self, cr, uid, vals, context={}):
if vals.get('product_id',False):
res = self.pool.get('product.product').read(cr, uid, [vals['product_id']], ['standard_price'])
vals['cost_price'] = res[0]['standard_price']
return super(account_invoice_line, self).create(cr, uid, vals, context)
account_invoice_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+4 -4
View File
@@ -67,15 +67,15 @@
<field name="name">picking.margin.view.form</field>
<field name="type">form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_in_form" />
<field name="inherit_id" ref="stock.view_picking_out_form" />
<field name="arch" type="xml">
<notebook colspan="4">
<page string="Supplier Invoices">
<page string="Customer Invoices">
<separator string="Invoices" colspan="4"/>
<field colspan="4" name="invoice_ids" nolabel="1"/>
<group col="10" colspan="4">
<label colspan="6"/>
<button name="create_invoice" icon='gtk-execute' string="Create Invoice" type="object"/>
<label colspan="6"/>
<button name="create_invoice" icon='gtk-execute' string="Create Invoice" type="object"/>
</group>
</page>
</notebook>
+8 -6
View File
@@ -25,29 +25,31 @@ from osv import osv, fields
class mrp_production(osv.osv):
_inherit = 'mrp.production'
def _ref_calc(self, cr, uid, ids, field_names=None, arg=False, context={}):
def _ref_calc(self, cr, uid, ids, field_names=None, arg=False, context=None):
""" Finds reference of sale order for production order.
@param field_names: Names of fields.
@param arg: User defined arguments
@return: Dictionary of values.
"""
res = {}
if context is None:
context = {}
if not field_names:
field_names = []
res = {}
for id in ids:
res[id] = {}.fromkeys(field_names, False)
for f in field_names:
field_name = False
if f == 'sale_name':
field_name = 'name'
if f=='sale_ref':
if f == 'sale_ref':
field_name = 'client_order_ref'
for key, value in self._get_sale_ref(cr, uid, ids, field_name).items():
res[key][f] = value
return res
def _get_sale_ref(self, cr, uid, ids, field_name=False):
move_obj=self.pool.get('stock.move')
move_obj = self.pool.get('stock.move')
def get_parent_move(move_id):
move = move_obj.browse(cr, uid, move_id)
@@ -55,8 +57,8 @@ class mrp_production(osv.osv):
return get_parent_move(move.move_dest_id.id)
return move_id
res = {}
productions = self.read(cr, uid, ids, ['id','move_prod_id'])
res={}
for production in productions:
res[production['id']] = False
if production.get('move_prod_id',False):
@@ -65,7 +67,7 @@ class mrp_production(osv.osv):
move = move_obj.browse(cr,uid,parent_move_line)
if field_name == 'name':
res[production['id']] = move.sale_line_id and move.sale_line_id.order_id.name or False
if field_name=='client_order_ref':
if field_name == 'client_order_ref':
res[production['id']] = move.sale_line_id and move.sale_line_id.order_id.client_order_ref or False
return res
+2 -2
View File
@@ -170,8 +170,8 @@ class product_product(osv.osv):
context = {}
res = super(product_product, self).view_header_get(cr, user, view_id, view_type, context)
if res: return res
if (context.get('location', False)):
return _('Products: ')+self.pool.get('stock.location').browse(cr, user, context['location'], context).name
if (context.get('active_id', False)) and (context.get('active_model') == 'stock.location'):
return _('Products: ')+self.pool.get('stock.location').browse(cr, user, context['active_id'], context).name
return res
def get_product_available(self, cr, uid, ids, context=None):
+1 -1
View File
@@ -208,7 +208,7 @@
<para style="terp_default_Centre_8">[[ formatLang(picking.min_date,date_time = True) ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ picking.weight or '']] </para>
<para style="terp_default_Centre_8">[[ 'weight' in picking._columns.keys() and picking.weight or '']] </para>
</td>
</tr>
</blockTable>
@@ -72,6 +72,7 @@ class report_stock_picking(osv.osv):
sp.address_id as partner_id,
to_date(to_char(sp.create_date, 'MM-dd-YYYY'),'MM-dd-YYYY') as date,
count(sm.id) as nbr,
count(sp.id) as nbp,
sum(sm.product_qty*u.factor) as product_qty,
sum(sm.product_uos_qty) as product_uos_qty,
sm.product_id as product_id,
+1 -1
View File
@@ -20,6 +20,6 @@
"access_stock_report_tracklots","stock.report.tracklots","model_stock_report_tracklots","stock.group_stock_user",1,1,1,1
"access_report_products_to_received_planned","report.products.to.received.planned","model_report_products_to_received_planned","stock.group_stock_user",1,1,1,1
"access_report_delivery_products_planned","report.delivery.products.planned","model_report_delivery_products_planned","stock.group_stock_user",1,1,1,1
"access_stock_inventory_line_split","stock.inventory.line.split","model_stock_inventory_line_split","stock.group_stock_user",1,1,1,1
"access_report_stock_move","report.stock.move","model_report_stock_move","stock.group_stock_user",1,1,1,1
"access_report_stock_inventory","report.stock.inventory","model_report_stock_inventory","stock.group_stock_user",1,1,1,1
"access_report_stock_picking","report.stock.picking","model_report_stock_picking","stock.group_stock_user",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
20 access_stock_report_tracklots stock.report.tracklots model_stock_report_tracklots stock.group_stock_user 1 1 1 1
21 access_report_products_to_received_planned report.products.to.received.planned model_report_products_to_received_planned stock.group_stock_user 1 1 1 1
22 access_report_delivery_products_planned report.delivery.products.planned model_report_delivery_products_planned stock.group_stock_user 1 1 1 1
access_stock_inventory_line_split stock.inventory.line.split model_stock_inventory_line_split stock.group_stock_user 1 1 1 1
23 access_report_stock_move report.stock.move model_report_stock_move stock.group_stock_user 1 1 1 1
24 access_report_stock_inventory report.stock.inventory model_report_stock_inventory stock.group_stock_user 1 1 1 1
25 access_report_stock_picking report.stock.picking model_report_stock_picking stock.group_stock_user 1 1 1 1
+3
View File
@@ -1008,6 +1008,9 @@ class stock_picking(osv.osv):
return res
def test_done(self, cr, uid, ids, context=None):
""" Test whether the move lines are done or not.
@return: True or False
"""
ok = False
for pick in self.browse(cr, uid, ids, context=context):
if not pick.move_lines:
-3
View File
@@ -1630,9 +1630,6 @@
icon="terp-stock_effects-object-colorize"
states="draft,assigned,confirmed,done"/>
<label/>
<button name="%(track_line)d" string="Split in production lots"
groups="base.group_extended"
type="action" icon="terp-stock_effects-object-colorize"/>
<separator colspan="4" string="Move State"/>
<field name="state"/>
<group col="5" colspan="2">
@@ -44,8 +44,8 @@ class stock_inventory_line_split(osv.osv_memory):
@return: A dictionary which of fields with values.
"""
record_id = context and context.get('active_id',False)
res = super(stock_inventory_line_split, self).default_get(cr, uid, fields, context=context)
line= self.pool.get('stock.inventory.line').browse(cr, uid, record_id)
res = {}
line = self.pool.get('stock.inventory.line').browse(cr, uid, record_id)
if 'product_id' in fields:
res.update({'product_id':line.product_id.id})
return res
+2 -2
View File
@@ -43,14 +43,14 @@ class thunderbird_installer(osv.osv_memory):
'thunderbird':fields.boolean('Thunderbird Module ', help="Allows you to select an object that you’d like to add to your email and its attachments."),
'plugin_file':fields.binary('Thunderbird Plug-in', readonly=True, help="Thunderbird plug-in file. Save as this file and install this plug-in in thunderbird."),
'pdf_file':fields.binary('Installation Manual', help="The documentation file :- how to install Thunderbird Plug-in.", readonly=True),
'description':fields.text('Description', readonly=True)
'description':fields.text('Description', readonly=True)
}
_defaults = {
'thunderbird' : True,
'name' : 'tiny_plugin-2.0.xpi',
'pdf_name' : 'Installation Guide to OpenERP Thunderbid Plug-in.pdf',
'description' : """ * Save The thunderbird plug­in Follow the following step to install thunderbird plug­in. \n -> 1. From Menu Bar, Open Tools ­> Add ons. \n -> 2. Now click on install button and a browser window will appear. \n -> 3. Just select the (.xpi) file from thunderbird/plugin directory and click ok, a new software installation window will appear and within a short time Install Now button will be enabled. \n -> 4. Click on Install Now and restart Thunderbird. \n -> 5. Now Thunderbird plug­in is installed."""
'description' : """ * Save the Thunderbird plug­in. \n * Follow the following step to install Thunderbird plug­in. \n -> 1.From Menu Bar of Thunderbird, open Tools ­> Add ons. \n -> 2. Click on install button and a browser window appears. \n -> 3. Select the plug-in(.xpi file) and click Ok. \n -> 4. Software installation window appears and within a short time “Install Now” button will be enabled -> 5. Click "Install Now". \n -> 6. Restart Thunderbird."""
}
thunderbird_installer()
Binary file not shown.
+7 -7
View File
@@ -15,7 +15,7 @@
<attribute name="string">Thunderbird</attribute>
</separator>
<xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">This module is required for the thuderbird plug-in to work properly.This allows you to select an object that you had like to add to your email and its attachments. You can select a partner, a task, a project, an analytical account, or any other object and attach selected mail as .eml file in attachment of selected record.</attribute>
<attribute name="string">This module allows you to archive an e-mail on one or more objects of OpenERP. You can attach an email to a partner, a task, an analytic account or any other object. You can also create a new object like a lead, a phone call, claim and many more.</attribute>
</xpath>
<xpath expr="//button[@string='Install Modules']" position="attributes">
<attribute name="string">Configure</attribute>
@@ -25,8 +25,8 @@
<attribute name='rowspan'>15</attribute>
</xpath>
<group colspan="8" position="replace">
<group colspan="8" height="400" width="700">
<field name="thunderbird"/>
<group colspan="8" height="450" width="750">
<field name="thunderbird" invisible="1" />
<field name="name" invisible="1"/>
<field name="pdf_name" invisible="1"/>
<newline/>
@@ -72,20 +72,20 @@
<group colspan="2">
<image name="gtk-dialog-info"/>
<newline/>
<label align="0.0" string="This module is required for the thuderbird plug-in to work properly.This allows you to select an object that you had like to add to your email and its attachments. You can select a partner, a task, a project, an analytical account, or any other object and attach selected mail as .eml file in attachment of selected record." width="200"/>
<label align="0.0" string="This module allows you to archive an e-mail on one or more objects of OpenERP. You can attach an email to a partner, a task, an analytic account or any other object. You can also create a new object like a lead, a phone call, claim and many more." width="200"/>
</group>
<group colspan="8">
<field name="thunderbird"/>
<field name="thunderbird" invisible="1"/>
<field name="name" invisible="1"/>
<field name="pdf_name" invisible="1"/>
<newline/>
<field name="plugin_file" filename="name"/>
<newline/>
<field name="pdf_file" filename="pdf_name"/>
<newline/>
<separator string="Thunderbird plugin installation note." colspan="4"/>
<field name="description" nolabel="1" colspan="8"/>
<field name="description" nolabel="1" colspan="8"/>
</group>
</group>
</group>
+38 -38
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 10:32+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-07-07 22:45+0000\n"
"Last-Translator: Pomazan Bogdan <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:17+0000\n"
"X-Launchpad-Export-Date: 2010-07-08 03:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: wiki
@@ -37,17 +37,17 @@ msgstr ""
#. module: wiki
#: field:wiki.wiki,create_uid:0
msgid "Author"
msgstr ""
msgstr "Автор"
#. module: wiki
#: model:ir.actions.wizard,name:wiki.wizard_open_page
msgid "Open Page"
msgstr ""
msgstr "Открыть страницу"
#. module: wiki
#: field:wiki.groups.link,action_id:0
msgid "Menu"
msgstr ""
msgstr "Меню"
#. module: wiki
#: field:wiki.groups,child_ids:0
@@ -59,7 +59,7 @@ msgstr ""
#: model:ir.actions.act_window,name:wiki.action_wiki
#: model:ir.ui.menu,name:wiki.menu_action_wiki_wiki
msgid "Wiki Pages"
msgstr ""
msgstr "Wiki страницы"
#. module: wiki
#: field:wiki.groups,section:0
@@ -80,12 +80,12 @@ msgstr ""
#. module: wiki
#: field:wiki.wiki,text_area:0
msgid "Content"
msgstr ""
msgstr "Содержание"
#. module: wiki
#: model:ir.ui.menu,name:wiki.menu_document_configuration
msgid "Wiki Configuration"
msgstr ""
msgstr "Настройка Wiki"
#. module: wiki
#: constraint:ir.actions.act_window:0
@@ -101,7 +101,7 @@ msgstr ""
#. module: wiki
#: field:wiki.wiki,name:0
msgid "Title"
msgstr ""
msgstr "Заголовок"
#. module: wiki
#: field:wiki.wiki,history_id:0
@@ -121,17 +121,17 @@ msgstr ""
#. module: wiki
#: view:wiki.groups:0
msgid "Create a Menu"
msgstr ""
msgstr "Создать меню"
#. module: wiki
#: field:wiki.groups,notes:0
msgid "Description"
msgstr ""
msgstr "Описание"
#. module: wiki
#: field:wiki.wiki,section:0
msgid "Section"
msgstr ""
msgstr "Секция"
#. module: wiki
#: view:wizard.wiki.history.show_diff:0
@@ -146,12 +146,12 @@ msgstr ""
#. module: wiki
#: field:wiki.wiki,write_uid:0
msgid "Last Author"
msgstr ""
msgstr "Последний автор"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.act_view_diff
msgid "Differences"
msgstr ""
msgstr "Разность"
#. module: wiki
#: help:wiki.wiki,section:0
@@ -161,17 +161,17 @@ msgstr ""
#. module: wiki
#: view:wiki.groups:0
msgid "Page Template"
msgstr ""
msgstr "Шаблон страницы"
#. module: wiki
#: model:ir.ui.menu,name:wiki.menu_document2
msgid "Document Management"
msgstr ""
msgstr "Управление документами"
#. module: wiki
#: field:wiki.wiki.history,create_date:0
msgid "Date"
msgstr ""
msgstr "Дата"
#. module: wiki
#: wizard_view:wiki.make.index,init:0
@@ -181,13 +181,13 @@ msgstr ""
#. module: wiki
#: view:wiki.groups:0
msgid "Configuration"
msgstr ""
msgstr "Конфигурация"
#. module: wiki
#: field:wiki.groups,home:0
#: field:wiki.groups,page_ids:0
msgid "Pages"
msgstr ""
msgstr "Страницы"
#. module: wiki
#: constraint:ir.ui.view:0
@@ -197,28 +197,28 @@ msgstr "Неправильный XML для просмотра архитект
#. module: wiki
#: field:wiki.wiki.history,text_area:0
msgid "Text area"
msgstr ""
msgstr "Текстовое поле"
#. module: wiki
#: wizard_field:wiki.create.menu,init,menu_parent_id:0
msgid "Parent Menu"
msgstr ""
msgstr "Родительское меню"
#. module: wiki
#: field:wiki.wiki,create_date:0
msgid "Created on"
msgstr ""
msgstr "Создан"
#. module: wiki
#: view:wiki.groups:0
msgid "Notes"
msgstr ""
msgstr "Заметки"
#. module: wiki
#: wizard_view:wiki.create.menu,init:0
#: wizard_view:wiki.make.index,init:0
msgid "Menu Information"
msgstr ""
msgstr "Информация меню"
#. module: wiki
#: field:wiki.groups,parent_id:0
@@ -230,18 +230,18 @@ msgstr ""
#: field:wiki.wiki,summary:0
#: field:wiki.wiki.history,summary:0
msgid "Summary"
msgstr ""
msgstr "Итого"
#. module: wiki
#: field:wiki.groups,create_date:0
msgid "Created Date"
msgstr ""
msgstr "Дата создания"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_history
#: model:ir.ui.menu,name:wiki.menu_action_history
msgid "All Page Histories"
msgstr ""
msgstr "История всех страниц"
#. module: wiki
#: model:ir.model,name:wiki.model_wiki_wiki
@@ -261,34 +261,34 @@ msgstr ""
#. module: wiki
#: wizard_field:wiki.create.menu,init,menu_name:0
msgid "Menu Name"
msgstr ""
msgstr "Название меню"
#. module: wiki
#: view:wiki.wiki:0
msgid "Modifications"
msgstr ""
msgstr "Модификации"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.act_wiki_wiki_history
msgid "History"
msgstr ""
msgstr "История"
#. module: wiki
#: model:ir.ui.menu,name:wiki.menu_document
#: view:wiki.wiki:0
msgid "Wiki"
msgstr ""
msgstr "Wiki"
#. module: wiki
#: field:wiki.wiki,write_date:0
msgid "Modification Date"
msgstr ""
msgstr "Дата изменения"
#. module: wiki
#: model:ir.actions.wizard,name:wiki.wizard_make_index
#: wizard_button:wiki.make.index,init,yes:0
msgid "Create Index"
msgstr ""
msgstr "Создать индекс"
#. module: wiki
#: field:wiki.wiki.history,minor_edit:0
@@ -301,12 +301,12 @@ msgstr ""
#: wizard_button:wiki.create.menu,init,create_menu:0
#: wizard_view:wiki.make.index,init:0
msgid "Create Menu"
msgstr ""
msgstr "Создать меню"
#. module: wiki
#: field:wiki.wiki,tags:0
msgid "Tags"
msgstr ""
msgstr "Ярлыки"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_wiki_groups
@@ -332,12 +332,12 @@ msgstr ""
#: wizard_button:wiki.create.menu,init,end:0
#: wizard_button:wiki.make.index,init,end:0
msgid "Cancel"
msgstr ""
msgstr "Отмена"
#. module: wiki
#: field:wizard.wiki.history.show_diff,diff:0
msgid "Diff"
msgstr ""
msgstr "Различие"
#. module: wiki
#: field:wiki.wiki,review:0