[MERGE] merged from trunk-addons branch
bzr revid: hmo@tinyerp.com-20100713115800-yhnlwf0rachbddat
This commit is contained in:
commit
506b249a0f
|
@ -183,7 +183,7 @@ class account_cash_statement(osv.osv):
|
|||
('open','Open')], 'State', required=True, states={'confirm': [('readonly', True)]}, readonly="1"),
|
||||
'total_entry_encoding':fields.function(_get_sum_entry_encoding, method=True, store=True, string="Cash Transaction", help="Total cash transactions"),
|
||||
'closing_date':fields.datetime("Closed On"),
|
||||
'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance', help="Closing balance based on Opening Balance and Transactions"),
|
||||
'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance', help="Closing balance based on Starting Balance and Cash Transactions"),
|
||||
'balance_end_cash': fields.function(_balance_end_cash, method=True, store=True, string='Balance', help="Closing balance based on cashBox"),
|
||||
'starting_details_ids': fields.one2many('account.cashbox.line', 'starting_id', string='Opening Cashbox'),
|
||||
'ending_details_ids': fields.one2many('account.cashbox.line', 'ending_id', string='Closing Cashbox'),
|
||||
|
|
|
@ -482,7 +482,6 @@ class account_move_line(osv.osv):
|
|||
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'account_move_line_journal_id_period_id_index\'')
|
||||
if not cr.fetchone():
|
||||
cr.execute('CREATE INDEX account_move_line_journal_id_period_id_index ON account_move_line (journal_id, period_id)')
|
||||
cr.commit()
|
||||
|
||||
def _check_no_view(self, cr, uid, ids):
|
||||
lines = self.browse(cr, uid, ids)
|
||||
|
@ -675,6 +674,7 @@ class account_move_line(osv.osv):
|
|||
account_id = line['account_id']['id']
|
||||
partner_id = (line['partner_id'] and line['partner_id']['id']) or False
|
||||
writeoff = debit - credit
|
||||
|
||||
# Ifdate_p in context => take this date
|
||||
if context.has_key('date_p') and context['date_p']:
|
||||
date=context['date_p']
|
||||
|
@ -797,7 +797,7 @@ class account_move_line(osv.osv):
|
|||
title = self.view_header_get(cr, uid, view_id, view_type, context)
|
||||
xml = '''<?xml version="1.0"?>\n<tree string="%s" editable="top" refresh="5" on_write="on_create_write">\n\t''' % (title)
|
||||
journal_pool = self.pool.get('account.journal')
|
||||
|
||||
|
||||
ids = journal_pool.search(cr, uid, [])
|
||||
journals = journal_pool.browse(cr, uid, ids)
|
||||
all_journal = [None]
|
||||
|
@ -814,14 +814,14 @@ class account_move_line(osv.osv):
|
|||
else:
|
||||
fields.get(field.field).append(journal.id)
|
||||
common_fields[field.field] = common_fields[field.field] + 1
|
||||
|
||||
|
||||
fld.append(('period_id', 3))
|
||||
fld.append(('journal_id', 10))
|
||||
flds.append('period_id')
|
||||
flds.append('journal_id')
|
||||
fields['period_id'] = all_journal
|
||||
fields['journal_id'] = all_journal
|
||||
|
||||
|
||||
from operator import itemgetter
|
||||
fld = sorted(fld, key=itemgetter(1))
|
||||
|
||||
|
@ -835,13 +835,13 @@ class account_move_line(osv.osv):
|
|||
|
||||
for field_it in fld:
|
||||
field = field_it[0]
|
||||
|
||||
|
||||
if common_fields.get(field) == total:
|
||||
fields.get(field).append(None)
|
||||
|
||||
|
||||
if field=='state':
|
||||
state = 'colors="red:state==\'draft\'"'
|
||||
|
||||
|
||||
attrs = []
|
||||
if field == 'debit':
|
||||
attrs.append('sum="Total debit"')
|
||||
|
@ -864,7 +864,7 @@ class account_move_line(osv.osv):
|
|||
|
||||
if field in widths:
|
||||
attrs.append('width="'+str(widths[field])+'"')
|
||||
|
||||
|
||||
attrs.append("invisible=\"context.get('visible_id') not in %s\"" % (fields.get(field)))
|
||||
xml += '''<field name="%s" %s/>\n''' % (field,' '.join(attrs))
|
||||
|
||||
|
@ -914,7 +914,7 @@ class account_move_line(osv.osv):
|
|||
journal = self.pool.get('account.journal').browse(cr, uid, [journal_id])[0]
|
||||
if journal.allow_date and period_id:
|
||||
period = self.pool.get('account.period').browse(cr, uid, [period_id])[0]
|
||||
if not time.strptime(vals['date'],'%Y-%m-%d')>=time.strptime(period.date_start,'%Y-%m-%d') or not time.strptime(vals['date'],'%Y-%m-%d')<=time.strptime(period.date_stop,'%Y-%m-%d'):
|
||||
if not time.strptime(vals['date'][:10],'%Y-%m-%d')>=time.strptime(period.date_start,'%Y-%m-%d') or not time.strptime(vals['date'][:10],'%Y-%m-%d')<=time.strptime(period.date_stop,'%Y-%m-%d'):
|
||||
raise osv.except_osv(_('Error'),_('The date of your Ledger Posting is not in the defined period !'))
|
||||
else:
|
||||
return True
|
||||
|
|
|
@ -2300,7 +2300,6 @@
|
|||
<field name="journal_id" on_change="onchange_journal_id(journal_id)" domain="[('type','=','cash')]" select="1" />
|
||||
<field name="user_id" select="1" readonly="1"/>
|
||||
<field name="period_id" select="1"/>
|
||||
<!-- <field name="balance_end_real"/>-->
|
||||
</group>
|
||||
|
||||
<notebook colspan="4">
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -46,7 +46,6 @@ class journal_print(report_sxw.rml_parse):
|
|||
ids_journal_period = obj_jperiod.search(self.cr, self.uid, [('journal_id','=',journal), ('period_id','=',period)])
|
||||
if ids_journal_period:
|
||||
self.cr.execute('update account_journal_period set state=%s where journal_id=%s and period_id=%s and state=%s', ('printed',journal,period,'draft'))
|
||||
self.cr.commit()
|
||||
self.cr.execute('select id from account_move_line where period_id=%s and journal_id=%s and state<>\'draft\' order by ('+ sort_selection +'),id', (period, journal))
|
||||
ids = map(lambda x: x[0], self.cr.fetchall())
|
||||
ids_final.append(ids)
|
||||
|
@ -56,7 +55,6 @@ class journal_print(report_sxw.rml_parse):
|
|||
line_ids.append(a)
|
||||
return line_ids
|
||||
self.cr.execute('update account_journal_period set state=%s where journal_id=%s and period_id=%s and state=%s', ('printed',journal_id,period_id,'draft'))
|
||||
self.cr.commit()
|
||||
self.cr.execute('select id from account_move_line where period_id=%s and journal_id=%s and state<>\'draft\' order by date,id', (period_id, journal_id))
|
||||
ids = map(lambda x: x[0], self.cr.fetchall())
|
||||
return obj_mline.browse(self.cr, self.uid, ids)
|
||||
|
|
|
@ -127,10 +127,10 @@
|
|||
<lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/>
|
||||
<lineStyle kind="LINEABOVE" colorName="#000000" start="2,0" stop="2,0"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table_Main_Table">
|
||||
<blockTableStyle id="Table4">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,0" stop="0,-1"/>
|
||||
<!--lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,0" stop="0,-1"/>
|
||||
<lineStyle kind="LINEAFTER" colorName="#ffffff" start="0,0" stop="0,-1"/>
|
||||
<lineStyle kind="LINEABOVE" colorName="#ffffff" start="0,0" stop="0,0"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
|
||||
|
@ -149,65 +149,51 @@
|
|||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="1,-1" stop="1,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="2,-1" stop="2,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="3,-1" stop="3,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="1,-1" stop="1,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="2,-1" stop="2,-1"/>
|
||||
<lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,4" stop="0,-1"/>
|
||||
<lineStyle kind="LINEAFTER" colorName="#ffffff" start="0,4" stop="0,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/-->
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table_Tax_Header">
|
||||
<blockTableStyle id="Table6">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table_Tax_Content">
|
||||
<blockTableStyle id="Table5">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table_Table_Border_White">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="1,-1" stop="1,-1"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="2,-1" stop="2,-1"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table_Final_Border">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEABOVE" colorName="#ffffff" start="0,0" stop="0,0"/>
|
||||
<lineStyle kind="LINEABOVE" colorName="#ffffff" start="1,0" stop="1,0"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table_Coment_Payment_Term">
|
||||
<blockTableStyle id="Table3">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table_Payment_Terms">
|
||||
<blockTableStyle id="Table2">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="Table1">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
</blockTableStyle>
|
||||
<initialize>
|
||||
<paraStyle name="all" alignment="justify"/>
|
||||
</initialize>
|
||||
<paraStyle name="Standard" fontName="Times-Roman"/>
|
||||
<paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="List" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="Table Contents" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="Table Heading" fontName="Times-Roman" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="Caption" fontName="Times-Roman" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="Index" fontName="Times-Roman"/>
|
||||
<paraStyle name="Standard" fontName="Helvetica"/>
|
||||
<paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="Table Contents" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="Caption" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="Index" fontName="Helvetica"/>
|
||||
<paraStyle name="Heading" fontName="Helvetica" fontSize="15.0" leading="19" spaceBefore="12.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="terp_default_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="Footer" fontName="Times-Roman"/>
|
||||
<paraStyle name="P8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="Horizontal Line" fontName="Times-Roman" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
|
||||
<paraStyle name="Footer" fontName="Helvetica"/>
|
||||
<paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
|
||||
<paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
|
||||
|
@ -227,25 +213,32 @@
|
|||
<paraStyle name="terp_default_Right_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_Bold_Right_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_2" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_White_2" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="terp_default_White_2" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0" textColor="#ffffff"/>
|
||||
<paraStyle name="terp_default_Note" rightIndent="0.0" leftIndent="9.0" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
|
||||
<paraStyle name="Table" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/>
|
||||
<images/>
|
||||
</stylesheet>
|
||||
<images/>
|
||||
<story>
|
||||
<para style="terp_default_8">[[ repeatIn(objects,'o') ]]</para>
|
||||
<para style="terp_default_8">[[ setLang(o.partner_id.lang) ]] </para>
|
||||
<para style="terp_default_8">[[ setLang(o.partner_id.lang) ]]</para>
|
||||
<blockTable colWidths="297.0,233.0" style="Table_Partner_Address">
|
||||
<tr>
|
||||
<td><para style="P8"><font color="white"> </font></para></td>
|
||||
<td>
|
||||
<para style="terp_default_8">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
|
||||
<para style="terp_default_8">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_8">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.street ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.street2 or '' ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.zip or '' ]] [[ o.address_invoice_id.city or '' ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.state_id and o.address_invoice_id.state_id.name or '' ]]</para>
|
||||
<para style="terp_default_8">[[ o.address_invoice_id.country_id and o.address_invoice_id.country_id.name or '' ]]</para>
|
||||
<para style="P8"><font color="white"> </font></para>
|
||||
<para style="terp_default_8">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<para style="terp_default_8">Tel. : [[ o.address_invoice_id.phone or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_8">Fax : [[ o.address_invoice_id.fax or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_8">VAT : [[ o.partner_id.vat or removeParentNode('para') ]]</para>
|
||||
|
@ -255,168 +248,278 @@
|
|||
<para style="terp_header">Invoice [[ ((o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')) or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
|
||||
<para style="terp_header">PRO-FORMA [[ ((o.type == 'out_invoice' and o.state == 'proforma2') or removeParentNode('para')) and '' ]]</para>
|
||||
<para style="terp_header">Draft Invoice [[ ((o.type == 'out_invoice' and o.state == 'draft') or removeParentNode('para')) and '' ]]</para>
|
||||
<para style="terp_header">Canceled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]]</para>
|
||||
<para style="terp_header">Cancelled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
|
||||
<para style="terp_header">Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
|
||||
<para style="terp_header">Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
|
||||
<para style="terp_header">Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
|
||||
<para style="P8"><font color="white"> </font></para>
|
||||
<para style="terp_default_8">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<blockTable colWidths="177.0,177.0,177.0" style="Table_Invoice_General_Header">
|
||||
<tr>
|
||||
<td><para style="terp_tblheader_General_Centre">Document</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Invoice Date</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Partner Ref.</para></td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Document</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Invoice Date</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Partner Ref.</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<blockTable colWidths="177.0,177.0,177.0" style="Table_General_Detail_Content">
|
||||
<tr>
|
||||
<td><para style="terp_default_Centre_9">[[ o.name ]]</para></td>
|
||||
<td><para style="terp_default_Centre_9">[[ formatLang(o.date_invoice,date=True) ]]</para></td>
|
||||
<td><para style="terp_default_Centre_9">[[ o.address_invoice_id.partner_id.ref or '' ]]</para></td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_9">[[ o.name ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_9">[[ formatLang(o.date_invoice,date=True) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_9">[[ o.address_invoice_id.partner_id.ref or '' ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="P8"><font color="white"></font></para>
|
||||
<para style="P8"><font color="white"> </font></para>
|
||||
<blockTable colWidths="211.0,62.0,63.0,63.0,40.0,84.0" style="Table_Header_Invoice_Line">
|
||||
<para style="terp_default_8">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<blockTable colWidths="211.0,62.0,63.0,63.0,43.0,83.0" style="Table_Header_Invoice_Line">
|
||||
<tr>
|
||||
<td><para style="terp_tblheader_Details">Description</para></td>
|
||||
<td><para style="terp_tblheader_Details">Taxes</para></td>
|
||||
<td><para style="terp_tblheader_Details">Quantity</para></td>
|
||||
<td><para style="terp_tblheader_Details_Centre">Unit Price</para></td>
|
||||
<td><para style="terp_tblheader_Details">Disc.(%)</para></td>
|
||||
<td><para style="terp_tblheader_Details_Centre">Price</para></td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details">Description</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details">Taxes</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Centre">Quantity</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">Unit Price</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">Disc.(%)</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Centre">Price</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<section>
|
||||
<para style="terp_default_8">[[ repeatIn(o.invoice_line,'l') ]]</para>
|
||||
<blockTable colWidths="211.0,62.0,36.0,27.0,63.0,36.0,62.0,26.0" style="Table_Invoice_Line_Content">
|
||||
<blockTable colWidths="211.0,62.0,41.0,22.0,63.0,42.0,59.0,23.0" style="Table_Invoice_Line_Content">
|
||||
<tr>
|
||||
<td><para style="terp_default_9">[[ l.name ]]</para></td>
|
||||
<td><para style="terp_default_9">[[ ', '.join([ lt.description or '' for lt in l.invoice_line_tax_id ]) ]]</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ formatLang(l.quantity)]]</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ (l.uos_id and l.uos_id.name) or '' ]]</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ formatLang(l.price_unit) ]]</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ formatLang(l.discount) ]] </para></td>
|
||||
<td><para style="terp_default_Right_9">[[ formatLang(l.price_subtotal) ]]</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ o.currency_id.code ]]</para></td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ l.name ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ ', '.join([ lt.name or '' for lt in l.invoice_line_tax_id ]) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(l.quantity)]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ (l.uos_id and l.uos_id.name) or '' ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(l.price_unit) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(l.discount) ]] </para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(l.price_subtotal) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ o.currency_id.code ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><para style="terp_default_Note">[[ format(l.note) or removeParentNode('tr') ]]</para></td>
|
||||
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
|
||||
<td>
|
||||
<para style="terp_default_Note">[[ format(l.note or '') or removeParentNode('tr') ]]</para>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Note">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
</section>
|
||||
<blockTable colWidths="371.0,153.0" style="Table_Format_2">
|
||||
<blockTable colWidths="370.0,153.0" style="Table_Format_2">
|
||||
<tr>
|
||||
<td>
|
||||
<blockTable colWidths="176.0,258.0" style="Table_format_Table_Line_total">
|
||||
<tr>
|
||||
<td><para style="terp_default_2"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_2"><font color="white"> </font></para></td>
|
||||
<td>
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
</td>
|
||||
<td>
|
||||
<blockTable colWidths="62.0,59.0,25.0" style="Table_eclu_Taxes_Total">
|
||||
<blockTable colWidths="62.0,62.0,22.0" style="Table_eclu_Taxes_Total">
|
||||
<tr>
|
||||
<td><para style="terp_default_Bold_9">Net Total:</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ formatLang(o.amount_untaxed) ]]</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ o.currency_id.code ]]</para></td>
|
||||
<td>
|
||||
<para style="terp_default_9">Net Total:</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(o.amount_untaxed) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ o.currency_id.code ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<blockTable colWidths="63.0,58.0,26.0" style="Table_Taxes_Total">
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<blockTable colWidths="63.0,61.0,23.0" style="Table_Taxes_Total">
|
||||
<tr>
|
||||
<td><para style="terp_default_Bold_9">Taxes:</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ formatLang(o.amount_tax) ]]</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ o.currency_id.code ]]</para></td>
|
||||
<td>
|
||||
<para style="terp_default_9">Taxes:</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(o.amount_tax) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ o.currency_id.code ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<blockTable colWidths="63.0,58.0,26.0" style="Table_Total_Include_Taxes">
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<blockTable colWidths="63.0,61.0,23.0" style="Table_Total_Include_Taxes">
|
||||
<tr>
|
||||
<td><para style="terp_default_Bold_9">Total:</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ formatLang(o.amount_total) ]]</para></td>
|
||||
<td><para style="terp_default_Right_9">[[ o.currency_id.code ]]</para></td>
|
||||
<td>
|
||||
<para style="terp_default_Bold_9">Total:</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(o.amount_total) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ o.currency_id.code ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<blockTable colWidths="530.0" style="Table_Main_Table">
|
||||
<blockTable colWidths="530.0" style="Table4">
|
||||
<tr>
|
||||
<td>
|
||||
<blockTable colWidths="54.0,80.0,67.0" style="Table_Tax_Header">
|
||||
<blockTable colWidths="149.0,55.0,52.0" style="Table6">
|
||||
<tr>
|
||||
<td><para style="terp_tblheader_Details_Centre">Tax</para></td>
|
||||
<td><para style="terp_tblheader_Details_Right">Base</para></td>
|
||||
<td><para style="terp_tblheader_Details_Right">Amount</para></td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details">Tax</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">Base</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">Amount</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_2">[[ repeatIn(o.tax_line,'t') ]]</para>
|
||||
<blockTable colWidths="149.0,55.0,52.0" style="Table5">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_8">[[ t.name ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_8">[[ formatLang(t.base) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_8">[[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount) ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_8">[[ repeatIn(o.tax_line,'t') ]]</para>
|
||||
<blockTable colWidths="53.0,80.0,65.0" style="Table_Tax_Content">
|
||||
<tr>
|
||||
<td><para style="terp_default_Centre_8">[[ t.name ]] </para></td>
|
||||
<td><para style="terp_default_Right_8">[[ formatLang(t.base) ]]</para></td>
|
||||
<td><para style="terp_default_Right_8">[[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]][[ formatLang(t.amount) ]]</para></td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<blockTable colWidths="530.0" style="Table3">
|
||||
<tr>
|
||||
<td>
|
||||
<blockTable colWidths="53.0,60.0,65.0" style="Table_Table_Border_White">
|
||||
<tr>
|
||||
<td><para style="terp_default_2"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_2"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_2"><font color="white"> </font></para></td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="terp_default_9">[[ format(o.comment or '') or removeParentNode('blockTable') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<blockTable colWidths="180.0,350.0" style="Table_Final_Border">
|
||||
<blockTable colWidths="530.0" style="Table2">
|
||||
<tr>
|
||||
<td><para style="terp_default_2"><font color="white"> </font></para></td>
|
||||
<td><para style="terp_default_2"><font color="white"> </font></para></td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ format((o.payment_term and o.payment_term.note) or '') or removeParentNode('blockTable') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<blockTable colWidths="530.0" style="Table_Coment_Payment_Term">
|
||||
<tr>
|
||||
<td><para style="terp_default_9">[[ format(o.comment or removeParentNode('blockTable')) ]]</para></td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<blockTable colWidths="530.0" style="Table_Payment_Terms">
|
||||
<tr>
|
||||
<td><para style="terp_default_9">[[ format((o.payment_term and o.payment_term.note) or removeParentNode('blockTable')) ]]</para></td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<blockTable colWidths="128.0,402.0" style="Standard_Outline">
|
||||
<blockTable colWidths="128.0,402.0" style="Table1">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_Bold_9">Fiscal Position Remark :</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ format(o.fiscal_position and o.fiscal_position.note or removeParentNode('blockTable')) ]]</para>
|
||||
<para style="terp_default_9">[[ format((o.fiscal_position and o.fiscal_position.note) or '') or removeParentNode('blockTable') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="terp_default_2">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
</story>
|
||||
</document>
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-04-10 04:39+0000\n"
|
||||
"Last-Translator: digitalsatori <Unknown>\n"
|
||||
"PO-Revision-Date: 2010-07-13 03:49+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\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-13 03:49+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
|
@ -21,7 +21,7 @@ msgstr ""
|
|||
msgid ""
|
||||
"Number of hours that can be invoiced plus those that already have been "
|
||||
"invoiced."
|
||||
msgstr "小时数能加在已开的发票上"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_user
|
||||
|
@ -31,12 +31,12 @@ msgstr "用户的小时数合计"
|
|||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,last_invoice_date:0
|
||||
msgid "Last Invoice Date"
|
||||
msgstr "最近开票日期"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,remaining_ca:0
|
||||
msgid "Computed using the formula: Max Invoice Price - Invoiced Amount."
|
||||
msgstr "计算公式为:最高发票价格 - 发票金额"
|
||||
msgstr "计算公式为:最高发票价格 - 已开票金额"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,remaining_hours:0
|
||||
|
@ -44,25 +44,26 @@ msgid "Computed using the formula: Maximum Quantity - Hours Tot."
|
|||
msgstr "计算公式为:最大数量 - 小时合计"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all
|
||||
msgid "All Analytic Accounts"
|
||||
msgstr "所有辅助核算项目"
|
||||
msgstr "所有辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_managed_open
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_analytic_account_to_valid_open
|
||||
msgid "My Current Accounts"
|
||||
msgstr "我的当前科目"
|
||||
msgstr "我的当前项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "描述视图结构的XML文件无效"
|
||||
msgstr "无效XML视图结构!"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_invoice_date:0
|
||||
msgid "Date of the last invoice created for this analytic account."
|
||||
msgstr "这辅助核算项目的最近开票日期"
|
||||
msgstr "这辅助核算项的最近开票日期"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_theorical:0
|
||||
|
@ -83,13 +84,13 @@ msgstr "计算公式:理论收入 - 总费用"
|
|||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
|
||||
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_new
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_new
|
||||
msgid "New Analytic Account"
|
||||
msgstr "新的分析科目"
|
||||
msgstr "新辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,theorical_margin:0
|
||||
|
@ -105,29 +106,29 @@ msgstr "实际利润(%)"
|
|||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all_open
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all_open
|
||||
msgid "Current Analytic Accounts"
|
||||
msgstr "当前分析科目"
|
||||
msgstr "当前辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_worked_date:0
|
||||
msgid "Date of the latest work done on this account."
|
||||
msgstr "这科目的最近的工作完成日期"
|
||||
msgstr "这项的最近的工作完成日期"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_worked_invoiced_date:0
|
||||
msgid ""
|
||||
"If invoice from the costs, this is the date of the latest work or cost that "
|
||||
"have been invoiced."
|
||||
msgstr "如果是成本发票,最近工作或成本的时间已开出的发票"
|
||||
msgstr "如果发票来自费用, 这是最近工作日期或已开票的费用"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_invoicing
|
||||
msgid "Invoicing"
|
||||
msgstr "计价折扣"
|
||||
msgstr "开发票"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,last_worked_date:0
|
||||
msgid "Date of Last Cost/Work"
|
||||
msgstr "最近的成本/工作 日期"
|
||||
msgstr "费用或工作的最近日期"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,total_cost:0
|
||||
|
@ -139,7 +140,7 @@ msgstr "总成本"
|
|||
msgid ""
|
||||
"Number of hours you spent on the analytic account (from timesheet). It "
|
||||
"computes on all journal of type 'general'."
|
||||
msgstr "你的小时数在辅助核算项目(根据时间表).它计算所有普通分类帐."
|
||||
msgstr "在辅助核算项你花费的小时数(根据时间表). 它在所有类型为普通的记录集合里计算."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,remaining_hours:0
|
||||
|
@ -190,8 +191,8 @@ msgid ""
|
|||
"important data for project manager of services companies.\n"
|
||||
"Add menu to show relevant information for each manager."
|
||||
msgstr ""
|
||||
"修改核算到显示服务公司的项目管理主要时间\n"
|
||||
"添加菜单显示每个管理的有关信息"
|
||||
"修改辅助核算项到显示视图, 服务公司项目经理的重要数据\n"
|
||||
"添加菜单显示每个管理者的相关信息"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_qtt_non_invoiced:0
|
||||
|
@ -206,12 +207,12 @@ msgstr "总小时"
|
|||
#. module: account_analytic_analysis
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_account
|
||||
msgid "Analytic Accounts"
|
||||
msgstr "核算项目"
|
||||
msgstr "辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.module.module,shortdesc:account_analytic_analysis.module_meta_information
|
||||
msgid "report_account_analytic"
|
||||
msgstr "核算项目报表"
|
||||
msgstr "辅助核算项报表"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_invoiced:0
|
||||
|
@ -226,7 +227,7 @@ msgstr "财务项目管理"
|
|||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,last_worked_invoiced_date:0
|
||||
msgid "Date of Last Invoiced Cost"
|
||||
msgstr "最近的发票成本日期"
|
||||
msgstr "最近的已发票日期"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_to_invoice:0
|
||||
|
@ -237,7 +238,7 @@ msgstr "未开票金额"
|
|||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all_pending
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all_pending
|
||||
msgid "Pending Analytic Accounts"
|
||||
msgstr "未决的辅助核算项目"
|
||||
msgstr "未决的辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_qtt_invoiced:0
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
'account_followup_data.xml'
|
||||
],
|
||||
'demo_xml': ['account_followup_demo.xml'],
|
||||
'test': ['test/account_followup.yml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '0072481076453',
|
||||
|
|
|
@ -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-11-03 17:56+0000\n"
|
||||
"Last-Translator: Sergei Kostigoff <sergei.kostigoff@gmail.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:01+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:11+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
|
@ -48,7 +48,7 @@ msgstr "Название"
|
|||
#. module: account_invoice_layout
|
||||
#: model:ir.actions.wizard,name:account_invoice_layout.wizard_notify_message
|
||||
msgid "Invoices with Layout and Message"
|
||||
msgstr ""
|
||||
msgstr "Счет-фактура с макетом и сообщением"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
|
@ -119,7 +119,7 @@ msgstr "Ссылка на клиента:"
|
|||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid ")"
|
||||
msgstr ""
|
||||
msgstr ")"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: field:account.invoice.line,state:0
|
||||
|
@ -209,7 +209,7 @@ msgstr "Продукт"
|
|||
#. module: account_invoice_layout
|
||||
#: model:ir.actions.report.xml,name:account_invoice_layout.account_invoices_1
|
||||
msgid "Invoices with Layout"
|
||||
msgstr ""
|
||||
msgstr "Счет-фактура с макетом"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
|
|
|
@ -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-11-03 18:51+0000\n"
|
||||
"Last-Translator: Sergei Kostigoff <sergei.kostigoff@gmail.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:03+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:10+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:46+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_payment
|
||||
|
@ -39,7 +39,7 @@ msgstr ""
|
|||
#. module: account_payment
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.line:0
|
||||
|
@ -283,7 +283,7 @@ msgstr ""
|
|||
#. module: account_payment
|
||||
#: field:payment.line,communication:0
|
||||
msgid "Communication"
|
||||
msgstr ""
|
||||
msgstr "Связь"
|
||||
|
||||
#. module: account_payment
|
||||
#: selection:payment.order,date_prefered:0
|
||||
|
@ -309,7 +309,7 @@ msgstr ""
|
|||
#: view:payment.type:0
|
||||
#: help:payment.type,name:0
|
||||
msgid "Payment Type"
|
||||
msgstr ""
|
||||
msgstr "Способ оплаты"
|
||||
|
||||
#. module: account_payment
|
||||
#: help:payment.line,amount_currency:0
|
||||
|
@ -526,7 +526,7 @@ msgstr ""
|
|||
#. module: account_payment
|
||||
#: field:payment.line,company_currency:0
|
||||
msgid "Company Currency"
|
||||
msgstr ""
|
||||
msgstr "Валюта компании"
|
||||
|
||||
#. module: account_payment
|
||||
#: model:ir.ui.menu,name:account_payment.menu_main
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
-
|
||||
In order to test account_payment in OpenERP I create a new record Type
|
||||
-
|
||||
-
|
||||
Creating a payment.type record
|
||||
In order to test account_payment in OpenERP I create a new record Type.
|
||||
-
|
||||
!record {model: payment.type, id: payment_type_t0}:
|
||||
code: T0
|
||||
|
@ -127,19 +124,3 @@
|
|||
- state == 'done'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2009-11-09 16:29+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:15+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:16+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_voucher
|
||||
|
@ -36,12 +36,12 @@ msgstr ""
|
|||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "State :"
|
||||
msgstr ""
|
||||
msgstr "Статус:"
|
||||
|
||||
#. module: account_voucher
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
|
@ -61,7 +61,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher,company_id:0
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
msgstr "Компания"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.move,voucher_type:0
|
||||
|
@ -69,17 +69,17 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:account_voucher.action_view_jour_voucher_form
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_view_jour_voucher_form
|
||||
msgid "Journal Voucher"
|
||||
msgstr ""
|
||||
msgstr "Журнальный ваучер"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid ","
|
||||
msgstr ""
|
||||
msgstr ","
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
msgid "Set to Draft"
|
||||
msgstr ""
|
||||
msgstr "Установить в 'Черновик'"
|
||||
|
||||
#. module: account_voucher
|
||||
#: wizard_button:account.voucher.open,init,open:0
|
||||
|
@ -94,13 +94,13 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: view:account.move:0
|
||||
msgid "Total Credit"
|
||||
msgstr ""
|
||||
msgstr "Всего кредит"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,account_id:0
|
||||
#: field:account.voucher.line,account_id:0
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
msgstr "Счет"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
|
@ -110,7 +110,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.account,level:0
|
||||
msgid "Level"
|
||||
msgstr ""
|
||||
msgstr "Уровень"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.move:0
|
||||
|
@ -120,14 +120,14 @@ msgstr "Проводка по счету"
|
|||
#. module: account_voucher
|
||||
#: view:account.move:0
|
||||
msgid "Total Debit"
|
||||
msgstr ""
|
||||
msgstr "Всего дебет"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,amount:0
|
||||
#: field:account.voucher.line,amount:0
|
||||
#: rml:voucher.cash_amount:0
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
msgstr "Количество"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
|
@ -150,7 +150,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher.line,account_analytic_id:0
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
msgstr "Счет аналитического учета"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.move,voucher_type:0
|
||||
|
@ -189,18 +189,18 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
msgstr "Создать"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.account,type1:0
|
||||
#: selection:account.account.template,type1:0
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
msgstr "Отсутствует"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,number:0
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
msgstr "Номер"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.move:0
|
||||
|
@ -215,13 +215,13 @@ msgstr "Состояние"
|
|||
#: selection:account.voucher.line,type:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "Debit"
|
||||
msgstr ""
|
||||
msgstr "Дебет"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,type:0
|
||||
#: field:account.voucher.line,type:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "Тип"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_voucher_list
|
||||
|
@ -245,7 +245,7 @@ msgstr ""
|
|||
#: field:account.voucher.line,voucher_id:0
|
||||
#: model:res.request.link,name:account_voucher.req_link_voucher
|
||||
msgid "Voucher"
|
||||
msgstr ""
|
||||
msgstr "Товарный чек"
|
||||
|
||||
#. module: account_voucher
|
||||
#: wizard_view:account.voucher.open,init:0
|
||||
|
@ -273,7 +273,7 @@ msgstr ""
|
|||
#: field:account.voucher,partner_id:0
|
||||
#: field:account.voucher.line,partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
msgstr "Партнер"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_view_bank_pay_voucher_form
|
||||
|
@ -289,7 +289,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher,currency_id:0
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
msgstr "Валюта"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.move:0
|
||||
|
@ -317,7 +317,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.account,open_bal:0
|
||||
msgid "Opening Balance"
|
||||
msgstr ""
|
||||
msgstr "Начальное сальдо"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.voucher,state:0
|
||||
|
@ -325,13 +325,13 @@ msgstr ""
|
|||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
msgstr "Черновик"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "PRO-FORMA"
|
||||
msgstr ""
|
||||
msgstr "Проформа"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.actions.act_window,name:account_voucher.action_receipt_cashreceipt_voucher_list
|
||||
|
@ -356,13 +356,13 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher,date:0
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
msgstr "Дата"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid ":"
|
||||
msgstr ""
|
||||
msgstr ":"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.account,type1:0
|
||||
|
@ -387,7 +387,7 @@ msgstr ""
|
|||
#: selection:account.voucher.line,type:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "Credit"
|
||||
msgstr ""
|
||||
msgstr "Кредит"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
|
@ -398,7 +398,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher,reference_type:0
|
||||
msgid "Reference Type"
|
||||
msgstr ""
|
||||
msgstr "Тип ссылки"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.model,name:account_voucher.model_account_voucher
|
||||
|
@ -408,7 +408,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher,period_id:0
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
msgstr "Период"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_payments_bankpay_voucher_list
|
||||
|
@ -423,7 +423,7 @@ msgstr "Общая информация"
|
|||
#. module: account_voucher
|
||||
#: wizard_field:account.voucher.open,init,period_ids:0
|
||||
msgid "Periods"
|
||||
msgstr ""
|
||||
msgstr "Периоды"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
|
@ -431,14 +431,14 @@ msgstr ""
|
|||
#: wizard_button:account.voucher.open,init,end:0
|
||||
#: selection:account.voucher.open,init,state:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Отмена"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
#: selection:account.voucher,state:0
|
||||
#: selection:account.voucher.open,init,state:0
|
||||
msgid "Pro-forma"
|
||||
msgstr ""
|
||||
msgstr "Проформа"
|
||||
|
||||
#. module: account_voucher
|
||||
#: constraint:ir.model:0
|
||||
|
@ -451,7 +451,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
msgid "Other Info"
|
||||
msgstr ""
|
||||
msgstr "Прочая информация"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.module.module,shortdesc:account_voucher.module_meta_information
|
||||
|
@ -472,13 +472,13 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher.line,name:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
msgstr "Описание"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "Canceled"
|
||||
msgstr ""
|
||||
msgstr "Отменено"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.move,voucher_type:0
|
||||
|
@ -493,13 +493,13 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: model:ir.actions.act_window,name:account_voucher.action_receipt_bakreceipt_voucher_list
|
||||
msgid "Bank Receipt"
|
||||
msgstr ""
|
||||
msgstr "Квитанция банка"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
msgstr "-"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.move,voucher_type:0
|
||||
|
@ -518,7 +518,7 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher.line,ref:0
|
||||
msgid "Ref."
|
||||
msgstr ""
|
||||
msgstr "Ссылка"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.voucher,state:0
|
||||
|
@ -526,12 +526,12 @@ msgstr ""
|
|||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "Posted"
|
||||
msgstr ""
|
||||
msgstr "Проведено"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,name:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
msgstr "Название"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,move_ids:0
|
||||
|
@ -546,12 +546,12 @@ msgstr ""
|
|||
#. module: account_voucher
|
||||
#: field:account.voucher,move_id:0
|
||||
msgid "Account Entry"
|
||||
msgstr ""
|
||||
msgstr "Проводка по счету"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
msgid "Entry Lines"
|
||||
msgstr ""
|
||||
msgstr "Строки проводок"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_view_bank_rec_voucher_form
|
||||
|
@ -597,4 +597,4 @@ msgstr ""
|
|||
#: field:account.account,journal_id:0
|
||||
#: field:account.voucher,journal_id:0
|
||||
msgid "Journal"
|
||||
msgstr ""
|
||||
msgstr "Журнал"
|
||||
|
|
|
@ -428,15 +428,17 @@ class account_voucher_line(osv.osv):
|
|||
'type': lambda *a: 'cr'
|
||||
}
|
||||
|
||||
def onchange_partner(self, cr, uid, ids, partner_id, ttype ,type1):
|
||||
vals = {}
|
||||
def onchange_partner(self, cr, uid, ids, partner_id, ttype ,type1, currency):
|
||||
currency_pool = self.pool.get('res.currency')
|
||||
company = self.pool.get('res.users').browse(cr, uid, uid).company_id
|
||||
|
||||
vals = {
|
||||
'account_id': False,
|
||||
'type': False ,
|
||||
'amount': False
|
||||
}
|
||||
|
||||
if not partner_id:
|
||||
vals.update({
|
||||
'account_id': False,
|
||||
'type': False ,
|
||||
'amount': False
|
||||
})
|
||||
return {
|
||||
'value' : vals
|
||||
}
|
||||
|
@ -466,6 +468,9 @@ class account_voucher_line(osv.osv):
|
|||
balance = partner.debit
|
||||
ttype = 'cr'
|
||||
|
||||
if company.currency_id != currency:
|
||||
balance = currency_pool.compute(cr, uid, company.currency_id.id, currency, balance)
|
||||
|
||||
vals.update({
|
||||
'account_id': account_id,
|
||||
'type': ttype,
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
<page string="Journal Entries">
|
||||
<field name="payment_ids" colspan="4" nolabel="1" height="250">
|
||||
<tree string="Voucher Lines" editable="top">
|
||||
<field name="partner_id" on_change="onchange_partner(partner_id,type,parent.type)"/>
|
||||
<field name="partner_id" on_change="onchange_partner(partner_id,type,parent.type, parent.currency_id)"/>
|
||||
<field name="account_id"/>
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<field name="payment_ids" position="replace">
|
||||
<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="partner_id" on_change="onchange_partner(partner_id, type, parent.type)"/>
|
||||
<field name="partner_id" on_change="onchange_partner(partner_id,type,parent.type, parent.currency_id)"/>
|
||||
<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, parent.currency_id)" domain="[('partner_id','=',partner_id),('state','=','open'),('residual','>',0.0)]"/>
|
||||
|
|
|
@ -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 08:33+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:18+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-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
|
@ -24,7 +24,7 @@ msgstr "Неправильный XML для просмотра архитект
|
|||
#. module: analytic_journal_billing_rate
|
||||
#: field:analytic_journal_rate_grid,journal_id:0
|
||||
msgid "Analytic Journal"
|
||||
msgstr ""
|
||||
msgstr "Книга аналитики"
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
#: constraint:ir.model:0
|
||||
|
@ -42,7 +42,7 @@ msgstr ""
|
|||
#. module: analytic_journal_billing_rate
|
||||
#: field:analytic_journal_rate_grid,account_id:0
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
msgstr "Счет аналитического учета"
|
||||
|
||||
#. module: analytic_journal_billing_rate
|
||||
#: model:ir.model,name:analytic_journal_billing_rate.model_analytic_journal_rate_grid
|
||||
|
|
|
@ -90,7 +90,6 @@ class wiz_auc_lots_buyer_map(osv.osv_memory):
|
|||
for rec in recs:
|
||||
if rec.ach_login==datas['ach_login']:
|
||||
lots_obj.write(cr, uid, [rec.id], {'ach_uid': datas['ach_uid']}, context=context)
|
||||
cr.commit()
|
||||
return {}
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form',
|
||||
|
|
|
@ -73,7 +73,6 @@ class auction_lots_make_invoice(osv.osv_memory):
|
|||
result = mod_obj._get_id(cr, uid, 'account', 'view_account_invoice_filter')
|
||||
id = mod_obj.read(cr, uid, result, ['res_id'])
|
||||
lots_ids = order_obj.seller_trans_create(cr, uid, context['active_ids'], context)
|
||||
cr.commit()
|
||||
return {
|
||||
'domain': "[('id','in', ["+','.join(map(str, lots_ids))+"])]",
|
||||
'name': 'Seller invoices',
|
||||
|
|
|
@ -73,7 +73,6 @@ class auction_lots_make_invoice_buyer(osv.osv_memory):
|
|||
for lot in lots:
|
||||
up_auction = order_obj.write(cr, uid, [lot.id], {'ach_uid': data['buyer_id']})
|
||||
lots_ids = order_obj.lots_invoice(cr, uid, context['active_ids'], context, data['number'])
|
||||
cr.commit()
|
||||
return {
|
||||
'domain': "[('id','in', ["+','.join(map(str, lots_ids))+"])]",
|
||||
'name': 'Buyer invoices',
|
||||
|
|
|
@ -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 12:33+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:27+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:16+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: audittrail
|
||||
|
@ -32,12 +32,12 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: field:audittrail.log.line,log_id:0
|
||||
msgid "Log"
|
||||
msgstr ""
|
||||
msgstr "Журнал"
|
||||
|
||||
#. module: audittrail
|
||||
#: selection:audittrail.rule,state:0
|
||||
msgid "Subscribed"
|
||||
msgstr ""
|
||||
msgstr "Подписка"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
|
@ -47,7 +47,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: selection:audittrail.log,method:0
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
msgstr "Создать"
|
||||
|
||||
#. module: audittrail
|
||||
#: wizard_view:audittrail.view.log,init:0
|
||||
|
@ -57,27 +57,27 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: field:audittrail.rule,state:0
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
msgstr "Состояние"
|
||||
|
||||
#. module: audittrail
|
||||
#: selection:audittrail.rule,state:0
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
msgstr "Черновик"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,old_value:0
|
||||
msgid "Old Value"
|
||||
msgstr ""
|
||||
msgstr "Старое значение"
|
||||
|
||||
#. module: audittrail
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: audittrail
|
||||
#: model:ir.actions.wizard,name:audittrail.wizard_audittrail_log
|
||||
msgid "View log"
|
||||
msgstr ""
|
||||
msgstr "Просмотреть журнал"
|
||||
|
||||
#. module: audittrail
|
||||
#: model:ir.model,name:audittrail.model_audittrail_log_line
|
||||
|
@ -87,7 +87,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: field:audittrail.log,method:0
|
||||
msgid "Method"
|
||||
msgstr ""
|
||||
msgstr "Метод"
|
||||
|
||||
#. module: audittrail
|
||||
#: wizard_field:audittrail.view.log,init,from:0
|
||||
|
@ -107,7 +107,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: selection:audittrail.log,method:0
|
||||
msgid "Write"
|
||||
msgstr ""
|
||||
msgstr "Написать"
|
||||
|
||||
#. module: audittrail
|
||||
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail
|
||||
|
@ -122,18 +122,18 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
msgid "Subscribe"
|
||||
msgstr ""
|
||||
msgstr "Подписаться"
|
||||
|
||||
#. module: audittrail
|
||||
#: selection:audittrail.log,method:0
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
msgstr "Читать"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log,object_id:0
|
||||
#: field:audittrail.rule,object_id:0
|
||||
msgid "Object"
|
||||
msgstr ""
|
||||
msgstr "Объект"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
|
@ -162,12 +162,12 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: field:audittrail.log,timestamp:0
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
msgstr "Дата"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log,user_id:0
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
msgstr "Пользователь"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.log:0
|
||||
|
@ -182,7 +182,7 @@ msgstr "Неправильный XML для просмотра архитект
|
|||
#. module: audittrail
|
||||
#: field:audittrail.log,name:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
msgstr "Название"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log,line_ids:0
|
||||
|
@ -197,7 +197,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: field:audittrail.log.line,field_id:0
|
||||
msgid "Fields"
|
||||
msgstr ""
|
||||
msgstr "Поля"
|
||||
|
||||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
|
@ -212,7 +212,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: view:audittrail.rule:0
|
||||
msgid "UnSubscribe"
|
||||
msgstr ""
|
||||
msgstr "Отписаться"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_write:0
|
||||
|
@ -232,7 +232,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: selection:audittrail.log,method:0
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
msgstr "Удалить"
|
||||
|
||||
#. module: audittrail
|
||||
#: wizard_button:audittrail.view.log,init,open:0
|
||||
|
@ -247,7 +247,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: field:audittrail.rule,name:0
|
||||
msgid "Rule Name"
|
||||
msgstr ""
|
||||
msgstr "Название правила"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_read:0
|
||||
|
@ -257,7 +257,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail_log_tree
|
||||
msgid "Logs"
|
||||
msgstr ""
|
||||
msgstr "Журналы"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,new_value:0
|
||||
|
@ -292,7 +292,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: field:audittrail.rule,user_id:0
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
msgstr "Пользователи"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.log.line,old_value_text:0
|
||||
|
@ -302,7 +302,7 @@ msgstr ""
|
|||
#. module: audittrail
|
||||
#: wizard_button:audittrail.view.log,init,end:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Отмена"
|
||||
|
||||
#. module: audittrail
|
||||
#: field:audittrail.rule,log_unlink:0
|
||||
|
|
|
@ -105,8 +105,8 @@ the rule to mark CC(mail to any other person defined in actions)."),
|
|||
'act_mail_to_email': fields.char('Mail to these Emails', size=128, \
|
||||
help="Email-id of the persons whom mail is to be sent"),
|
||||
'act_mail_body': fields.text('Mail body', help="Content of mail"),
|
||||
'regex_name': fields.char('Regex on Resource Name', size=128, help="Regular expression for mathching name of the resource\
|
||||
\ne.g.: urgent.* will search for records having name starting with urgent\
|
||||
'regex_name': fields.char('Regex on Resource Name', size=128, help="Regular expression for matching name of the resource\
|
||||
\ne.g.: 'urgent.*' will search for records having name starting with the string 'urgent'\
|
||||
\nNote: This is case sensitive search."),
|
||||
'server_action_id': fields.many2one('ir.actions.server', 'Server Action', help="Describes the action name.\neg:on which object which action to be taken on basis of which condition"),
|
||||
'filter_id':fields.many2one('ir.filters', 'Filter', required=False),
|
||||
|
|
|
@ -383,7 +383,7 @@ property or property parameter."),
|
|||
'rsvp': True,
|
||||
'cutype': 'individual',
|
||||
}
|
||||
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
raise osv.except_osv(_('Warning!'), _('Can not Duplicate'))
|
||||
|
||||
|
@ -419,10 +419,14 @@ property or property parameter."),
|
|||
event.add('location').value = event_obj.location
|
||||
if event_obj.rrule:
|
||||
event.add('rrule').value = event_obj.rrule
|
||||
if event_obj.user_id:
|
||||
if event_obj.user_id or event_obj.organizer_id:
|
||||
event_org = event.add('organizer')
|
||||
event_org.params['CN'] = [event_obj.user_id.name]
|
||||
event_org.value = 'MAILTO:' + (event_obj.user_id.user_email or event_obj.user_id.name)
|
||||
organizer = event_obj.organizer_id
|
||||
if not organizer:
|
||||
organizer = event_obj.user_id
|
||||
event_org.params['CN'] = [organizer.name]
|
||||
event_org.value = 'MAILTO:' + (organizer.user_email or organizer.name)
|
||||
|
||||
if event_obj.alarm_id:
|
||||
# computes alarm data
|
||||
valarm = event.add('valarm')
|
||||
|
@ -455,14 +459,14 @@ property or property parameter."),
|
|||
attendee_add.value = 'MAILTO:' + (attendee.email or '')
|
||||
res = cal.serialize()
|
||||
return res
|
||||
|
||||
|
||||
def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context=None):
|
||||
"""
|
||||
Send mail for event invitation to event attendees.
|
||||
Send mail for event invitation to event attendees.
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of attendee’s IDs.
|
||||
@param email_from: Email address for user sending the mail
|
||||
@param email_from: Email address for user sending the mail
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: True
|
||||
"""
|
||||
|
@ -474,7 +478,7 @@ property or property parameter."),
|
|||
sign = att.sent_by_uid and att.sent_by_uid.signature or ''
|
||||
sign = '<br>'.join(sign and sign.split('\n') or [])
|
||||
res_obj = att.ref
|
||||
sub = '[%s Invitation][%d] %s' % (company, att.id, res_obj.name)
|
||||
sub = res_obj.name
|
||||
att_infos = []
|
||||
other_invitaion_ids = self.search(cr, uid, [('ref', '=', res_obj._name + ',' + str(res_obj.id))])
|
||||
for att2 in self.browse(cr, uid, other_invitaion_ids):
|
||||
|
@ -495,12 +499,12 @@ property or property parameter."),
|
|||
if mail_to and email_from:
|
||||
attach = self.get_ics_file(cr, uid, res_obj, context=context)
|
||||
tools.email_send(
|
||||
email_from,
|
||||
mail_to,
|
||||
sub,
|
||||
body,
|
||||
attach=attach and [('invitation.ics', attach)] or None,
|
||||
subtype='html',
|
||||
email_from,
|
||||
mail_to,
|
||||
sub,
|
||||
body,
|
||||
attach=attach and [('invitation.ics', attach)] or None,
|
||||
subtype='html',
|
||||
reply_to=email_from
|
||||
)
|
||||
return True
|
||||
|
@ -528,31 +532,28 @@ property or property parameter."),
|
|||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of calendar attendee’s IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'state': 'tentative'}, context)
|
||||
|
||||
def do_accept(self, cr, uid, ids, context=None, *args):
|
||||
"""
|
||||
Update state of invitation as Accepted and
|
||||
Update state of invitation as Accepted and
|
||||
if the invited user is other then event user it will make a copy of this event for invited user
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of calendar attendee’s IDs.
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: True
|
||||
"""
|
||||
if not context:
|
||||
context = {}
|
||||
|
||||
for vals in self.browse(cr, uid, ids, context=context):
|
||||
#user = vals.user_id
|
||||
#if user:
|
||||
# mod_obj = self.pool.get(vals.ref._name)
|
||||
# if vals.ref:
|
||||
# if vals.ref.user_id.id != user.id:
|
||||
# defaults = {'user_id': user.id}
|
||||
# new_event = mod_obj.copy(cr, uid, vals.ref.id, default=defaults, context=context)
|
||||
if vals.ref and vals.ref.user_id:
|
||||
mod_obj = self.pool.get(vals.ref._name)
|
||||
defaults = {'user_id': vals.user_id.id, 'organizer_id': vals.ref.user_id.id}
|
||||
new_event = mod_obj.copy(cr, uid, vals.ref.id, default=defaults, context=context)
|
||||
self.write(cr, uid, vals.id, {'state': 'accepted'}, context)
|
||||
|
||||
return True
|
||||
|
@ -565,7 +566,8 @@ property or property parameter."),
|
|||
@param ids: List of calendar attendee’s IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values """
|
||||
|
||||
if not context:
|
||||
context = {}
|
||||
return self.write(cr, uid, ids, {'state': 'declined'}, context)
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
|
@ -585,7 +587,6 @@ property or property parameter."),
|
|||
vals['cn'] = vals.get("cn")
|
||||
res = super(calendar_attendee, self).create(cr, uid, vals, context)
|
||||
return res
|
||||
|
||||
calendar_attendee()
|
||||
|
||||
class res_alarm(osv.osv):
|
||||
|
@ -654,9 +655,9 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
alarm_ids = res_alarm_obj.search(cr, uid, domain, context=context)
|
||||
if not alarm_ids:
|
||||
val = {
|
||||
'trigger_duration': duration,
|
||||
'trigger_interval': interval,
|
||||
'trigger_occurs': occurs,
|
||||
'trigger_duration': duration,
|
||||
'trigger_interval': interval,
|
||||
'trigger_occurs': occurs,
|
||||
'trigger_related': related,
|
||||
'name': str(duration) + ' ' + str(interval) + ' ' + str(occurs)
|
||||
}
|
||||
|
@ -690,7 +691,6 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
cr.execute('Update %s set base_calendar_alarm_id=%s, alarm_id=%s \
|
||||
where id=%s' % (model_obj._table, \
|
||||
alarm_id, basic_alarm.id, data.id))
|
||||
cr.commit()
|
||||
return True
|
||||
|
||||
def do_alarm_unlink(self, cr, uid, ids, model, context=None):
|
||||
|
@ -714,7 +714,6 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
alarm_obj.unlink(cr, uid, alarm_ids)
|
||||
cr.execute('Update %s set base_calendar_alarm_id=NULL, alarm_id=NULL\
|
||||
where id=%s' % (model_obj._table, datas.id))
|
||||
cr.commit()
|
||||
return True
|
||||
|
||||
res_alarm()
|
||||
|
@ -726,35 +725,35 @@ class calendar_alarm(osv.osv):
|
|||
__attribute__ = {}
|
||||
|
||||
_columns = {
|
||||
'alarm_id': fields.many2one('res.alarm', 'Basic Alarm', ondelete='cascade'),
|
||||
'alarm_id': fields.many2one('res.alarm', 'Basic Alarm', ondelete='cascade'),
|
||||
'name': fields.char('Summary', size=124, help="""Contains the text to be \
|
||||
used as the message subject for email \
|
||||
or contains the text to be used for display"""),
|
||||
or contains the text to be used for display"""),
|
||||
'action': fields.selection([('audio', 'Audio'), ('display', 'Display'), \
|
||||
('procedure', 'Procedure'), ('email', 'Email') ], 'Action', \
|
||||
required=True, help="Defines the action to be invoked when an alarm is triggered"),
|
||||
required=True, help="Defines the action to be invoked when an alarm is triggered"),
|
||||
'description': fields.text('Description', help='Provides a more complete \
|
||||
description of the calendar component, than that \
|
||||
provided by the "SUMMARY" property'),
|
||||
provided by the "SUMMARY" property'),
|
||||
'attendee_ids': fields.many2many('calendar.attendee', 'alarm_attendee_rel', \
|
||||
'alarm_id', 'attendee_id', 'Attendees', readonly=True),
|
||||
'alarm_id', 'attendee_id', 'Attendees', readonly=True),
|
||||
'attach': fields.binary('Attachment', help="""* Points to a sound resource,\
|
||||
which is rendered when the alarm is triggered for audio,
|
||||
* File which is intended to be sent as message attachments for email,
|
||||
* Points to a procedure resource, which is invoked when\
|
||||
the alarm is triggered for procedure."""),
|
||||
'res_id': fields.integer('Resource ID'),
|
||||
'model_id': fields.many2one('ir.model', 'Model'),
|
||||
'user_id': fields.many2one('res.users', 'Owner'),
|
||||
'event_date': fields.datetime('Event Date'),
|
||||
'event_end_date': fields.datetime('Event End Date'),
|
||||
'trigger_date': fields.datetime('Trigger Date', readonly="True"),
|
||||
the alarm is triggered for procedure."""),
|
||||
'res_id': fields.integer('Resource ID'),
|
||||
'model_id': fields.many2one('ir.model', 'Model'),
|
||||
'user_id': fields.many2one('res.users', 'Owner'),
|
||||
'event_date': fields.datetime('Event Date'),
|
||||
'event_end_date': fields.datetime('Event End Date'),
|
||||
'trigger_date': fields.datetime('Trigger Date', readonly="True"),
|
||||
'state':fields.selection([
|
||||
('draft', 'Draft'),
|
||||
('run', 'Run'),
|
||||
('stop', 'Stop'),
|
||||
('done', 'Done'),
|
||||
], 'State', select=True, readonly=True),
|
||||
('draft', 'Draft'),
|
||||
('run', 'Run'),
|
||||
('stop', 'Stop'),
|
||||
('done', 'Done'),
|
||||
], 'State', select=True, readonly=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
@ -803,7 +802,7 @@ class calendar_alarm(osv.osv):
|
|||
current_datetime = datetime.now()
|
||||
request_obj = self.pool.get('res.request')
|
||||
alarm_ids = self.search(cr, uid, [('state', '!=', 'done')], context=context)
|
||||
|
||||
|
||||
mail_to = []
|
||||
|
||||
for alarm in self.browse(cr, uid, alarm_ids, context=context):
|
||||
|
@ -918,10 +917,10 @@ class calendar_event(osv.osv):
|
|||
return {}
|
||||
event = self.browse(cr, uid, ids, context=context)[0]
|
||||
value = {
|
||||
'duration': 24
|
||||
'duration': 24
|
||||
}
|
||||
return {'value': value}
|
||||
|
||||
|
||||
def onchange_dates(self, cr, uid, ids, start_date, duration=False, end_date=False, allday=False, context=None):
|
||||
"""Returns duration and/or end date based on values passed
|
||||
@param self: The object pointer
|
||||
|
@ -1084,11 +1083,11 @@ class calendar_event(osv.osv):
|
|||
'duration': fields.float('Duration', states={'done': [('readonly', True)]}),
|
||||
'description': fields.text('Description', states={'done': [('readonly', True)]}),
|
||||
'class': fields.selection([('public', 'Public'), ('private', 'Private'), \
|
||||
('confidential', 'Confidential')], 'Mark as', states={'done': [('readonly', True)]}),
|
||||
'location': fields.char('Location', size=264, help="Location of Event", states={'done': [('readonly', True)]}),
|
||||
('confidential', 'Confidential')], 'Mark as', states={'done': [('readonly', True)]}),
|
||||
'location': fields.char('Location', size=264, help="Location of Event", states={'done': [('readonly', True)]}),
|
||||
'show_as': fields.selection([('free', 'Free'), ('busy', 'Busy')], \
|
||||
'Show as', states={'done': [('readonly', True)]}),
|
||||
'base_calendar_url': fields.char('Caldav URL', size=264),
|
||||
'base_calendar_url': fields.char('Caldav URL', size=264),
|
||||
'state': fields.selection([('tentative', 'Tentative'),
|
||||
('confirmed', 'Confirmed'),
|
||||
('cancelled', 'Cancelled')], 'State', readonly=True),
|
||||
|
@ -1112,6 +1111,7 @@ e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
|
|||
'vtimezone': fields.related('user_id', 'context_tz', type='char', size=24, \
|
||||
string='Timezone', store=True),
|
||||
'user_id': fields.many2one('res.users', 'Responsible', states={'done': [('readonly', True)]}),
|
||||
'organizer_id': fields.many2one('res.users', 'Organizer', states={'done': [('readonly', True)]}),
|
||||
'freq': fields.selection([('None', 'No Repeat'), \
|
||||
('secondly', 'Secondly'), \
|
||||
('minutely', 'Minutely'), \
|
||||
|
@ -1138,25 +1138,27 @@ e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
|
|||
('SU', 'Sunday')], 'Weekday'),
|
||||
'byday': fields.selection([('1', 'First'), ('2', 'Second'), \
|
||||
('3', 'Third'), ('4', 'Fourth'), \
|
||||
('5', 'Fifth'), ('-1', 'Last')], 'By day'),
|
||||
'month_list': fields.selection(months.items(), 'Month'),
|
||||
'end_date': fields.date('Repeat Until'),
|
||||
('5', 'Fifth'), ('-1', 'Last')], 'By day'),
|
||||
'month_list': fields.selection(months.items(), 'Month'),
|
||||
'end_date': fields.date('Repeat Until'),
|
||||
'attendee_ids': fields.many2many('calendar.attendee', 'event_attendee_rel', \
|
||||
'event_id', 'attendee_id', 'Attendees'),
|
||||
'allday': fields.boolean('All Day', states={'done': [('readonly', True)]}),
|
||||
'event_id', 'attendee_id', 'Attendees'),
|
||||
'allday': fields.boolean('All Day', states={'done': [('readonly', True)]}),
|
||||
'active': fields.boolean('Active', help="If the active field is set to \
|
||||
true, it will allow you to hide the event alarm information without removing it.")
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'state': 'tentative',
|
||||
'state': 'tentative',
|
||||
'class': 'public',
|
||||
'show_as': 'busy',
|
||||
'freq': 'None',
|
||||
'select1': 'date',
|
||||
'interval': 1,
|
||||
'active': 1,
|
||||
}
|
||||
'user_id': lambda self, cr, uid, ctx: uid,
|
||||
'organizer_id': lambda self, cr, uid, ctx: uid,
|
||||
}
|
||||
|
||||
def open_event(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
|
@ -1185,26 +1187,26 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
id4 = data_obj.browse(cr, uid, id4, context=context).res_id
|
||||
for id in ids:
|
||||
value = {
|
||||
'name': _('Event'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form,tree',
|
||||
'res_model': 'calendar.event',
|
||||
'view_id': False,
|
||||
'views': [(id2, 'form'), (id3, 'tree'), (id4, 'calendar')],
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_id': base_calendar_id2real_id(id),
|
||||
'name': _('Event'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form,tree',
|
||||
'res_model': 'calendar.event',
|
||||
'view_id': False,
|
||||
'views': [(id2, 'form'), (id3, 'tree'), (id4, 'calendar')],
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_id': base_calendar_id2real_id(id),
|
||||
'nodestroy': True
|
||||
}
|
||||
|
||||
return value
|
||||
|
||||
def modify_this(self, cr, uid, event_id, defaults, real_date, context=None, *args):
|
||||
"""Modifies only one event record out of virtual recurrent events
|
||||
"""Modifies only one event record out of virtual recurrent events
|
||||
and creates new event as a specific instance of a Recurring Event",
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param event_id: Id of Recurring Event
|
||||
@param event_id: Id of Recurring Event
|
||||
@param real_date: Date of event recurrence that is being modified
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param *args: Get Tupple Value
|
||||
|
@ -1227,7 +1229,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
|
||||
def modify_all(self, cr, uid, event_ids, defaults, context=None, *args):
|
||||
"""
|
||||
Modifies the recurring event
|
||||
Modifies the recurring event
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param event_ids: List of crm meeting’s IDs.
|
||||
|
@ -1254,7 +1256,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
|
||||
def get_recurrent_ids(self, cr, uid, select, base_start_date, base_until_date, limit=100):
|
||||
"""Gives virtual event ids for recurring events based on value of Recurrence Rule
|
||||
This method gives ids of dates that comes between start date and end date of calendar views
|
||||
This method gives ids of dates that comes between start date and end date of calendar views
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
|
@ -1420,8 +1422,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
until_date = arg[2]
|
||||
res = super(calendar_event, self).search(cr, uid, args_without_date, \
|
||||
offset, limit, order, context, count)
|
||||
#Search Event ID which are invitted
|
||||
|
||||
|
||||
return self.get_recurrent_ids(cr, uid, res, start_date, until_date, limit)
|
||||
|
||||
|
||||
|
@ -1560,7 +1561,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
event_id = [int(event_id)]
|
||||
for record in self.read(cr, uid, event_id, ['date', 'rrule', 'exdate']):
|
||||
if record['rrule']:
|
||||
# Remove one of the recurrent event
|
||||
# Remove one of the recurrent event
|
||||
date_new = time.strftime("%Y-%m-%d %H:%M:%S", \
|
||||
time.strptime(date_new, "%Y%m%d%H%M%S"))
|
||||
exdate = (record['exdate'] and (record['exdate'] + ',') or '') + ''.join((re.compile('\d')).findall(date_new)) + 'Z'
|
||||
|
@ -1586,7 +1587,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
alarm_obj = self.pool.get('res.alarm')
|
||||
alarm_obj.do_alarm_create(cr, uid, [res], self._name, 'date', context=context)
|
||||
return res
|
||||
|
||||
|
||||
def do_tentative(self, cr, uid, ids, context=None, *args):
|
||||
""" Makes event invitation as Tentative
|
||||
@param self: The object pointer
|
||||
|
@ -1594,10 +1595,10 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'state': 'tentative'}, context)
|
||||
|
||||
|
||||
def do_cancel(self, cr, uid, ids, context=None, *args):
|
||||
""" Makes event invitation as Tentative
|
||||
@param self: The object pointer
|
||||
|
@ -1605,7 +1606,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'state': 'cancelled'}, context)
|
||||
|
||||
|
@ -1616,7 +1617,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
|||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'state': 'confirmed'}, context)
|
||||
|
||||
|
@ -1760,9 +1761,9 @@ class ir_model(osv.osv):
|
|||
|
||||
_inherit = 'ir.model'
|
||||
|
||||
def read(self, cr, uid, ids, fields=None, context=None,
|
||||
def read(self, cr, uid, ids, fields=None, context=None,
|
||||
load='_classic_read'):
|
||||
"""
|
||||
"""
|
||||
Overrides orm read method.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
|
@ -1809,7 +1810,7 @@ class res_users(osv.osv):
|
|||
_inherit = 'res.users'
|
||||
|
||||
def _get_user_avail(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
"""
|
||||
Get User Availability
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
|
@ -1840,7 +1841,7 @@ class res_users(osv.osv):
|
|||
return res
|
||||
|
||||
def _get_user_avail_fun(self, cr, uid, ids, name, args, context=None):
|
||||
"""
|
||||
"""
|
||||
Get User Availability Function
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
Now I will check that the new job is assigned properly to contact or not
|
||||
-
|
||||
!assert {model: res.partner.contact, id: res_partner_contact_williams0}:
|
||||
- len(job_ids) > 2
|
||||
- len(job_ids) >= 2
|
||||
- |
|
||||
In order to check contacts working at several addresses for different partners
|
||||
I will create contact with 2 different addresses
|
||||
|
|
|
@ -48,7 +48,7 @@ class base_setup_config_choice(osv.osv_memory):
|
|||
user_ids = user_obj.search(cr, uid, [])
|
||||
users = user_obj.browse(cr, uid, user_ids)
|
||||
user_str = '\n'.join(map(lambda x: ' - %s: %s / %s' % (x.name, x.login, x.password), users))
|
||||
return _('The following users have been installed on your database: \n')+ user_str
|
||||
return _('The following users have been installed : \n')+ user_str
|
||||
|
||||
_columns = {
|
||||
'installed_users':fields.text('Installed Users', readonly=True),
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<separator string="" position="vertical" colspan="1" rowspan="8"/>
|
||||
<group colspan="4" width="400">
|
||||
<separator string="Installation Done" colspan="4"/>
|
||||
<label align="0.0" string="Your new database is now fully installed." colspan="4"/>
|
||||
<label align="0.0" string="Your database is now created." colspan="4"/>
|
||||
<field name="installed_users" nolabel= "1" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<attribute name="string">Main Company Setup</attribute>
|
||||
</form>
|
||||
<xpath expr="//label[@string='description']" position="attributes">
|
||||
<attribute name="string">Information of your company will be used to custiomise your documents like Invoices, Sale Orders,...</attribute>
|
||||
<attribute name="string">Information of your company will be used to custiomise your documents like Invoices, Sale Orders and many more.</attribute>
|
||||
</xpath>
|
||||
<xpath expr='//separator[@string="title"]' position='attributes'>
|
||||
<attribute name='string'>Configure Your Company</attribute>
|
||||
|
@ -24,23 +24,23 @@
|
|||
<group colspan="5">
|
||||
<group colspan="2">
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="name" required="True"/><field name="account_no"/>
|
||||
<field name="currency" widget="selection"/><field name="street"/>
|
||||
<field name="street2"/>
|
||||
<field name="country_id"/>
|
||||
<field name="name" required="True"/><field name="website"/>
|
||||
<field name="street"/><field name="street2"/>
|
||||
<field name="zip"/>
|
||||
<field name="state_id"/>
|
||||
<field name="city"/>
|
||||
<field name="email"/>
|
||||
<field name="country_id"/>
|
||||
<field name="state_id"/>
|
||||
<field name="phone"/>
|
||||
<field name="website"/>
|
||||
<field name="email"/>
|
||||
<field name="account_no"/>
|
||||
<field name="currency" widget="selection"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group colspan="2" groups="base.group_extended">
|
||||
<separator string="Report Information" colspan="4"/>
|
||||
<field name="rml_header1" colspan="5"/>
|
||||
<field name="rml_footer1" colspan="5"/>
|
||||
<field name="rml_footer2" colspan="5"/>
|
||||
<group colspan="2" groups="base.group_extended" >
|
||||
<!-- <separator string="Report Information" colspan="4" />-->
|
||||
<field name="rml_header1" colspan="5" invisible="1"/>
|
||||
<field name="rml_footer1" colspan="5" invisible="1"/>
|
||||
<field name="rml_footer2" colspan="5" invisible="1"/>
|
||||
|
||||
<separator colspan="4"
|
||||
string="Your Logo - Use a size of about 450x150 pixels."/>
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.0\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2009-11-17 08:51+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 21:40+0000\n"
|
||||
"Last-Translator: Maciej Jędrusik <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:03+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:46+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base_setup
|
||||
|
@ -254,7 +254,7 @@ msgstr "Ulica"
|
|||
#. module: base_setup
|
||||
#: wizard_button:base_setup.base_setup,finish,menu:0
|
||||
msgid "Use Directly"
|
||||
msgstr ""
|
||||
msgstr "Użyj bezpośrednio"
|
||||
|
||||
#. module: base_setup
|
||||
#: wizard_button:base_setup.base_setup,init,menu:0
|
||||
|
|
|
@ -4,9 +4,28 @@
|
|||
<menuitem icon="terp-graph" id="base.reporting_menu"
|
||||
name="Reporting" sequence="30" />
|
||||
<menuitem icon="terp-graph" id="menu_dasboard"
|
||||
name="Dashboard" sequence="30" />
|
||||
|
||||
<!--Board Note Tree View -->
|
||||
name="Dashboard" sequence="30" />
|
||||
<!--Board Note Search View -->
|
||||
<record id="view_board_note_search" model="ir.ui.view">
|
||||
<field name="name">board.note.search</field>
|
||||
<field name="model">board.note</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Notes">
|
||||
<group col="10" colspan="4">
|
||||
<field name="name" string="Subject"/>
|
||||
<field name="type" string="Note Type"/>
|
||||
<field name="date" string="Date"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" colspan="4" string="Group By...">
|
||||
<filter string="Author" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!--Board Note Tree View -->
|
||||
|
||||
<record id="view_board_note_tree" model="ir.ui.view">
|
||||
<field name="name">board.note.tree</field>
|
||||
|
@ -15,10 +34,11 @@
|
|||
<field name="arch" type="xml">
|
||||
<tree string="Notes">
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!--Board Note Form View -->
|
||||
|
||||
<record id="view_board_note_form" model="ir.ui.view">
|
||||
|
@ -31,7 +51,8 @@
|
|||
<field name="type" select="1" required="1"/>
|
||||
<field name="user_id" select="1"/>
|
||||
<field name="date" select="1"/>
|
||||
<field colspan="4" name="note"/>
|
||||
<separator string="Notes" colspan="4"/>
|
||||
<field colspan="4" name="note" nolabel="1"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -43,6 +64,7 @@
|
|||
<field name="res_model">board.note</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form,tree</field>
|
||||
<field name="search_view_id" ref="view_board_note_search"/>
|
||||
</record>
|
||||
|
||||
<!-- Board Tree View -->
|
||||
|
@ -72,7 +94,7 @@
|
|||
name="%(action_board_menu_create)d"
|
||||
string="Create Menu" type="action"
|
||||
icon="gtk-justify-fill" />
|
||||
<field colspan="4" name="line_ids">
|
||||
<field colspan="4" name="line_ids" nolabel="1">
|
||||
<tree string="Dashboard View">
|
||||
<field name="name"/>
|
||||
<field name="sequence"/>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
<record model="document.directory" id="document.dir_calendars">
|
||||
<field name="name">Calendars</field>
|
||||
<field name="calendar_collection">True</field>
|
||||
|
@ -14,6 +14,11 @@
|
|||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_organizer">
|
||||
<field name="name">organizer</field>
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_uid">
|
||||
<field name="name">uid</field>
|
||||
<field name="type">vevent</field>
|
||||
|
@ -58,12 +63,12 @@
|
|||
<field name="name">valarm</field>
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_vtimezone">
|
||||
<field name="name">vtimezone</field>
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_priority">
|
||||
<field name="name">priority</field>
|
||||
<field name="type">vevent</field>
|
||||
|
@ -181,12 +186,12 @@
|
|||
<field name="name">seq</field>
|
||||
<field name="type">vtodo</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_todo_vtimezone">
|
||||
<field name="name">vtimezone</field>
|
||||
<field name="type">vtodo</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_todo_url">
|
||||
<field name="name">url</field>
|
||||
<field name="type">vtodo</field>
|
||||
|
|
|
@ -228,6 +228,8 @@ class CalDAV(object):
|
|||
|
||||
att_data = []
|
||||
for cal_data in child.getChildren():
|
||||
if cal_data.name.lower() == 'organizer':
|
||||
self.ical_set(cal_data.name.lower(), {'name':cal_data.params['CN']}, 'value')
|
||||
if cal_data.name.lower() == 'attendee':
|
||||
ctx = context.copy()
|
||||
if cal_children:
|
||||
|
@ -266,7 +268,7 @@ class CalDAV(object):
|
|||
if not datas:
|
||||
return
|
||||
timezones = []
|
||||
for data in datas:
|
||||
for data in datas:
|
||||
tzval = None
|
||||
vevent = ical.add(name)
|
||||
for field in self.__attribute__.keys():
|
||||
|
@ -307,6 +309,13 @@ class CalDAV(object):
|
|||
ical = tz_obj.export_cal(cr, uid, None, \
|
||||
data[map_field], ical, context=context)
|
||||
timezones.append(data[map_field])
|
||||
elif field == 'organizer' and data[map_field]:
|
||||
event_org = vevent.add('organizer')
|
||||
organizer_id = data[map_field][0]
|
||||
user_obj = self.pool.get('res.users')
|
||||
organizer = user_obj.browse(cr, uid, organizer_id, context=context)
|
||||
event_org.params['CN'] = [organizer.name]
|
||||
event_org.value = 'MAILTO:' + (organizer.user_email or organizer.name)
|
||||
elif data[map_field]:
|
||||
if map_type in ("char", "text"):
|
||||
if field in ('exdate'):
|
||||
|
@ -414,7 +423,7 @@ class CalDAV(object):
|
|||
return res
|
||||
|
||||
class Calendar(CalDAV, osv.osv):
|
||||
_name = 'basic.calendar'
|
||||
_name = 'basic.calendar'
|
||||
_calname = 'calendar'
|
||||
|
||||
__attribute__ = {
|
||||
|
@ -431,13 +440,13 @@ class Calendar(CalDAV, osv.osv):
|
|||
'vtimezone': None, # Use: O-n, Type: Collection of Timezone class
|
||||
}
|
||||
_columns = {
|
||||
'name': fields.char("Name", size=64),
|
||||
'name': fields.char("Name", size=64),
|
||||
'user_id': fields.many2one('res.users', 'Owner'),
|
||||
'collection_id': fields.many2one('document.directory', 'Collection', \
|
||||
required=True),
|
||||
'type': fields.selection([('vevent', 'Event'), ('vtodo', 'TODO')], \
|
||||
string="Type", size=64),
|
||||
'line_ids': fields.one2many('basic.calendar.lines', 'calendar_id', 'Calendar Lines'),
|
||||
'line_ids': fields.one2many('basic.calendar.lines', 'calendar_id', 'Calendar Lines'),
|
||||
'create_date': fields.datetime('Created Date'),
|
||||
'write_date': fields.datetime('Modifided Date'),
|
||||
}
|
||||
|
@ -448,8 +457,8 @@ class Calendar(CalDAV, osv.osv):
|
|||
if not domain:
|
||||
domain = []
|
||||
res = []
|
||||
ctx_res_id = context.get('res_id', None)
|
||||
ctx_model = context.get('model', None)
|
||||
ctx_res_id = context.get('res_id', None)
|
||||
ctx_model = context.get('model', None)
|
||||
for cal in self.browse(cr, uid, ids):
|
||||
for line in cal.line_ids:
|
||||
if ctx_model and ctx_model != line.object_id.model:
|
||||
|
@ -458,13 +467,13 @@ class Calendar(CalDAV, osv.osv):
|
|||
continue
|
||||
line_domain = eval(line.domain)
|
||||
line_domain += domain
|
||||
if ctx_res_id:
|
||||
if ctx_res_id:
|
||||
line_domain += [('id','=',ctx_res_id)]
|
||||
mod_obj = self.pool.get(line.object_id.model)
|
||||
data_ids = mod_obj.search(cr, uid, line_domain, context=context)
|
||||
data_ids = mod_obj.search(cr, uid, line_domain, context=context)
|
||||
for data in mod_obj.browse(cr, uid, data_ids, context):
|
||||
ctx = parent and parent.context or None
|
||||
node = res_node_calendar('%s' %data.id, parent, ctx, data, line.object_id.model, data.id)
|
||||
node = res_node_calendar('%s' %data.id, parent, ctx, data, line.object_id.model, data.id)
|
||||
res.append(node)
|
||||
return res
|
||||
|
||||
|
@ -478,8 +487,8 @@ class Calendar(CalDAV, osv.osv):
|
|||
"""
|
||||
if not context:
|
||||
context = {}
|
||||
ctx_model = context.get('model', None)
|
||||
ctx_res_id = context.get('res_id', None)
|
||||
ctx_model = context.get('model', None)
|
||||
ctx_res_id = context.get('res_id', None)
|
||||
ical = vobject.iCalendar()
|
||||
for cal in self.browse(cr, uid, ids):
|
||||
for line in cal.line_ids:
|
||||
|
@ -488,7 +497,7 @@ class Calendar(CalDAV, osv.osv):
|
|||
if line.name in ('valarm', 'attendee'):
|
||||
continue
|
||||
domain = eval(line.domain)
|
||||
if ctx_res_id:
|
||||
if ctx_res_id:
|
||||
domain += [('id','=',ctx_res_id)]
|
||||
mod_obj = self.pool.get(line.object_id.model)
|
||||
data_ids = mod_obj.search(cr, uid, domain, context=context)
|
||||
|
@ -496,7 +505,7 @@ class Calendar(CalDAV, osv.osv):
|
|||
context.update({'model': line.object_id.model,
|
||||
'calendar_id': cal.id
|
||||
})
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, line.name, context)
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, line.name, context)
|
||||
self.create_ics(cr, uid, datas, line.name, ical, context=context)
|
||||
return ical.serialize()
|
||||
|
||||
|
@ -511,16 +520,18 @@ class Calendar(CalDAV, osv.osv):
|
|||
|
||||
if not context:
|
||||
context = {}
|
||||
vals = []
|
||||
vals = []
|
||||
ical_data = base64.decodestring(content)
|
||||
parsedCal = vobject.readOne(ical_data)
|
||||
if not data_id:
|
||||
data_id = self.search(cr, uid, [])[0]
|
||||
data_id = self.search(cr, uid, [])[0]
|
||||
cal = self.browse(cr, uid, data_id, context=context)
|
||||
cal_children = {}
|
||||
count = 0
|
||||
for line in cal.line_ids:
|
||||
cal_children[line.name] = line.object_id.model
|
||||
objs = []
|
||||
checked = True
|
||||
for child in parsedCal.getChildren():
|
||||
if child.name.lower() in cal_children:
|
||||
context.update({'model': cal_children[child.name.lower()],
|
||||
|
@ -528,12 +539,14 @@ class Calendar(CalDAV, osv.osv):
|
|||
})
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, child.name.lower(), context=context)
|
||||
val = self.parse_ics(cr, uid, child, cal_children=cal_children, context=context)
|
||||
val.update({'user_id': uid})
|
||||
vals.append(val)
|
||||
obj = self.pool.get(cal_children[child.name.lower()])
|
||||
if hasattr(obj, 'check_import'):
|
||||
obj.check_import(cr, uid, vals, context=context)
|
||||
else:
|
||||
objs.append(cal_children[child.name.lower()])
|
||||
for obj_name in list(set(objs)):
|
||||
obj = self.pool.get(obj_name)
|
||||
if hasattr(obj, 'check_import'):
|
||||
obj.check_import(cr, uid, vals, context=context)
|
||||
checked = True
|
||||
if not checked:
|
||||
self.check_import(cr, uid, vals, context=context)
|
||||
return {}
|
||||
Calendar()
|
||||
|
|
|
@ -29,21 +29,69 @@
|
|||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_my_open_oppor">
|
||||
<field name="name">My Open Opportunities</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Opportunities" colors="blue:state=='pending';grey:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
|
||||
<field name="name" string="Opportunity"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="stage_id"/>
|
||||
<button name="stage_previous" string="Previous Stage"
|
||||
states="open,pending" type="object" icon="gtk-go-back" />
|
||||
<button name="stage_next" string="Next Stage"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
<field name="planned_revenue" sum="Total of Planned Revenue"/>
|
||||
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
|
||||
<field name="date_deadline" invisible="1"/>
|
||||
<field name="state"/>
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
<button name="case_pending" string="Pending"
|
||||
states="open,draft" type="object"
|
||||
icon="gtk-media-pause" />
|
||||
<button name="case_mark_lost" string="Lost"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_close" string="Won"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-apply" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="act_my_oppor">
|
||||
<field name="name">My Open Opportunities</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm.crm_case_tree_view_oppor"/>
|
||||
<field name="domain">[('user_id','=',uid),('state','=','open'), ('type', '=', 'opportunity')]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window.view" id="act_my_oppor_tree_view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="crm_case_my_open_oppor"/>
|
||||
<field name="act_window_id" ref="act_my_oppor"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window.view" id="act_my_oppor_form_view">
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="crm_case_form_view_oppor"/>
|
||||
<field name="act_window_id" ref="act_my_oppor"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="act_my_meetings">
|
||||
<field name="res_model">crm.meeting</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm.crm_case_tree_view_meet"/>
|
||||
<field name="domain">[('user_id','=',uid),('state','!=','cancel'),('date','ilike',time.strftime("%Y-%m"))]</field>
|
||||
<field name="domain">[('user_id','=',uid),('state','not in',('cancel','done'))]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="act_my_oppor_stage">
|
||||
|
@ -59,7 +107,7 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree,form</field>
|
||||
<field name="view_id" ref="view_crm_opportunity_user_graph1"/>
|
||||
<field name="domain">['&', ('state', '=', 'done') , '&', ('create_date','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%Y-%m-%d')), ('type', '=', 'opportunity')]</field>
|
||||
<field name="domain">['&', ('user_id', '=', uid),'&', ('state', '=', 'done') , '&', ('create_date','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%Y-%m-%d')), ('type', '=', 'opportunity')]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="board_crm_form">
|
||||
|
@ -84,11 +132,11 @@
|
|||
</child1>
|
||||
<child2>
|
||||
<action
|
||||
string="Planned Revenues by Stage"
|
||||
string="My Planned Revenues by Stage"
|
||||
name="%(act_my_oppor_stage)d"
|
||||
colspan="4"/>
|
||||
<action
|
||||
string="Win/Lost Ratio for the Last Year"
|
||||
string="My Win/Lost Ratio for the Last Year"
|
||||
name="%(act_sales_pipeline)d"
|
||||
colspan="4"/>
|
||||
</child2>
|
||||
|
|
|
@ -124,7 +124,7 @@ class crm_case(object):
|
|||
stage_pool = self.pool.get('crm.case.stage')
|
||||
for case in self.browse(cr, uid, ids, context):
|
||||
if section in s:
|
||||
st = case.stage_id.id or False
|
||||
st = not context.get('force_domain', False) and case.stage_id.id or False
|
||||
if st in s[section]:
|
||||
data = {'stage_id': s[section][st]}
|
||||
stage = s[section][st]
|
||||
|
@ -141,8 +141,12 @@ class crm_case(object):
|
|||
if not context:
|
||||
context = {}
|
||||
stage_obj = self.pool.get('crm.case.stage')
|
||||
sid = stage_obj.search(cr, uid, \
|
||||
[('object_id.model', '=', self._name)], context=context)
|
||||
tmp = self.read(cr, uid, ids, ['section_id'], context)[0]['section_id']
|
||||
section_id = tmp and tmp[0] or False
|
||||
domain = [('object_id.model', '=', self._name), ('section_id', '=', section_id)]
|
||||
if 'force_domain' in context and context['force_domain']:
|
||||
domain += context['force_domain']
|
||||
sid = stage_obj.search(cr, uid, domain, context=context)
|
||||
s = {}
|
||||
previous = {}
|
||||
section = self._name
|
||||
|
@ -168,7 +172,7 @@ class crm_case(object):
|
|||
stage_pool = self.pool.get('crm.case.stage')
|
||||
for case in self.browse(cr, uid, ids, context):
|
||||
if section in s:
|
||||
st = case.stage_id.id or False
|
||||
st = not context.get('force_domain', False) and case.stage_id.id or False
|
||||
s[section] = dict([(v, k) for (k, v) in s[section].iteritems()])
|
||||
if st in s[section]:
|
||||
data = {'stage_id': s[section][st]}
|
||||
|
@ -440,7 +444,7 @@ class crm_case_section(osv.osv):
|
|||
'active': fields.boolean('Active', help="If the active field is set to \
|
||||
true, it will allow you to hide the sales team without removing it."),
|
||||
'allow_unlink': fields.boolean('Allow Delete', help="Allows to delete non draft cases"),
|
||||
'change_responsible': fields.boolean('Change Responsible', help="Set responsible of this Sales team on escalation to this team"),
|
||||
'change_responsible': fields.boolean('Change Responsible', help="Thick this box if you want that on escalation, the responsible of this sale team automatically becomes responsible of the lead/opportunity escaladed"),
|
||||
'user_id': fields.many2one('res.users', 'Responsible User'),
|
||||
'member_ids':fields.many2many('res.users', 'sale_member_rel', 'section_id', 'member_id', 'Team Members'),
|
||||
'reply_to': fields.char('Reply-To', size=64, help="The email address put \
|
||||
|
|
|
@ -177,10 +177,18 @@ and users"),
|
|||
@param ids: List of case's Ids
|
||||
@param *args: Give Tuple Value
|
||||
"""
|
||||
old_state = self.read(cr, uid, ids, ['state'])[0]['state']
|
||||
res = super(crm_lead, self).case_open(cr, uid, ids, *args)
|
||||
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
if old_state == 'draft':
|
||||
stage_id = super(crm_lead, self).stage_next(cr, uid, ids, *args)
|
||||
if not stage_id:
|
||||
raise osv.except_osv(_('Warning !'), _('There is no stage defined for this Sale Team.'))
|
||||
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
|
||||
value.update({'date_open': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
|
||||
self.write(cr, uid, ids, value)
|
||||
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('Lead ') + " '" + name + "' "+ _("is Open.")
|
||||
message = _('The Lead') + " '" + name + "' "+ _("has been written as Open.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
|
@ -195,7 +203,7 @@ and users"),
|
|||
res = super(crm_lead, self).case_close(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('Lead ') + " '" + name + "' "+ _("is Closed.")
|
||||
message = _('The Lead') + " '" + name + "' "+ _("has been written as Closed.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
|
|
|
@ -309,7 +309,7 @@
|
|||
context="{'invisible_section': False}">
|
||||
<filter icon="terp-personal+"
|
||||
context="{'invisible_section': False}"
|
||||
domain="[('section_id.user_id','=',uid)]"
|
||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
||||
help="My Sales Team"/>
|
||||
<filter icon="terp-personal+"
|
||||
context="{'invisible_section': False}"
|
||||
|
|
|
@ -107,6 +107,7 @@
|
|||
<group col="2" colspan="2">
|
||||
<separator colspan="2" string="Assignment"/>
|
||||
<field name="user_id" />
|
||||
<field name="organizer_id" groups="base.group_extended"/>
|
||||
<field name="section_id" widget="selection"
|
||||
groups="base.group_extended"/>
|
||||
</group><group col="2" colspan="2">
|
||||
|
@ -154,7 +155,9 @@
|
|||
<field name="attendee_ids" colspan="4"
|
||||
nolabel="1" widget="one2many" mode="tree,form">
|
||||
<tree string="Invitation details" editable="top">
|
||||
<field name="email" />
|
||||
<field name="sent_by_uid" string="From"/>
|
||||
<field name="user_id" string="To"/>
|
||||
<field name="email" string="Mail TO"/>
|
||||
<field name="role" select="1" />
|
||||
<field name="state" />
|
||||
</tree>
|
||||
|
@ -294,7 +297,7 @@
|
|||
<field name="partner_id" select="1" />
|
||||
<field name="section_id" select="1" widget="selection">
|
||||
<filter icon="terp-personal+"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
||||
help="My Sale Team" />
|
||||
</field>
|
||||
<field name="user_id" select="1"/>
|
||||
|
@ -342,7 +345,7 @@
|
|||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -64,9 +64,36 @@ class crm_opportunity(osv.osv):
|
|||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_opportunity, self).case_close(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'probability' : 100.0, 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
stage_id = super(crm_opportunity, self).stage_next(cr, uid, ids, context={'force_domain': [('probability', '=', 100)]})
|
||||
if not stage_id:
|
||||
raise osv.except_osv(_('Warning !'), _('There is no stage for won oppportunities defined for this Sale Team.'))
|
||||
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
|
||||
value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
|
||||
|
||||
self.write(cr, uid, ids, value)
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('Opportunity ') + " '" + name + "' "+ _("is Won.")
|
||||
message = _('The Opportunity') + " '" + name + "' "+ _("has been written as Won.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
def case_mark_lost(self, cr, uid, ids, *args):
|
||||
"""Mark the case as lost: state = done and probability = 0%
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_opportunity, self).case_close(cr, uid, ids, args)
|
||||
stage_id = super(crm_opportunity, self).stage_next(cr, uid, ids, context={'force_domain': [('probability', '=', 0)]})
|
||||
if not stage_id:
|
||||
raise osv.except_osv(_('Warning !'), _('There is no stage for lost oppportunities defined for this Sale Team.'))
|
||||
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
|
||||
value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
|
||||
|
||||
res = self.write(cr, uid, ids, value)
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('The Opportunity') + " '" + name + "' "+ _("has been written as Lost.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
|
@ -80,13 +107,23 @@ class crm_opportunity(osv.osv):
|
|||
"""
|
||||
res = super(crm_opportunity, self).case_cancel(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'probability' : 0.0})
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('Opportunity ') + " '" + name + "' "+ _("is Lost.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
|
||||
def case_reset(self, cr, uid, ids, *args):
|
||||
"""Overrides reset as draft in order to set the stage field as empty
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_opportunity, self).case_reset(cr, uid, ids, *args)
|
||||
self.write(cr, uid, ids, {'stage_id': False})
|
||||
return True
|
||||
|
||||
|
||||
def case_open(self, cr, uid, ids, *args):
|
||||
"""Overrides cancel for crm_case for setting Open Date
|
||||
"""Overrides open for crm_case for setting Open Date
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
|
|
|
@ -65,8 +65,11 @@
|
|||
<field name="description" nolabel="1" colspan="4"/>
|
||||
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<group col="10" colspan="4">
|
||||
<field name="state"/>
|
||||
<button name="case_reset" string="Reset to New"
|
||||
states="done,cancel" type="object"
|
||||
icon="gtk-convert" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
|
@ -74,18 +77,18 @@
|
|||
states="draft,open" type="object"
|
||||
icon="gtk-media-pause" />
|
||||
<button name="case_escalate" string="Escalate"
|
||||
states="open,draft,pending" type="object"
|
||||
states="open,pending" type="object"
|
||||
groups="base.group_extended"
|
||||
icon="gtk-go-up" />
|
||||
<button name="case_cancel" string="Mark Lost"
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-close" />
|
||||
<button name="case_mark_lost" string="Mark Lost"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_close" string="Mark Won"
|
||||
states="open,draft,pending" type="object"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-apply" />
|
||||
<button name="case_reset" string="Reset to New"
|
||||
states="done,cancel" type="object"
|
||||
icon="gtk-convert" />
|
||||
</group>
|
||||
</page>
|
||||
<page string="Lead">
|
||||
|
@ -224,15 +227,15 @@
|
|||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
<button name="case_close" string="Won"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-apply" />
|
||||
<button name="case_pending" string="Pending"
|
||||
states="open,draft" type="object"
|
||||
icon="gtk-media-pause" />
|
||||
<button name="case_cancel" string="Lost"
|
||||
states="draft,open,pending" type="object"
|
||||
<button name="case_mark_lost" string="Lost"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_close" string="Won"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-apply" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -291,7 +294,7 @@
|
|||
context="{'invisible_section': False}"
|
||||
widget="selection">
|
||||
<filter icon="terp-personal+"
|
||||
domain="[('section_id.user_id','=',uid)]"
|
||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
||||
context="{'invisible_section': False}"
|
||||
help="My Sales Team" />
|
||||
<filter icon="terp-personal+"
|
||||
|
|
|
@ -24,6 +24,7 @@ from osv import fields, osv
|
|||
from tools.translate import _
|
||||
import crm
|
||||
import time
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
class crm_phonecall(osv.osv, crm_case):
|
||||
""" Phonecall Cases """
|
||||
|
@ -65,7 +66,7 @@ class crm_phonecall(osv.osv, crm_case):
|
|||
('object_id.model', '=', 'crm.phonecall')]"),
|
||||
'date_open': fields.datetime('Opened', readonly=True),
|
||||
# phonecall fields
|
||||
'duration': fields.float('Duration'),
|
||||
'duration': fields.float('Duration', help="Duration in Minutes"),
|
||||
'categ_id': fields.many2one('crm.case.categ', 'Category', \
|
||||
domain="[('section_id','=',section_id),\
|
||||
('object_id.model', '=', 'crm.phonecall')]"),
|
||||
|
@ -113,10 +114,29 @@ class crm_phonecall(osv.osv, crm_case):
|
|||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_phonecall, self).case_close(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
for phone in self.browse(cr, uid, ids):
|
||||
phone_id= phone.id
|
||||
data = {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')}
|
||||
if phone.duration <=0:
|
||||
duration = datetime.now() - datetime.strptime(phone.date, '%Y-%m-%d %H:%M:%S')
|
||||
data.update({'duration': duration.seconds/float(60)})
|
||||
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], args)
|
||||
self.write(cr, uid, ids, data)
|
||||
return res
|
||||
|
||||
def case_reset(self, cr, uid, ids, *args):
|
||||
"""Resets case as draft
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_phonecall, self).case_reset(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'duration': 0.0})
|
||||
return res
|
||||
|
||||
|
||||
def case_open(self, cr, uid, ids, *args):
|
||||
"""Overrides cancel for crm_case for setting Open Date
|
||||
@param self: The object pointer
|
||||
|
|
|
@ -273,7 +273,7 @@
|
|||
<field name="section_id"
|
||||
select="1" widget="selection" string="Sales Team">
|
||||
<filter icon="terp-personal+"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
||||
help="My Sale Team" />
|
||||
</field>
|
||||
<newline/>
|
||||
|
|
|
@ -11,9 +11,7 @@
|
|||
<field name="name"/>
|
||||
<field name="menu_parent_id"/>
|
||||
<field name="section_id"/>
|
||||
<label string="This wizard will create all sub-menus, within the selected menu." align="0.0" colspan="4"/>
|
||||
<label string="You may want to create a new parent menu to put all the created menus in." align="0.0" colspan="4"/>
|
||||
<separator string="Select Views (Empty for default)" colspan="4"/>
|
||||
<separator string="Select Views (Empty for Default)" colspan="4"/>
|
||||
<field name="view_form"/>
|
||||
<field name="view_tree"/>
|
||||
<field name="view_calendar"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Event Attribute mapping for Calendar-->
|
||||
|
||||
|
@ -22,13 +22,20 @@
|
|||
<field name="calendar_id" ref="caldav.basic_calendar1" />
|
||||
<field name="object_id" search="[('model','=','calendar.alarm')]" />
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.lines" id="base_calendar.calendar_lines_attendee">
|
||||
<field name="name">attendee</field>
|
||||
<field name="calendar_id" ref="caldav.basic_calendar1" />
|
||||
<field name="object_id" search="[('model','=','calendar.attendee')]" />
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_0">
|
||||
<field name="name" ref="caldav.field_event_organizer"/>
|
||||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
<field name="field_id" search="[('name','=','organizer_id'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_1">
|
||||
<field name="name" ref="caldav.field_event_uid"/>
|
||||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
|
@ -42,7 +49,7 @@
|
|||
<field name="field_id" search="[('name','=','recurrent_id'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_3">
|
||||
<field name="name" ref="caldav.field_event_vtimezone"/>
|
||||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
|
@ -55,7 +62,7 @@
|
|||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','crm.meeting')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_5">
|
||||
<field name="name" ref="caldav.field_event_rrule"/>
|
||||
|
@ -154,7 +161,7 @@
|
|||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
|
@ -313,7 +320,7 @@
|
|||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -45,42 +45,6 @@ class crm_claim_report(osv.osv):
|
|||
_name = "crm.claim.report"
|
||||
_auto = False
|
||||
_description = "CRM Claim Report"
|
||||
|
||||
def _get_data(self, cr, uid, ids, field_name, arg, context={}):
|
||||
|
||||
""" @param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case and section Data’s IDs
|
||||
@param context: A standard dictionary for contextual values """
|
||||
|
||||
res = {}
|
||||
state_perc = 0.0
|
||||
avg_ans = 0.0
|
||||
|
||||
for case in self.browse(cr, uid, ids, context):
|
||||
if field_name != 'avg_answers':
|
||||
state = field_name[5:]
|
||||
cr.execute("select count(*) from crm_opportunity where \
|
||||
section_id =%s and state='%s'"%(case.section_id.id, state))
|
||||
state_cases = cr.fetchone()[0]
|
||||
perc_state = (state_cases / float(case.nbr)) * 100
|
||||
|
||||
res[case.id] = perc_state
|
||||
else:
|
||||
model_name = self._name.split('report.')
|
||||
if len(model_name) < 2:
|
||||
res[case.id] = 0.0
|
||||
else:
|
||||
model_name = model_name[1]
|
||||
|
||||
cr.execute("select count(*) from crm_case_log l, ir_model m \
|
||||
where l.model_id=m.id and m.model = '%s'" , model_name)
|
||||
logs = cr.fetchone()[0]
|
||||
|
||||
avg_ans = logs / case.nbr
|
||||
res[case.id] = avg_ans
|
||||
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Year', size=64, required=False, readonly=True),
|
||||
|
@ -88,9 +52,6 @@ class crm_claim_report(osv.osv):
|
|||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
|
||||
'nbr': fields.integer('# of Cases', readonly=True),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
|
||||
'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
|
||||
'perc_done': fields.function(_get_data, string='%Done', method=True, type="float"),
|
||||
'perc_cancel': fields.function(_get_data, string='%Cancel', method=True, type="float"),
|
||||
'month':fields.selection([('01', 'January'), ('02', 'February'), \
|
||||
('03', 'March'), ('04', 'April'),\
|
||||
('05', 'May'), ('06', 'June'), \
|
||||
|
@ -137,9 +98,6 @@ class crm_claim_report(osv.osv):
|
|||
c.company_id,
|
||||
c.categ_id,
|
||||
count(*) as nbr,
|
||||
0 as avg_answers,
|
||||
0.0 as perc_done,
|
||||
0.0 as perc_cancel,
|
||||
c.priority as priority,
|
||||
c.type_id as type_id,
|
||||
date_trunc('day',c.create_date) as create_date,
|
||||
|
|
|
@ -291,7 +291,7 @@
|
|||
</field>
|
||||
<field name="section_id" select="1" widget="selection" string="Sales Team">
|
||||
<filter icon="terp-personal+"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
||||
help="My section" />
|
||||
</field>
|
||||
</group>
|
||||
|
|
|
@ -36,42 +36,6 @@ class crm_fundraising_report(osv.osv):
|
|||
_name = "crm.fundraising.report"
|
||||
_auto = False
|
||||
_description = "CRM Fundraising Report"
|
||||
|
||||
def _get_data(self, cr, uid, ids, field_name, arg, context={}):
|
||||
|
||||
""" @param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case and section Data’s IDs
|
||||
@param context: A standard dictionary for contextual values """
|
||||
|
||||
res = {}
|
||||
state_perc = 0.0
|
||||
avg_ans = 0.0
|
||||
|
||||
for case in self.browse(cr, uid, ids, context):
|
||||
if field_name != 'avg_answers':
|
||||
state = field_name[5:]
|
||||
cr.execute("select count(*) from crm_opportunity where \
|
||||
section_id =%s and state='%s'"%(case.section_id.id, state))
|
||||
state_cases = cr.fetchone()[0]
|
||||
perc_state = (state_cases / float(case.nbr)) * 100
|
||||
|
||||
res[case.id] = perc_state
|
||||
else:
|
||||
model_name = self._name.split('report.')
|
||||
if len(model_name) < 2:
|
||||
res[case.id] = 0.0
|
||||
else:
|
||||
model_name = model_name[1]
|
||||
|
||||
cr.execute("select count(*) from crm_case_log l, ir_model m \
|
||||
where l.model_id=m.id and m.model = '%s'" , model_name)
|
||||
logs = cr.fetchone()[0]
|
||||
|
||||
avg_ans = logs / case.nbr
|
||||
res[case.id] = avg_ans
|
||||
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Year', size=64, required=False, readonly=True),
|
||||
|
@ -79,9 +43,6 @@ class crm_fundraising_report(osv.osv):
|
|||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
|
||||
'nbr': fields.integer('# of Cases', readonly=True),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
|
||||
'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
|
||||
'perc_done': fields.function(_get_data, string='%Done', method=True, type="float"),
|
||||
'perc_cancel': fields.function(_get_data, string='%Cancel', method=True, type="float"),
|
||||
'month':fields.selection([('01', 'January'), ('02', 'February'), \
|
||||
('03', 'March'), ('04', 'April'),\
|
||||
('05', 'May'), ('06', 'June'), \
|
||||
|
@ -123,9 +84,6 @@ class crm_fundraising_report(osv.osv):
|
|||
c.company_id,
|
||||
c.partner_id,
|
||||
count(*) as nbr,
|
||||
0 as avg_answers,
|
||||
0.0 as perc_done,
|
||||
0.0 as perc_cancel,
|
||||
date_trunc('day',c.create_date) as create_date,
|
||||
sum(planned_revenue) as amount_revenue,
|
||||
sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
|
||||
|
|
|
@ -1,6 +1,61 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<data noupdate="1">
|
||||
<record id="crm_helpdesk_wheretodownloadopenerp0" model="crm.helpdesk">
|
||||
<field model="res.partner.canal" name="canal_id" search="[('name', '=', u'E-mail')]"/>
|
||||
<field name="som" ref="base.som_normal"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="state">draft</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="date">2010-07-04 11:10:36</field>
|
||||
<field name="name">Download old version of OpenERP? </field>
|
||||
<field eval=""Is there any link to download old versions of OpenERP?"" name="description"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
<record id="crm_helpdesk_cannotabletoconnecttoserver0" model="crm.helpdesk">
|
||||
<field model="res.partner.canal" name="canal_id" search="[('name', '=', u'website')]"/>
|
||||
<field name="som" ref="base.som_fury"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="state">draft</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="date">2010-07-12 11:12:09</field>
|
||||
<field name="name">Can not able to connect to Server</field>
|
||||
<field eval=""I am not able to connect Server, Can anyone help?"" name="description"/>
|
||||
</record>
|
||||
|
||||
<record id="crm_helpdesk_documentationforcrm0" model="crm.helpdesk">
|
||||
<field model="res.partner.canal" name="canal_id" search="[('name', '=', u'phone')]"/>
|
||||
<field name="som" ref="base.som_happy"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="priority">2</field>
|
||||
<field name="state">draft</field>
|
||||
<field name="section_id" ref="crm.section_sales_department"/>
|
||||
<field name="date">2010-07-12 11:13:10</field>
|
||||
<field name="name">Documentation for CRM?</field>
|
||||
<field eval=""Can anyone give link of document for CRM"" name="description"/>
|
||||
</record>
|
||||
|
||||
<record id="crm_helpdesk_howtocreateanewmodule0" model="crm.helpdesk">
|
||||
<field model="res.partner.canal" name="canal_id" search="[('name', '=', u'E-mail')]"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_9"/>
|
||||
<field name="som" ref="base.som_normal"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="partner_id" ref="base.res_partner_2"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="state">draft</field>
|
||||
<field name="date">2010-07-12 11:15:17</field>
|
||||
<field name="name">How to create a new module</field>
|
||||
<field eval=""How can I create new module in OpenERP?"" name="description"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
|
@ -66,8 +66,7 @@
|
|||
</group>
|
||||
|
||||
<separator colspan="4" string="Notes"/>
|
||||
<field name="description" colspan="4"
|
||||
nolabel="1" widget="text_tag" readonly="1" />
|
||||
<field name="description" colspan="4" nolabel="1" />
|
||||
<separator colspan="4"/>
|
||||
<group col="8" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
|
@ -250,7 +249,7 @@
|
|||
<field name="user_id" select="1" widget="selection"/>
|
||||
<field name="section_id" select="1" widget="selection" string="Sales Team">
|
||||
<filter icon="terp-personal+"
|
||||
domain="[('section_id','=',context.get('section_id',False))]"
|
||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
||||
help="My section" />
|
||||
</field>
|
||||
<newline/>
|
||||
|
|
|
@ -38,51 +38,12 @@ class crm_helpdesk_report(osv.osv):
|
|||
_description = "Helpdesk report after Sales Services"
|
||||
_auto = False
|
||||
|
||||
def _get_data(self, cr, uid, ids, field_name, arg, context={}):
|
||||
|
||||
""" @param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case and section Data’s IDs
|
||||
@param context: A standard dictionary for contextual values """
|
||||
|
||||
res = {}
|
||||
state_perc = 0.0
|
||||
avg_ans = 0.0
|
||||
|
||||
for case in self.browse(cr, uid, ids, context):
|
||||
if field_name != 'avg_answers':
|
||||
state = field_name[5:]
|
||||
cr.execute("select count(*) from crm_opportunity where \
|
||||
section_id =%s and state='%s'"%(case.section_id.id, state))
|
||||
state_cases = cr.fetchone()[0]
|
||||
perc_state = (state_cases / float(case.nbr)) * 100
|
||||
|
||||
res[case.id] = perc_state
|
||||
else:
|
||||
model_name = self._name.split('report.')
|
||||
if len(model_name) < 2:
|
||||
res[case.id] = 0.0
|
||||
else:
|
||||
model_name = model_name[1]
|
||||
|
||||
cr.execute("select count(*) from crm_case_log l, ir_model m \
|
||||
where l.model_id=m.id and m.model = '%s'" , model_name)
|
||||
logs = cr.fetchone()[0]
|
||||
|
||||
avg_ans = logs / case.nbr
|
||||
res[case.id] = avg_ans
|
||||
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Year', size=64, required=False, readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
|
||||
'nbr': fields.integer('# of Cases', readonly=True),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
|
||||
'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
|
||||
'perc_done': fields.function(_get_data, string='%Done', method=True, type="float"),
|
||||
'perc_cancel': fields.function(_get_data, string='%Cancel', method=True, type="float"),
|
||||
'month':fields.selection([('01', 'January'), ('02', 'February'), \
|
||||
('03', 'March'), ('04', 'April'),\
|
||||
('05', 'May'), ('06', 'June'), \
|
||||
|
@ -122,9 +83,6 @@ class crm_helpdesk_report(osv.osv):
|
|||
c.priority,
|
||||
c.date_deadline,
|
||||
count(*) as nbr,
|
||||
0 as avg_answers,
|
||||
0.0 as perc_done,
|
||||
0.0 as perc_cancel,
|
||||
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
|
||||
from
|
||||
crm_helpdesk c
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
import delivery
|
||||
import partner
|
||||
import wizard
|
||||
import report
|
||||
import sale
|
||||
import stock
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'wizard/delivery_sale_order_view.xml',
|
||||
'delivery_report.xml',
|
||||
'delivery_view.xml',
|
||||
'partner_view.xml'
|
||||
],
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
id="report_shipping"
|
||||
model="stock.picking"
|
||||
name="sale.shipping"
|
||||
rml="sale_delivery_report/report/shipping.rml"
|
||||
rml="delivery/report/shipping.rml"
|
||||
string="Delivery order"/>
|
||||
|
||||
</data>
|
|
@ -45,8 +45,9 @@
|
|||
-
|
||||
Attach a pdf file in "My document"
|
||||
-
|
||||
!python {model: ir.attachment}: |
|
||||
!python {model: 'ir.attachment'}: |
|
||||
import tools
|
||||
import base64
|
||||
file = open(tools.config['addons_path'] + '/document/test/partner.pdf')
|
||||
id = self.write(cr, uid, [ref("document_1")], {'datas' : base64.encodestring(file.read())}, context)
|
||||
pdf_file = open(tools.config['addons_path'] + '/document/test/partner.pdf')
|
||||
self.write(cr, uid, [ref("document_1")], {'datas_fname': 'partner.pdf', 'datas' : base64.encodestring(pdf_file.read())}, context)
|
||||
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.1\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2009-09-29 06:31+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:37+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-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: document_ics
|
||||
|
@ -32,7 +32,7 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: constraint:document.directory:0
|
||||
msgid "Error! You can not create recursive Directories."
|
||||
msgstr ""
|
||||
msgstr "Ошибка! Вы не можете созадавать вложенные друг в друга директории."
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,jobs:0
|
||||
|
@ -42,12 +42,12 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: view:document.ics.crm.wizard:0
|
||||
msgid "Configure Calendars for CRM Sections"
|
||||
msgstr ""
|
||||
msgstr "Конфигурирование Календарей для секции CRM"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,helpdesk:0
|
||||
msgid "Helpdesk"
|
||||
msgstr ""
|
||||
msgstr "Техподдержка"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.directory.ics.fields,field_id:0
|
||||
|
@ -57,17 +57,17 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: view:document.ics.crm.wizard:0
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
msgstr "Далее"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.directory.ics.fields,content_id:0
|
||||
msgid "Content"
|
||||
msgstr ""
|
||||
msgstr "Содержание"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,meeting:0
|
||||
msgid "Calendar of Meetings"
|
||||
msgstr ""
|
||||
msgstr "Календарь встреч"
|
||||
|
||||
#. module: document_ics
|
||||
#: model:crm.case.section,name:document_ics.section_meeting
|
||||
|
@ -77,12 +77,12 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: selection:document.directory.ics.fields,name:0
|
||||
msgid "url"
|
||||
msgstr ""
|
||||
msgstr "адрес URL"
|
||||
|
||||
#. module: document_ics
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия"
|
||||
|
||||
#. module: document_ics
|
||||
#: help:document.ics.crm.wizard,bugs:0
|
||||
|
@ -111,12 +111,12 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: selection:document.directory.ics.fields,name:0
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
msgstr "описание"
|
||||
|
||||
#. module: document_ics
|
||||
#: model:ir.actions.act_window,name:document_ics.action_view_document_ics_config_directories
|
||||
msgid "Configure Calendars for Sections "
|
||||
msgstr ""
|
||||
msgstr "Конфигурирование Календарей для Секций "
|
||||
|
||||
#. module: document_ics
|
||||
#: help:document.ics.crm.wizard,opportunity:0
|
||||
|
@ -142,12 +142,12 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: field:document.directory.content,ics_object_id:0
|
||||
msgid "Object"
|
||||
msgstr ""
|
||||
msgstr "Объект"
|
||||
|
||||
#. module: document_ics
|
||||
#: constraint:crm.case.section:0
|
||||
msgid "Error ! You cannot create recursive sections."
|
||||
msgstr ""
|
||||
msgstr "Ошибка! Вы не можете создавать рекурсивные секции."
|
||||
|
||||
#. module: document_ics
|
||||
#: model:ir.module.module,shortdesc:document_ics.module_meta_information
|
||||
|
@ -157,12 +157,12 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: selection:document.directory.ics.fields,name:0
|
||||
msgid "location"
|
||||
msgstr ""
|
||||
msgstr "местоположение"
|
||||
|
||||
#. module: document_ics
|
||||
#: view:document.directory:0
|
||||
msgid "ICS Calendar"
|
||||
msgstr ""
|
||||
msgstr "Календарь формата ICS"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.directory.ics.fields,name:0
|
||||
|
@ -172,7 +172,7 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: model:ir.module.module,description:document_ics.module_meta_information
|
||||
msgid "Allows to synchronise calendars with others applications."
|
||||
msgstr ""
|
||||
msgstr "Разрешает синхронизировать календари с другими приложенями."
|
||||
|
||||
#. module: document_ics
|
||||
#: constraint:ir.ui.view:0
|
||||
|
@ -189,7 +189,7 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,name:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
msgstr "Название"
|
||||
|
||||
#. module: document_ics
|
||||
#: help:document.ics.crm.wizard,meeting:0
|
||||
|
@ -199,7 +199,7 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: field:document.directory.content,ics_domain:0
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
msgstr "Домен"
|
||||
|
||||
#. module: document_ics
|
||||
#: help:document.ics.crm.wizard,claims:0
|
||||
|
@ -221,12 +221,12 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: view:crm.case:0
|
||||
msgid "Duration(In Hour)"
|
||||
msgstr ""
|
||||
msgstr "Продолжительность(в часах)"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,document_ics:0
|
||||
msgid "Shared Calendar"
|
||||
msgstr ""
|
||||
msgstr "Общий календарь"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,claims:0
|
||||
|
@ -248,17 +248,17 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,phonecall:0
|
||||
msgid "Phone Calls"
|
||||
msgstr ""
|
||||
msgstr "Телефонные звонки"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,bugs:0
|
||||
msgid "Bug Tracking"
|
||||
msgstr ""
|
||||
msgstr "Учет ошибок"
|
||||
|
||||
#. module: document_ics
|
||||
#: selection:document.directory.ics.fields,name:0
|
||||
msgid "categories"
|
||||
msgstr ""
|
||||
msgstr "категории"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,lead:0
|
||||
|
@ -273,7 +273,7 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: selection:document.directory.ics.fields,name:0
|
||||
msgid "created"
|
||||
msgstr ""
|
||||
msgstr "создан"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:crm.case,code:0
|
||||
|
@ -283,7 +283,7 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: selection:document.directory.ics.fields,name:0
|
||||
msgid "summary"
|
||||
msgstr ""
|
||||
msgstr "сводка"
|
||||
|
||||
#. module: document_ics
|
||||
#: model:ir.model,name:document_ics.model_document_ics_crm_wizard
|
||||
|
@ -303,17 +303,17 @@ msgstr ""
|
|||
#. module: document_ics
|
||||
#: field:document.directory.content,ics_field_ids:0
|
||||
msgid "Fields Mapping"
|
||||
msgstr ""
|
||||
msgstr "Соответствие полей"
|
||||
|
||||
#. module: document_ics
|
||||
#: view:document.ics.crm.wizard:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Отмена"
|
||||
|
||||
#. module: document_ics
|
||||
#: field:document.ics.crm.wizard,opportunity:0
|
||||
msgid "Business Opportunities"
|
||||
msgstr ""
|
||||
msgstr "Возможные сделки"
|
||||
|
||||
#. module: document_ics
|
||||
#: selection:document.directory.ics.fields,name:0
|
||||
|
|
|
@ -118,8 +118,8 @@ class email_template_send_wizard(osv.osv_memory):
|
|||
'full_success': lambda *a: False
|
||||
}
|
||||
|
||||
def fields_get(self, cr, uid, fields=None, context=None, read_access=True):
|
||||
result = super(email_template_send_wizard, self).fields_get(cr, uid, fields, context, read_access)
|
||||
def fields_get(self, cr, uid, fields=None, context=None, write_access=True):
|
||||
result = super(email_template_send_wizard, self).fields_get(cr, uid, fields, context, write_access)
|
||||
if 'attachment_ids' in result and 'src_model' in context:
|
||||
result['attachment_ids']['domain'] = [('res_model','=',context['src_model']),('res_id','=',context['active_id'])]
|
||||
return result
|
||||
|
|
|
@ -53,7 +53,7 @@ class event_event(osv.osv):
|
|||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
""" Copy record of Given id
|
||||
@param id: Id of Event Registration type record.
|
||||
@param id: Id of Event record.
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
if not default:
|
||||
|
@ -65,7 +65,13 @@ class event_event(osv.osv):
|
|||
return super(event_event, self).copy(cr, uid, id, default=default, context=context)
|
||||
|
||||
def onchange_product(self, cr, uid, ids, product_id):
|
||||
|
||||
"""This function returns value of product's unit price based on product id.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param product_id: Product's id
|
||||
"""
|
||||
if not product_id:
|
||||
return {'value': {'unit_price': False}}
|
||||
else:
|
||||
|
@ -82,6 +88,13 @@ class event_event(osv.osv):
|
|||
return self.write(cr, uid, ids, {'state': 'done'}, context=context)
|
||||
|
||||
def button_confirm(self, cr, uid, ids, context=None):
|
||||
"""This Funtion send reminder who had already confirmed their event registration.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param return: True
|
||||
"""
|
||||
register_pool = self.pool.get('event.registration')
|
||||
for event in self.browse(cr, uid, ids, context=context):
|
||||
if event.mail_auto_confirm:
|
||||
|
@ -95,14 +108,12 @@ class event_event(osv.osv):
|
|||
|
||||
|
||||
def _get_register(self, cr, uid, ids, fields, args, context=None):
|
||||
"""
|
||||
Get Confirm or uncofirm register value.
|
||||
"""Get Confirm or uncofirm register value.
|
||||
@param ids: List of Event registration type's id
|
||||
@param fields: List of function fields(register_current and register_prospect).
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: Dictionary of function fields value.
|
||||
"""
|
||||
|
||||
register_pool = self.pool.get('event.registration')
|
||||
res = {}
|
||||
for event in self.browse(cr, uid, ids, context):
|
||||
|
@ -116,7 +127,7 @@ class event_event(osv.osv):
|
|||
state.append('draft')
|
||||
|
||||
reg_ids = register_pool.search(cr, uid, [
|
||||
('event_id', '=', event.id),
|
||||
('event_id', '=', event.id),
|
||||
('state', 'in', state)])
|
||||
|
||||
if 'register_current' in fields:
|
||||
|
@ -157,7 +168,6 @@ class event_event(osv.osv):
|
|||
register_pool.write(cr, uid, reg_ids, register_values)
|
||||
return res
|
||||
|
||||
|
||||
_columns = {
|
||||
'type': fields.many2one('event.type', 'Type', help="Type of Event like Seminar, Exhibition, Conference, Training."),
|
||||
'register_max': fields.integer('Maximum Registrations', help="Provide Maximun Number of Registrations"),
|
||||
|
@ -183,7 +193,6 @@ class event_event(osv.osv):
|
|||
'country_id': fields.related('address_id', 'country_id',
|
||||
type='many2one', relation='res.country', string='Country'),
|
||||
'language': fields.char('Language',size=64),
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -218,7 +227,7 @@ and users by email"),
|
|||
"badge_partner": fields.char('Badge Partner', size=128),
|
||||
"event_product": fields.char("Product Name", size=128, required=True),
|
||||
"tobe_invoiced": fields.boolean("To be Invoiced"),
|
||||
"invoice_id": fields.many2one("account.invoice", "Invoice"),
|
||||
"invoice_id": fields.many2one("account.invoice", "Invoice", readonly=True),
|
||||
'date_closed': fields.datetime('Closed', readonly=True),
|
||||
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
|
||||
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
|
||||
|
@ -235,8 +244,8 @@ and users by email"),
|
|||
|
||||
def _make_invoice(self, cr, uid, reg, lines, context=None):
|
||||
""" Create Invoice from Invoice lines
|
||||
@param reg : Object of event.registration
|
||||
@param lines: ids of Invoice lines
|
||||
@param reg : Model of Event Registration
|
||||
@param lines: Ids of Invoice lines
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -325,11 +334,10 @@ and users by email"),
|
|||
return new_invoice_ids
|
||||
|
||||
def check_confirm(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Check confirm event register on given id.
|
||||
"""This Function Open Event Registration and send email to user.
|
||||
@param ids: List of Event registration's IDs
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: Dictionary value which open Confirm registration form.
|
||||
@return: True
|
||||
"""
|
||||
data_pool = self.pool.get('ir.model.data')
|
||||
unconfirmed_ids = []
|
||||
|
@ -360,13 +368,17 @@ and users by email"),
|
|||
}
|
||||
return True
|
||||
|
||||
def button_reg_close(self, cr, uid, ids, *args):
|
||||
def button_reg_close(self, cr, uid, ids, *args):
|
||||
"""This Function Close Event Registration.
|
||||
"""
|
||||
registrations = self.browse(cr, uid, ids)
|
||||
self._history(cr, uid, registrations, _('Done'))
|
||||
self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
return True
|
||||
|
||||
def button_reg_cancel(self, cr, uid, ids, *args):
|
||||
def button_reg_cancel(self, cr, uid, ids, *args):
|
||||
"""This Function Cancel Event Registration.
|
||||
"""
|
||||
registrations = self.browse(cr, uid, ids)
|
||||
self._history(cr, uid, registrations, _('Cancel'))
|
||||
self.write(cr, uid, ids, {'state': 'cancel'})
|
||||
|
@ -375,8 +387,8 @@ and users by email"),
|
|||
def create(self, cr, uid, values, context=None):
|
||||
""" Overrides orm create method.
|
||||
"""
|
||||
event = self.pool.get('event.event').browse(cr, uid, values['event_id'], context=context)
|
||||
|
||||
event_obj = self.pool.get('event.event')
|
||||
event = event_obj.browse(cr, uid, values['event_id'], context=context)
|
||||
values['date_deadline']= event.date_begin
|
||||
values['description']= event.mail_confirm
|
||||
values['currency_id'] = event.currency_id.id
|
||||
|
@ -385,9 +397,12 @@ and users by email"),
|
|||
self._history(cr, uid, registrations, _('Created'))
|
||||
return res
|
||||
|
||||
def write(self, cr, uid, ids, values, context=None):
|
||||
def write(self, cr, uid, ids, values, context=None):
|
||||
""" Overrides orm write method.
|
||||
"""
|
||||
event_obj = self.pool.get('event.event')
|
||||
if 'event_id' in values:
|
||||
event = self.pool.get('event.event').browse(cr, uid, values['event_id'], context=context)
|
||||
event = event_obj.browse(cr, uid, values['event_id'], context=context)
|
||||
values['date_deadline']= event.date_begin
|
||||
values['description']= event.mail_confirm
|
||||
return super(event_registration, self).write(cr, uid, ids, values, context=context)
|
||||
|
@ -439,6 +454,13 @@ and users by email"),
|
|||
return self.pool.get('account.invoice.line').create(cr, uid, vals)
|
||||
|
||||
def onchange_badge_name(self, cr, uid, ids, badge_name):
|
||||
"""This function returns value of Registration Name based on Partner Badge Name.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param badge_name: Badge Name
|
||||
"""
|
||||
|
||||
data ={}
|
||||
if not badge_name:
|
||||
|
@ -448,44 +470,77 @@ and users by email"),
|
|||
|
||||
def onchange_contact_id(self, cr, uid, ids, contact, partner):
|
||||
|
||||
"""This function returns value of Badge Name , Badge Title based on Partner contact.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param contact: Patner Contact IDS
|
||||
@param partner: Partner IDS
|
||||
"""
|
||||
data ={}
|
||||
if not contact:
|
||||
return data
|
||||
|
||||
contact_id = self.pool.get('res.partner.contact').browse(cr, uid, contact)
|
||||
contact_obj = self.pool.get('res.partner.contact')
|
||||
addr_obj = self.pool.get('res.partner.address')
|
||||
job_obj = self.pool.get('res.partner.job')
|
||||
|
||||
contact_id = contact_obj.browse(cr, uid, contact)
|
||||
data['badge_name'] = contact_id.name
|
||||
data['badge_title'] = contact_id.title.name
|
||||
if partner:
|
||||
partner_addresses = self.pool.get('res.partner.address').search(cr, uid, [('partner_id', '=', partner)])
|
||||
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('contact_id', '=', contact), ('address_id', 'in', partner_addresses)])
|
||||
partner_addresses = addr_obj.search(cr, uid, [('partner_id', '=', partner)])
|
||||
job_ids = job_obj.search(cr, uid, [('contact_id', '=', contact), ('address_id', 'in', partner_addresses)])
|
||||
if job_ids:
|
||||
data['email_from'] = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0]).email
|
||||
data['email_from'] = job_obj.browse(cr, uid, job_ids[0]).email
|
||||
d = self.onchange_badge_name(cr, uid, ids, data['badge_name'])
|
||||
data.update(d['value'])
|
||||
return {'value': data}
|
||||
|
||||
def onchange_event(self, cr, uid, ids, event_id, partner_invoice_id):
|
||||
"""This function returns value of Product Name, Unit Price based on Event.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param event_id: Event ID
|
||||
@param partner_invoice_id: Partner Invoice ID
|
||||
"""
|
||||
context={}
|
||||
if not event_id:
|
||||
return {'value': {'unit_price': False, 'event_product': False}}
|
||||
data_event = self.pool.get('event.event').browse(cr, uid, event_id)
|
||||
|
||||
event_obj = self.pool.get('event.event')
|
||||
prod_obj = self.pool.get('product.product')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
|
||||
data_event = event_obj.browse(cr, uid, event_id)
|
||||
context['currency_id'] = data_event.currency_id.id
|
||||
if data_event.user_id.id:
|
||||
return {'value': {'user_id':data_event.user_id.id}}
|
||||
|
||||
if data_event.product_id:
|
||||
if not partner_invoice_id:
|
||||
unit_price=self.pool.get('product.product').price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
|
||||
unit_price=prod_obj.price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
|
||||
return {'value': {'unit_price': unit_price, 'event_product': data_event.product_id.name, 'currency_id': data_event.currency_id.id}}
|
||||
data_partner = self.pool.get('res.partner').browse(cr, uid, partner_invoice_id)
|
||||
data_partner = res_obj.browse(cr, uid, partner_invoice_id)
|
||||
context.update({'partner_id': data_partner})
|
||||
unit_price = self.pool.get('product.product')._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
|
||||
unit_price = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
|
||||
return {'value': {'unit_price': unit_price, 'event_product': data_event.product_id.name, 'currency_id': data_event.currency_id.id}}
|
||||
|
||||
return {'value': {'unit_price': False, 'event_product': False}}
|
||||
|
||||
def onchange_partner_id(self, cr, uid, ids, part, event_id, email=False):
|
||||
"""This function returns value of Patner Invoice id, Unit Price, badget title based on partner and Event.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param event_id: Event ID
|
||||
@param partner_invoice_id: Partner Invoice ID
|
||||
"""
|
||||
job_obj = self.pool.get('res.partner.job')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
|
||||
data={}
|
||||
data['badge_partner'] = data['contact_id'] = data['partner_invoice_id'] = data['email_from'] = data['badge_title'] = data['badge_name'] = False
|
||||
|
@ -496,35 +551,46 @@ and users by email"),
|
|||
d = self.onchange_partner_invoice_id(cr, uid, ids, event_id, part)
|
||||
# this updates the dictionary
|
||||
data.update(d['value'])
|
||||
addr = self.pool.get('res.partner').address_get(cr, uid, [part])
|
||||
addr = res_obj.address_get(cr, uid, [part])
|
||||
if addr:
|
||||
if addr.has_key('default'):
|
||||
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('address_id', '=', addr['default'])])
|
||||
job_ids = job_obj.search(cr, uid, [('address_id', '=', addr['default'])])
|
||||
if job_ids:
|
||||
data['contact_id'] = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0]).contact_id.id
|
||||
data['contact_id'] = job_obj.browse(cr, uid, job_ids[0]).contact_id.id
|
||||
d = self.onchange_contact_id(cr, uid, ids, data['contact_id'], part)
|
||||
data.update(d['value'])
|
||||
partner_data = self.pool.get('res.partner').browse(cr, uid, part)
|
||||
partner_data = res_obj.browse(cr, uid, part)
|
||||
data['badge_partner'] = partner_data.name
|
||||
|
||||
return {'value': data}
|
||||
|
||||
def onchange_partner_invoice_id(self, cr, uid, ids, event_id, partner_invoice_id):
|
||||
|
||||
"""This function returns value of Product unit Price based on Invoiced partner.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param event_id: Event ID
|
||||
@param partner_invoice_id: Partner Invoice ID
|
||||
"""
|
||||
data={}
|
||||
context={}
|
||||
event_obj = self.pool.get('event.event')
|
||||
prod_obj = self.pool.get('product.product')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
|
||||
data['unit_price']=False
|
||||
if not event_id:
|
||||
return {'value': data}
|
||||
data_event = self.pool.get('event.event').browse(cr, uid, event_id)
|
||||
|
||||
data_event = event_obj.browse(cr, uid, event_id)
|
||||
if data_event.product_id:
|
||||
data['event_product']=data_event.product_id.name
|
||||
if not partner_invoice_id:
|
||||
data['unit_price']=self.pool.get('product.product').price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
|
||||
data['unit_price']=prod_obj.price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
|
||||
return {'value': data}
|
||||
data_partner = self.pool.get('res.partner').browse(cr, uid, partner_invoice_id)
|
||||
data_partner = res_obj.browse(cr, uid, partner_invoice_id)
|
||||
context.update({'partner_id': data_partner})
|
||||
data['unit_price'] = self.pool.get('product.product')._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
|
||||
data['unit_price'] = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
|
||||
return {'value': data}
|
||||
return {'value': data}
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
<data>
|
||||
<menuitem name="Marketing" id="menu_marketing_event_main" icon="terp-calendar" sequence="9"/>
|
||||
<menuitem name="Events Organisation" id="menu_event_main" parent="menu_marketing_event_main" />
|
||||
|
||||
<!-- EVENTS -->
|
||||
<!--<menuitem name="Events Organisation" id="menu_event_main" icon="terp-calendar" />-->
|
||||
|
||||
<!-- EVENTS/CONFIGURATION/TYPE OF EVENTS -->
|
||||
<record model="ir.ui.view" id="view_event_type_form">
|
||||
|
@ -36,7 +36,6 @@
|
|||
<menuitem name="Configuration" id="menu_event_config" parent="menu_marketing_event_main" sequence="30" groups="base.group_extended"/>
|
||||
<menuitem name="Types of Events" id="menu_event_type" action="action_event_type" parent="menu_event_config" groups="base.group_extended,crm.group_crm_manager"/>
|
||||
|
||||
|
||||
<!-- Events Organisation/CONFIGURATION/EVENTS -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_form">
|
||||
|
@ -54,23 +53,23 @@
|
|||
<field name="product_id" on_change="onchange_product(product_id)"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="General">
|
||||
<page string="Event Information">
|
||||
<separator string="Description" colspan="4"/>
|
||||
<field name="unit_price"/>
|
||||
<field name="currency_id"/>
|
||||
<separator string="Speaker Information" colspan="4"/>
|
||||
<field name="main_speaker_id" domain="[('speaker','=',True)]"/>
|
||||
<field name="address_id"/>
|
||||
<field name="speaker_ids" domain="[('speaker','=',True)]" colspan="4"/>
|
||||
<field name="country_id" />
|
||||
<field name="speaker_confirmed"/>
|
||||
<field name="language"/>
|
||||
<separator string="Event description" colspan="4"/>
|
||||
<field name="parent_id" domain="[('parent_id','child_of','Event')]"/>
|
||||
<field name="active"/>
|
||||
<field name="register_min"/>
|
||||
<field name="register_max"/>
|
||||
<separator string="Notes" colspan="4"/>
|
||||
<!--field name="note" colspan="4" nolabel="1"/-->
|
||||
<field name="parent_id" domain="[('parent_id','child_of','Event')]"/>
|
||||
<field name="active"/>
|
||||
<separator string="Location" colspan="4"/>
|
||||
<field name="country_id" />
|
||||
<field name="language"/>
|
||||
<field name="address_id"/>
|
||||
<separator string="Speaker Information" colspan="4"/>
|
||||
<field name="main_speaker_id" domain="[('speaker','=',True)]"/>
|
||||
<field name="speaker_confirmed"/>
|
||||
<field name="speaker_ids" domain="[('speaker','=',True)]" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="state" select="1"/>
|
||||
<group col="4" colspan="2">
|
||||
<button string="Confirm Event" name="button_confirm" states="draft" type="object" icon="gtk-apply"/>
|
||||
|
@ -113,7 +112,7 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<!-- event.event tree view -->
|
||||
<!-- Event tree view -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_tree">
|
||||
<field name="name">event.event.tree</field>
|
||||
|
@ -134,6 +133,8 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Events Calendar View -->
|
||||
|
||||
<record id="view_event_calendar" model="ir.ui.view">
|
||||
<field name="name">event.event.calendar</field>
|
||||
<field name="model">event.event</field>
|
||||
|
@ -142,12 +143,12 @@
|
|||
<field name="arch" type="xml">
|
||||
<calendar color="user_id" date_start="date_begin" string="Event Organization">
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="type" widget="selection"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Event Graph view -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_graph">
|
||||
<field name="name">Event Graph</field>
|
||||
|
@ -162,6 +163,8 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Event Search View -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_search">
|
||||
<field name="name">Events</field>
|
||||
<field name="model">event.event</field>
|
||||
|
@ -169,8 +172,8 @@
|
|||
<field name="arch" type="xml">
|
||||
<search string="Events">
|
||||
<group col="10" colspan="4">
|
||||
<filter icon="terp-document-new" string="Draft" name="draft" domain="[('state','=','draft')]" help="Draft Events"/>
|
||||
<filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','confirm')]" help="Confirmed Events"/>
|
||||
<filter icon="terp-check" string="Current" name="draft" domain="[('state','in',('draft', 'confirm'))]" help="Current Events"/>
|
||||
<filter icon="terp-camera_test" string="Open" domain="[('state','=','confirm')]" help="Open Events"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name" string="Event" select="1"/>
|
||||
<field name="state" select="1"/>
|
||||
|
@ -294,15 +297,17 @@
|
|||
</page>
|
||||
<page string="Emails" groups="base.group_extended">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
<field colspan="4" name="email_cc" string="CC" widget="char" size="512"/>
|
||||
</group>
|
||||
<field name="message_ids" colspan="4" nolabel="1" mode="form,tree">
|
||||
<form string="Communication history">
|
||||
<group col="6" colspan="4">
|
||||
<field name="date"/>
|
||||
<field name="email_to"/>
|
||||
<field name="email_from"/>
|
||||
</group>
|
||||
<group col="4" colspan="4">
|
||||
<field name="email_from"/>
|
||||
<field name="date"/>
|
||||
<field name="email_to" widget="char" size="512"/>
|
||||
<field name="email_cc" widget="char" size="512"/>
|
||||
<field name="name" colspan="4" widget="char" size="512"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Details">
|
||||
<field name="description" colspan="4" nolabel="1"/>
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
property_account_receivable: account.a_recv
|
||||
|
||||
- |
|
||||
we create it with a "Conference on OpenERP Offshore Business" event and provide "Beginning date", "Ending Date", "Product" as Concert Ticket.
|
||||
we create it with a "Conference on OpenERP Offshore Business" event and provide "Beginning date", "Ending Date" and "Product" as Concert Ticket.
|
||||
-
|
||||
!record {model: event.event, id: event_event_conference0}:
|
||||
code: C/004
|
||||
|
@ -64,9 +64,9 @@
|
|||
state: draft
|
||||
type: 'event_type_conference0'
|
||||
reply_to: 'info@customer.com'
|
||||
|
||||
|
||||
- |
|
||||
we set the limit of registrations to this event using "Minimum Registrations" 2 and "Maximum Registrations" 10
|
||||
we set the limit of registrations to this event using "Minimum Registrations" 2 and "Maximum Registrations" 10.
|
||||
-
|
||||
!python {model: event.event}: |
|
||||
self.write(cr, uid, [ref('event_event_conference0')], {'register_max': 10, 'register_min': 2})
|
||||
|
@ -96,7 +96,6 @@
|
|||
!record {model: event.registration, id: event_registration_registrationjacot0}:
|
||||
badge_name: Jacot
|
||||
badge_partner: Mark Johnson
|
||||
badge_title: M.
|
||||
contact_id: base_contact.res_partner_contact_jacot0
|
||||
date_deadline: '2010-06-07 13:39:00'
|
||||
event_id: event.event_event_conference0
|
||||
|
@ -110,11 +109,13 @@
|
|||
if not then confirmation will fail because its greater then the Maximum registration.
|
||||
-
|
||||
!python {model: event.event}: |
|
||||
from tools.translate import _
|
||||
obj_register = self.pool.get('event.registration')
|
||||
event_id1 = self.browse(cr, uid, [ref('event_event_conference0')])[0]
|
||||
event_id1 = self.browse(cr, uid, ref('event_event_conference0'))
|
||||
register_ids = obj_register.search(cr, uid, [('event_id', '=', event_id1.id)])
|
||||
register_id = obj_register.browse(cr, uid, register_ids)[0]
|
||||
assert register_id.nb_register <= event_id1.register_max
|
||||
assert register_id.nb_register <= event_id1.register_max, _('NO. of Registration for this event is More than Maximum Registration Defined !')
|
||||
|
||||
|
||||
- |
|
||||
And Confirm that Registration by click on "Confirm Registration" button of Registraion form.
|
||||
|
@ -150,7 +151,6 @@
|
|||
!record {model: event.registration, id: event_registration_registrationpassot0}:
|
||||
badge_name: Passot
|
||||
badge_partner: Mediapole SPRL
|
||||
badge_title: M.
|
||||
contact_id: base_contact.res_partner_contact_passot0
|
||||
date_deadline: '2010-06-07 13:39:00'
|
||||
email_from: info@mediapole.net
|
||||
|
@ -170,10 +170,10 @@
|
|||
I Check that the total number of confirmed is 2 and unconfirmed registrations 1.
|
||||
-
|
||||
!python {model: event.event}: |
|
||||
obj_event = self.browse(cr, uid, [ref('event_event_conference0')])[0]
|
||||
assert obj_event.register_current == '2'
|
||||
assert obj_event.register_prospect == '1'
|
||||
|
||||
from tools.translate import _
|
||||
obj_event = self.browse(cr, uid, ref('event_event_conference0'))
|
||||
assert obj_event.register_current == 2, "Number of Confirmed Registration for this event is %s"%(obj_event.register_current)
|
||||
assert obj_event.register_prospect == 1, "Number of Unconfirmed Registration for this event is %s" %(obj_event.register_prospect)
|
||||
- |
|
||||
This event is finished by click on "Event Done" button of this event form.
|
||||
-
|
||||
|
@ -186,8 +186,7 @@
|
|||
!assert {model: event.registration, id: event_registration_registrationjacot0}:
|
||||
- state == 'open'
|
||||
- |
|
||||
Now, I will invoice the participant who have address using "Make Invoices". This wizard will also give the number of invoices are created and rejected.
|
||||
Create invoice will be linked to Invoice Field available on Payments tab of registrations
|
||||
Now, I will invoice the participant who have address using "Make Invoices".Create invoice will be linked to Invoice Field available on Payments tab of registrations.
|
||||
|
||||
-
|
||||
!record {model: event.make.invoice, id: event_make_invoice_0}:
|
||||
|
@ -198,19 +197,9 @@
|
|||
!python {model: event.make.invoice}: |
|
||||
self.make_invoice(cr, uid, [ref("event_make_invoice_0")], {"active_ids": [ref("event_registration_registrationzen0")]})
|
||||
- |
|
||||
I check that Invoice for this partner is create or not.
|
||||
I check that Invoice for this partner is created or not.
|
||||
-
|
||||
!python {model: event.registration}: |
|
||||
obj_event_reg = self.pool.get('event.registration')
|
||||
obj_lines = self.pool.get('account.invoice.line')
|
||||
inv_obj = self.pool.get('account.invoice')
|
||||
data_event_reg = obj_event_reg.browse(cr, uid, [ref('event_registration_registrationzen0')], context=context)[0]
|
||||
invoice_ids = inv_obj.search(cr, uid, [('partner_id', '=', data_event_reg.partner_invoice_id.id)])
|
||||
|
||||
if invoice_ids:
|
||||
invoice_id = inv_obj.browse(cr, uid, invoice_ids)[0]
|
||||
line_ids = obj_lines.search(cr, uid, [('product_id', '=', data_event_reg.event_id.product_id.id), ('invoice_id', '=', invoice_id.id), ('price_unit', '=', data_event_reg.unit_price)])
|
||||
line_id = obj_lines.browse(cr, uid, line_ids)[0]
|
||||
assert line_id.product_id == data_event_reg.event_id.product_id
|
||||
assert data_event_reg.partner_id == invoice_id.partner_id
|
||||
assert invoice_id.address_invoice_id == data_event_reg.partner_address_id
|
||||
from tools.translate import _
|
||||
data_event_reg = self.browse(cr, uid, ref('event_registration_registrationzen0'), context=context)
|
||||
assert data_event_reg.invoice_id, _("Invoices has not been generated for this partner")
|
||||
|
|
|
@ -47,23 +47,29 @@ class partner_event_registration(osv.osv_memory):
|
|||
}
|
||||
|
||||
def open_registration(self, cr, uid, ids, context=None):
|
||||
"""This Function Open Registration For Given Event id and Partner.
|
||||
|
||||
"""
|
||||
|
||||
value = {}
|
||||
res_obj = self.pool.get('res.partner')
|
||||
job_obj = self.pool.get('res.partner.job')
|
||||
event_obj = self.pool.get('event.event')
|
||||
reg_obj = self.pool.get('event.registration')
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
|
||||
record_ids = context and context.get('active_ids', []) or []
|
||||
addr = res_obj.address_get(cr, uid, record_ids)
|
||||
contact_id = False
|
||||
email = False
|
||||
if addr.has_key('default'):
|
||||
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('address_id', '=', addr['default'])])
|
||||
job_ids = job_obj.search(cr, uid, [('address_id', '=', addr['default'])])
|
||||
if job_ids:
|
||||
contact = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0])
|
||||
contact = job_obj.browse(cr, uid, job_ids[0])
|
||||
if contact:
|
||||
contact_id = contact.contact_id.id
|
||||
email = contact.email
|
||||
|
||||
event_obj = self.pool.get('event.event')
|
||||
reg_obj = self.pool.get('event.registration')
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
|
||||
result = mod_obj._get_id(cr, uid, 'event', 'view_registration_search')
|
||||
res = mod_obj.read(cr, uid, result, ['res_id'])
|
||||
|
||||
|
@ -123,10 +129,11 @@ class partner_event_registration(osv.osv_memory):
|
|||
return res
|
||||
|
||||
def onchange_event_id(self, cr, uid, ids, event_id, context={}):
|
||||
res = {}
|
||||
res = {}
|
||||
event_obj = self.pool.get('event.event')
|
||||
|
||||
if event_id:
|
||||
obj_event = self.pool.get('event.event')
|
||||
event = obj_event.browse(cr, uid, event_id)
|
||||
event = event_obj.browse(cr, uid, event_id)
|
||||
res['value'] = {
|
||||
'event_type': event.type and event.type.id or False,
|
||||
'start_date': event.date_begin,
|
||||
|
|
|
@ -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-05-10 13:18+0000\n"
|
||||
"Last-Translator: Angel Spy <melissadilara@yahoo.com>\n"
|
||||
"PO-Revision-Date: 2010-07-12 11:46+0000\n"
|
||||
"Last-Translator: adsiz_1029@hotmail.com <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-13 03:49+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: hr
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
'depends': ['base', 'hr'],
|
||||
'update_xml': [
|
||||
'security/hr_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'hr_attendance_view.xml',
|
||||
'hr_attendance_wizard.xml',
|
||||
'hr_attendance_report.xml',
|
||||
|
|
|
@ -7,20 +7,20 @@ 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-04 06:32+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:42+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-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: field:hr.employee,state:0
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
msgstr "Посещаемость"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: constraint:ir.model:0
|
||||
|
@ -70,7 +70,7 @@ msgstr "Выход"
|
|||
#. module: hr_attendance
|
||||
#: rml:report.hr.timesheet.attendance.error:0
|
||||
msgid "Delay"
|
||||
msgstr ""
|
||||
msgstr "Задержка"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_field:hr.si_so,init,name:0
|
||||
|
@ -93,7 +93,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.wizard,name:hr_attendance.print_week
|
||||
|
@ -136,17 +136,17 @@ msgstr "Причина действия"
|
|||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "March"
|
||||
msgstr ""
|
||||
msgstr "Март"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "August"
|
||||
msgstr ""
|
||||
msgstr "Август"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "May"
|
||||
msgstr ""
|
||||
msgstr "Май"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_field:hr.si_so,so_ask_si,last_time:0
|
||||
|
@ -156,7 +156,7 @@ msgstr "Ваш послежний вход"
|
|||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
msgstr "Июнь"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.wizard,name:hr_attendance.print_month
|
||||
|
@ -197,7 +197,7 @@ msgstr "Дата"
|
|||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "July"
|
||||
msgstr ""
|
||||
msgstr "Июль"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_view:hr.si_so,si_ask_so:0
|
||||
|
@ -215,7 +215,7 @@ msgstr ""
|
|||
#: wizard_field:hr.attendance.print_week,init,init_date:0
|
||||
#: wizard_field:hr.attendance.report,init,init_date:0
|
||||
msgid "Starting Date"
|
||||
msgstr ""
|
||||
msgstr "Дата начала"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,state:0
|
||||
|
@ -230,12 +230,12 @@ msgstr "Отсутствует"
|
|||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "February"
|
||||
msgstr ""
|
||||
msgstr "Февраль"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "October"
|
||||
msgstr ""
|
||||
msgstr "Октябрь"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_field:hr.si_so,si_ask_so,last_time:0
|
||||
|
@ -267,7 +267,7 @@ msgstr "Вход"
|
|||
#. module: hr_attendance
|
||||
#: wizard_view:hr.attendance.report,init:0
|
||||
msgid "Analysis Information"
|
||||
msgstr ""
|
||||
msgstr "Данные анализа"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_field:hr.si_so,init,state:0
|
||||
|
@ -277,12 +277,12 @@ msgstr "Текущее состояние"
|
|||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "January"
|
||||
msgstr ""
|
||||
msgstr "Январь"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "April"
|
||||
msgstr ""
|
||||
msgstr "Апрель"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.open_view_attendance
|
||||
|
@ -316,7 +316,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "November"
|
||||
msgstr ""
|
||||
msgstr "Ноябрь"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_view:hr.attendance.report,init:0
|
||||
|
@ -326,7 +326,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: wizard_field:hr.attendance.report,init,max_delay:0
|
||||
msgid "Max. Delay (Min)"
|
||||
msgstr ""
|
||||
msgstr "Макс. задержка (мин)"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_view:hr.attendance.print_week,init:0
|
||||
|
@ -337,7 +337,7 @@ msgstr ""
|
|||
#: wizard_field:hr.attendance.print_week,init,end_date:0
|
||||
#: wizard_field:hr.attendance.report,init,end_date:0
|
||||
msgid "Ending Date"
|
||||
msgstr ""
|
||||
msgstr "Дата окончания"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_view:hr.si_so,so_ask_si:0
|
||||
|
@ -351,12 +351,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
msgstr "Сентябрь"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.attendance.print_month,init,month:0
|
||||
msgid "December"
|
||||
msgstr ""
|
||||
msgstr "Декабрь"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: view:hr.attendance:0
|
||||
|
@ -366,12 +366,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: wizard_view:hr.attendance.print_month,init:0
|
||||
msgid "Select a month"
|
||||
msgstr ""
|
||||
msgstr "Выбрать месяц"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_field:hr.attendance.print_month,init,month:0
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
msgstr "Месяц"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.module.module,description:hr_attendance.module_meta_information
|
||||
|
@ -386,7 +386,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: wizard_field:hr.attendance.print_month,init,year:0
|
||||
msgid "Year"
|
||||
msgstr ""
|
||||
msgstr "Год"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: wizard_button:hr.attendance.print_month,init,end:0
|
||||
|
@ -401,4 +401,4 @@ msgstr "Отмена"
|
|||
#. module: hr_attendance
|
||||
#: rml:report.hr.timesheet.attendance.error:0
|
||||
msgid "Operation"
|
||||
msgstr ""
|
||||
msgstr "Операция"
|
||||
|
|
|
@ -2,5 +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_attendance_employee","hr employee attendance sign in out","hr.model_hr_employee","hr_attendance.group_hr_attendance",1,0,0,0
|
||||
"access_hr_employee_attendance","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
|
||||
|
|
|
|
@ -50,7 +50,7 @@ class hr_recruitment_report(osv.osv):
|
|||
for case in self.browse(cr, uid, ids, context):
|
||||
if field_name != 'avg_answers':
|
||||
state = field_name[5:]
|
||||
cr.execute("select count(*) from crm_opportunity where \
|
||||
cr.execute("select count(*) from crm_lead where \
|
||||
section_id =%s and state='%s'"%(case.section_id.id, state))
|
||||
state_cases = cr.fetchone()[0]
|
||||
perc_state = (state_cases / float(case.nbr)) * 100
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.0_rc3\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2009-09-16 14:20+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:49+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:09+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:46+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: hr_timesheet
|
||||
|
@ -75,7 +75,7 @@ msgstr "Текущая дата"
|
|||
#. module: hr_timesheet
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: wizard_button:hr.analytical.timesheet,init,report:0
|
||||
|
@ -120,7 +120,7 @@ msgstr "Книга аналитики"
|
|||
#. module: hr_timesheet
|
||||
#: model:product.uom,name:hr_timesheet.uom_hour
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
msgstr "Час"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.actions.wizard,name:hr_timesheet.wizard_hr_timesheet
|
||||
|
@ -214,7 +214,7 @@ msgstr "Общая стоимость"
|
|||
#. module: hr_timesheet
|
||||
#: model:product.uom,name:hr_timesheet.uom_day
|
||||
msgid "Day"
|
||||
msgstr ""
|
||||
msgstr "День"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: wizard_field:hr_timesheet.si_so,sign_in,date:0
|
||||
|
@ -242,6 +242,8 @@ msgstr "Позиция аналитики"
|
|||
#: constraint:product.template:0
|
||||
msgid "Error: UOS must be in a different category than the UOM"
|
||||
msgstr ""
|
||||
"Ошибка. Единицы продажи и единицы измерения должны принадлежать к разным "
|
||||
"категориям."
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: wizard_view:hr.analytical.timesheet_users,init:0
|
||||
|
@ -448,7 +450,7 @@ msgstr "Пользователи"
|
|||
#. module: hr_timesheet
|
||||
#: model:product.uom.categ,name:hr_timesheet.uom_categ_wtime
|
||||
msgid "Working Time"
|
||||
msgstr ""
|
||||
msgstr "Время работы"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: view:account.analytic.account:0
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
"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_product_product_user","product.product user","product.model_product_product","hr.group_hr_user",1,0,0,0
|
||||
|
|
|
|
@ -99,25 +99,11 @@
|
|||
self.check_state(cr, uid, [ref("hr_employee_fracline1")], {"active_ids": [ref("hr_timesheet.menu_hr_timesheet_sign_in")]})
|
||||
- |
|
||||
I select start date and Perform start work on project.
|
||||
-
|
||||
!record {model: hr.sign.in.project, id: hr_sign_in_project_francline0}:
|
||||
emp_id: 'hr_employee_fracline1'
|
||||
name: Francline
|
||||
server_date: '2010-06-08 19:50:54'
|
||||
state: absent
|
||||
|
||||
|
||||
- |
|
||||
I click on "Start Working" button of this wizard to start work on Project.
|
||||
-
|
||||
!python {model: hr.sign.in.project}: |
|
||||
uid = ref('res_users_user0')
|
||||
obj_attendance = self.pool.get('hr.employee')
|
||||
emp_id = obj_attendance.search(cr, uid, [('user_id', '=', uid), ('name', '=', "Francline")])
|
||||
if emp_id:
|
||||
employee = obj_attendance.read(cr, uid, emp_id)[0]
|
||||
self.write(cr, uid, [ref('hr_sign_in_project_francline0')], {'name': employee['name'], 'state': employee['state'], 'emp_id': emp_id[0]})
|
||||
#self.sign_in_result(cr, uid, [ref("hr_sign_in_project_francline0")], context)
|
||||
new_id = self.create(cr, uid, {'emp_id': 'hr_employee_fracline1', 'name': 'Francline', 'server_date': '2010-06-08 19:50:54', 'state': 'absent'})
|
||||
self.sign_in_result(cr, uid, [new_id], context)
|
||||
|
||||
- |
|
||||
My work is done and I want to stop work.for that I click on "Sign In/Sign Out" button of "Sign In/Sign Out by Project" wizard.
|
||||
|
@ -125,33 +111,31 @@
|
|||
-
|
||||
!python {model: hr.sign.in.project}: |
|
||||
uid = ref('res_users_user0')
|
||||
self.check_state(cr, uid, [ref("hr_sign_in_project_francline0")], {"active_ids": [ref("hr_timesheet.menu_hr_timesheet_sign_in")]
|
||||
ids = self.search(cr, uid, [('emp_id', '=', ref('hr_employee_fracline1')),('name', '=', 'Francline')])
|
||||
self.check_state(cr, uid, ids, {"active_ids": [ref("hr_timesheet.menu_hr_timesheet_sign_in")]
|
||||
})
|
||||
|
||||
- |
|
||||
This will Open "hr sign out project" form. I select analytical project2 development account.
|
||||
-
|
||||
!record {model: hr.sign.out.project, id: hr_sign_out_project_francline0}:
|
||||
account_id: account.analytic_project_2_development
|
||||
analytic_amount: 7.0
|
||||
date: '2010-05-25 16:40:00'
|
||||
date_start: '2010-06-05 16:37:00'
|
||||
info: Create Yaml for hr module
|
||||
name: Francline
|
||||
server_date: '2010-06-09 16:40:15'
|
||||
state: present
|
||||
-
|
||||
For that I Creating a analytic account.
|
||||
-
|
||||
!record {model: account.analytic.account, id: account_analytic_account_project0}:
|
||||
company_id: base.main_company
|
||||
name: Project2
|
||||
parent_id: account.analytic_root
|
||||
quantity_max: 0.0
|
||||
state: open
|
||||
|
||||
- |
|
||||
My work for this project is over and I stop work by click on "Stop Work" button of this wizard.
|
||||
-
|
||||
!python {model: hr.sign.out.project}: |
|
||||
import time
|
||||
from datetime import datetime, date, timedelta
|
||||
uid = ref('res_users_user0')
|
||||
obj_attendance = self.pool.get('hr.employee')
|
||||
emp_id = obj_attendance.search(cr, uid, [('user_id', '=', uid), ('name', '=', "Francline")])
|
||||
if emp_id:
|
||||
employee = obj_attendance.read(cr, uid, emp_id)[0]
|
||||
self.write(cr, uid, [ref('hr_sign_out_project_francline0')], {'name': employee['name'], 'state': employee['state'], 'emp_id': emp_id[0]})
|
||||
#self.sign_out_result_end(cr, uid, [ref('hr_sign_out_project_francline0')])
|
||||
new_id = self.create(cr, uid, {'account_id': ref('account_analytic_account_project0'), 'analytic_amount': 7.0, 'date': (datetime.now()+timedelta(1)).strftime('%Y-%m-%d %H:%M:%S'), 'date_start': '2010-06-05 16:37:00', 'info': 'Create Yaml for hr module', 'name': 'Francline', 'server_date': '2010-06-09 16:40:15', 'state': 'absent'})
|
||||
self.sign_out_result_end(cr, uid, [new_id], context)
|
||||
|
||||
- |
|
||||
I can see employee timesheet for particular month using "Employee Timesheet" report.
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_timesheet_invoice
|
||||
# * hr_timesheet_invoice
|
||||
#
|
||||
msgid ""
|
||||
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-09-08 12:56+0000\n"
|
||||
"Last-Translator: Sergei Kostigoff <sergei.kostigoff@gmail.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09: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-22 04:11+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
|
@ -111,7 +111,7 @@ msgstr ""
|
|||
#. module: hr_timesheet_invoice
|
||||
#: wizard_button:hr.timesheet.invoice.create,init,create:0
|
||||
msgid "Create Invoices"
|
||||
msgstr ""
|
||||
msgstr "Создать счета"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: rml:account.analytic.profit:0
|
||||
|
@ -141,7 +141,7 @@ msgstr "Нужна ли детализация по уаждой позиции
|
|||
#. module: hr_timesheet_invoice
|
||||
#: rml:hr.timesheet.invoice.account.analytic.account.cost_ledger:0
|
||||
msgid "Date or Code"
|
||||
msgstr ""
|
||||
msgstr "Дата или Код"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_analytic_timesheet_open_tree
|
||||
|
@ -201,7 +201,7 @@ msgstr ""
|
|||
#. module: hr_timesheet_invoice
|
||||
#: rml:hr.timesheet.invoice.account.analytic.account.cost_ledger:0
|
||||
msgid "Printing date"
|
||||
msgstr ""
|
||||
msgstr "Дата печати"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: constraint:ir.ui.view:0
|
||||
|
@ -223,7 +223,7 @@ msgstr "Теоретическая"
|
|||
#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_analytic_timesheet_tree_invoiced_my
|
||||
#: model:ir.ui.menu,name:hr_timesheet_invoice.menu_hr_analytic_timesheet_tree_invoiced_my
|
||||
msgid "My Uninvoiced Entries"
|
||||
msgstr ""
|
||||
msgstr "Мои необработанные записи"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: wizard_field:hr.timesheet.final.invoice.create,init,name:0
|
||||
|
@ -239,7 +239,7 @@ msgstr ""
|
|||
#. module: hr_timesheet_invoice
|
||||
#: rml:account.analytic.profit:0
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
msgstr "Валюта"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: help:hr.timesheet.invoice.create,init,product:0
|
||||
|
@ -277,17 +277,17 @@ msgstr "От"
|
|||
#. module: hr_timesheet_invoice
|
||||
#: help:account.analytic.account,amount_invoiced:0
|
||||
msgid "Total invoiced"
|
||||
msgstr ""
|
||||
msgstr "Сумма счета"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
msgstr "Состояние"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: rml:hr.timesheet.invoice.account.analytic.account.cost_ledger:0
|
||||
msgid "Period to"
|
||||
msgstr ""
|
||||
msgstr "Период по"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: help:hr.timesheet.final.invoice.create,init,balance_product:0
|
||||
|
@ -330,7 +330,7 @@ msgstr "Счета аналитики"
|
|||
#. module: hr_timesheet_invoice
|
||||
#: rml:hr.timesheet.invoice.account.analytic.account.cost_ledger:0
|
||||
msgid "Total:"
|
||||
msgstr ""
|
||||
msgstr "Всего:"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: rml:hr.timesheet.invoice.account.analytic.account.cost_ledger:0
|
||||
|
@ -355,7 +355,7 @@ msgstr ""
|
|||
#. module: hr_timesheet_invoice
|
||||
#: rml:account.analytic.profit:0
|
||||
msgid "Totals:"
|
||||
msgstr ""
|
||||
msgstr "Итоги:"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: wizard_field:account.analytic.profit,init,date_to:0
|
||||
|
@ -426,7 +426,7 @@ msgstr "Продукция"
|
|||
#. module: hr_timesheet_invoice
|
||||
#: rml:account.analytic.profit:0
|
||||
msgid "%"
|
||||
msgstr ""
|
||||
msgstr "%"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: field:hr_timesheet_invoice.factor,name:0
|
||||
|
@ -499,7 +499,7 @@ msgid "Max. Quantity"
|
|||
msgstr "Макс. кол-во"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: field:report.account.analytic.line.to.invoice,account_id:0
|
||||
#: field:report.analytic.account.close,name:0
|
||||
msgid "Analytic account"
|
||||
msgstr "Счет аналитики"
|
||||
|
||||
|
@ -516,7 +516,7 @@ msgstr "Срок"
|
|||
#. module: hr_timesheet_invoice
|
||||
#: model:ir.module.module,shortdesc:hr_timesheet_invoice.module_meta_information
|
||||
msgid "Analytic Account Reporting"
|
||||
msgstr ""
|
||||
msgstr "Отчет аналитического профиля"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: field:report.analytic.account.close,partner_id:0
|
||||
|
@ -565,7 +565,7 @@ msgstr "Месяц"
|
|||
#. module: hr_timesheet_invoice
|
||||
#: field:report.account.analytic.line.to.invoice,amount:0
|
||||
msgid "Amount"
|
||||
msgstr "Сумма"
|
||||
msgstr "Количество"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: model:ir.model,name:hr_timesheet_invoice.model_report_account_analytic_line_to_invoice
|
||||
|
@ -575,7 +575,7 @@ msgstr "Отчет по позициям аналитики к выставле
|
|||
#. module: hr_timesheet_invoice
|
||||
#: field:report.account.analytic.line.to.invoice,product_uom_id:0
|
||||
msgid "UoM"
|
||||
msgstr "Ед. изм."
|
||||
msgstr "Ед-ца изм."
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: model:ir.actions.act_window,name:report_timesheet_invoice.action_timesheet_account_date_stat_my
|
||||
|
@ -646,7 +646,7 @@ msgstr "Дневной табель по счетам"
|
|||
#. module: hr_timesheet_invoice
|
||||
#: field:random.timesheet.lines,name:0 field:report.random.timesheet,name:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
msgstr "Описание"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: model:ir.model,name:report_timesheet_invoice.model_report_timesheet_account
|
||||
|
@ -667,7 +667,7 @@ msgstr "Табели по счетам"
|
|||
#. module: hr_timesheet_invoice
|
||||
#: model:ir.ui.menu,name:report_timesheet_invoice.next_id_69
|
||||
msgid "This Month"
|
||||
msgstr "Данный месяц"
|
||||
msgstr "Этот месяц"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: model:ir.actions.act_window,name:report_timesheet_invoice.action_timesheet_account_stat_my
|
||||
|
@ -767,12 +767,12 @@ msgstr ""
|
|||
#: field:report_timesheet.account,account_id:0
|
||||
#: field:report_timesheet.account.date,account_id:0
|
||||
msgid "Analytic Account"
|
||||
msgstr "Счет аналитики"
|
||||
msgstr "Счет аналитического учета"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: field:report_timesheet.invoice,manager_id:0
|
||||
msgid "Manager"
|
||||
msgstr "Начальник"
|
||||
msgstr "Менеджер"
|
||||
|
||||
#. module: hr_timesheet_invoice
|
||||
#: model:ir.actions.act_window,name:report_timesheet_invoice.action_timesheet_user_stat
|
||||
|
|
|
@ -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 11:45+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:44+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:12+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: hr_timesheet_sheet
|
||||
|
@ -39,7 +39,7 @@ msgstr "Табель"
|
|||
#. module: hr_timesheet_sheet
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: hr_timesheet_sheet
|
||||
#: field:hr_timesheet_sheet.sheet,total_attendance:0
|
||||
|
@ -311,7 +311,7 @@ msgstr "Перейти к:"
|
|||
#. module: hr_timesheet_sheet
|
||||
#: model:process.node,name:hr_timesheet_sheet.process_node_phonecall0
|
||||
msgid "Phone call"
|
||||
msgstr ""
|
||||
msgstr "Телефонный звонок"
|
||||
|
||||
#. module: hr_timesheet_sheet
|
||||
#: field:hr_timesheet_sheet.sheet,total_timesheet:0
|
||||
|
@ -344,7 +344,7 @@ msgstr ""
|
|||
#: model:process.node,name:hr_timesheet_sheet.process_node_review0
|
||||
#: model:process.transition.action,name:hr_timesheet_sheet.process_transition_action_reviewtimesheet0
|
||||
msgid "Review"
|
||||
msgstr ""
|
||||
msgstr "Обзор"
|
||||
|
||||
#. module: hr_timesheet_sheet
|
||||
#: selection:hr_timesheet_sheet.sheet,state:0
|
||||
|
@ -447,7 +447,7 @@ msgstr ""
|
|||
#. module: hr_timesheet_sheet
|
||||
#: model:process.node,name:hr_timesheet_sheet.process_node_timesheetline0
|
||||
msgid "Timesheet Line"
|
||||
msgstr ""
|
||||
msgstr "Строка табеля"
|
||||
|
||||
#. module: hr_timesheet_sheet
|
||||
#: view:hr_timesheet_sheet.sheet.account:0
|
||||
|
|
|
@ -1,6 +1,26 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Idea Categories Search View-->
|
||||
<record model="ir.ui.view" id="view_idea_category_search">
|
||||
<field name="name">idea.category.search</field>
|
||||
<field name="model">idea.category</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Ideas Categories">
|
||||
<group col="10" colspan="4">
|
||||
<field name="name" string="Category"/>
|
||||
<field name="parent_id" widget="selection"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="14">
|
||||
<filter string="Parent Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'parent_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<!-- Idea Category Form View -->
|
||||
<menuitem name="Tools" id="base.menu_tools" icon="STOCK_PREFERENCES" sequence="28"/>
|
||||
|
@ -41,6 +61,7 @@
|
|||
<field name="res_model">idea.category</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="view_idea_category_search"/>
|
||||
</record>
|
||||
|
||||
<menuitem name="Configuration" parent="base.menu_tools"
|
||||
|
|
|
@ -6,3 +6,4 @@
|
|||
"access_idea_category_system","idea.category system","model_idea_category","base.group_system",1,1,1,1
|
||||
"access_idea_comment","idea.comment","model_idea_comment","base.group_system",1,1,1,1
|
||||
"access_idea_comment_user","idea.comment","model_idea_comment","base.group_user",1,1,1,0
|
||||
"access_report_vote","report.vote","model_report_vote","base.group_user",1,1,1,1
|
||||
|
|
|
|
@ -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 06:56+0000\n"
|
||||
"Last-Translator: Sergei Kostigoff <sergei.kostigoff@gmail.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:51+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:12+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: l10n_be
|
||||
|
@ -31,7 +31,7 @@ msgstr ""
|
|||
#: wizard_view:vat.intra.xml,go:0
|
||||
#: wizard_view:wizard.account.xml.vat.declaration,go:0
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
msgstr "Уведомления"
|
||||
|
||||
#. module: l10n_be
|
||||
#: model:account.fiscal.position.template,name:l10n_be.fiscal_position_template_1
|
||||
|
@ -51,7 +51,7 @@ msgstr ""
|
|||
#. module: l10n_be
|
||||
#: model:account.account.type,name:l10n_be.user_type_charge
|
||||
msgid "Charge"
|
||||
msgstr ""
|
||||
msgstr "Затраты"
|
||||
|
||||
#. module: l10n_be
|
||||
#: model:account.fiscal.position.template,name:l10n_be.fiscal_position_template_3
|
||||
|
@ -68,14 +68,14 @@ msgstr "Создать XML"
|
|||
#. module: l10n_be
|
||||
#: model:account.account.type,name:l10n_be.user_type_capitaux
|
||||
msgid "Capital"
|
||||
msgstr ""
|
||||
msgstr "Столица"
|
||||
|
||||
#. module: l10n_be
|
||||
#: wizard_field:list.vat.detail,go,msg:0
|
||||
#: wizard_field:vat.intra.xml,go,msg:0
|
||||
#: wizard_field:wizard.account.xml.vat.declaration,go,msg:0
|
||||
msgid "File created"
|
||||
msgstr ""
|
||||
msgstr "Файл создан"
|
||||
|
||||
#. module: l10n_be
|
||||
#: selection:vat.intra.xml,init,trimester:0
|
||||
|
@ -102,7 +102,7 @@ msgstr ""
|
|||
#: wizard_field:vat.intra.xml,go,file_save:0
|
||||
#: wizard_field:wizard.account.xml.vat.declaration,go,file_save:0
|
||||
msgid "Save File"
|
||||
msgstr ""
|
||||
msgstr "Сохранить файл"
|
||||
|
||||
#. module: l10n_be
|
||||
#: wizard_view:vat.intra.xml,init:0
|
||||
|
@ -165,7 +165,7 @@ msgstr ""
|
|||
#: wizard_button:vat.intra.xml,go,end:0
|
||||
#: wizard_button:wizard.account.xml.vat.declaration,go,end:0
|
||||
msgid "Ok"
|
||||
msgstr ""
|
||||
msgstr "Ок"
|
||||
|
||||
#. module: l10n_be
|
||||
#: wizard_view:list.vat.detail,init:0
|
||||
|
@ -189,7 +189,7 @@ msgstr ""
|
|||
#: wizard_field:list.vat.detail,init,fyear:0
|
||||
#: wizard_field:vat.intra.xml,init,fyear:0
|
||||
msgid "Fiscal Year"
|
||||
msgstr ""
|
||||
msgstr "Финансовый год"
|
||||
|
||||
#. module: l10n_be
|
||||
#: wizard_view:wizard.account.xml.vat.declaration,go:0
|
||||
|
@ -233,23 +233,23 @@ msgstr ""
|
|||
#. module: l10n_be
|
||||
#: model:account.account.type,name:l10n_be.user_type_tax
|
||||
msgid "Tax"
|
||||
msgstr ""
|
||||
msgstr "Налог"
|
||||
|
||||
#. module: l10n_be
|
||||
#: wizard_field:wizard.account.xml.vat.declaration,init,period:0
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
msgstr "Период"
|
||||
|
||||
#. module: l10n_be
|
||||
#: wizard_view:vat.intra.xml,init:0
|
||||
#: wizard_field:vat.intra.xml,init,country_ids:0
|
||||
msgid "European Countries"
|
||||
msgstr ""
|
||||
msgstr "Европейские страны"
|
||||
|
||||
#. module: l10n_be
|
||||
#: wizard_view:vat.intra.xml,init:0
|
||||
msgid "General Information"
|
||||
msgstr ""
|
||||
msgstr "Общая информация"
|
||||
|
||||
#. module: l10n_be
|
||||
#: wizard_view:list.vat.detail,go:0
|
||||
|
@ -267,7 +267,7 @@ msgstr "Финансист"
|
|||
#: wizard_button:vat.intra.xml,init,end:0
|
||||
#: wizard_button:wizard.account.xml.vat.declaration,init,end:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Отмена"
|
||||
|
||||
#. module: l10n_be
|
||||
#: model:ir.actions.wizard,name:l10n_be.partner_vat_intra
|
||||
|
|
|
@ -7,24 +7,24 @@ 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-04-10 14:25+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09: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 04:19+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Invoice Date:"
|
||||
msgstr ""
|
||||
msgstr "Дата счета:"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
msgstr "-"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: field:account.journal.todo,name:0
|
||||
|
@ -34,7 +34,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:res.partner.bank.type,name:l10n_ch.bvrpost
|
||||
|
@ -45,7 +45,7 @@ msgstr ""
|
|||
#: rml:l10n_ch.bvr:0
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Mail:"
|
||||
msgstr ""
|
||||
msgstr "Mail:"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:ir.actions.wizard,name:l10n_ch.wizard_bvr_import
|
||||
|
@ -56,12 +56,12 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.bvr:0
|
||||
msgid "Thanks,"
|
||||
msgstr ""
|
||||
msgstr "Благодарю,"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Base"
|
||||
msgstr ""
|
||||
msgstr "Базовый"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:ir.actions.report.xml,name:l10n_ch.account_invoice_bvr
|
||||
|
@ -71,7 +71,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Refund"
|
||||
msgstr ""
|
||||
msgstr "Возвраты"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:res.partner.title,name:l10n_ch.res_c_partner_title_mlle
|
||||
|
@ -87,7 +87,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
msgstr "Количество"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:res.partner.bank.type.field,name:l10n_ch.bank_field_bvbank
|
||||
|
@ -96,7 +96,7 @@ msgstr ""
|
|||
#: model:res.partner.bank.type.field,name:l10n_ch.bank_field_bvrpost
|
||||
#: model:res.partner.bank.type.field,name:l10n_ch.bank_field_iban
|
||||
msgid "bank"
|
||||
msgstr ""
|
||||
msgstr "банк"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:ir.actions.wizard,name:l10n_ch.wizard_bvr_check_report
|
||||
|
@ -106,7 +106,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: wizard_button:account.dta_create,init,end:0
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
msgstr "Ок"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
|
@ -116,7 +116,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Tax"
|
||||
msgstr ""
|
||||
msgstr "Налог"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: field:res.partner.bank,bvr_number:0
|
||||
|
@ -146,7 +146,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Disc. (%)"
|
||||
msgstr ""
|
||||
msgstr "Скидка (%)"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: help:account.journal.todo,name:0
|
||||
|
@ -156,12 +156,12 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: view:account.journal.todo:0
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
msgstr "Далее"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Supplier Invoice"
|
||||
msgstr ""
|
||||
msgstr "Счета поставщиков"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: constraint:res.partner:0
|
||||
|
@ -183,7 +183,7 @@ msgstr ""
|
|||
#: rml:l10n_ch.bvr:0
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "+"
|
||||
msgstr ""
|
||||
msgstr "+"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:ir.actions.act_window,name:l10n_ch.action_config_journal
|
||||
|
@ -204,7 +204,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: view:account.journal.todo:0
|
||||
msgid "Account Journal"
|
||||
msgstr ""
|
||||
msgstr "Журнал счета"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: constraint:ir.ui.view:0
|
||||
|
@ -225,12 +225,12 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Draft Invoice"
|
||||
msgstr ""
|
||||
msgstr "Черновик счета"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "VAT :"
|
||||
msgstr ""
|
||||
msgstr "НДС :"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:ir.actions.wizard,name:l10n_ch.wizard_invoice_bvr_check_report
|
||||
|
@ -250,17 +250,17 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: constraint:res.partner:0
|
||||
msgid "Error ! You can not create recursive associated members."
|
||||
msgstr ""
|
||||
msgstr "Ошибка! Вы не можете создать рекурсивных связанных участников."
|
||||
|
||||
#. module: l10n_ch
|
||||
#: wizard_button:l10n_ch.bvr_import,init,import:0
|
||||
msgid "Import"
|
||||
msgstr ""
|
||||
msgstr "Импорт"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "PRO-FORMA"
|
||||
msgstr ""
|
||||
msgstr "Проформа"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: field:res.partner.bank,bvr_adherent_num:0
|
||||
|
@ -271,7 +271,7 @@ msgstr ""
|
|||
#: rml:l10n_ch.bvr:0
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Phone:"
|
||||
msgstr ""
|
||||
msgstr "Телефон:"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.bvr:0
|
||||
|
@ -296,13 +296,13 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Condition"
|
||||
msgstr ""
|
||||
msgstr "Условие"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.bvr:0
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid ">"
|
||||
msgstr ""
|
||||
msgstr ">"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.bvr:0
|
||||
|
@ -334,7 +334,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.bvr:0
|
||||
msgid "Subject:"
|
||||
msgstr ""
|
||||
msgstr "Тема:"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:res.partner.title,name:l10n_ch.res_c_partner_title_societe
|
||||
|
@ -345,7 +345,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
msgstr "Количество"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: field:res.partner.bank,dta_code:0
|
||||
|
@ -365,7 +365,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: field:account.journal.todo,default_debit_account_id:0
|
||||
msgid "Default Debit Account"
|
||||
msgstr ""
|
||||
msgstr "Дебетовый счет по умолчанию"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: help:account.journal.todo,default_credit_account_id:0
|
||||
|
@ -395,13 +395,13 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
msgstr "Счет"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: view:account.journal.todo:0
|
||||
#: wizard_button:l10n_ch.bvr_import,init,end:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Отмена"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: model:res.partner.bank.type.field,name:l10n_ch.post_field_bvpost
|
||||
|
@ -419,32 +419,32 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: field:account.journal.todo,default_credit_account_id:0
|
||||
msgid "Default Credit Account"
|
||||
msgstr ""
|
||||
msgstr "Счет по кредиту по умолчанию"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Unit Price"
|
||||
msgstr ""
|
||||
msgstr "Цена за ед."
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "(incl. taxes):"
|
||||
msgstr ""
|
||||
msgstr "(в т.ч. налоги)"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Taxes:"
|
||||
msgstr ""
|
||||
msgstr "Налоги:"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
msgstr "Описание"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
msgstr "Цена"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
|
@ -475,7 +475,7 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Total (excl. taxes):"
|
||||
msgstr ""
|
||||
msgstr "Всего (до налогов)"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: help:res.company,bvr_delta_vert:0
|
||||
|
@ -524,9 +524,9 @@ msgstr ""
|
|||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Supplier Refund"
|
||||
msgstr ""
|
||||
msgstr "Возврат средств от поставщика"
|
||||
|
||||
#. module: l10n_ch
|
||||
#: rml:l10n_ch.invoice.bvr:0
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
msgstr "Итого"
|
||||
|
|
|
@ -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-04-10 14:25+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:56+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:19+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: l10n_ch_chart_c2c_pcg
|
||||
|
@ -49,7 +49,7 @@ msgstr ""
|
|||
#. module: l10n_ch_chart_c2c_pcg
|
||||
#: view:account.tax.template.todo:0
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
msgstr "Далее"
|
||||
|
||||
#. module: l10n_ch_chart_c2c_pcg
|
||||
#: field:account.tax.template.todo,name:0
|
||||
|
@ -59,7 +59,7 @@ msgstr ""
|
|||
#. module: l10n_ch_chart_c2c_pcg
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: l10n_ch_chart_c2c_pcg
|
||||
#: model:account.account.type,name:l10n_ch_chart_c2c_pcg.account_type_financial_asset
|
||||
|
@ -208,7 +208,7 @@ msgstr ""
|
|||
#. module: l10n_ch_chart_c2c_pcg
|
||||
#: field:account.tax.template.todo,account_collected_id:0
|
||||
msgid "Invoice Tax Account"
|
||||
msgstr ""
|
||||
msgstr "Счет налога по счету"
|
||||
|
||||
#. module: l10n_ch_chart_c2c_pcg
|
||||
#: model:account.account.type,name:l10n_ch_chart_c2c_pcg.account_type_depreciation
|
||||
|
@ -260,7 +260,7 @@ msgstr ""
|
|||
#. module: l10n_ch_chart_c2c_pcg
|
||||
#: view:account.tax.template.todo:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Отмена"
|
||||
|
||||
#. module: l10n_ch_chart_c2c_pcg
|
||||
#: model:account.account.type,name:l10n_ch_chart_c2c_pcg.account_type_inventory
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
# Russian translation for openobject-addons
|
||||
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2009-11-25 15:28+0000\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:56+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-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:ir.module.module,description:l10n_chart_in.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" Indian Accounting : chart of Account\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: constraint:account.account.template:0
|
||||
msgid "Error ! You can not create recursive account templates."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:account.journal,name:l10n_chart_in.opening_journal
|
||||
msgid "Opening Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:ir.actions.todo,note:l10n_chart_in.config_call_account_template_in_minimal
|
||||
msgid ""
|
||||
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
|
||||
"the name of the company, the chart template to follow, the no. of digits to "
|
||||
"generate the code for your accounts and Bank account, currency to create "
|
||||
"Journals. Thus,the pure copy of chart Template is generated.\n"
|
||||
"\tThis is the same wizard that runs from Financial "
|
||||
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
|
||||
"Chart of Accounts from a Chart Template."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:account.account.type,name:l10n_chart_in.account_type_liability1
|
||||
msgid "Liability"
|
||||
msgstr "Обязательства"
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:account.account.type,name:l10n_chart_in.account_type_asset1
|
||||
msgid "Asset"
|
||||
msgstr "Оборудование"
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:account.account.type,name:l10n_chart_in.account_type_closed1
|
||||
msgid "Closed"
|
||||
msgstr "Закрытый"
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:account.account.type,name:l10n_chart_in.account_type_income1
|
||||
msgid "Income"
|
||||
msgstr "Доход"
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: constraint:account.tax.code.template:0
|
||||
msgid "Error ! You can not create recursive Tax Codes."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:account.account.type,name:l10n_chart_in.account_type_expense1
|
||||
msgid "Expense"
|
||||
msgstr "Расход"
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:ir.module.module,shortdesc:l10n_chart_in.module_meta_information
|
||||
msgid "Indian Chart of Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_chart_in
|
||||
#: model:account.account.type,name:l10n_chart_in.account_type_root_ind1
|
||||
msgid "View"
|
||||
msgstr "Просмотр"
|
|
@ -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-04-10 09:32+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:57+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:16+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: l10n_lu
|
||||
|
@ -34,7 +34,7 @@ msgstr ""
|
|||
#. module: l10n_lu
|
||||
#: wizard_field:l10n_lu.tax.report.wizard,init,tax_code_id:0
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
msgstr "Компания"
|
||||
|
||||
#. module: l10n_lu
|
||||
#: model:account.account.type,name:l10n_lu.account_type_income
|
||||
|
@ -66,12 +66,12 @@ msgstr ""
|
|||
#. module: l10n_lu
|
||||
#: model:account.account.type,name:l10n_lu.account_type_liability
|
||||
msgid "Liability"
|
||||
msgstr ""
|
||||
msgstr "Обязательства"
|
||||
|
||||
#. module: l10n_lu
|
||||
#: model:ir.ui.menu,name:l10n_lu.legal_lu
|
||||
msgid "Luxembourg"
|
||||
msgstr ""
|
||||
msgstr "Люксембург"
|
||||
|
||||
#. module: l10n_lu
|
||||
#: model:ir.actions.wizard,name:l10n_lu.wizard_print_vat
|
||||
|
@ -82,7 +82,7 @@ msgstr "Декларация НДС"
|
|||
#. module: l10n_lu
|
||||
#: wizard_field:l10n_lu.tax.report.wizard,init,period_id:0
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
msgstr "Период"
|
||||
|
||||
#. module: l10n_lu
|
||||
#: model:account.account.type,name:l10n_lu.account_type_asset
|
||||
|
@ -97,7 +97,7 @@ msgstr "Собственные средства"
|
|||
#. module: l10n_lu
|
||||
#: wizard_button:l10n_lu.tax.report.wizard,init,end:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Отмена"
|
||||
|
||||
#. module: l10n_lu
|
||||
#: constraint:account.tax.code.template:0
|
||||
|
|
|
@ -140,7 +140,13 @@ class membership_line(osv.osv):
|
|||
'''Member line'''
|
||||
|
||||
def _check_membership_date(self, cr, uid, ids, context=None):
|
||||
'''Check if membership product is not in the past'''
|
||||
"""Check if membership product is not in the past
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Membership Line IDs
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
|
||||
cr.execute('''
|
||||
SELECT MIN(ml.date_to - ai.date_invoice)
|
||||
|
@ -158,7 +164,15 @@ class membership_line(osv.osv):
|
|||
return True
|
||||
|
||||
def _state(self, cr, uid, ids, name, args, context=None):
|
||||
'''Compute the state lines'''
|
||||
"""Compute the state lines
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Membership Line IDs
|
||||
@param name: Field Name
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param return: Dictionary of state Value
|
||||
"""
|
||||
res = {}
|
||||
for line in self.browse(cr, uid, ids):
|
||||
cr.execute('''
|
||||
|
@ -221,35 +235,47 @@ class Partner(osv.osv):
|
|||
_inherit = 'res.partner'
|
||||
|
||||
def _get_partner_id(self, cr, uid, ids, context=None):
|
||||
|
||||
data_inv = self.pool.get('membership.membership_line').browse(cr, uid, ids, context)
|
||||
member_line_obj = self.pool.get('membership.membership_line')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
data_inv = member_line_obj.browse(cr, uid, ids, context)
|
||||
list_partner = []
|
||||
for data in data_inv:
|
||||
list_partner.append(data.partner.id)
|
||||
ids2 = list_partner
|
||||
while ids2:
|
||||
ids2 = self.pool.get('res.partner').search(cr, uid, [('associate_member','in',ids2)], context=context)
|
||||
ids2 = res_obj.search(cr, uid, [('associate_member','in',ids2)], context=context)
|
||||
list_partner += ids2
|
||||
return list_partner
|
||||
|
||||
def _get_invoice_partner(self, cr, uid, ids, context=None):
|
||||
data_inv = self.pool.get('account.invoice').browse(cr, uid, ids, context)
|
||||
inv_obj = self.pool.get('account.invoice')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
data_inv = inv_obj.browse(cr, uid, ids, context)
|
||||
list_partner = []
|
||||
for data in data_inv:
|
||||
list_partner.append(data.partner_id.id)
|
||||
ids2 = list_partner
|
||||
while ids2:
|
||||
ids2 = self.pool.get('res.partner').search(cr, uid, [('associate_member','in',ids2)], context=context)
|
||||
ids2 = res_obj.search(cr, uid, [('associate_member','in',ids2)], context=context)
|
||||
list_partner += ids2
|
||||
return list_partner
|
||||
|
||||
def _membership_state(self, cr, uid, ids, name, args, context=None):
|
||||
"""This Function return Membership State For Given Partner.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Partner IDs
|
||||
@param name: Field Name
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param return: Dictionary of Membership state Value
|
||||
"""
|
||||
res = {}
|
||||
for id in ids:
|
||||
res[id] = 'none'
|
||||
today = time.strftime('%Y-%m-%d')
|
||||
for id in ids:
|
||||
partner_data = self.browse(cr,uid,id)
|
||||
partner_data = self.browse(cr, uid, id)
|
||||
if partner_data.membership_cancel and today > partner_data.membership_cancel:
|
||||
res[id] = 'canceled'
|
||||
continue
|
||||
|
@ -302,7 +328,7 @@ class Partner(osv.osv):
|
|||
|
||||
def _membership_date(self, cr, uid, ids, name, args, context=None):
|
||||
|
||||
'''Return date of membership'''
|
||||
"""Return date of membership"""
|
||||
|
||||
name = name[0]
|
||||
res = {}
|
||||
|
@ -404,6 +430,8 @@ class Partner(osv.osv):
|
|||
}
|
||||
|
||||
def _check_recursion(self, cr, uid, ids):
|
||||
"""Check Recursive for Associated Members.
|
||||
"""
|
||||
level = 100
|
||||
while len(ids):
|
||||
cr.execute('select distinct associate_member from res_partner where id IN %s',(tuple(ids),))
|
||||
|
@ -438,9 +466,11 @@ product_template()
|
|||
class Product(osv.osv):
|
||||
|
||||
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
model_obj = self.pool.get('ir.model.data')
|
||||
|
||||
if ('product' in context) and (context['product']=='membership_product'):
|
||||
model_data_ids_form = self.pool.get('ir.model.data').search(cr,user,[('model','=','ir.ui.view'),('name','in',['membership_products_form','membership_products_tree'])])
|
||||
resource_id_form = self.pool.get('ir.model.data').read(cr, user, model_data_ids_form, fields=['res_id','name'])
|
||||
model_data_ids_form = model_obj.search(cr,user,[('model','=','ir.ui.view'),('name','in',['membership_products_form','membership_products_tree'])])
|
||||
resource_id_form = model_obj.read(cr, user, model_data_ids_form, fields=['res_id','name'])
|
||||
dict_model={}
|
||||
for i in resource_id_form:
|
||||
dict_model[i['name']]=i['res_id']
|
||||
|
@ -488,6 +518,8 @@ class account_invoice_line(osv.osv):
|
|||
_inherit='account.invoice.line'
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
"""Overrides orm write method
|
||||
"""
|
||||
if not context:
|
||||
context={}
|
||||
res = super(account_invoice_line, self).write(cr, uid, ids, vals, context=context)
|
||||
|
@ -513,6 +545,8 @@ class account_invoice_line(osv.osv):
|
|||
return res
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
"""Remove Membership Line Record for Account Invoice Line
|
||||
"""
|
||||
if not context:
|
||||
context={}
|
||||
member_line_obj = self.pool.get('membership.membership_line')
|
||||
|
@ -522,10 +556,13 @@ class account_invoice_line(osv.osv):
|
|||
return super(account_invoice_line, self).unlink(cr, uid, ids, context=context)
|
||||
|
||||
def create(self, cr, uid, vals, context={}):
|
||||
"""Overrides orm create method
|
||||
"""
|
||||
result = super(account_invoice_line, self).create(cr, uid, vals, context)
|
||||
line = self.browse(cr, uid, result)
|
||||
member_line_obj = self.pool.get('membership.membership_line')
|
||||
if line.invoice_id.type == 'out_invoice':
|
||||
member_line_obj = self.pool.get('membership.membership_line')
|
||||
|
||||
ml_ids = member_line_obj.search(cr, uid, [('account_invoice_line','=',line.id)])
|
||||
if line.product_id and line.product_id.membership and not ml_ids:
|
||||
# Product line is a membership product
|
||||
|
|
|
@ -138,7 +138,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<field name="membership_start" position="after">
|
||||
<newline/>
|
||||
<group expand="1" string="Group By" colspan="10" col="8">
|
||||
<group expand="0" string="Group By" colspan="10" col="8">
|
||||
<filter string="Associate Member" name = "associate" icon="terp-personal" domain="[]" context="{'group_by':'associate_member'}"/>
|
||||
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'membership_state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
|
@ -169,7 +169,7 @@
|
|||
<field name="view_mode">form</field>
|
||||
<field name="act_window_id" ref="action_membership_members"/>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem name="Members" parent="menu_member" id="menu_members" sequence="2" action="action_membership_members"/>
|
||||
|
||||
<!-- PARTNERS -->
|
||||
|
|
|
@ -46,21 +46,9 @@
|
|||
-
|
||||
!record {model: membership.invoice, id: membership_invoice_0}:
|
||||
product_id: membership.product_product_membershipproduct0
|
||||
- |
|
||||
I check that address is defined or not for this Member.
|
||||
-
|
||||
!python {model: membership.invoice}: |
|
||||
partner_ids = [ref('res_partner_markjohnson0')]
|
||||
addre_obj = self.pool.get('res.partner.address')
|
||||
ids = addre_obj.search(cr, uid, [('partner_id', '=', partner_ids)])
|
||||
|
||||
addre_id = addre_obj.browse(cr, uid, ids)[0]
|
||||
assert addre_id.partner_id
|
||||
assert addre_id.id
|
||||
assert addre_id.type
|
||||
|
||||
- |
|
||||
I click on "Confirm" button of this wizard.
|
||||
I click on "Confirm" button of this wizard. and also check that address is defined or not for this partner in this function.
|
||||
-
|
||||
!python {model: membership.invoice}: |
|
||||
self.membership_invoice(cr, uid, [ref("membership_invoice_0")], {"active_ids": [ref("membership.res_partner_markjohnson0")]})
|
||||
|
@ -69,21 +57,20 @@
|
|||
I check that Invoice is created for this members.
|
||||
-
|
||||
!python {model: res.partner}: |
|
||||
|
||||
from tools.translate import _
|
||||
invoice_obj = self.pool.get('account.invoice')
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
product_obj = self.pool.get('product.product')
|
||||
invoice_line_obj = self.pool.get(('account.invoice.line'))
|
||||
invoice_line_obj = self.pool.get('account.invoice.line')
|
||||
|
||||
partner_id = self.browse(cr, uid, [ref('res_partner_markjohnson0')])[0]
|
||||
ids = invoice_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
|
||||
invoice_id = invoice_obj.browse(cr, uid, ids)[0]
|
||||
|
||||
product = product_obj.browse(cr, uid, [ref('product_product_membershipproduct0')], context=context)[0]
|
||||
partner_id = self.browse(cr, uid, ref('res_partner_markjohnson0'))
|
||||
inv_ids = invoice_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
|
||||
invoice_id = invoice_obj.browse(cr, uid, inv_ids)[0]
|
||||
product = product_obj.browse(cr, uid, ref('product_product_membershipproduct0'), context=context)
|
||||
line_ids = invoice_line_obj.search(cr, uid, [('product_id', '=', product.id), ('invoice_id', '=', invoice_id.id)])
|
||||
line_id = invoice_line_obj.browse(cr, uid, line_ids)[0]
|
||||
|
||||
assert line_id.product_id.id == product.id
|
||||
assert invoice_id.partner_id.id == partner_id.id
|
||||
|
||||
assert line_ids, _('Invoices has not been generated for this Member!')
|
||||
|
||||
- |
|
||||
I check that the "Current membership state" will remain same untill opening the invoice.
|
||||
|
@ -96,17 +83,17 @@
|
|||
So, I check that invoice is in draft state then the "membership state" of a member is "Waiting member".
|
||||
-
|
||||
!python {model: membership.membership_line}: |
|
||||
partner_id = self.pool.get('res.partner').browse(cr, uid, [ref('res_partner_markjohnson0')])[0]
|
||||
ids = self.search(cr, uid, [('partner', '=', partner_id.id)])
|
||||
current_id = self.browse(cr, uid, ids)[0]
|
||||
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
inv_obj = self.pool.get('account.invoice')
|
||||
|
||||
ids = inv_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
|
||||
inv_id = inv_obj.browse(cr, uid, ids)[0]
|
||||
partner_id = partner_obj.browse(cr, uid, ref('res_partner_markjohnson0'))
|
||||
member_ids = self.search(cr, uid, [('partner', '=', partner_id.id)])
|
||||
current_id = self.browse(cr, uid, member_ids)[0]
|
||||
|
||||
inv_ids = inv_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
|
||||
inv_id = inv_obj.browse(cr, uid, inv_ids)[0]
|
||||
if inv_id.state == 'draft':
|
||||
assert current_id == 'waiting'
|
||||
assert current_id.state == 'waiting'
|
||||
- |
|
||||
When the invoice is in open state it become Invoiced Member, When the invoice is in paid state the same "Current membership state" changed to Paid Member.
|
||||
Now, If we cancel the invoice "Current membership state" changed to Cancel Member.
|
||||
|
|
|
@ -25,56 +25,48 @@ from tools.translate import _
|
|||
import tools
|
||||
|
||||
class membership_invoice(osv.osv_memory):
|
||||
"""Membership Invoice"""
|
||||
|
||||
_name = "membership.invoice"
|
||||
_description = "Membership Invoice From Partner"
|
||||
_columns ={
|
||||
_description = "Membership Invoice"
|
||||
_columns = {
|
||||
'product_id': fields.many2one('product.product','Membership Product', required=True),
|
||||
}
|
||||
}
|
||||
|
||||
def membership_invoice(self, cr, uid, ids, context={}):
|
||||
def membership_invoice(self, cr, uid, ids, context=None):
|
||||
invoice_obj = self.pool.get('account.invoice')
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
product_obj = self.pool.get('product.product')
|
||||
invoice_line_obj = self.pool.get(('account.invoice.line'))
|
||||
invoice_tax_obj = self.pool.get(('account.invoice.tax'))
|
||||
partner_ids = context['active_ids']
|
||||
for data in self.read(cr, uid, ids, context=context):
|
||||
product_id = data['product_id']
|
||||
cr.execute('''
|
||||
SELECT partner_id, id, type
|
||||
FROM res_partner_address
|
||||
WHERE partner_id IN %s''',(tuple(partner_ids),))
|
||||
fetchal = cr.fetchall()
|
||||
if not fetchal:
|
||||
raise osv.except_osv(_('Error !'), _('No Address defined for this partner'))
|
||||
partner_address_ids = {}
|
||||
for x in range(len(fetchal)):
|
||||
pid = fetchal[x][0]
|
||||
id = fetchal[x][1]
|
||||
type = fetchal[x][2]
|
||||
if partner_address_ids.has_key(pid) and partner_address_ids[pid]['type'] == 'invoice':
|
||||
continue
|
||||
partner_address_ids[pid] = {'id': id, 'type': type}
|
||||
|
||||
invoice_list= []
|
||||
product = product_obj.read(cr, uid, product_id, ['uom_id'], context=context)
|
||||
|
||||
for partner_id in partner_ids:
|
||||
account_id = partner_obj.read(cr, uid, partner_id, ['property_account_receivable'], context=context)['property_account_receivable'][0]
|
||||
read_fpos = partner_obj.read(cr, uid, partner_id, ['property_account_position'], context=context)
|
||||
fpos_id = read_fpos['property_account_position'] and read_fpos['property_account_position'][0]
|
||||
invoice_line_obj = self.pool.get('account.invoice.line')
|
||||
invoice_tax_obj = self.pool.get('account.invoice.tax')
|
||||
if not context:
|
||||
context={}
|
||||
partner_ids = context.get('active_ids', [])
|
||||
invoice_list = []
|
||||
for partner in partner_obj.browse(cr, uid, partner_ids, context=context):
|
||||
account_id = partner.property_account_receivable and partner.property_account_receivable.id or False
|
||||
fpos_id = partner.property_account_position and partner.property_account_position.id or False
|
||||
addr = partner_obj.address_get(cr, uid, [partner.id], ['invoice'])
|
||||
if not addr.get('invoice', False):
|
||||
continue
|
||||
for data in self.browse(cr, uid, ids, context=context):
|
||||
product_id = data.product_id and data.product_id.id or False
|
||||
product_uom_id = data.product_id and data.product_id.uom_id.id
|
||||
quantity = 1
|
||||
line_value = {
|
||||
'product_id' : product_id,
|
||||
}
|
||||
quantity = 1
|
||||
line_dict = invoice_line_obj.product_id_change(cr, uid, {}, product_id, product['uom_id'][0], quantity, '', 'out_invoice', partner_id, fpos_id, context=context)
|
||||
}
|
||||
|
||||
line_dict = invoice_line_obj.product_id_change(cr, uid, {},
|
||||
product_id, product_uom_id, quantity, '', 'out_invoice', partner.id, fpos_id, context=context)
|
||||
line_value.update(line_dict['value'])
|
||||
if line_value['invoice_line_tax_id']:
|
||||
if line_value.get('invoice_line_tax_id', False):
|
||||
tax_tab = [(6, 0, line_value['invoice_line_tax_id'])]
|
||||
line_value['invoice_line_tax_id'] = tax_tab
|
||||
|
||||
invoice_id = invoice_obj.create(cr, uid, {
|
||||
'partner_id' : partner_id,
|
||||
'address_invoice_id': partner_address_ids[partner_id]['id'],
|
||||
'partner_id' : partner.id,
|
||||
'address_invoice_id': addr.get('invoice', False),
|
||||
'account_id': account_id,
|
||||
'fiscal_position': fpos_id or False
|
||||
}
|
||||
|
@ -86,16 +78,17 @@ class membership_invoice(osv.osv_memory):
|
|||
if line_value['invoice_line_tax_id']:
|
||||
tax_value = invoice_tax_obj.compute(cr, uid, invoice_id).values()
|
||||
for tax in tax_value:
|
||||
invoice_tax_obj.create(cr, uid, tax, context=context)
|
||||
invoice_tax_obj.create(cr, uid, tax, context=context)
|
||||
|
||||
|
||||
return {
|
||||
'domain': [('id', 'in', invoice_list)],
|
||||
'name': 'Membership Invoice',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'res_model': 'account.invoice',
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
return {
|
||||
'domain': [('id', 'in', invoice_list)],
|
||||
'name': 'Membership Invoice',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'res_model': 'account.invoice',
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
|
||||
membership_invoice()
|
||||
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Membership Invoice">
|
||||
<group colspan="4" >
|
||||
<field name="product_id" context="{'product':membership_product}" domain="[('membership','=',True)]"/>
|
||||
<field name="product_id" context="{'product':membership_product}" domain="[('membership','=',True)]" widget="selection"/>
|
||||
</group>
|
||||
<group colspan="4" col="6">
|
||||
<button icon="gtk-close" special="cancel" string="Close"/>
|
||||
<button icon="gtk-ok" string="Confirm" name="membership_invoice" type="object"/>
|
||||
<button icon="gtk-apply" string="Confirm" name="membership_invoice" type="object"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
@ -39,4 +39,4 @@
|
|||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
'wizard/change_production_qty_view.xml',
|
||||
'wizard/mrp_price_view.xml',
|
||||
'wizard/mrp_workcenter_load_view.xml',
|
||||
'wizard/mrp_change_standard_price_view.xml',
|
||||
# 'wizard/mrp_track_prod_view.xml',
|
||||
'mrp_view.xml',
|
||||
'mrp_wizard.xml',
|
||||
|
|
|
@ -63,11 +63,12 @@ class product_product(osv.osv):
|
|||
"""
|
||||
res = super(product_product, self).do_change_standard_price(cr, uid, ids, datas, context=context)
|
||||
bom_obj = self.pool.get('mrp.bom')
|
||||
change = context.get('change_parent_price', False)
|
||||
def _compute_price(bom):
|
||||
price = 0.0
|
||||
if bom.bom_id :
|
||||
if bom.bom_id.bom_lines :
|
||||
for bom_line in bom.bom_id.bom_lines :
|
||||
if bom.bom_id and change:
|
||||
if bom.bom_id.bom_lines:
|
||||
for bom_line in bom.bom_id.bom_lines:
|
||||
prod_price = self.read(cr, uid, bom_line.product_id.id, ['standard_price'])['standard_price']
|
||||
price += bom_line.product_qty * prod_price
|
||||
|
||||
|
|
|
@ -265,10 +265,10 @@
|
|||
<para style="terp_default_Centre_8">[[ formatLang(o.date_planned, date_time = True) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">[[ o.sale_ref or removeParentNode('para')]]</para>
|
||||
<para style="terp_default_Centre_8">[[ 'sale_ref' in o._columns.keys() and o.sale_ref or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">[[ o.sale_name or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_8">[[ 'sale_name' in o._columns.keys() and o.sale_name or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
|
|
|
@ -24,6 +24,7 @@ import mrp_price
|
|||
import mrp_workcenter_load
|
||||
#import mrp_track_prod
|
||||
import change_production_qty
|
||||
import mrp_change_standard_price
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
|
||||
class change_standard_price(osv.osv_memory):
|
||||
_inherit = "stock.change.standard.price"
|
||||
_description = "Change Standard Price"
|
||||
|
||||
_columns = {
|
||||
'change_parent_price': fields.boolean('Change Parent Price'),
|
||||
}
|
||||
|
||||
|
||||
def change_price(self, cr, uid, ids, context):
|
||||
""" Changes the Standard Price of Parent Product according to BoM
|
||||
only when the field 'change_parent_price' is True.
|
||||
And creates an account move accordingly.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param ids: List of IDs selected
|
||||
@param context: A standard dictionary
|
||||
@return:
|
||||
"""
|
||||
res = self.browse(cr, uid, ids)
|
||||
context.update({'change_parent_price': res[0].change_parent_price})
|
||||
return super(change_standard_price, self).change_price(cr, uid, ids, context=context)
|
||||
|
||||
change_standard_price()
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="view_change_standard_price_inherit" model="ir.ui.view">
|
||||
<field name="name">Change Standard Price (Inherit)</field>
|
||||
<field name="model">stock.change.standard.price</field>
|
||||
<field name="inherit_id" ref="stock.view_change_standard_price"/>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="new_price" position="after">
|
||||
<field name="change_parent_price"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -224,6 +224,8 @@ class mrp_production(osv.osv):
|
|||
obj = self.browse(cr, uid, ids)[0]
|
||||
for workcenter_line in obj.workcenter_lines:
|
||||
tmp = self.pool.get('mrp.production.workcenter.line').action_done(cr, uid, [workcenter_line.id])
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_done', cr)
|
||||
return super(mrp_production,self).action_production_end(cr, uid, ids)
|
||||
|
||||
def action_in_production(self, cr, uid, ids):
|
||||
|
@ -234,6 +236,8 @@ class mrp_production(osv.osv):
|
|||
workcenter_line_obj = self.pool.get('mrp.production.workcenter.line')
|
||||
for workcenter_line in obj.workcenter_lines:
|
||||
workcenter_line_obj.action_start_working(cr, uid, [workcenter_line.id])
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_start_working', cr)
|
||||
return super(mrp_production,self).action_in_production(cr, uid, ids)
|
||||
|
||||
def action_cancel(self, cr, uid, ids):
|
||||
|
@ -243,6 +247,8 @@ class mrp_production(osv.osv):
|
|||
obj = self.browse(cr, uid, ids)[0]
|
||||
for workcenter_line in obj.workcenter_lines:
|
||||
tmp = self.pool.get('mrp.production.workcenter.line').action_cancel(cr, uid, [workcenter_line.id])
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_cancel', cr)
|
||||
return super(mrp_production,self).action_cancel(cr,uid,ids)
|
||||
|
||||
def _compute_planned_workcenter(self, cr, uid, ids, context={}, mini=False):
|
||||
|
|
|
@ -4,6 +4,41 @@
|
|||
<menuitem id="menu_mrp_planning" name="Planning"
|
||||
parent="base.menu_mrp_root" sequence="2"
|
||||
groups="base.group_extended"/>
|
||||
|
||||
<record id="mrp_production_form_inherit_view" model="ir.ui.view">
|
||||
<field name="name">mrp.production.form.inherit</field>
|
||||
<field name="model">mrp.production</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="mrp.mrp_production_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/notebook/page/field[@name='workcenter_lines']/form/field[@name='hour']" position="after">
|
||||
<group colspan="8" col="8">
|
||||
<field name="state"/>
|
||||
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert"/>
|
||||
<button name="button_start_working" string="Start" states="draft" icon="gtk-go-forward"/>
|
||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause"/>
|
||||
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-cancel"/>
|
||||
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="gtk-ok"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="mrp_production_form_inherit_view2" model="ir.ui.view">
|
||||
<field name="name">mrp.production.form.inherit2</field>
|
||||
<field name="model">mrp.production</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="mrp.mrp_production_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/notebook/page/field[@name='workcenter_lines']/tree/field[@name='hour']" position="after">
|
||||
<field name="state"/>
|
||||
<button name="button_start_working" string="Start working" states="draft,pause" icon="gtk-go-forward"/>
|
||||
<button name="button_done" string="Finished" states="startworking" icon="gtk-jump-to"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="mrp_production_workcenter_tree_view_inherit">
|
||||
<field name="name">mrp.production.workcenter.line.tree</field>
|
||||
<field name="model">mrp.production.workcenter.line</field>
|
||||
|
@ -150,7 +185,7 @@
|
|||
</record>
|
||||
|
||||
|
||||
<!-- Action for tree view of workcenter line -->
|
||||
<!-- Action for All Operations -->
|
||||
|
||||
<record model="ir.actions.act_window" id="mrp_production_wc_action_form">
|
||||
<field name="name">Work Orders</field>
|
||||
|
@ -158,21 +193,9 @@
|
|||
<field name="res_model">mrp.production.workcenter.line</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,gantt,calendar,graph</field>
|
||||
<field name="domain">[('id','=',active_id)]</field>
|
||||
<field name="search_view_id" ref="view_mrp_production_workcenter_form_view_filter"/>
|
||||
</record>
|
||||
|
||||
<!-- Action for All Operations -->
|
||||
|
||||
<record model="ir.actions.act_window" id="mrp_production_wc_action">
|
||||
<field name="name">All Work Orders</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">mrp.production.workcenter.line</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,graph,calendar,gantt</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="ir.actions.act_window" id="mrp_production_wc_action_planning">
|
||||
<field name="name">Work Orders Planning</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
|
|
|
@ -42,9 +42,9 @@ class pos_config_journal(osv.osv):
|
|||
|
||||
pos_config_journal()
|
||||
class pos_company_discount(osv.osv):
|
||||
|
||||
""" Company Discount and Cashboxes """
|
||||
|
||||
|
||||
""" Company Discount and Cashboxes """
|
||||
|
||||
_inherit = 'res.company'
|
||||
_columns = {
|
||||
'company_discount': fields.float('Max Discount(%)', digits_compute= dp.get_precision('Point Of Sale')),
|
||||
|
@ -55,10 +55,10 @@ pos_company_discount()
|
|||
|
||||
|
||||
class pos_order(osv.osv):
|
||||
|
||||
|
||||
""" Point of sale gives business owners a convenient way of checking out customers
|
||||
and of recording sales """
|
||||
|
||||
and of recording sales """
|
||||
|
||||
_name = "pos.order"
|
||||
_description = "Point of Sale"
|
||||
_order = "date_order, create_date desc"
|
||||
|
@ -66,7 +66,7 @@ class pos_order(osv.osv):
|
|||
|
||||
|
||||
def unlink(self, cr, uid, ids, context={}):
|
||||
|
||||
|
||||
for rec in self.browse(cr, uid, ids, context=context):
|
||||
for rec_statement in rec.statement_ids:
|
||||
if (rec_statement.statement_id and rec_statement.statement_id.state=='confirm') or rec.state=='done':
|
||||
|
@ -76,7 +76,7 @@ class pos_order(osv.osv):
|
|||
def onchange_partner_pricelist(self, cr, uid, ids, part, context={}):
|
||||
|
||||
""" Changed price list on_change of partner_id"""
|
||||
|
||||
|
||||
if not part:
|
||||
return {}
|
||||
pricelist = self.pool.get('res.partner').browse(cr, uid, part).property_product_pricelist.id
|
||||
|
@ -108,13 +108,13 @@ class pos_order(osv.osv):
|
|||
return res
|
||||
|
||||
def _get_date_payment2(self, cr, uid, ids, context, *a):
|
||||
|
||||
# Todo need to check this function
|
||||
|
||||
# Todo need to check this function
|
||||
""" Find payment Date
|
||||
|
||||
|
||||
@param field_names: Names of fields.
|
||||
@return: Dictionary of values """
|
||||
|
||||
|
||||
res = {}
|
||||
pay_obj = self.pool.get('account.bank.statement')
|
||||
stat_obj_line = self.pool.get('account.bank.statement.line')
|
||||
|
@ -137,12 +137,12 @@ class pos_order(osv.osv):
|
|||
if val:
|
||||
res[order.id]=val
|
||||
return res
|
||||
|
||||
|
||||
def _get_date_payment(self, cr, uid, ids, context, *a):
|
||||
|
||||
|
||||
""" Find Validation Date
|
||||
@return: Dictionary of values """
|
||||
|
||||
@return: Dictionary of values """
|
||||
|
||||
res = {}
|
||||
pay_obj = self.pool.get('pos.payment')
|
||||
tot =0.0
|
||||
|
@ -172,22 +172,22 @@ class pos_order(osv.osv):
|
|||
return res
|
||||
|
||||
def _amount_all(self, cr, uid, ids, name, args, context=None):
|
||||
tax_obj = self.pool.get('account.tax')
|
||||
cur_obj = self.pool.get('res.currency')
|
||||
tax_obj = self.pool.get('account.tax')
|
||||
cur_obj = self.pool.get('res.currency')
|
||||
res={}
|
||||
for order in self.browse(cr, uid, ids):
|
||||
res[order.id] = {
|
||||
'amount_paid': 0.0,
|
||||
'amount_return':0.0,
|
||||
'amount_tax':0.0,
|
||||
}
|
||||
val=0.0
|
||||
cur_obj = self.pool.get('res.currency')
|
||||
cur = order.pricelist_id.currency_id
|
||||
}
|
||||
val=0.0
|
||||
cur_obj = self.pool.get('res.currency')
|
||||
cur = order.pricelist_id.currency_id
|
||||
for payment in order.statement_ids:
|
||||
res[order.id]['amount_paid'] += payment.amount
|
||||
res[order.id]['amount_paid'] += payment.amount
|
||||
for payment in order.payments:
|
||||
res[order.id]['amount_return'] += (payment.amount < 0 and payment.amount or 0)
|
||||
res[order.id]['amount_return'] += (payment.amount < 0 and payment.amount or 0)
|
||||
for line in order.lines:
|
||||
if order.price_type!='tax_excluded':
|
||||
res[order.id]['amount_tax'] = reduce(lambda x, y: x+round(y['amount'], 2),
|
||||
|
@ -197,16 +197,16 @@ class pos_order(osv.osv):
|
|||
res[order.id]['amount_tax'])
|
||||
elif line.qty != 0.0:
|
||||
for c in tax_obj.compute_all(cr, uid, line.product_id.taxes_id, line.price_unit * (1-(line.discount or 0.0)/100.0), line.qty, line.product_id, line.order_id.partner_id)['taxes']:
|
||||
val += c['amount']
|
||||
val += c['amount']
|
||||
res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val)
|
||||
return res
|
||||
|
||||
|
||||
|
||||
|
||||
def _sale_journal_get(self, cr, uid, context):
|
||||
|
||||
""" To get sale journal for this order"
|
||||
@return: journal """
|
||||
|
||||
""" To get sale journal for this order"
|
||||
@return: journal """
|
||||
|
||||
journal_obj = self.pool.get('account.journal')
|
||||
res = journal_obj.search(cr, uid,
|
||||
|
@ -217,10 +217,10 @@ class pos_order(osv.osv):
|
|||
return False
|
||||
|
||||
def _shop_get(self, cr, uid, context):
|
||||
|
||||
""" To get Shop for this order"
|
||||
@return: Shop id """
|
||||
|
||||
|
||||
""" To get Shop for this order"
|
||||
@return: Shop id """
|
||||
|
||||
company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
|
||||
res = self.pool.get('sale.shop').search(cr, uid, [])
|
||||
if res:
|
||||
|
@ -228,7 +228,7 @@ class pos_order(osv.osv):
|
|||
else:
|
||||
return False
|
||||
def copy(self, cr, uid, id, default=None, context={}):
|
||||
|
||||
|
||||
if not default:
|
||||
default = {}
|
||||
default.update({
|
||||
|
@ -245,7 +245,7 @@ class pos_order(osv.osv):
|
|||
return super(pos_order, self).copy(cr, uid, id, default, context)
|
||||
|
||||
def _get_v( self, cr, uid, ids,*a):
|
||||
|
||||
|
||||
""" Changed the Validation state of order
|
||||
@return: State """
|
||||
|
||||
|
@ -326,11 +326,11 @@ class pos_order(osv.osv):
|
|||
|
||||
|
||||
def _select_pricelist(self, cr, uid, context):
|
||||
|
||||
""" To get default pricelist for the order"
|
||||
|
||||
""" To get default pricelist for the order"
|
||||
@param name: Names of fields.
|
||||
@return: pricelist ID
|
||||
"""
|
||||
"""
|
||||
pricelist = self.pool.get('product.pricelist').search(cr, uid, [('name', '=', 'Public Pricelist')])
|
||||
if pricelist:
|
||||
return pricelist[0]
|
||||
|
@ -338,11 +338,11 @@ class pos_order(osv.osv):
|
|||
return False
|
||||
|
||||
def _journal_default(self, cr, uid, context={}):
|
||||
|
||||
""" To get default pricelist for the order"
|
||||
|
||||
""" To get default pricelist for the order"
|
||||
@param name: Names of fields.
|
||||
@return: journal ID
|
||||
"""
|
||||
"""
|
||||
journal_list = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash')])
|
||||
if journal_list:
|
||||
return journal_list[0]
|
||||
|
@ -350,7 +350,7 @@ class pos_order(osv.osv):
|
|||
return False
|
||||
|
||||
_defaults = {
|
||||
'user_salesman_id':lambda self, cr, uid, context: uid,
|
||||
'user_salesman_id':lambda self, cr, uid, context: uid,
|
||||
'user_id': lambda self, cr, uid, context: uid,
|
||||
'sale_manager': lambda self, cr, uid, context: uid,
|
||||
'state': lambda *a: 'draft',
|
||||
|
@ -369,11 +369,11 @@ class pos_order(osv.osv):
|
|||
|
||||
|
||||
def test_order_lines(self, cr, uid, order, context={}):
|
||||
|
||||
""" Test order line is created or not for the order "
|
||||
|
||||
""" Test order line is created or not for the order "
|
||||
@param name: Names of fields.
|
||||
@return: True
|
||||
"""
|
||||
"""
|
||||
if not order.lines:
|
||||
raise osv.except_osv(_('Error'), _('No order lines defined for this sale.'))
|
||||
|
||||
|
@ -385,10 +385,10 @@ class pos_order(osv.osv):
|
|||
return True
|
||||
|
||||
def test_paid(self, cr, uid, ids, context=None):
|
||||
|
||||
""" Test all amount is paid for this order
|
||||
|
||||
""" Test all amount is paid for this order
|
||||
@return: True
|
||||
"""
|
||||
"""
|
||||
for order in self.browse(cr, uid, ids, context):
|
||||
if order.lines and not order.amount_total:
|
||||
return True
|
||||
|
@ -398,9 +398,9 @@ class pos_order(osv.osv):
|
|||
return True
|
||||
|
||||
def _get_qty_differences(self, orders, old_picking):
|
||||
|
||||
|
||||
"""check if the customer changed the product quantity """
|
||||
|
||||
|
||||
order_dict = {}
|
||||
for order in orders:
|
||||
for line in order.lines:
|
||||
|
@ -422,9 +422,9 @@ class pos_order(osv.osv):
|
|||
return diff_dict
|
||||
|
||||
def _split_picking(self, cr, uid, ids, context, old_picking, diff_dict):
|
||||
|
||||
|
||||
"""if the customer changes the product quantity, split the picking in two"""
|
||||
|
||||
|
||||
# create a copy of the original picking and adjust the product qty:
|
||||
picking_model = self.pool.get('stock.picking')
|
||||
defaults = {
|
||||
|
@ -462,9 +462,9 @@ class pos_order(osv.osv):
|
|||
line.unlink(context=context)
|
||||
|
||||
def create_picking(self, cr, uid, ids, context={}):
|
||||
|
||||
|
||||
"""Create a picking for each order and validate it."""
|
||||
|
||||
|
||||
picking_obj = self.pool.get('stock.picking')
|
||||
pick_name=self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
|
||||
orders = self.browse(cr, uid, ids, context)
|
||||
|
@ -472,7 +472,7 @@ class pos_order(osv.osv):
|
|||
if not order.picking_id:
|
||||
new = True
|
||||
picking_id = picking_obj.create(cr, uid, {
|
||||
'name':pick_name,
|
||||
'name':pick_name,
|
||||
'origin': order.name,
|
||||
'type': 'out',
|
||||
'state': 'draft',
|
||||
|
@ -530,8 +530,8 @@ class pos_order(osv.osv):
|
|||
return True
|
||||
|
||||
def set_to_draft(self, cr, uid, ids, *args):
|
||||
|
||||
""" Changes order state to draft
|
||||
|
||||
""" Changes order state to draft
|
||||
@return: True
|
||||
"""
|
||||
if not len(ids):
|
||||
|
@ -545,10 +545,10 @@ class pos_order(osv.osv):
|
|||
return True
|
||||
|
||||
def button_invalidate(self, cr, uid, ids, *args):
|
||||
|
||||
""" Check the access for the sale order
|
||||
|
||||
""" Check the access for the sale order
|
||||
@return: True
|
||||
"""
|
||||
"""
|
||||
res_obj = self.pool.get('res.company')
|
||||
try:
|
||||
part_company=res_obj.browse(cr,uid,uid) and res_obj.browse(cr,uid,uid).parent_id and res_obj.browse(cr,uid,uid).parent_id.id or None
|
||||
|
@ -559,10 +559,10 @@ class pos_order(osv.osv):
|
|||
return True
|
||||
|
||||
def button_validate(self, cr, uid, ids, *args):
|
||||
|
||||
|
||||
""" Check the access for the sale order and update the date_validation
|
||||
@return: True
|
||||
"""
|
||||
"""
|
||||
res_obj = self.pool.get('res.company')
|
||||
try:
|
||||
part_company=res_obj.browse(cr,uid,uid) and res_obj.browse(cr,uid,uid).parent_id and res_obj.browse(cr,uid,uid).parent_id.id or None
|
||||
|
@ -581,18 +581,18 @@ class pos_order(osv.osv):
|
|||
|
||||
|
||||
def cancel_order(self, cr, uid, ids, context=None):
|
||||
|
||||
""" Changes order state to cancel
|
||||
|
||||
""" Changes order state to cancel
|
||||
@return: True
|
||||
"""
|
||||
"""
|
||||
self.write(cr, uid, ids, {'state': 'cancel'})
|
||||
self.cancel_picking(cr, uid, ids, context={})
|
||||
return True
|
||||
|
||||
def add_payment(self, cr, uid, order_id, data, context=None):
|
||||
|
||||
|
||||
"""Create a new payment for the order"""
|
||||
|
||||
|
||||
res_obj = self.pool.get('res.company')
|
||||
statementl_obj = self.pool.get('account.bank.statement.line')
|
||||
prod_obj = self.pool.get('product.product')
|
||||
|
@ -645,9 +645,9 @@ class pos_order(osv.osv):
|
|||
return statement_id
|
||||
|
||||
def add_product(self, cr, uid, order_id, product_id, qty, context=None):
|
||||
|
||||
|
||||
"""Create a new order line the order"""
|
||||
|
||||
|
||||
line_obj = self.pool.get('pos.order.line')
|
||||
values = self.read(cr, uid, order_id, ['partner_id', 'pricelist_id'])
|
||||
|
||||
|
@ -669,9 +669,9 @@ class pos_order(osv.osv):
|
|||
return order_line_id
|
||||
|
||||
def refund(self, cr, uid, ids, context={}):
|
||||
|
||||
"""Create a copy of order for refund order"""
|
||||
|
||||
|
||||
"""Create a copy of order for refund order"""
|
||||
|
||||
clone_list = []
|
||||
line_obj = self.pool.get('pos.order.line')
|
||||
|
||||
|
@ -696,7 +696,7 @@ class pos_order(osv.osv):
|
|||
return clone_list
|
||||
|
||||
def action_invoice(self, cr, uid, ids, context={}):
|
||||
|
||||
|
||||
"""Create a invoice of order """
|
||||
|
||||
res_obj = self.pool.get('res.company')
|
||||
|
@ -739,7 +739,7 @@ class pos_order(osv.osv):
|
|||
'quantity': line.qty,
|
||||
}
|
||||
inv_name = product_obj.name_get(cr, uid, [line.product_id.id], context=context)[0][1]
|
||||
|
||||
|
||||
inv_line.update(inv_line_ref.product_id_change(cr, uid, [],
|
||||
line.product_id.id,
|
||||
line.product_id.uom_id.id,
|
||||
|
@ -759,9 +759,9 @@ class pos_order(osv.osv):
|
|||
return inv_ids
|
||||
|
||||
def create_account_move(self, cr, uid, ids, context=None):
|
||||
|
||||
"""Create a account move line of order """
|
||||
|
||||
|
||||
"""Create a account move line of order """
|
||||
|
||||
account_move_obj = self.pool.get('account.move')
|
||||
account_move_line_obj = self.pool.get('account.move.line')
|
||||
account_period_obj = self.pool.get('account.period')
|
||||
|
@ -777,7 +777,7 @@ class pos_order(osv.osv):
|
|||
to_reconcile = []
|
||||
group_tax = {}
|
||||
account_def = property_obj.get(cr, uid, 'property_account_receivable', 'res.partner', context=context).id
|
||||
|
||||
|
||||
order_account = order.partner_id and order.partner_id.property_account_receivable and order.partner_id.property_account_receivable.id or account_def or curr_c.account_receivable.id
|
||||
|
||||
# Create an entry for the sale
|
||||
|
@ -845,7 +845,7 @@ class pos_order(osv.osv):
|
|||
# Create a move for the line
|
||||
account_move_line_obj.create(cr, uid, {
|
||||
'name': "aa"+order.name,
|
||||
'date': order.date_order,
|
||||
'date': order.date_order[:10],
|
||||
'ref': order.contract_number or order.name,
|
||||
'quantity': line.qty,
|
||||
'product_id':line.product_id.id,
|
||||
|
@ -873,7 +873,7 @@ class pos_order(osv.osv):
|
|||
|
||||
account_move_line_obj.create(cr, uid, {
|
||||
'name': "bb"+order.name,
|
||||
'date': order.date_order,
|
||||
'date': order.date_order[:10],
|
||||
'ref': order.contract_number or order.name,
|
||||
'product_id':line.product_id.id,
|
||||
'quantity': line.qty,
|
||||
|
@ -894,7 +894,7 @@ class pos_order(osv.osv):
|
|||
for key, amount in group_tax.items():
|
||||
account_move_line_obj.create(cr, uid, {
|
||||
'name':"cc"+order.name,
|
||||
'date': order.date_order,
|
||||
'date': order.date_order[:10],
|
||||
'ref': order.contract_number or order.name,
|
||||
'move_id': move_id,
|
||||
'company_id': comp_id,
|
||||
|
@ -912,7 +912,7 @@ class pos_order(osv.osv):
|
|||
# counterpart
|
||||
to_reconcile.append(account_move_line_obj.create(cr, uid, {
|
||||
'name': "dd"+order.name,
|
||||
'date': order.date_order,
|
||||
'date': order.date_order[:10],
|
||||
'ref': order.contract_number or order.name,
|
||||
'move_id': move_id,
|
||||
'company_id': comp_id,
|
||||
|
@ -963,7 +963,7 @@ class pos_order(osv.osv):
|
|||
'statement_id': False,
|
||||
'account_id':order_account
|
||||
})
|
||||
|
||||
|
||||
self.write(cr,uid,order.id,{'state':'done'})
|
||||
return True
|
||||
|
||||
|
@ -1072,7 +1072,7 @@ class pos_order_line(osv.osv):
|
|||
else:
|
||||
res[line.id]=line.price_unit*line.qty
|
||||
res[line.id] = res[line.id] + tax_amount
|
||||
|
||||
|
||||
return res
|
||||
def _amount_line(self, cr, uid, ids, field_name, arg, context):
|
||||
res = {}
|
||||
|
@ -1093,7 +1093,7 @@ class pos_order_line(osv.osv):
|
|||
_('You have to select a pricelist in the sale form !\n' \
|
||||
'Please set one before choosing a product.'))
|
||||
p_obj = self.pool.get('product.product').browse(cr,uid,[product_id])[0]
|
||||
uom_id=p_obj.uom_po_id.id
|
||||
uom_id=p_obj.uom_po_id.id
|
||||
price = self.pool.get('product.pricelist').price_get(cr, uid,
|
||||
[pricelist], product_id, qty or 1.0, partner_id,{'uom': uom_id})[pricelist]
|
||||
unit_price=price or p_obj.list_price
|
||||
|
@ -1102,8 +1102,8 @@ class pos_order_line(osv.osv):
|
|||
_("Couldn't find a pricelist line matching this product" \
|
||||
" and quantity.\nYou have to change either the product," \
|
||||
" the quantity or the pricelist."))
|
||||
return unit_price
|
||||
|
||||
return unit_price
|
||||
|
||||
def onchange_product_id(self, cr, uid, ids, pricelist, product_id, qty=0, partner_id=False):
|
||||
price = self.price_by_product(cr, uid, ids, pricelist, product_id, qty, partner_id)
|
||||
self.write(cr,uid,ids,{'price_unit':price})
|
||||
|
@ -1284,7 +1284,7 @@ class pos_payment(osv.osv):
|
|||
pos_payment()
|
||||
|
||||
class account_move_line(osv.osv):
|
||||
|
||||
|
||||
_inherit = 'account.move.line'
|
||||
def create(self, cr, user, vals, context={}):
|
||||
pos_obj = self.pool.get('pos.order')
|
||||
|
@ -1304,9 +1304,9 @@ account_move_line()
|
|||
|
||||
|
||||
class account_move(osv.osv):
|
||||
|
||||
|
||||
_inherit = 'account.move'
|
||||
|
||||
|
||||
def create(self, cr, user, vals, context={}):
|
||||
pos_obj = self.pool.get('pos.order')
|
||||
val_name = vals.get('name', '')
|
||||
|
|
|
@ -48,7 +48,6 @@ class pos_invoice(report_sxw.rml_parse):
|
|||
raise osv.except_osv(_('Error !'), _('Please create an invoice for this sale.'))
|
||||
iids.append(order.invoice_id)
|
||||
nids.append(order.invoice_id.id)
|
||||
self.cr.commit()
|
||||
data['ids'] = nids
|
||||
self.datas = data
|
||||
self.ids = nids
|
||||
|
|
|
@ -70,7 +70,6 @@ class pos_open_statement(osv.osv_memory):
|
|||
# })
|
||||
period = statement_obj._get_period(cr, uid, context) or None
|
||||
cr.execute("INSERT INTO account_bank_statement(journal_id,company_id,user_id,state,name, period_id,date) VALUES(%d,%d,%d,'open','%s',%d,'%s')"%(journal.id, company_id, uid, number, period, time.strftime('%Y-%m-%d %H:%M:%S')))
|
||||
cr.commit()
|
||||
cr.execute("select id from account_bank_statement where journal_id=%d and company_id=%d and user_id=%d and state='open' and name='%s'"%(journal.id, company_id, uid, number))
|
||||
statement_id = cr.fetchone()[0]
|
||||
if st_id:
|
||||
|
|
|
@ -128,11 +128,30 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_process_filter" model="ir.ui.view">
|
||||
<field name="name">process.process.filter</field>
|
||||
<field name="model">process.process</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Process">
|
||||
<group col="10" colspan="4">
|
||||
<field name="name"/>
|
||||
<field name="model_id"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="4">
|
||||
<filter string="Object" icon="terp-personal" domain="[]" context="{'group_by':'model_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_process_form">
|
||||
<field name="name">Process</field>
|
||||
<field name="res_model">process.process</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="view_process_filter" />
|
||||
</record>
|
||||
<menuitem
|
||||
id="menu_process_form"
|
||||
|
@ -239,11 +258,32 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_process_node_filter" model="ir.ui.view">
|
||||
<field name="name">process.node.filter</field>
|
||||
<field name="model">process.node</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search ProcessNode">
|
||||
<group col="10" colspan="4">
|
||||
<field name="name"/>
|
||||
<field name="model_id"/>
|
||||
<field name="kind" />
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="4">
|
||||
<filter string="Object" icon="terp-personal" domain="[]" context="{'group_by':'model_id'}"/>
|
||||
<filter string="Kind Of Node" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'kind'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_process_node_form">
|
||||
<field name="name">Process Nodes</field>
|
||||
<field name="res_model">process.node</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="view_process_node_filter" />
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
|
@ -272,7 +312,7 @@
|
|||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Process Transition">
|
||||
<group string="Details">
|
||||
<group>
|
||||
<field name="name" select="1"/>
|
||||
<newline/>
|
||||
<field name="source_node_id" select="1"/>
|
||||
|
@ -308,11 +348,32 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_process_transition_filter" model="ir.ui.view">
|
||||
<field name="name">process.transition.filter</field>
|
||||
<field name="model">process.transition</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Process Transition">
|
||||
<group col="10" colspan="4">
|
||||
<field name="name"/>
|
||||
<field name="source_node_id"/>
|
||||
<field name="target_node_id" />
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="4">
|
||||
<filter string="Source Node" icon="terp-personal" domain="[]" context="{'group_by':'source_node_id'}"/>
|
||||
<filter string="Target Node" icon="terp-personal" domain="[]" context="{'group_by':'target_node_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_process_transition_form">
|
||||
<field name="name">Process Transitions</field>
|
||||
<field name="res_model">process.transition</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="view_process_transition_filter" />
|
||||
</record>
|
||||
<menuitem
|
||||
id="menu_process_transition_form"
|
||||
|
|
|
@ -372,6 +372,9 @@ class procurement_order(osv.osv):
|
|||
cr.execute('update procurement_order set message=%s where id=%s', (_('Not enough stock and no minimum orderpoint rule defined.'), procurement.id))
|
||||
message = _('Procurement ') + " '" + procurement.name + "' "+ _("has an exception.") + _('Not enough stock and no minimum orderpoint rule defined.')
|
||||
self.log(cr, uid, procurement.id, message)
|
||||
if procurement.state=='exception' and procurement.message=='':
|
||||
cr.execute('update procurement_order set message=%s where id=%s', (_('Not enough stock '), procurement.id))
|
||||
|
||||
return ok
|
||||
|
||||
def action_produce_assign_service(self, cr, uid, ids, context={}):
|
||||
|
|
|
@ -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 17:43+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 09:58+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-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: product_margin
|
||||
|
@ -24,7 +24,7 @@ msgstr ""
|
|||
#. module: product_margin
|
||||
#: wizard_field:product.margins,init,from_date:0
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "От"
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,sale_expected:0
|
||||
|
@ -35,7 +35,7 @@ msgstr ""
|
|||
#. module: product_margin
|
||||
#: wizard_field:product.margins,init,to_date:0
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
msgstr "Кому"
|
||||
|
||||
#. module: product_margin
|
||||
#: field:product.product,date_to:0
|
||||
|
@ -84,7 +84,7 @@ msgstr ""
|
|||
#: selection:product.margins,init,invoice_state:0
|
||||
#: selection:product.product,invoice_state:0
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
msgstr "Оплачено"
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,sales_gap:0
|
||||
|
@ -99,7 +99,7 @@ msgstr ""
|
|||
#. module: product_margin
|
||||
#: view:product.product:0
|
||||
msgid "Standard Price"
|
||||
msgstr ""
|
||||
msgstr "Стандартная цена"
|
||||
|
||||
#. module: product_margin
|
||||
#: help:product.product,purchase_num_invoiced:0
|
||||
|
|
|
@ -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 12:07+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2010-07-11 08:59+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:14+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-12 03:47+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: profile_manufacturing
|
||||
|
@ -74,7 +74,7 @@ msgstr ""
|
|||
#. module: profile_manufacturing
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Недопустимое имя модели в определении действия."
|
||||
|
||||
#. module: profile_manufacturing
|
||||
#: model:ir.actions.act_window,name:profile_manufacturing.action_config_install_module
|
||||
|
@ -101,12 +101,12 @@ msgstr ""
|
|||
#. module: profile_manufacturing
|
||||
#: field:profile.manufacturing.config.install_modules_wizard,board_document:0
|
||||
msgid "Document Management"
|
||||
msgstr ""
|
||||
msgstr "Управление документами"
|
||||
|
||||
#. module: profile_manufacturing
|
||||
#: field:profile.manufacturing.config.install_modules_wizard,portal:0
|
||||
msgid "Portal"
|
||||
msgstr ""
|
||||
msgstr "Портал"
|
||||
|
||||
#. module: profile_manufacturing
|
||||
#: view:profile.manufacturing.config.install_modules_wizard:0
|
||||
|
@ -169,7 +169,7 @@ msgstr ""
|
|||
#. module: profile_manufacturing
|
||||
#: field:profile.manufacturing.config.install_modules_wizard,mrp_repair:0
|
||||
msgid "Repair"
|
||||
msgstr ""
|
||||
msgstr "Восстановление"
|
||||
|
||||
#. module: profile_manufacturing
|
||||
#: help:profile.manufacturing.config.install_modules_wizard,sale_margin:0
|
||||
|
@ -193,12 +193,12 @@ msgstr ""
|
|||
#. module: profile_manufacturing
|
||||
#: view:profile.manufacturing.config.install_modules_wizard:0
|
||||
msgid "Sales Management"
|
||||
msgstr ""
|
||||
msgstr "Управление продажами"
|
||||
|
||||
#. module: profile_manufacturing
|
||||
#: field:profile.manufacturing.config.install_modules_wizard,warning:0
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
msgstr "Внимание"
|
||||
|
||||
#. module: profile_manufacturing
|
||||
#: field:profile.manufacturing.config.install_modules_wizard,sale_margin:0
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<field name="name" >Tasks According to User and Project</field>
|
||||
<field name="model_id" ref="model_project_task"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|','|','|',('user_id','=',False),('user_id','=',user.id),('project_id.members','=',user.id),('project_id.user_id','=',user.id)]</field>
|
||||
<field name="domain_force">['|','|','|',('user_id','=',False),('user_id','=',user.id),('project_id.members','in', [user.id]),('project_id.user_id','=',user.id)]</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
@ -30,7 +30,13 @@ class project_task(osv.osv):
|
|||
'create_date': fields.datetime('Create Date'),
|
||||
'attendee_ids': fields.many2many('calendar.attendee', \
|
||||
'task_attendee_rel', 'task_id', 'attendee_id', 'Attendees'),
|
||||
}
|
||||
'state': fields.selection([('draft', 'Draft'),('open', 'In Progress'),('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', readonly=True, required=True,
|
||||
help='If the task is created the state is \'Draft\'.\n If the task is started, the state becomes \'In Progress\'.\n If review is needed the task is in \'Pending\' state.\
|
||||
\n If the task is over, the states is set to \'Done\'.'),
|
||||
}
|
||||
_defaults = {
|
||||
'state': 'draft',
|
||||
}
|
||||
|
||||
def import_cal(self, cr, uid, data, data_id=None, context=None):
|
||||
todo_obj = self.pool.get('basic.calendar.todo')
|
||||
|
@ -43,7 +49,7 @@ class project_task(osv.osv):
|
|||
ids = []
|
||||
for val in vals:
|
||||
obj_tm = self.pool.get('res.users').browse(cr, uid, uid, context).company_id.project_time_mode_id
|
||||
if not val.has_key('planned_hours'):
|
||||
if not val.get('planned_hours', False):
|
||||
# 'Computes duration' in days
|
||||
plan = 0.0
|
||||
if val.get('date') and val.get('date_deadline'):
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<data noupdate="1">
|
||||
|
||||
<record model="basic.calendar" id="caldav.basic_calendar2">
|
||||
<field name="name">Todo</field>
|
||||
<field name="name">Tasks</field>
|
||||
<field name="collection_id" ref="document.dir_calendars"></field>
|
||||
<field name="type">vtodo</field>
|
||||
</record>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue