[MRG] merged main branch

bzr revid: stefan@therp.nl-20110622095400-sn4025tjk2fvfnol
This commit is contained in:
Stefan Rijnhart
2011-06-22 11:54:00 +02:00
102 changed files with 9488 additions and 1533 deletions
+29
View File
@@ -1331,6 +1331,7 @@ class account_move(osv.osv):
def _centralise(self, cr, uid, move, mode, context=None):
assert mode in ('debit', 'credit'), 'Invalid Mode' #to prevent sql injection
currency_obj = self.pool.get('res.currency')
if context is None:
context = {}
@@ -1381,6 +1382,34 @@ class account_move(osv.osv):
cr.execute('SELECT SUM(%s) FROM account_move_line WHERE move_id=%%s AND id!=%%s' % (mode,), (move.id, line_id2))
result = cr.fetchone()[0] or 0.0
cr.execute('update account_move_line set '+mode2+'=%s where id=%s', (result, line_id))
#adjust also the amount in currency if needed
cr.execute("select currency_id, sum(amount_currency) as amount_currency from account_move_line where move_id = %s and currency_id is not null group by currency_id", (move.id,))
for row in cr.dictfetchall():
currency_id = currency_obj.browse(cr, uid, row['currency_id'], context=context)
if not currency_obj.is_zero(cr, uid, currency_id, row['amount_currency']):
amount_currency = row['amount_currency'] * -1
account_id = amount_currency > 0 and move.journal_id.default_debit_account_id.id or move.journal_id.default_credit_account_id.id
cr.execute('select id from account_move_line where move_id=%s and centralisation=\'currency\' and currency_id = %slimit 1', (move.id, row['currency_id']))
res = cr.fetchone()
if res:
cr.execute('update account_move_line set amount_currency=%s , account_id=%s where id=%s', (amount_currency, account_id, res[0]))
else:
context.update({'journal_id': move.journal_id.id, 'period_id': move.period_id.id})
line_id = self.pool.get('account.move.line').create(cr, uid, {
'name': _('Currency Adjustment'),
'centralisation': 'currency',
'account_id': account_id,
'move_id': move.id,
'journal_id': move.journal_id.id,
'period_id': move.period_id.id,
'date': move.period_id.date_stop,
'debit': 0.0,
'credit': 0.0,
'currency_id': row['currency_id'],
'amount_currency': amount_currency,
}, context)
return True
#
+1 -1
View File
@@ -503,7 +503,7 @@ class account_move_line(osv.osv):
}),
'date_created': fields.date('Creation date', select=True),
'analytic_lines': fields.one2many('account.analytic.line', 'move_id', 'Analytic lines'),
'centralisation': fields.selection([('normal','Normal'),('credit','Credit Centralisation'),('debit','Debit Centralisation')], 'Centralisation', size=6),
'centralisation': fields.selection([('normal','Normal'),('credit','Credit Centralisation'),('debit','Debit Centralisation'),('currency','Currency Adjustment')], 'Centralisation', size=8),
'balance': fields.function(_balance, fnct_search=_balance_search, method=True, string='Balance'),
'state': fields.selection([('draft','Unbalanced'), ('valid','Valid')], 'State', readonly=True,
help='When new move line is created the state will be \'Draft\'.\n* When all the payments are done it will be in \'Valid\' state.'),
-1
View File
@@ -19,7 +19,6 @@
rml="account/report/account_print_invoice.rml"
string="Invoices"
attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/',''))"
attachment_use="1"
multi="True"/>
<report id="account_transfers" model="account.transfer" name="account.transfer" string="Transfers" xml="account/report/transfer.xml" xsl="account/report/transfer.xsl"/>
<report auto="False" id="account_intracom" menu="False" model="account.move.line" name="account.intracom" string="IntraCom"/>
+204 -188
View File
File diff suppressed because it is too large Load Diff
+200 -185
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -263,7 +263,7 @@ class account_invoice(osv.osv):
'move_lines':fields.function(_get_lines, method=True, type='many2many', relation='account.move.line', string='Entry Lines'),
'residual': fields.function(_amount_residual, method=True, digits_compute=dp.get_precision('Account'), string='Residual',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line'], 50),
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line','move_id'], 50),
'account.invoice.tax': (_get_invoice_tax, None, 50),
'account.invoice.line': (_get_invoice_line, ['price_unit','invoice_line_tax_id','quantity','discount','invoice_id'], 50),
'account.move.line': (_get_invoice_from_line, None, 50),
+2 -2
View File
@@ -88,10 +88,10 @@ class account_balance(report_sxw.rml_parse, common_report_header):
}
self.sum_debit += account_rec['debit']
self.sum_credit += account_rec['credit']
if disp_acc == 'bal_movement':
if disp_acc == 'movement':
if not currency_obj.is_zero(self.cr, self.uid, currency, res['credit']) or not currency_obj.is_zero(self.cr, self.uid, currency, res['debit']) or not currency_obj.is_zero(self.cr, self.uid, currency, res['balance']):
self.result_acc.append(res)
elif disp_acc == 'bal_solde':
elif disp_acc == 'not_zero':
if not currency_obj.is_zero(self.cr, self.uid, currency, res['balance']):
self.result_acc.append(res)
else:
+1 -1
View File
@@ -233,7 +233,7 @@
<td>
<para style="terp_default_Centre_8">[[ get_fiscalyear(data) or '' ]]</para>
</td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td> <para style="terp_default_Centre_8">[[ get_filter(data)=='No Filter' and get_filter(data) or removeParentNode('para') ]] </para>
<blockTable colWidths="60.0,60.0" style="Table5">[[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
<tr>
@@ -137,16 +137,17 @@ class report_balancesheet_horizontal(report_sxw.rml_parse, common_report_header)
'name': account.name,
'level': account.level,
'balance':account.balance,
'type': account.type,
}
currency = account.currency_id and account.currency_id or account.company_id.currency_id
if typ == 'liability' and account.type <> 'view' and (account.debit <> account.credit):
self.result_sum_dr += account.balance
if typ == 'asset' and account.type <> 'view' and (account.debit <> account.credit):
self.result_sum_cr += account.balance
if data['form']['display_account'] == 'bal_movement':
if data['form']['display_account'] == 'movement':
if not currency_pool.is_zero(self.cr, self.uid, currency, account.credit) or not currency_pool.is_zero(self.cr, self.uid, currency, account.debit) or not currency_pool.is_zero(self.cr, self.uid, currency, account.balance):
accounts_temp.append(account_dict)
elif data['form']['display_account'] == 'bal_solde':
elif data['form']['display_account'] == 'not_zero':
if not currency_pool.is_zero(self.cr, self.uid, currency, account.balance):
accounts_temp.append(account_dict)
else:
@@ -163,10 +164,12 @@ class report_balancesheet_horizontal(report_sxw.rml_parse, common_report_header)
for i in range(0,max(len(cal_list['liability']),len(cal_list['asset']))):
if i < len(cal_list['liability']) and i < len(cal_list['asset']):
temp={
'type': cal_list['liability'][i]['type'],
'code': cal_list['liability'][i]['code'],
'name': cal_list['liability'][i]['name'],
'level': cal_list['liability'][i]['level'],
'balance':cal_list['liability'][i]['balance'],
'type1': cal_list['asset'][i]['type'],
'code1': cal_list['asset'][i]['code'],
'name1': cal_list['asset'][i]['name'],
'level1': cal_list['asset'][i]['level'],
@@ -176,10 +179,12 @@ class report_balancesheet_horizontal(report_sxw.rml_parse, common_report_header)
else:
if i < len(cal_list['asset']):
temp={
'type': '',
'code': '',
'name': '',
'level': False,
'balance':False,
'type1': cal_list['asset'][i]['type'],
'code1': cal_list['asset'][i]['code'],
'name1': cal_list['asset'][i]['name'],
'level1': cal_list['asset'][i]['level'],
@@ -188,10 +193,12 @@ class report_balancesheet_horizontal(report_sxw.rml_parse, common_report_header)
self.result_temp.append(temp)
if i < len(cal_list['liability']):
temp={
'type': cal_list['liability'][i]['type'],
'code': cal_list['liability'][i]['code'],
'name': cal_list['liability'][i]['name'],
'level': cal_list['liability'][i]['level'],
'balance':cal_list['liability'][i]['balance'],
'type1': '',
'code1': '',
'name1': '',
'level1': False,
+51 -28
View File
@@ -26,7 +26,6 @@
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,0" stop="-1,0"/>
<lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,1" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table5">
<blockAlignment value="LEFT"/>
@@ -115,7 +114,7 @@
<paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_header_Left" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
@@ -124,6 +123,36 @@
<paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_1_code" fontName="Helvetica-Bold" fontSize="9.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_1_name" fontName="Helvetica-Bold" fontSize="9.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_1_balance" fontName="Helvetica-Bold" fontSize="9.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_2_code" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_2_name" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="10.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_2_balance" fontName="Helvetica-Bold" fontSize="8.0" leftIndent=".0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_code" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_code_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_name" fontName="Helvetica" fontSize="8.0" leftIndent="20.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="20.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_balance" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_balance_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_4_name" fontName="Helvetica" fontSize="8.0" leftIndent="30.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_4_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="30.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<blockTableStyle id="Table1">
<blockTopPadding start="0,0" stop="-1,0" length="15"/>
<blockFont name="Helvetica-Bold" size="10.0" />
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,0" stop="-1,1" thickness="1"/>
</blockTableStyle>
<blockTableStyle id="Table2">
<blockTopPadding start="0,0" stop="-1,0" length="10"/>
<blockAlignment value="LEFT"/>
<lineStyle kind="LINEBELOW" colorName="#666666" start="1,1" stop="1,1"/>
</blockTableStyle>
<blockTableStyle id="Table3">
<blockValign value="TOP"/>
</blockTableStyle>
</stylesheet>
<images/>
<story>
@@ -174,7 +203,7 @@
</tr>
</blockTable>
</td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ get_target_move(data) ]] </para></td>
</tr>
</blockTable>
@@ -187,35 +216,32 @@
<blockTable colWidths="539.0" style="Table_Company_Name">
<tr>
<td>
<para style="terp_header_Centre">Assets</para>
<para style="terp_header_Left">Assets</para>
</td>
</tr>
</blockTable>
<para style="terp_default_9">
<font color="white"> </font>
</para>
<blockTable colWidths="100.0,326.0,113.0" style="Table1" repeatRows="1">
<blockTable colWidths="100.0,326.0,113.0" style="Table_Account_Line_Title" repeatRows="1">
<tr>
<td>
<para style="terp_default_Bold_9">Code</para>
</td>
<td>
<para style="terp_default_Bold_9">Assets</para>
<para style="terp_default_Bold_9">Account</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Balance</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_9"><font face="Times-Roman">[[ repeatIn(get_lines_another('asset'), 'a') ]]</font>[[ a['code'] ]]<font>[[ a['level']&lt;4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]</font></para>
</td>
<td>
<para style="terp_default_9"><font color="white">[[ '. '*(a['level']-1) ]]</font><font>[[ a['level']&lt;4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]</font></para>
</td>
<td>
<para style="terp_default_Right_9"><font>[[ a['level']&lt;4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]</font><font>[[ formatLang(a['balance']) ]] [[ company.currency_id.symbol ]]</font></para>
</td>
<tr style="Table3">
[[ repeatIn(get_lines_another('asset'),'a' ) ]]
[[ setTag('tr','tr',{'style': 'Table'+str(min(3,a['level']))}) ]]
<td><para style="terp_level_3_code">[[ (a['type'] =='view' and a['level'] &gt;= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_code'}) ]]<i>[[ a['code'] ]]</i></para></td>
<td><para style="terp_level_3_name">[[ (a['type'] =='view' and a['level'] &gt;= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a['level']))+'_name'}) ]][[ a['name'] ]]</para></td>
<td>[[ (a['level'] &lt;&gt;2) or removeParentNode('td') ]]<para style="terp_level_3_balance">[[ (a['type'] =='view' and a['level'] &gt;= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_balance'}) ]][[ formatLang(a['balance']) ]] [[company.currency_id.symbol ]]</para></td>
<td>[[ a['level'] == 2 or removeParentNode('td') ]]<para style="terp_level_2_balance"><u>[[ formatLang(a['balance']) ]] [[company.currency_id.symbol ]]</u></para></td>
</tr>
</blockTable>
<blockTable colWidths="426.0,113.0" style="Table_Net_Profit_Loss">
@@ -235,7 +261,7 @@
<blockTable colWidths="539.0" style="Table_Company_Name">
<tr>
<td>
<para style="terp_header_Centre">Liabilities</para>
<para style="terp_header_Left">Liabilities</para>
</td>
</tr>
</blockTable>
@@ -245,22 +271,19 @@
<para style="terp_default_Bold_9">Code</para>
</td>
<td>
<para style="terp_default_Bold_9">Liabilities</para>
<para style="terp_default_Bold_9">Account</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Balance</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_9"><font face="Times-Roman">[[ repeatIn(get_lines_another('liability'), 'a') ]]</font>[[ a['code'] ]]<font>[[ a['level']&lt;4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]] </font><font>[[ a['name']=='Net Profit' and setTag('para','para',{'style':'terp_default_Bold_9'}) or removeParentNode('font') ]]</font></para>
</td>
<td>
<para style="terp_default_9"><font color="white">[[ '. '*(a['level']-1) ]]</font><font>[[ a['level']&lt;4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a['name'] ]]</font><font>[[ a['name']=='Net Profit' and setTag('para','para',{'style':'terp_default_Bold_9'}) or removeParentNode('font') ]]</font></para>
</td>
<td>
<para style="terp_default_Right_9"><font>[[ a['level']&lt;4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]</font><font>[[ formatLang(a['balance']) ]] [[ company.currency_id.symbol ]]</font><font>[[ a['name']=='Net Profit' and setTag('para','para',{'style':'terp_default_Right_9_Bold'}) or removeParentNode('font') ]]</font></para>
</td>
<tr style="Table3">
[[ repeatIn(get_lines_another('liability'),'a' ) ]]
[[ setTag('tr','tr',{'style': 'Table'+str(min(3,a['level']))}) ]]
<td><para style="terp_level_3_code">[[ (a['type'] =='view' and a['level'] &gt;= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_code'}) ]]<i>[[ a['code'] ]]</i></para></td>
<td><para style="terp_level_3_name">[[ (a['type'] =='view' and a['level'] &gt;= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a['level']))+'_name'}) ]][[ a['name'] ]]</para></td>
<td>[[ (a['level'] &lt;&gt;2) or removeParentNode('td') ]]<para style="terp_level_3_balance">[[ (a['type'] =='view' and a['level'] &gt;= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_balance'}) ]][[ formatLang(a['balance']) ]] [[company.currency_id.symbol ]]</para></td>
<td>[[ a['level'] == 2 or removeParentNode('td') ]]<para style="terp_level_2_balance"><u>[[ formatLang(a['balance']) ]] [[company.currency_id.symbol ]]</u></para></td>
</tr>
</blockTable>
<blockTable colWidths="426.0,113.0" style="Table_Net_Profit_Loss">
@@ -163,7 +163,7 @@
</tr>
</blockTable>
</td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ get_target_move(data) ]]</para></td>
</tr>
</blockTable>
@@ -117,10 +117,10 @@ class general_ledger(report_sxw.rml_parse, common_report_header):
num_entry = self.cr.fetchone()[0] or 0
sold_account = self._sum_balance_account(child_account)
self.sold_accounts[child_account.id] = sold_account
if self.display_account == 'bal_movement':
if self.display_account == 'movement':
if child_account.type != 'view' and num_entry <> 0:
res.append(child_account)
elif self.display_account == 'bal_solde':
elif self.display_account == 'not_zero':
if child_account.type != 'view' and num_entry <> 0:
if not currency_obj.is_zero(self.cr, self.uid, currency, sold_account):
res.append(child_account)
@@ -395,7 +395,7 @@
<para style="terp_default_Centre_7">[[', '.join([ lt or '' for lt in get_journal(data) ]) ]]</para>
</td>
<td>
<para style="terp_default_Centre_7">[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]</para>
<para style="terp_default_Centre_7">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para>
</td>
<td>
<para style="terp_default_Centre_7">[[ get_filter(data)=='No Filter' and get_filter(data) or removeParentNode('para') ]]</para>
@@ -180,7 +180,7 @@
</tr>
</blockTable>
</td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ get_target_move(data) ]]</para></td>
</tr>
</blockTable>
+7 -3
View File
@@ -101,6 +101,7 @@ class report_pl_account_horizontal(report_sxw.rml_parse, common_report_header):
cal_list = {}
account_id = data['form'].get('chart_account_id', False)
company_currency = account_pool.browse(self.cr, self.uid, account_id).company_id.currency_id
account_ids = account_pool._get_children_and_consol(cr, uid, account_id, context=ctx)
accounts = account_pool.browse(cr, uid, account_ids, context=ctx)
@@ -113,15 +114,18 @@ class report_pl_account_horizontal(report_sxw.rml_parse, common_report_header):
self.result_sum_dr += account.debit - account.credit
if typ == 'income' and account.type <> 'view' and (account.debit <> account.credit):
self.result_sum_cr += account.credit - account.debit
if data['form']['display_account'] == 'bal_movement':
if data['form']['display_account'] == 'movement':
if not currency_pool.is_zero(self.cr, self.uid, currency, account.credit) or not currency_pool.is_zero(self.cr, self.uid, currency, account.debit) or not currency_pool.is_zero(self.cr, self.uid, currency, account.balance):
accounts_temp.append(account)
elif data['form']['display_account'] == 'bal_solde':
elif data['form']['display_account'] == 'not_zero':
if not currency_pool.is_zero(self.cr, self.uid, currency, account.balance):
accounts_temp.append(account)
else:
accounts_temp.append(account)
if self.result_sum_dr > self.result_sum_cr:
if currency_pool.is_zero(self.cr, self.uid, company_currency, (self.result_sum_dr-self.result_sum_cr)):
self.res_pl['type'] = None
self.res_pl['balance'] = 0.0
elif self.result_sum_dr > self.result_sum_cr:
self.res_pl['type'] = _('Net Loss')
self.res_pl['balance'] = (self.result_sum_dr - self.result_sum_cr)
else:
+54 -50
View File
@@ -24,9 +24,8 @@
</blockTableStyle>
<blockTableStyle id="Table_Account_Line_Title">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<blockValign value="MIDDLE"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,0" stop="-1,0"/>
<lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,1" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table3">
<blockAlignment value="LEFT"/>
@@ -41,17 +40,6 @@
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,0" stop="-1,0"/>
<lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,1" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table3">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table4">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
@@ -136,7 +124,38 @@
<paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
</stylesheet>
<paraStyle name="terp_level_1_code" fontName="Helvetica-Bold" fontSize="9.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_1_name" fontName="Helvetica-Bold" fontSize="9.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_1_balance" fontName="Helvetica-Bold" fontSize="9.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_2_code" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_2_name" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="10.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_2_balance" fontName="Helvetica-Bold" fontSize="8.0" leftIndent=".0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_code" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_code_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_name" fontName="Helvetica" fontSize="8.0" leftIndent="20.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="20.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_balance" fontName="Helvetica" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_3_balance_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="0.0" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_4_name" fontName="Helvetica" fontSize="8.0" leftIndent="30.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_level_4_name_bold" fontName="Helvetica-Bold" fontSize="8.0" leftIndent="30.0" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<blockTableStyle id="Table1">
<blockTopPadding start="0,0" stop="-1,0" length="15"/>
<blockFont name="Helvetica-Bold" size="10.0" />
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,0" stop="-1,1" thickness="1"/>
</blockTableStyle>
<blockTableStyle id="Table2">
<blockTopPadding start="0,0" stop="-1,0" length="10"/>
<blockAlignment value="LEFT"/>
<lineStyle kind="LINEBELOW" colorName="#666666" start="1,1" stop="1,1"/>
</blockTableStyle>
<blockTableStyle id="Table3">
<blockValign value="TOP"/>
</blockTableStyle>
</stylesheet>
<images/>
<story>
<blockTable colWidths="539.0" style="Table_Company_Name">
@@ -156,7 +175,7 @@
<td><para style="terp_tblheader_General_Centre">Chart of Account </para></td>
<td><para style="terp_tblheader_General_Centre">Fiscal Year</para></td>
<td><para style="terp_tblheader_General_Centre">Filter By [[ get_filter(data)!='No Filter' and get_filter(data) ]]</para></td>
<td><para style="terp_tblheader_General_Centre">Display Account</para></td>
<td><para style="terp_tblheader_General_Centre">Display Account</para></td>
<td><para style="terp_tblheader_General_Centre">Target Moves</para></td>
</tr>
<tr>
@@ -184,42 +203,33 @@
</tr>
</blockTable>
</td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='bal_all' and 'All') or (data['form']['display_account']=='bal_movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
<td><para style="terp_default_Centre_8">[[ get_target_move(data) ]] </para></td>
</tr>
</blockTable>
<para style="Standard">
<font color="white"> </font>
</para>
<para style="Standard">
<font color="white"> </font>
</para>
<para style="terp_header">Expenses</para>
<blockTable colWidths="100.0,326.0,113.0" style="Table_Account_Line_Title" repeatRows="1">
<tr>
<td>
<para style="terp_default_Bold_9">Code</para>
</td>
<td>
<para style="terp_default_Bold_9">Expenses</para>
<para style="terp_default_Bold_9">Account</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Balance</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_9">
<font face="Times-Roman">[[ repeatIn(get_lines_another('expense'),'a' ) ]] </font>[[ a.code ]]<font>[[ a.level&lt;4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]</font>
</para>
</td>
<td>
<para style="terp_default_9">
<font color="white">[[ '. '*(a.level-1) ]]</font><font>[[ a.level&lt;4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a.name ]]</font>
</para>
</td>
<td>
<para style="terp_default_Right_9"><font>[[ a.level&lt;4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]</font><font>[[ formatLang(a.balance) ]] [[ company.currency_id.symbol ]]</font></para>
</td>
<tr style="Table3">
[[ repeatIn(get_lines_another('expense'),'a' ) ]]
[[ setTag('tr','tr',{'style': 'Table'+str(min(3,a.level))}) ]]
<td><para style="terp_level_3_code">[[ (a.type =='view' and a.level &gt;= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_code'}) ]]<i>[[ a.code ]]</i></para></td>
<td><para style="terp_level_3_name">[[ (a.type =='view' and a.level &gt;= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a.level))+'_name'}) ]][[ a.name ]]</para></td>
<td>[[ (a.level &lt;&gt;2) or removeParentNode('td') ]]<para style="terp_level_3_balance">[[ (a.type =='view' and a.level &gt;= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_balance'}) ]][[ formatLang(a.balance) ]] [[company.currency_id.symbol ]]</para></td>
<td>[[ a.level == 2 or removeParentNode('td') ]]<para style="terp_level_2_balance"><u>[[ formatLang(a.balance) ]] [[company.currency_id.symbol ]]</u></para></td>
</tr>
</blockTable>
<blockTable colWidths="100.0,326.0,113.0" style="Table_Net_Profit_Loss">
@@ -249,32 +259,26 @@
<para style="terp_default_Right_9_Bold">
<font color="white"> </font>
</para>
<blockTable colWidths="100.0,326.0,113.0" style="Table2" repeatRows="1">
<para style="terp_header">Incomes</para>
<blockTable colWidths="100.0,326.0,113.0" style="Table_Account_Line_Title" repeatRows="1">
<tr>
<td>
<para style="terp_default_Bold_9">Code</para>
</td>
<td>
<para style="terp_default_Bold_9">Incomes</para>
<para style="terp_default_Bold_9">Account</para>
</td>
<td>
<para style="P1">Balance</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_9">
<font face="Times-Roman">[[ repeatIn(get_lines_another('income'),'a') ]] </font>[[ a.code ]]<font>[[ a.level&lt;4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]]</font>
</para>
</td>
<td>
<para style="terp_default_9">
<font color="white">[[ '. '*(a.level-1) ]]</font><font>[[ a.level&lt;4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) or removeParentNode('font') ]][[ a.name ]]</font>
</para>
</td>
<td>
<para style="terp_default_Right_9"><font>[[ a.level&lt;4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]]</font><font>[[ formatLang(a.balance) ]] [[ company.currency_id.symbol ]]</font></para>
</td>
<tr style="Table3">
[[ repeatIn(get_lines_another('income'),'a' ) ]]
[[ setTag('tr','tr',{'style': 'Table'+str(min(3,a.level))}) ]]
<td><para style="terp_level_3_code">[[ (a.type =='view' and a.level &gt;= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_code'}) ]]<i>[[ a.code ]]</i></para></td>
<td><para style="terp_level_3_name">[[ (a.type =='view' and a.level &gt;= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a.level))+'_name'}) ]][[ a.name ]]</para></td>
<td>[[ (a.level &lt;&gt;2) or removeParentNode('td') ]]<para style="terp_level_3_balance">[[ (a.type =='view' and a.level &gt;= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_balance'}) ]][[ formatLang(a.balance) ]] [[company.currency_id.symbol ]]</para></td>
<td>[[ a.level == 2 or removeParentNode('td') ]]<para style="terp_level_2_balance"><u>[[ formatLang(a.balance) ]] [[company.currency_id.symbol ]]</u></para></td>
</tr>
</blockTable>
<blockTable colWidths="100.0,326.0,113.0" style="Table4">
@@ -31,12 +31,13 @@ class account_treasury_report(osv.osv):
def _compute_balances(self, cr, uid, ids, field_names, arg=None, context=None,
query='', query_params=()):
all_treasury_lines = self.search(cr, uid, [], context=context)
current_sum = 0
all_companies = self.pool.get('res.company').search(cr, uid, [], context=context)
current_sum = dict((company, 0.0) for company in all_companies)
res = dict((id, dict((fn, 0.0) for fn in field_names)) for id in all_treasury_lines)
for record in self.browse(cr, uid, all_treasury_lines, context=context):
res[record.id]['starting_balance'] = current_sum
current_sum += record.balance
res[record.id]['ending_balance'] = current_sum
res[record.id]['starting_balance'] = current_sum[record.company_id.id]
current_sum[record.company_id.id] += record.balance
res[record.id]['ending_balance'] = current_sum[record.company_id.id]
return res
_columns = {
@@ -103,6 +103,14 @@ class account_fiscalyear_close(osv.osv_memory):
if accnt_type_data.close_method=='none' or account.type == 'view':
continue
if accnt_type_data.close_method=='balance':
balance_in_currency = 0.0
if account.currency_id:
cr.execute('SELECT sum(amount_currency) as balance_in_currency FROM account_move_line ' \
'WHERE account_id = %s ' \
'AND ' + query_line + ' ' \
'AND currency_id = %s', (account.id, account.currency_id.id))
balance_in_currency = cr.dictfetchone()['balance_in_currency']
if abs(account.balance)>0.0001:
obj_acc_move_line.create(cr, uid, {
'debit': account.balance>0 and account.balance,
@@ -111,7 +119,9 @@ class account_fiscalyear_close(osv.osv_memory):
'date': period.date_start,
'journal_id': new_journal.id,
'period_id': period.id,
'account_id': account.id
'account_id': account.id,
'currency_id': account.currency_id and account.currency_id.id or False,
'amount_currency': balance_in_currency,
}, {'journal_id': new_journal.id, 'period_id':period.id})
if accnt_type_data.close_method == 'unreconciled':
offset = 0
@@ -48,7 +48,7 @@ class account_bs_report(osv.osv_memory):
}
_defaults={
'display_type': True,
'display_type': False,
'journal_ids': [],
'reserve_account_id': _get_def_reserve_account,
}
@@ -26,13 +26,13 @@ class account_common_account_report(osv.osv_memory):
_description = 'Account Common Account Report'
_inherit = "account.common.report"
_columns = {
'display_account': fields.selection([('bal_all','All'), ('bal_movement','With movements'),
('bal_solde','With balance is not equal to 0'),
'display_account': fields.selection([('all','All'), ('movement','With movements'),
('not_zero','With balance is not equal to 0'),
],'Display Accounts', required=True),
}
_defaults = {
'display_account': 'bal_all',
'display_account': 'movement',
}
def pre_print_report(self, cr, uid, ids, data, context=None):
@@ -33,7 +33,7 @@ class account_pl_report(osv.osv_memory):
}
_defaults = {
'display_type': True,
'display_type': False,
'journal_ids': [],
'target_move': False
}
+1
View File
@@ -38,6 +38,7 @@ user rights to Demo user.
"depends" : ["account"],
'update_xml': [
'security/account_security.xml',
'account_accountant_data.xml'
],
'demo_xml': ['account_accountant_demo.xml'],
'test': [],
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--
It's easier for new users to not activate this (ex: they misconfigure
header and footer.)
<record model="ir.actions.report.xml" id="account.account_invoices">
<field name="attachment_use">1</field>
</record>
-->
</data>
</openerp>
+1 -1
View File
@@ -20,7 +20,7 @@
##############################################################################
from osv import fields, osv
from osv.osv import osv_pool, object_proxy
from osv.osv import object_proxy
from tools.translate import _
import pooler
import time
File diff suppressed because it is too large Load Diff
+27 -10
View File
@@ -26,18 +26,35 @@
"website" : "http://www.openerp.com",
"category" : "Tools",
"description": """
This module replaces the cleartext password in the database with a password hash.
=================================================================================
Replaces cleartext passwords in the database with a secure hash
===============================================================
For your existing user base, the removal of the cleartext
passwords occurs the first time a user logs into the database,
after installing base_crypt.
It prevents anyone from reading the original password.
For your existing user base, the removal of the cleartext passwords occurs the first time
a user logs into the database, after installing base_crypt.
After installing this module it won't be possible to recover a forgotten password for your
users, the only solution is for an admin to set a new password.
All passwords will be replaced by a secure, salted, cryptographic
hash, preventing anyone from reading the original password in
the database.
After installing this module it won't be possible to recover a
forgotten password for your users, the only solution is for an
admin to set a new password.
Security Warning
++++++++++++++++
Installing this module does not mean you can ignore other security measures,
as the password is still transmitted unencrypted on the network, unless you
are using a secure protocol such as XML-RPCS.
It also does not protect the rest of the content of the database, which may
contain critical data. Appropriate security measures need to be implemented
by the system administrator in all areas, such as: protection of database
backups, system files, remote shell access, physical server access, etc.
Interation with LDAP authentication
+++++++++++++++++++++++++++++++++++
This module is currently not compatible with the ``user_ldap`` module and
will disable LDAP authentication completely if installed at the same time.
Note: installing this module does not mean you can ignore basic security measures,
as the password is still transmitted unencrypted on the network (by the client),
unless you are using a secure protocol such as XML-RPCS.
""",
"depends" : ["base"],
"data" : [],
@@ -20,53 +20,11 @@
##############################################################################
from xml.dom import minidom
from osv.osv import osv_pool
from osv import fields,osv
import pooler
import string
import tools
class recording_objects_proxy(osv_pool):
def execute(self, *args, **argv):
if args[3] == 'create':
_old_args = args[4].copy()
elif args[3] == 'write':
_old_args = args[5].copy()
elif len(args) >= 5 and isinstance(args[4], dict):
_old_args = args[4].copy()
elif len(args) > 5 and args[3] != 'write' and isinstance(args[5], dict):
_old_args = args[5].copy()
else:
_old_args = None
res = super(recording_objects_proxy, self).execute(*args, **argv)
pool = pooler.get_pool(args[0])
mod = pool.get('ir.module.record')
if mod and mod.recording:
if args[3] not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink'):
if _old_args is not None:
if args[3] != 'write' and args[3] != 'create' and len(args) > 5 and isinstance(args[5], dict):
args=list(args)
args[5]=_old_args
args=tuple(args)
mod.recording_data.append(('osv_memory_action', args, argv ,None))
else:
if args[3] == 'create':
args[4].update(_old_args)
elif args[3] == 'write':
args[5].update(_old_args)
mod.recording_data.append(('query', args, argv,res))
return res
def exec_workflow(self, *args, **argv):
res = super(recording_objects_proxy, self).exec_workflow(*args, **argv)
pool = pooler.get_pool(args[0])
mod = pool.get('ir.module.record')
if mod and mod.recording:
mod.recording_data.append(('workflow', args, argv))
return res
recording_objects_proxy()
class xElement(minidom.Element):
"""dom.Element with compact print
@@ -19,7 +19,7 @@
<node oor:name="Submenu">
<node oor:name="m11" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>service:org.openoffice.openerp.report.serverparam?execute</value>
<value>service:org.openoffice.openerp.report.change?execute</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value/>
@@ -283,7 +283,7 @@
<node oor:name="org.openoffice.openerp.report" oor:op="replace">
<node oor:name="m11" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>service:org.openoffice.openerp.report.serverparam?execute</value>
<value>service:org.openoffice.openerp.report.change?execute</value>
</prop>
<prop oor:name="ImageIdentifier" oor:type="xs:string">
<value/>
@@ -593,7 +593,7 @@
</node>
<node oor:name="org.openoffice.openerp.report.image8" oor:op="replace">
<prop oor:name="URL">
<value>service:org.openoffice.openerp.report.serverparam?execute</value>
<value>service:org.openoffice.openerp.report.change?execute</value>
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageSmallURL" oor:type="xs:string">
@@ -44,68 +44,96 @@
#
#
##############################################################################
import uno
import string
import unohelper
import xmlrpclib
from com.sun.star.task import XJobExecutor
if __name__<>"package":
from lib.gui import *
from lib.error import ErrorDialog
from lib.functions import *
from lib.logreport import *
from lib.rpc import *
from ServerParameter import *
database="test"
class Change:
def __init__(self, aVal= None, sURL=""):
class Change( unohelper.Base, XJobExecutor ):
def __init__(self,ctx):
self.ctx = ctx
self.module = "openerp_report"
self.version = "0.1"
desktop=getDesktop()
log_detail(self)
self.logobj=Logger()
doc = desktop.getCurrentComponent()
docinfo=doc.getDocumentInfo()
self.protocol = {
'XML-RPC': 'http://',
'XML-RPC secure': 'https://',
'NET-RPC': 'socket://',
}
host=port=protocol=''
if docinfo.getUserFieldValue(0):
m = re.match('^(http[s]?://|socket://)([\w.\-]+):(\d{1,5})$', docinfo.getUserFieldValue(0) or '')
host = m.group(2)
port = m.group(3)
protocol = m.group(1)
if protocol:
for (key, value) in self.protocol.iteritems():
if value==protocol:
protocol=key
break
else:
protocol='XML-RPC'
self.win=DBModalDialog(60, 50, 120, 90, "Connect to Open ERP Server")
self.win.addFixedText("lblVariable", 38, 12, 25, 15, "Server ")
self.win.addEdit("txtHost",-2,9,60,15,sURL[sURL.find("/")+2:sURL.rfind(":")])
self.win.addEdit("txtHost",-2,9,60,15, host or 'localhost')
self.win.addFixedText("lblReportName",45 , 31, 15, 15, "Port ")
self.win.addEdit("txtPort",-2,28,60,15,sURL[sURL.rfind(":")+1:])
self.win.addEdit("txtPort",-2,28,60,15, port or "8069")
self.win.addFixedText("lblLoginName", 2, 51, 60, 15, "Protocol Connection")
self.win.addComboListBox("lstProtocol", -2, 48, 60, 15, True)
self.lstProtocol = self.win.getControl( "lstProtocol" )
# self.lstProtocol.addItem( "XML-RPC", 0)
#self.lstProtocol.addItem( "XML-RPC secure", 1)
#self.lstProtocol.addItem( "NET-RPC (faster)", 2)
self.win.addButton( 'btnOK', -2, -5, 30, 15, 'Ok', actionListenerProc = self.btnOk_clicked )
self.win.addButton( 'btnNext', -2, -5, 30, 15, 'Next', actionListenerProc = self.btnNext_clicked )
self.win.addButton( 'btnCancel', -2 - 30 - 5 ,-5, 30, 15, 'Cancel', actionListenerProc = self.btnCancel_clicked )
self.aVal=aVal
self.protocol = {
'XML-RPC': 'http://',
'XML-RPC secure': 'https://',
'NET-RPC': 'socket://',
}
for i in self.protocol.keys():
self.lstProtocol.addItem(i,self.lstProtocol.getItemCount() )
self.win.doModalDialog( "lstProtocol", protocol)
sValue=self.protocol.keys()[0]
if sURL<>"":
sValue=self.protocol.keys()[self.protocol.values().index(sURL[:sURL.find("/")+2])]
self.win.doModalDialog( "lstProtocol", sValue)
def btnOk_clicked(self,oActionEvent):
def btnNext_clicked(self,oActionEvent):
global url
url = self.protocol[self.win.getListBoxSelectedItem("lstProtocol")]+self.win.getEditText("txtHost")+":"+self.win.getEditText("txtPort")
self.sock=RPCSession(url)
desktop=getDesktop()
doc = desktop.getCurrentComponent()
docinfo=doc.getDocumentInfo()
docinfo.setUserFieldValue(0,url)
res=self.sock.listdb()
if res == -1:
self.aVal.append(url)
elif res == 0:
self.aVal.append("No Database found !!!")
else:
self.aVal.append(url)
self.aVal.append(res)
aVal=''
#aVal= Fetature used
try:
url = self.protocol[self.win.getListBoxSelectedItem("lstProtocol")]+self.win.getEditText("txtHost")+":"+self.win.getEditText("txtPort")
self.sock=RPCSession(url)
desktop=getDesktop()
doc = desktop.getCurrentComponent()
docinfo=doc.getDocumentInfo()
docinfo.setUserFieldValue(0,url)
res=self.sock.listdb()
self.win.endExecute()
ServerParameter(aVal,url)
except :
import traceback,sys
info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
self.logobj.log_write('ServerParameter', LOG_ERROR, info)
ErrorDialog("Connection to server fail. please check your Server Parameter", "", "Error")
self.win.endExecute()
def btnCancel_clicked(self,oActionEvent):
self.win.endExecute()
def btnCancel_clicked( self, oActionEvent ):
self.win.endExecute()
if __name__<>"package" and __name__=="__main__":
Change(None)
elif __name__=="package":
g_ImplementationHelper.addImplementation( Change, "org.openoffice.openerp.report.change", ("com.sun.star.task.Job",),)
@@ -51,5 +51,5 @@ if __name__<>"package":
class LoginTest:
def __init__(self):
if not loginstatus:
ServerParameter(None)
Change(None)
@@ -59,8 +59,7 @@ if __name__<>"package":
database="test"
class ServerParameter( unohelper.Base, XJobExecutor ):
def __init__(self,ctx):
self.ctx = ctx
def __init__(self, aVal= None, sURL=""):
self.module = "openerp_report"
self.version = "0.1"
desktop=getDesktop()
@@ -69,19 +68,12 @@ class ServerParameter( unohelper.Base, XJobExecutor ):
doc = desktop.getCurrentComponent()
docinfo=doc.getDocumentInfo()
self.win=DBModalDialog(60, 50, 160, 108, "Server Connection Parameter")
self.win.addFixedText("lblVariable", 2, 12, 35, 15, "Server URL")
if docinfo.getUserFieldValue(0)=="":
docinfo.setUserFieldValue(0,"http://localhost:8069")
self.win.addEdit("txtHost",-34,9,91,15,docinfo.getUserFieldValue(0))
self.win.addButton('btnChange',-2 ,9,30,15,'Change', actionListenerProc = self.btnChange_clicked )
docinfo.setUserFieldValue(0,"http://localhost:8069")
self.win.addFixedText("txtHost",-20,12,105,15,sURL)
self.win.addFixedText("lblDatabaseName", 6, 31, 31, 15, "Database")
#self.win.addFixedText("lblMsg", -2,28,123,15)
# self.win.addComboListBox("lstDatabase", -2,28,123,15, True)
# self.lstDatabase = self.win.getControl( "lstDatabase" )
#self.win.selectListBoxItem( "lstDatabase", docinfo.getUserFieldValue(2), True )
#self.win.setEnabled("lblMsg",False)
self.win.addFixedText("lblLoginName", 17, 51, 20, 15, "Login")
self.win.addEdit("txtLoginName",-2,48,123,15,docinfo.getUserFieldValue(1))
@@ -92,8 +84,9 @@ class ServerParameter( unohelper.Base, XJobExecutor ):
self.win.addButton('btnOK',-2 ,-5, 60,15,'Connect' ,actionListenerProc = self.btnOk_clicked )
self.win.addButton('btnCancel',-2 - 60 - 5 ,-5, 35,15,'Cancel' ,actionListenerProc = self.btnCancel_clicked )
self.win.addButton('btnPrevious',15 -80 ,-5,50,15,'Previous',actionListenerProc = self.btnPrevious_clicked)
self.win.addButton('btnCancel',-2 - 110 - 5 ,-5, 35,15,'Cancel' ,actionListenerProc = self.btnCancel_clicked )
sValue=""
if docinfo.getUserFieldValue(0)<>"":
global url
@@ -125,7 +118,6 @@ class ServerParameter( unohelper.Base, XJobExecutor ):
def btnOk_clicked(self,oActionEvent):
sLogin=self.win.getEditText("txtLoginName")
sPassword=self.win.getEditText("txtPassword")
global url
@@ -136,20 +128,14 @@ class ServerParameter( unohelper.Base, XJobExecutor ):
sDatabase=self.win.getListBoxSelectedItem("lstDatabase")
self.sock=RPCSession(url)
UID = self.sock.login(sDatabase,sLogin,sPassword)
if not UID :
if not UID or UID==-1 :
ErrorDialog("Connection Refuse...","Please enter valid Login/Password")
self.win.endExecute()
try:
ids_module =self.sock.execute(sDatabase, UID, sPassword, 'ir.module.module', 'search', [('name','=','base_report_designer'),('state', '=', 'installed')])
except :
import traceback,sys
info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
self.logobj.log_write('ServerParameter', LOG_ERROR, info)
# self.win.endExecute()
ids_module =self.sock.execute(sDatabase, UID, sPassword, 'ir.module.module', 'search', [('name','=','base_report_designer'),('state', '=', 'installed')])
if not len(ids_module):
ErrorDialog("Please Install base_report_designer module", "", "Module Uninstalled Error")
self.logobj.log_write('Module Not Found',LOG_WARNING, ':base_report_designer not install in database %s' % (sDatabase))
self.win.endExecute()
#self.win.endExecute()
else:
desktop=getDesktop()
doc = desktop.getCurrentComponent()
@@ -171,27 +157,15 @@ class ServerParameter( unohelper.Base, XJobExecutor ):
self.logobj.log_write('successful login',LOG_INFO, ':successful login from %s using database %s' % (sLogin, sDatabase))
self.win.endExecute()
def btnCancel_clicked( self, oActionEvent ):
self.win.endExecute()
def btnChange_clicked(self,oActionEvent):
aVal=[]
url= self.win.getEditText("txtHost")
Change(aVal,url)
if aVal[1]== -1:
self.win.getEditText("lstDatabase")
self.win.removeListBoxItems("lstDatabase", 0, self.win.getListBoxItemCount("lstDatabase"))
self.win.setEditText("txtHost",aVal[0])
for i in range(len(aVal[1])):
self.lstDatabase.addItem(aVal[1][i],i)
elif aVal[1]==0:
ErrorDialog(aVal[0],"")
else:
self.win.setEditText("txtHost",aVal[0])
self.win.removeListBoxItems("lstDatabase", 0, self.win.getListBoxItemCount("lstDatabase"))
for i in range(len(aVal[1])):
self.lstDatabase.addItem(aVal[1][i],i)
def btnPrevious_clicked(self,oActionEvent):
self.win.endExecute()
Change(None)
self.win.endExecute()
if __name__<>"package" and __name__=="__main__":
ServerParameter(None)
+21 -21
View File
@@ -8,24 +8,24 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-05-29 10:44+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2011-06-20 20:57+0000\n"
"Last-Translator: Ayhan KIZILTAN <Unknown>\n"
"Language-Team: Turkish <tr@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: 2011-05-30 04:59+0000\n"
"X-Generator: Launchpad (build 12959)\n"
"X-Launchpad-Export-Date: 2011-06-21 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: caldav
#: view:basic.calendar:0
msgid "Value Mapping"
msgstr ""
msgstr "Değer Eşleme"
#. module: caldav
#: help:caldav.browse,url:0
msgid "Url of the caldav server, use for synchronization"
msgstr ""
msgstr "Caldav sunucusu url si, senkronize etmek için kullanın"
#. module: caldav
#: field:basic.calendar.alias,name:0
@@ -35,17 +35,17 @@ msgstr "Dosya ismi"
#. module: caldav
#: model:ir.model,name:caldav.model_calendar_event_export
msgid "Event Export"
msgstr ""
msgstr "Olay Dışaaktarımı"
#. module: caldav
#: view:calendar.event.subscribe:0
msgid "Provide path for Remote Calendar"
msgstr ""
msgstr "Uzaktan Takvim yolunu belirt"
#. module: caldav
#: model:ir.actions.act_window,name:caldav.action_calendar_event_import_values
msgid "Import .ics File"
msgstr ""
msgstr ".ics Dosyası İçe aktar"
#. module: caldav
#: view:calendar.event.export:0
@@ -61,7 +61,7 @@ msgstr "Katılımcı"
#. module: caldav
#: sql_constraint:basic.calendar.fields:0
msgid "Can not map a field more than once"
msgstr ""
msgstr "Birden çok alan eşleştirilemiyor"
#. module: caldav
#: code:addons/caldav/calendar.py:787
@@ -94,12 +94,12 @@ msgstr "Hizmetler"
#. module: caldav
#: selection:basic.calendar.fields,fn:0
msgid "Expression as constant"
msgstr ""
msgstr "Sabit İfade"
#. module: caldav
#: selection:user.preference,device:0
msgid "Evolution"
msgstr ""
msgstr "Evrim"
#. module: caldav
#: view:calendar.event.import:0
@@ -127,12 +127,12 @@ msgstr "Caldav Sunucusu"
#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
#, python-format
msgid "Error!"
msgstr ""
msgstr "Hata!"
#. module: caldav
#: help:caldav.browse,caldav_doc_file:0
msgid "download full caldav Documentation."
msgstr ""
msgstr "Tam calsav Belgesi indir"
#. module: caldav
#: selection:user.preference,device:0
@@ -210,7 +210,7 @@ msgstr "YAPILACAK"
#. module: caldav
#: view:calendar.event.export:0
msgid "Export ICS"
msgstr ""
msgstr "ICS Dışaaktar"
#. module: caldav
#: selection:basic.calendar.fields,fn:0
@@ -221,7 +221,7 @@ msgstr "Alanı Kullan"
#: code:addons/caldav/calendar.py:787
#, python-format
msgid "Can not create line \"%s\" more than once"
msgstr ""
msgstr "\"%s\" Satırı birden çok oluşturulamıyor"
#. module: caldav
#: view:basic.calendar:0
@@ -233,24 +233,24 @@ msgstr "Takvim Satırları"
#. module: caldav
#: model:ir.model,name:caldav.model_calendar_event_subscribe
msgid "Event subscribe"
msgstr ""
msgstr "Olay aboneliği"
#. module: caldav
#: view:calendar.event.import:0
msgid "Import ICS"
msgstr ""
msgstr "ICS içeaktar"
#. module: caldav
#: view:calendar.event.import:0
#: view:calendar.event.subscribe:0
#: view:user.preference:0
msgid "_Cancel"
msgstr ""
msgstr "_Vazgeç"
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_event
msgid "basic.calendar.event"
msgstr ""
msgstr "temel.Etkinlik.olay"
#. module: caldav
#: view:basic.calendar:0
@@ -258,7 +258,7 @@ msgstr ""
#: selection:basic.calendar.attributes,type:0
#: selection:basic.calendar.lines,name:0
msgid "Event"
msgstr ""
msgstr "Etkinlik"
#. module: caldav
#: field:document.directory,calendar_collection:0
+33
View File
@@ -0,0 +1,33 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-06-20 10:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-21 04:36+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: claim_from_delivery
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
msgid "Claim"
msgstr "Reklamaatio"
#. module: claim_from_delivery
#: model:ir.module.module,description:claim_from_delivery.module_meta_information
msgid "Create Claim from delivery order:\n"
msgstr "Luo reklamaatio toimitustilaukselta:\n"
#. module: claim_from_delivery
#: model:ir.module.module,shortdesc:claim_from_delivery.module_meta_information
msgid "Claim from delivery"
msgstr "Reklamaatio toimitukselta"
+7 -6
View File
@@ -331,8 +331,6 @@ class crm_case(object):
if not case.user_id:
data['user_id'] = uid
self.write(cr, uid, case.id, data)
self._action(cr, uid, cases, 'open')
return True
@@ -423,11 +421,14 @@ class crm_case(object):
@param ids: List of case Ids
@param *args: Tuple Value for additional Params
"""
state = 'draft'
if 'crm.phonecall' in args:
state = 'open'
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self._history(cr, uid, cases, _('Draft'))
self.write(cr, uid, ids, {'state': 'draft', 'active': True})
self._action(cr, uid, cases, 'draft')
self.write(cr, uid, ids, {'state': state, 'active': True})
self._action(cr, uid, cases, state)
return True
def remind_partner(self, cr, uid, ids, context=None, attach=False):
@@ -454,9 +455,9 @@ class crm_case(object):
"""
for case in self.browse(cr, uid, ids, context=context):
if not destination and not case.email_from:
raise osv.except_osv(_('Error!'), ("Partner Email is not specified in Case"))
return False
if not case.user_id.user_email:
raise osv.except_osv(_('Error!'), ("User Email is not specified in Case"))
return False
if destination and case.section_id.user_id:
case_email = case.section_id.user_id.user_email
+1 -1
View File
@@ -143,7 +143,7 @@ class crm_lead(crm_case, osv.osv):
domain="['|',('section_id','=',section_id),('section_id','=',False), ('object_id.model', '=', 'crm.lead')]"),
'type_id': fields.many2one('crm.case.resource.type', 'Campaign', \
domain="['|',('section_id','=',section_id),('section_id','=',False)]"),
'channel_id': fields.many2one('res.partner.canal', 'Channel'),
'channel_id': fields.many2one('res.partner.canal', 'Lead Source'),
'contact_name': fields.char('Contact Name', size=64),
'partner_name': fields.char("Customer Name", size=64,help='The name of the future partner that will be created while converting the into opportunity'),
+1 -1
View File
@@ -334,7 +334,7 @@
domain="[('user_id','=', False)]"
help="Unassigned Leads" />
</field>
<field name="subjects"/>
<field name="subjects" groups="base.group_extended"/>
<field name="section_id" widget="selection"
context="{'invisible_section': False}">
<filter icon="terp-personal+" groups="base.group_extended"
+3 -2
View File
@@ -132,7 +132,7 @@
<group colspan="2" col="2">
<separator string="Mailings" colspan="2"/>
<field name="optin" on_change="on_change_optin(optin)"/>
<field name="optout" on_change="on_change_optout(optout)"/>
<field name="optout" on_change="on_change_optout(optout)"/>
</group>
</page>
@@ -310,7 +310,7 @@
domain="[]"
help="Show Sales Team"/>
</field>
<field name="subjects"/>
<newline/>
<group expand="0" string="Extended Filters..." groups="base.group_extended">
<field name="stage_id" widget="selection" domain="[('type', '=', 'opportunity')]"/>
@@ -326,6 +326,7 @@
<newline/>
<field name="create_date" string="Creation Date"/>
<field name="date_closed"/>
<field name="subjects"/>
</group>
<newline/>
<group expand="0" string="Group By..." colspan="16">
+12 -7
View File
@@ -53,10 +53,10 @@ class crm_phonecall(crm_case, osv.osv):
('draft', 'Draft'),
('open', 'Todo'),
('cancel', 'Cancelled'),
('done', 'Done'),
('pending', 'Pending'),
('done', 'Held'),
('pending', 'Not Held'),
], 'State', size=16, readonly=True,
help='The state is set to \'Draft\', when a case is created.\
help='The state is set to \'Todo\', when a case is created.\
\nIf the case is in progress the state is set to \'Open\'.\
\nWhen the case is over, the state is set to \'Done\'.\
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
@@ -79,14 +79,19 @@ class crm_phonecall(crm_case, osv.osv):
the canall which is this opportunity source."),
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'opportunity_id': fields.many2one ('crm.lead', 'Opportunity'),
'opportunity_id': fields.many2one ('crm.lead', 'Lead/Opportunity'),
'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
}
def _get_default_state(self, cr, uid, context=None):
if context and context.get('default_state', False):
return context.get('default_state')
return 'open'
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'priority': crm.AVAILABLE_PRIORITIES[2][0],
'state': 'open',
'state': _get_default_state,
'user_id': lambda self,cr,uid,ctx: uid,
'active': 1,
}
@@ -122,14 +127,14 @@ class crm_phonecall(crm_case, osv.osv):
return res
def case_reset(self, cr, uid, ids, *args):
"""Resets case as draft
"""Resets case as Todo
@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)
res = super(crm_phonecall, self).case_reset(cr, uid, ids, args, 'crm.phonecall')
self.write(cr, uid, ids, {'duration': 0.0})
return res
+3
View File
@@ -18,6 +18,7 @@
<field name="categ_id" ref="crm.categ_phone1"/>
<field eval="&quot;(769) 703-274&quot;" name="partner_phone"/>
<field eval="2.3" name="duration"/>
<field eval="&quot;done&quot;" name="state"/>
</record>
<record id="crm_case_phone02" model="crm.phonecall">
<field name="partner_address_id" ref="base.res_partner_address_6"/>
@@ -33,6 +34,7 @@
<field name="categ_id" ref="crm.categ_phone1"/>
<field eval="&quot;(956) 293-2595&quot;" name="partner_phone"/>
<field eval="1.5" name="duration"/>
<field eval="&quot;done&quot;" name="state"/>
</record>
<record id="crm_case_phone03" model="crm.phonecall">
<field name="partner_address_id" ref="base.res_partner_address_2"/>
@@ -49,6 +51,7 @@
<field eval="&quot;(079) 681-2139&quot;" name="partner_phone"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
<field eval="5.0" name="duration"/>
<field eval="&quot;done&quot;" name="state"/>
</record>
<record id="crm_case_phone04" model="crm.phonecall">
<field eval="time.strftime('%Y-%m-21 14:10:23')" name="date"/>
+13 -13
View File
@@ -4,7 +4,7 @@
<act_window
id="crm_case_categ_phone_create_partner"
name="Schedule Phone Call"
name="Schedule a Call"
res_model="crm.phonecall"
src_model="res.partner"
view_mode="calendar,tree,form"
@@ -61,15 +61,15 @@
parent="base.menu_base_partner" sequence="4" />
<record model="ir.actions.act_window" id="crm_case_categ_phone_incoming0">
<field name="name">Inbound</field>
<field name="name">Logged Calls</field>
<field name="res_model">crm.phonecall</field>
<field name="view_type">form</field>
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_phone_tree_view"/>
<field name="domain" eval="'[(\'categ_id\',\'=\','+str(ref('categ_phone1'))+')]'"/>
<field name="context" eval="'{\'search_default_section_id\':section_id, \'default_state\':\'open\', \'search_default_current\':1,\'search_default_today\':1, \'default_categ_id\': ' + str(ref('categ_phone1')) +'}'"/>
<field name="view_id" ref="crm_case_inbound_phone_tree_view"/>
<field name="domain">[('state','=','done')]</field>
<field name="context" eval="'{\'search_default_section_id\':section_id, \'default_state\':\'done\', \'search_default_today\':1}'"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
<field name="help">The Inbound Calls tool allows you to log your inbound calls on the fly. Each call you get will appear on the partner form to trace every contact you have with a partner. From the phone call form, you can trigger a request for another call, a meeting or an opportunity.</field>
<field name="help">This tool allows you to log your inbound calls on the fly. Each call you get will appear on the partner form to trace every contact you have with a partner. From the phone call form, you can trigger a request for another call, a meeting or an opportunity.</field>
</record>
@@ -90,24 +90,24 @@
<record model="ir.actions.act_window.view" id="action_crm_tag_form_phone_incoming0">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_inbound_phone_form_view"/>
<field name="view_id" ref="crm_case_phone_form_view"/>
<field name="act_window_id" ref="crm_case_categ_phone_incoming0"/>
</record>
<menuitem name="Inbound" id="menu_crm_case_phone_inbound"
<menuitem name="Logged Calls" id="menu_crm_case_phone_inbound"
parent="crm.menu_crm_case_phone"
action="crm_case_categ_phone_incoming0" />
<record model="ir.actions.act_window" id="crm_case_categ_phone_outgoing0">
<field name="name">Outbound</field>
<field name="name">Scheduled Calls</field>
<field name="res_model">crm.phonecall</field>
<field name="view_type">form</field>
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_phone_tree_view"/>
<field name="domain" eval="'[(\'categ_id\',\'=\','+str(ref('categ_phone2'))+')]'"/>
<field name="context" eval="'{\'search_default_section_id\':section_id, \'default_state\':\'open\', \'search_default_current\':1, \'default_categ_id\': ' + str(ref('categ_phone2')) +'}'"/>
<field name="domain">[('state','!=','done')]</field>
<field name="context" eval="'{\'search_default_section_id\':section_id, \'default_state\':\'open\', \'search_default_current\':1,\'search_default_today\':1}'"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
<field name="help">Outbound Calls list all the calls to be done by your sales team. A salesman can record the information about the call in the form view. This information will be stored in the partner form to trace every contact you have with a customer. You can also import a .CSV file with a list of calls to be done by your sales team.</field>
<field name="help">Scheduled calls list all the calls to be done by your sales team. A salesman can record the information about the call in the form view. This information will be stored in the partner form to trace every contact you have with a customer. You can also import a .CSV file with a list of calls to be done by your sales team.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_phone_outgoing0">
@@ -131,7 +131,7 @@
<field name="act_window_id" ref="crm_case_categ_phone_outgoing0"/>
</record>
<menuitem name="Outbound" id="menu_crm_case_phone_outbound"
<menuitem name="Scheduled Calls" id="menu_crm_case_phone_outbound"
parent="crm.menu_crm_case_phone"
action="crm_case_categ_phone_outgoing0" />
+26 -95
View File
@@ -31,20 +31,20 @@
<field name="partner_contact"/>
<field name="partner_phone"/>
<field name="user_id"/>
<field name="categ_id" string="Type"/>
<field name="categ_id"/>
<field name="create_date" invisible="1"/>
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
states="draft,open,pending"
states="open,pending"
icon="gtk-index"
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}" />
<button string="Meeting"
states="draft,open,pending" icon="gtk-redo"
states="open,pending" icon="gtk-redo"
name="action_make_meeting" type="object" />
<field name="state"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_close" string="Held" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_cancel" string="Cancel" states="open,pending" type="object" icon="gtk-cancel"/>
<button name="case_open" string="Todo" states="pending" type="object" icon="gtk-go-forward"/>
<button name="case_close" string="Held" states="open,pending" type="object" icon="gtk-jump-to"/>
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-media-pause"/>
</tree>
</field>
@@ -61,21 +61,21 @@
<group colspan="6" col="7">
<field name="name" required="1"/>
<field name="partner_phone"/>
<field name="duration" widget="float_time" required="1"/>
<field name="duration" widget="float_time"/>
<button string="Schedule a Meeting" name="action_make_meeting" icon="gtk-redo" type="object"/>
<field name="date" required="1"/>
<field name="date"/>
<field name="user_id"/>
<field name="section_id" colspan="1" widget="selection" />
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
icon="gtk-index" type="action"
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
<label colspan="6" string=""/>
<button string="Schedule Other Call"
icon="terp-call-start"
name="%(phonecall_to_phonecall_act)d"
type="action" />
<label colspan="6" string=""/>
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
icon="gtk-index" type="action"
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
</group>
@@ -98,8 +98,7 @@
<group col="2" colspan="2">
<separator colspan="2" string="Categorization" />
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
domain="[('object_id.model', '=', 'crm.phonecall')]"/>
<field name="priority"/>
<field name="opportunity_id"/>
</group>
@@ -109,94 +108,32 @@
<group col="8" colspan="4">
<field name="state" select="1" />
<button name="case_cancel" string="Cancel"
states="draft,open,pending" type="object"
states="open,pending" type="object"
icon="gtk-cancel" />
<button name="case_open" string="Open"
states="draft,pending" type="object"
<button name="case_open" string="Todo"
states="pending" type="object"
icon="gtk-go-forward" />
<button name="case_pending" string="Not Held"
states="open" type="object" icon="gtk-media-pause" />
<button name="case_close" string="Held"
states="open,draft,pending" type="object"
states="open,pending" type="object"
icon="gtk-jump-to" />
<button name="case_reset" string="Reset to Draft"
states="done,cancel" type="object"
<button name="case_reset" string="Reset to Todo"
states="cancel" type="object"
icon="gtk-convert" />
</group>
</form>
</field>
</record>
<!--Inbound Phonecalls Form View -->
<record model="ir.ui.view" id="crm_case_inbound_phone_form_view">
<field name="name">CRM - Inbound Phone Call Form</field>
<field name="model">crm.phonecall</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Phone Call">
<group colspan="4" col="7">
<field name="name" required="1"/>
<field name="partner_phone"/>
<field name="duration" widget="float_time"/>
<button string="Schedule a Meeting"
name="action_make_meeting"
icon="gtk-redo"
type="object" />
<field name="date" required="1"/>
<field name="user_id"/>
<field name="section_id" colspan="1" widget="selection" />
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
icon="gtk-index" type="action"
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
<label colspan="6" string=""/>
<button string="Schedule Other Call"
icon="terp-call-start"
name="%(phonecall_to_phonecall_act)d"
type="action" />
</group>
<group col="3" colspan="2">
<separator colspan="3" string="Contacts" />
<field name="partner_id"
on_change="onchange_partner_id(partner_id, email_from)" />
<button string="Create a Partner"
icon="terp-partner"
name="%(action_crm_phonecall2partner)d"
type="action"
attrs="{'invisible':[('partner_id','!=',False)]}"
groups="base.group_partner_manager" />
<newline/>
<field name="partner_address_id"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<newline/>
<field name="partner_mobile" />
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Categorization" />
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
<field name="priority"/>
<field name="opportunity_id"/>
</group>
<separator string="Description" colspan="4" />
<field name="description" nolabel="1" colspan="4" />
<separator colspan="4" />
</form>
</field>
</record>
<!--Inbound Phonecalls Tree View -->
<!--Logged Phonecalls Tree View -->
<record model="ir.ui.view" id="crm_case_inbound_phone_tree_view">
<field name="name">CRM - Inbound Phone Calls Tree</field>
<field name="name">CRM - Logged Phone Calls Tree</field>
<field name="model">crm.phonecall</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Phone Calls" colors="grey:state in ('cancel','done');blue:state in ('pending',)" editable="top">
<tree string="Phone Calls" editable="top">
<field name="date"/>
<field name="name"/>
<field name="partner_id"
@@ -207,21 +144,15 @@
<field name="partner_phone"/>
<field name="user_id"/>
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
domain="[('object_id.model', '=', 'crm.phonecall')]"/>
<field name="state" invisible="1"/>
<field name="create_date" invisible="1"/>
<button string="Schedule Other Call"
icon="terp-call-start"
name="%(phonecall_to_phonecall_act)d"
type="action" />
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
states="draft,open,pending"
icon="gtk-index"
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}" />
<button string="Meeting"
states="draft,open,pending" icon="gtk-redo"
icon="gtk-redo"
name="action_make_meeting" type="object" />
</tree>
</field>
@@ -252,7 +183,7 @@
<search string="Search Phonecalls">
<filter icon="terp-check" string="Current"
name="current"
domain="[('state','in', ('draft','open','pending'))]"/>
domain="[('state','in', ('open','pending'))]"/>
<filter icon="terp-go-today" string="Today"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d 23:59:59')),
('date','&gt;=',time.strftime('%%Y-%%m-%%d 00:00:00'))]"
+61 -3
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-09 17:52+0000\n"
"PO-Revision-Date: 2011-06-20 20:31+0000\n"
"Last-Translator: Ayhan KIZILTAN <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: 2011-06-10 04:37+0000\n"
"X-Launchpad-Export-Date: 2011-06-21 04:36+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: crm
@@ -1734,6 +1734,10 @@ msgid ""
"mainly used by the sales manager in order to do the periodic review with the "
"teams of the sales pipeline."
msgstr ""
"Fırsat Analizleri, planlanan gelir, planlanan maliyet, geçen sontarihler ya "
"da fırsatlarla etkileşim sayısı gibi müşşteri bilgilerinizehızlı bir şekilde "
"erişmenizi sağlar. Bu rapor genel olarak yalnızca satış müdürü tarafından "
"satış kanallarına ait takımların süreli incelemeleri için kullanılır."
#. module: crm
#: field:crm.case.categ,name:0
@@ -1757,6 +1761,10 @@ msgid ""
"organise their sales pipeline. Stages will allow them to easily track how a "
"specific lead or opportunity is positioned in the sales cycle."
msgstr ""
"Satışlarınıza ait satış kanallarının daha iyi bir şekilde organize edilmesi "
"için adaylara ve fırsatlara özel aşamalar ekleyin. Aşamalar, belirli bir "
"adayın ya da fırsatın satış çevriminde nasıl bir durumda olduğunu kolayca "
"izlenmesini sağlar."
#. module: crm
#: view:crm.lead.report:0
@@ -1819,6 +1827,10 @@ msgid ""
"sent/to be sent to your colleagues/partners. You can not only invite OpenERP "
"users, but also external parties, such as a customer."
msgstr ""
"Toplantı Davetiyeleri ile paydaşlarınıza/iş arkadaşlarınıza göndereceğiniz "
"toplantı davetiyeleri oluşturabilir ve yönetebilirsiniz. Yalnızca OpenERP "
"kullanıcıların değil, müşterileriniz dışarıdan gruplar da davet "
"edebilirsiniz."
#. module: crm
#: selection:crm.meeting,week_list:0
@@ -1973,6 +1985,10 @@ msgid ""
"with a partner. From the phone call form, you can trigger a request for "
"another call, a meeting or an opportunity."
msgstr ""
"Gelen Çağrılar aracı gelen çağrılarınıza anında bağlanmanızı sağlar. "
"Aldığınız her çağrı, bir paydaşla kuracağınız her iletişimin izlenmesi için "
"paydaş formunda görünecektir. Telefon çağrı formundan, başka bir çağrıyı, "
"bir toplantıyı ya da bir fırsatı tetikleyebilirsainiz."
#. module: crm
#: help:crm.meeting,recurrency:0
@@ -2016,6 +2032,9 @@ msgid ""
"opportunities. You can also synchronize meetings with your mobile phone "
"using the caldav interface."
msgstr ""
"Toplantı takvimi, satış takımınca paylaşılır ve personel tatilleri ya da iş "
"fırsatları gibi diğer uygulamalarla tam olarak entegredir. Caldav arayüzünü "
"kullanarak toplantılarınızı da cep telefonunuzdan senkronize edebilirsiniz."
#. module: crm
#: model:ir.model,name:crm.model_crm_phonecall2opportunity
@@ -2222,6 +2241,11 @@ msgid ""
"The opportunities and sales order displayed, will automatically be filtered "
"according to his team."
msgstr ""
"Farklı satış elemanlarınızı organize etmek ya da satış bölümlerinizi "
"takımlara ayırmak için bir Satış Takımı tanımlar. Her takım kendine ait "
"fırsatlar listesi, satış siparişleri, vb. ile çalışacaktır. Her kullanıcı "
"kendi kullanıcı tercihlerine göre varsayılan takım ayarlar. Görüntülenen "
"fırsatlar ve satış siparişleri, otomatik olarak bu takıma göre süzülecektir."
#. module: crm
#: help:crm.meeting,count:0
@@ -2299,6 +2323,15 @@ msgid ""
"email gateway: new emails may create leads, each of them automatically gets "
"the history of the conversation with the prospect."
msgstr ""
"Adaylar, ürünlerinize ve hizmetlerinize ilgi duyan aday ya da paydaşların "
"ilk temaslarını yönetmeyi ve izlemeyi sağlar. Bir aday, satış çevriminizde "
"genellikle ilk adımdır. Yeterli bulunduğunda bir aday, herhangi bir "
"bağlantılı etkinliğinde ayrıntılı olarak izlenmesi için ilgili paydaşın "
"oluşturulması sırasında iş fırsatına çevrilebilir. Bir adayın veritabanını "
"içeaktarabilir, kartvizitlerin kaydını tutabilir ya da websitenizin iletişim "
"formunu OpenERP Adaylarla entegre edebilirsiniz. Adaylar eposta ağgeçidine "
"bağlanabilir: yeni epostalar adayları oluşturur, her biri adaylarla yapılan "
"konuşma geçmişini otomatikmen alır."
#. module: crm
#: selection:crm.lead2opportunity.partner,action:0
@@ -2645,6 +2678,9 @@ msgid ""
"e.g.: Every other month on the last Sunday of the month for 10 occurrences: "
" FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=-1SU"
msgstr ""
"Yinelenen olaylar için tekrarlama modeli kuralı tanımlar\n"
"Örneğin: İki ayda bir ayın pazar günü için 10 oluşum: "
"SIKLIK=AYLIK;ARALIK=2;SAYI=10;GÜNLÜK=-1PAZ"
#. module: crm
#: field:crm.lead,job_id:0
@@ -3036,6 +3072,10 @@ msgid ""
"instance reflect your product structure or the different types of sales you "
"do."
msgstr ""
"Adaylarınızı ve fırsatlarınızı firmanızın etkinliklerine uyacak şekilde "
"sınıflandırmak ve analiz etmek için özel kategoriler oluşturun. Bu "
"kategoriler örnek olarak ürününüzün yapısını ya da yaptığınız farklı satış "
"türlerini yansıtabilir."
#. module: crm
#: help:crm.segmentation,som_interval_decrease:0
@@ -3054,6 +3094,10 @@ msgid ""
"several criteria and drill down the information, by adding more groups in "
"the report."
msgstr ""
"Bu rapordan, satış takımınızın performansını telefon görüşmeleri temel "
"alınarak analiz edebilirsiniz. Bilgileri, çeşitli kriterlere göre "
"gruplandırabilir ya da süzebilirsiniz ve bu raporda daha çok grup ekleyerek "
"bilgiyi derinleştirebilirsiniz."
#. module: crm
#: view:crm.case.section:0
@@ -3063,7 +3107,7 @@ msgstr "Ağgeçidi"
#. module: crm
#: help:crm.lead,user_id:0
msgid "By Default Salesman is Administrator when create New User"
msgstr ""
msgstr "Yeni Kullanıcı oluştururken Varsayılan Satış Elemanı Yöneticidir"
#. module: crm
#: view:crm.lead.report:0
@@ -3213,6 +3257,10 @@ msgid ""
"If checked, remove the category from partners that doesn't match "
"segmentation criterions"
msgstr ""
"Kategorinin bölümlendirme kriterlerine uyan paydaşlarla sınırlandırıldığını "
"kontrol edin. \n"
"Eğer işaretliyse, bölümleme kriterlerine uymayan paydaşlardan kategoriyi "
"kaldırın"
#. module: crm
#: field:crm.meeting,exdate:0
@@ -3348,6 +3396,13 @@ msgid ""
"bought goods to another supplier. \n"
"Use this functionality for recurring businesses."
msgstr ""
"Bir dönem, bu bölümde satış ve satınalma döngüsü arasındaki günlerin\n"
"ortalamasıdır. \n"
"Genel olarak uzun bir süre hiç satınalma yapılmamış ve mal satınalmamış bir "
"paydaşı belirlemek için kullanılır, \n"
"böyle bir durumda ruh durumunun düştüğünü ve başka bir tedarikçiden mal "
"satınaldığını düşünürüz. \n"
"Bu işlevi yinelenen işler için kullanın."
#. module: crm
#: view:crm.send.mail:0
@@ -3606,6 +3661,9 @@ msgid ""
"them to easily track how is positioned a specific opportunity in the sales "
"cycle."
msgstr ""
"Satış fırsatlarını koruyarak satışlarınıza ait satış hunilerini daha iyi "
"organize etmek için özel aşamalar oluşturun. Satış döngüsü içerisinde "
"belirli bir fırsatın nasıl bir durumda olduğunun kolayca izlenmesini sağlar."
#. module: crm
#: model:process.process,name:crm.process_process_contractprocess0
+2 -2
View File
@@ -25,9 +25,9 @@ from crm import crm
AVAILABLE_STATES = [
('draft','Draft'),
('open','Open'),
('open','Todo'),
('cancel', 'Cancelled'),
('done', 'Closed'),
('done', 'Held'),
('pending','Pending')
]
@@ -108,7 +108,7 @@
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}" />
<separator orientation="vertical" />
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
<filter string="Type" icon="terp-stock_symbol-selection"
<filter string="Category" icon="terp-stock_symbol-selection"
domain="[]" context="{'group_by':'categ_id'}" />
<filter string="State" icon="terp-stock_effects-object-colorize"
domain="[]" context="{'group_by':'state'}" />
+2 -70
View File
@@ -54,82 +54,14 @@
<tree string="Phone Calls" colors="gray:state in ('draft', 'cancel','done','pending')">
<field name="date" string="Date"/>
<field name="name" string="Call Summary"/>
<field name="categ_id" string="Type" widget="selection"/>
<field name="categ_id" widget="selection"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_open" string="Todo" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_close" string="Held" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-media-pause"/>
</tree>
<form string="Phone Call">
<group colspan="6" col="7">
<field name="name" required="1"/>
<field name="partner_phone" attrs="{'required': [('categ_id.name', '=', 'Outbound')]}"/>
<field name="duration" widget="float_time" required="1"/>
<button string="Schedule a Meeting" name="action_make_meeting" icon="gtk-redo" type="object"/>
<field name="date" required="1"/>
<field name="user_id"/>
<field name="section_id" colspan="1" widget="selection" />
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
icon="gtk-index" type="action"
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
<label colspan="6" string=""/>
<button string="Schedule Other Call"
icon="terp-call-start"
name="%(phonecall_to_phonecall_act)d"
type="action" />
</group>
<group col="3" colspan="2">
<separator colspan="3" string="Contacts" />
<field name="partner_id"
on_change="onchange_partner_id(partner_id, email_from)" />
<button string="Create a Partner"
icon="terp-partner"
name="%(action_crm_phonecall2partner)d"
type="action"
attrs="{'invisible':[('partner_id','!=',False)]}"
groups="base.group_partner_manager" />
<newline/>
<field name="partner_address_id"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<newline/>
<field name="partner_mobile" />
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Categorization" />
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
<field name="priority"/>
<field name="opportunity_id"/>
</group>
<separator string="Description" colspan="4" />
<field name="description" nolabel="1" colspan="4" />
<separator colspan="4" />
<group col="8" colspan="4">
<field name="state" select="1" />
<button name="case_cancel" string="Cancel"
states="draft,open,pending" type="object"
icon="gtk-cancel" />
<button name="case_open" string="Open"
states="draft,pending" type="object"
icon="gtk-go-forward" />
<button name="case_pending" string="Not Held"
states="open" type="object" icon="gtk-media-pause" />
<button name="case_close" string="Held"
states="open,draft,pending" type="object"
icon="gtk-jump-to" />
<button name="case_reset" string="Reset to Draft"
states="done,cancel" type="object"
icon="gtk-convert" />
</group>
</form>
</field>
</page>
</field>
@@ -67,6 +67,8 @@ class crm_merge_opportunity(osv.osv_memory):
ids = list(set(ids) - set(context.get('lead_ids', False)) )
lead_obj = self.pool.get('crm.lead')
op_id = lead_obj.search(cr, uid, [('id', 'in', ids)], order='create_date' , context=context)
if not op_id:
return False
opps = lead_obj.browse(cr, uid, [op_id[0]], context=context)
return opps[0]
@@ -22,6 +22,8 @@
from osv import osv, fields
from tools.translate import _
import time
class crm_opportunity2phonecall(osv.osv_memory):
"""Converts Opportunity to Phonecall"""
@@ -31,11 +33,13 @@ class crm_opportunity2phonecall(osv.osv_memory):
_columns = {
'name' : fields.char('Call summary', size=64, required=True, select=1),
'user_id' : fields.many2one('res.users', "Assign To"),
'date': fields.datetime('Date' , required=True),
'partner_id' : fields.many2one('res.partner', "Partner"),
'date': fields.datetime('Date'),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'categ_id': fields.many2one('crm.case.categ', 'Category', required=True, \
'categ_id': fields.many2one('crm.case.categ', 'Category', \
domain="['|',('section_id','=',False),('section_id','=',section_id),\
('object_id.model', '=', 'crm.phonecall')]"),
('object_id.model', '=', 'crm.phonecall')]"),
'action': fields.selection([('schedule','Schedule a call'), ('log','Log a call')], 'Action', required=True),
}
def default_get(self, cr, uid, fields, context=None):
@@ -58,6 +62,7 @@ class crm_opportunity2phonecall(osv.osv_memory):
record_ids = context and context.get('active_ids', []) or []
res = super(crm_opportunity2phonecall, self).default_get(cr, uid, fields, context=context)
res.update({'action': 'schedule', 'date': time.strftime('%Y-%m-%d %H:%M:%S')})
for opp in opp_obj.browse(cr, uid, record_ids, context=context):
if 'name' in fields:
res.update({'name': opp.name})
@@ -67,6 +72,8 @@ class crm_opportunity2phonecall(osv.osv_memory):
res.update({'section_id': opp.section_id and opp.section_id.id or False})
if 'categ_id' in fields:
res.update({'categ_id': categ_id})
if 'partner_id' in fields:
res.update({'partner_id': opp.partner_id and opp.partner_id.id or False})
return res
def action_cancel(self, cr, uid, ids, context=None):
@@ -112,7 +119,7 @@ class crm_opportunity2phonecall(osv.osv_memory):
for this in self.browse(cr, uid, ids, context=context):
for opp in opp_obj.browse(cr, uid, record_ids, context=context):
new_case = phonecall_obj.create(cr, uid, {
vals = {
'name' : opp.name,
'case_id' : opp.id ,
'user_id' : this.user_id and this.user_id.id or False,
@@ -126,9 +133,12 @@ class crm_opportunity2phonecall(osv.osv_memory):
'partner_mobile' : opp.partner_address_id and opp.partner_address_id.mobile or False,
'priority': opp.priority,
'opportunity_id': opp.id
}, context=context)
phonecall_obj.case_open(cr, uid, [new_case])
}
new_case = phonecall_obj.create(cr, uid, vals, context=context)
if this.action == 'schedule':
phonecall_obj.case_open(cr, uid, [new_case])
elif this.action == 'log':
phonecall_obj.case_close(cr, uid, [new_case])
value = {
'name': _('Phone Call'),
@@ -9,19 +9,22 @@
<field name="model">crm.opportunity2phonecall</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Schedule a PhoneCall">
<separator string="Schedule a PhoneCall" colspan="4"/>
<form string="Schedule/Log a call">
<separator string="Schedule/Log a call" colspan="4"/>
<field name="action"/>
<separator string="Call Details" colspan="4"/>
<field name="name"/>
<field name="date" string="Planned Date"/>
<field name="date" string="Planned Date" attrs="{'invisible': [('action','=','log')]}"/>
<newline/>
<field name="user_id" />
<field name="partner_id" readonly="True"/>
<field name="user_id" />
<field name="section_id" widget="selection" />
<field name="categ_id" string="Type" widget="selection" domain="[('object_id.model', '=', 'crm.phonecall')]"/>
<separator string="" colspan="4"/>
<group colspan="4">
<label string ="" colspan="2"/>
<group colspan="4" col="3">
<button name="action_cancel" string="_Cancel" icon="gtk-cancel" special="cancel" />
<button name="action_apply" type="object" string="_Schedule Call" icon="gtk-ok" />
<button name="action_apply" type="object" string="Log call" icon="gtk-ok" attrs="{'invisible' : [('action', '!=', 'log')]}" />
<button name="action_apply" type="object" string="Schedule call" icon="gtk-ok" attrs="{'invisible' : [('action', '!=', 'schedule')]}" />
</group>
</form>
</field>
@@ -30,7 +33,7 @@
<!-- Opportunity to Phonecall action -->
<record model="ir.actions.act_window" id="opportunity2phonecall_act">
<field name="name">Schedule Call</field>
<field name="name">Schedule/Log Call</field>
<field name="res_model">crm.opportunity2phonecall</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
@@ -31,43 +31,14 @@ class crm_phonecall2opportunity(osv.osv_memory):
def action_cancel(self, cr, uid, ids, context=None):
"""
Closes Phonecall to Opportunity form
@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 Phonecall to Opportunity's IDs
@param context: A standard dictionary for contextual values
"""
return {'type':'ir.actions.act_window_close'}
def view_init(self, cr, uid, fields, context=None):
"""
This function checks for precondition before wizard executes
@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 fields: List of fields for default value
@param context: A standard dictionary for contextual values
"""
phonecall_obj = self.pool.get('crm.phonecall')
record_id = context and context.get('active_id', False) or False
case = phonecall_obj.browse(cr, uid, record_id, context=context)
if case.state in ['done', 'cancel']:
raise osv.except_osv(_("Warning"), _("Closed/Cancelled Phone \
Call can not be converted into Opportunity"))
def action_apply(self, cr, uid, ids, context=None):
"""
This converts Phonecall to Opportunity and opens Phonecall view
@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 Phonecall to Opportunity IDs
@param context: A standard dictionary for contextual values
@return : Dictionary value for created Opportunity form
"""
record_id = context and context.get('active_id', False) or False
if record_id:
@@ -22,6 +22,8 @@
from osv import osv, fields
from tools.translate import _
import time
class crm_phonecall2phonecall(osv.osv_memory):
""" Converts Phonecall to Phonecall"""
@@ -84,6 +86,10 @@ class crm_phonecall2phonecall(osv.osv_memory):
'date': this.date
}
phonecall_id = phonecall_obj.create(cr, uid, values, context=context)
if this.action == 'schedule':
phonecall_obj.case_open(cr, uid, [phonecall_id])
elif this.action == 'log':
phonecall_obj.case_close(cr, uid, [phonecall_id])
res = {
'name': _('Phone Call'),
@@ -102,11 +108,13 @@ class crm_phonecall2phonecall(osv.osv_memory):
_columns = {
'name' : fields.char('Call summary', size=64, required=True, select=1),
'user_id' : fields.many2one('res.users',"Assign To"),
'categ_id': fields.many2one('crm.case.categ', 'Category', required=True, \
'categ_id': fields.many2one('crm.case.categ', 'Category', \
domain="['|',('section_id','=',False),('section_id','=',section_id),\
('object_id.model', '=', 'crm.phonecall')]"),
'date': fields.datetime('Date', required=True),
'date': fields.datetime('Date'),
'section_id':fields.many2one('crm.case.section','Sales Team'),
'action': fields.selection([('schedule','Schedule a call'), ('log','Log a call')], 'Action', required=True),
'partner_id' : fields.many2one('res.partner', "Partner"),
}
def default_get(self, cr, uid, fields, context=None):
@@ -122,7 +130,7 @@ class crm_phonecall2phonecall(osv.osv_memory):
"""
res = super(crm_phonecall2phonecall, self).default_get(cr, uid, fields, context=context)
record_id = context and context.get('active_id', False) or False
res.update({'action': 'schedule', 'date': time.strftime('%Y-%m-%d %H:%M:%S')})
if record_id:
phonecall = self.pool.get('crm.phonecall').browse(cr, uid, record_id, context=context)
@@ -142,6 +150,8 @@ class crm_phonecall2phonecall(osv.osv_memory):
res.update({'section_id': phonecall.section_id and phonecall.section_id.id or False})
if 'categ_id' in fields:
res.update({'categ_id': categ_id})
if 'partner_id' in fields:
res.update({'partner_id': phonecall.partner_id and phonecall.partner_id.id or False})
return res
crm_phonecall2phonecall()
@@ -9,18 +9,21 @@
<field name="model">crm.phonecall2phonecall</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Schedule Other Call">
<separator string="Schedule Other Call" colspan="4"/>
<form string="Schedule/Log a call">
<separator string="Schedule/Log a call" colspan="4"/>
<field name="action"/>
<separator string="Call Details" colspan="4"/>
<field name="name"/>
<field name="date" string="Planned Date"/>
<field name="date" string="Planned Date" attrs="{'invisible': [('action','=','log')]}"/>
<field name="partner_id" readonly="True"/>
<field name="user_id" />
<field name="section_id"/>
<field name="categ_id" string="Type" widget="selection" domain="[('object_id.model', '=', 'crm.phonecall')]"/>
<separator string=" " colspan="4"/>
<group colspan="4" col="3" >
<label string=" " />
<button name="action_cancel" string="_Cancel" icon="gtk-cancel" special="cancel" />
<button name="action_apply" type="object" string="_Schedule" icon="gtk-go-forward" />
<button name="action_apply" type="object" string="Log call" icon="gtk-ok" attrs="{'invisible' : [('action', '!=', 'log')]}" />
<button name="action_apply" type="object" string="Schedule call" icon="gtk-ok" attrs="{'invisible' : [('action', '!=', 'schedule')]}" />
</group>
</form>
</field>
+1 -1
View File
@@ -24,7 +24,7 @@
</record>
</data>
<data noupdate="0">
<data noupdate="1">
<record model="document.directory.content.type" id="pdf">
<field name="code">.pdf</field>
<field name="name">PDF Report</field>
+190 -151
View File
File diff suppressed because it is too large Load Diff
+141
View File
@@ -0,0 +1,141 @@
# Turkish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-20 20:45+0000\n"
"Last-Translator: Ayhan KIZILTAN <Unknown>\n"
"Language-Team: Turkish <tr@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: 2011-06-21 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_configuration
msgid "Auto Directory Configuration"
msgstr "Otomatik Klasör Yapılandırması"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid ""
"Indicate the network address on which your OpenERP server should be "
"reachable for end-users. This depends on your network topology and "
"configuration, and will only affect the links displayed to the users. The "
"format is HOST:PORT and the default host (localhost) is only suitable for "
"access from the server machine itself.."
msgstr ""
#. module: document_ftp
#: field:document.ftp.configuration,progress:0
msgid "Configuration Progress"
msgstr "Yapılandırma Gelişimi"
#. module: document_ftp
#: model:ir.actions.url,name:document_ftp.action_document_browse
msgid "Browse Files"
msgstr "Dosyalara Gözat"
#. module: document_ftp
#: field:document.ftp.configuration,config_logo:0
msgid "Image"
msgstr "Resim"
#. module: document_ftp
#: field:document.ftp.configuration,host:0
msgid "Address"
msgstr "Adres"
#. module: document_ftp
#: field:document.ftp.browse,url:0
msgid "FTP Server"
msgstr "FTP Sunucusu"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_config_auto_directory
msgid "FTP Server Configuration"
msgstr "FTP Sunucusu Yapılandırması"
#. module: document_ftp
#: model:ir.module.module,description:document_ftp.module_meta_information
msgid ""
"This is a support FTP Interface with document management system.\n"
" With this module you would not only be able to access documents through "
"OpenERP\n"
" but you would also be able to connect with them through the file system "
"using the\n"
" FTP client.\n"
msgstr ""
"Bu bir belge yönetim sistemli destek FTP Arayüzüdür.\n"
" Bu modül ile yalnızca OpenERP nin içinden belgelere erişmekle kalmayıp \n"
" FTP istemcisini kullanarak dosya sistemi içinden de \n"
" bağlanabileceksiniz.\n"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Browse"
msgstr "_Gözat"
#. module: document_ftp
#: help:document.ftp.configuration,host:0
msgid ""
"Server address or IP and port to which users should connect to for DMS access"
msgstr ""
"DMS erişimi için kullanıcıların bağlanacağı sunucu adresi ya da IP ve "
"bağlantı noktasıdır."
#. module: document_ftp
#: model:ir.ui.menu,name:document_ftp.menu_document_browse
msgid "Shared Repository (FTP)"
msgstr "Paylaşılan Havuz (FTP)"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Cancel"
msgstr "_Vazgeç"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Configure FTP Server"
msgstr "FTP Sunucusunu Yapılandır"
#. module: document_ftp
#: model:ir.module.module,shortdesc:document_ftp.module_meta_information
msgid "Integrated FTP Server with Document Management System"
msgstr "Belge Yönetim Sistemi ile entegre FTP Sunucusu"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "title"
msgstr "unvan"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_browse
msgid "Document FTP Browse"
msgstr "FTP BelgeTaraması"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Knowledge Application Configuration"
msgstr "Bilgi Birikimi Uygulama Ayarları"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
msgid "Document Browse"
msgstr "Belge Tarama"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "Browse Document"
msgstr "Belge Tara"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "res_config_contents"
msgstr "res_config_contents"
+7 -7
View File
@@ -7,31 +7,31 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2009-09-08 16:23+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2011-06-18 11:13+0000\n"
"Last-Translator: kifcaliph <kifcaliph@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: 2011-04-29 04:45+0000\n"
"X-Generator: Launchpad (build 12758)\n"
"X-Launchpad-Export-Date: 2011-06-19 04:36+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: google_map
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Map"
msgstr ""
msgstr "خريطة جوجل"
#. module: google_map
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Street2 : "
msgstr ""
msgstr "شارع 2: "
#. module: google_map
#: model:ir.actions.wizard,name:google_map.wizard_google_map
msgid "Launch Google Map"
msgstr ""
msgstr "فتح خريطة جوجل"
#. module: google_map
#: model:ir.module.module,description:google_map.module_meta_information
+6 -6
View File
@@ -7,24 +7,24 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-08-03 05:39+0000\n"
"Last-Translator: Mantavya Gajjar (Open ERP) <Unknown>\n"
"PO-Revision-Date: 2011-06-18 11:23+0000\n"
"Last-Translator: kifcaliph <kifcaliph@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: 2011-04-29 05:26+0000\n"
"X-Generator: Launchpad (build 12758)\n"
"X-Launchpad-Export-Date: 2011-06-19 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: hr_contract
#: view:hr.contract.wage.type:0
msgid "Hourly cost computation"
msgstr ""
msgstr "حساب تكلفة الساعة"
#. module: hr_contract
#: selection:hr.contract.wage.type,type:0
msgid "Gross"
msgstr ""
msgstr "الإجمالي"
#. module: hr_contract
#: view:hr.contract:0
+2 -2
View File
@@ -94,8 +94,8 @@ class hr_holidays(osv.osv):
_description = "Leave"
_order = "type desc, date_from asc"
def _employee_get(obj, cr, uid, context=None):
ids = obj.pool.get('hr.employee').search(cr, uid, [('user_id', '=', uid)], context=context)
def _employee_get(self, cr, uid, context=None):
ids = self.pool.get('hr.employee').search(cr, uid, [('user_id', '=', uid)], context=context)
if ids:
return ids[0]
return False
+23 -23
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-08 02:26+0000\n"
"PO-Revision-Date: 2011-06-11 13:23+0000\n"
"Last-Translator: Christopher Ormaza - (Ecuadorenlinea.net) "
"<chris.ormaza@gmail.com>\n"
"Language-Team: Spanish (Ecuador) <es_EC@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: 2011-06-09 04:35+0000\n"
"X-Launchpad-Export-Date: 2011-06-12 04:52+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: hr_payroll
@@ -860,40 +860,40 @@ msgstr "Borrador"
#. module: hr_payroll
#: report:payslip.pdf:0
msgid "Earnings"
msgstr ""
msgstr "Ingresos"
#. module: hr_payroll
#: report:hr.payroll.register.sheet:0
#: report:salary.structure:0
msgid "Basic"
msgstr ""
msgstr "Básico"
#. module: hr_payroll
#: model:ir.actions.act_window,name:hr_payroll.action_hr_passport_tree
msgid "All Passports"
msgstr ""
msgstr "Todos los pasaportes"
#. module: hr_payroll
#: model:ir.actions.act_window,name:hr_payroll.action_hr_payroll_year_salary
#: model:ir.ui.menu,name:hr_payroll.menu_wizard_print_year_salary
msgid "Salary Register"
msgstr ""
msgstr "Registro Salarial"
#. module: hr_payroll
#: report:employees.salary:0
#: report:hr.payroll.register.sheet:0
msgid "Employee Name"
msgstr ""
msgstr "Nombre del empleado"
#. module: hr_payroll
#: model:ir.model,name:hr_payroll.model_hr_passport
msgid "Passport Detail"
msgstr ""
msgstr "Detalle del Pasaporte"
#. module: hr_payroll
#: selection:hr.payslip.line,amount_type:0
msgid "Percentage (%)"
msgstr ""
msgstr "Porcentaje (%)"
#. module: hr_payroll
#: field:hr.payroll.advice,register_id:0
@@ -902,7 +902,7 @@ msgstr ""
#: model:ir.model,name:hr_payroll.model_hr_payroll_register
#: model:ir.ui.menu,name:hr_payroll.hr_menu_payroll_register
msgid "Payroll Register"
msgstr ""
msgstr "Registro de nómina"
#. module: hr_payroll
#: report:hr.payroll.register.sheet:0
@@ -913,68 +913,68 @@ msgstr ""
#. module: hr_payroll
#: field:hr.passport,contracts_ids:0
msgid "Contracts"
msgstr ""
msgstr "Contratos"
#. module: hr_payroll
#: view:hr.payroll.structure:0
msgid "Employee Function"
msgstr ""
msgstr "Función del empleado"
#. module: hr_payroll
#: view:hr.payslip:0
msgid "Paid"
msgstr ""
msgstr "Pagado"
#. module: hr_payroll
#: view:hr.payslip:0
msgid "Approve Sheet"
msgstr ""
msgstr "Aprobar hoja"
#. module: hr_payroll
#: field:hr.payslip,paid:0
msgid "Paid ? "
msgstr ""
msgstr "¿Pagado? "
#. module: hr_payroll
#: view:hr.holidays.status:0
msgid "Validation"
msgstr ""
msgstr "Validación"
#. module: hr_payroll
#: report:employees.salary:0
msgid "Title"
msgstr ""
msgstr "Tratamiento:"
#. module: hr_payroll
#: view:company.contribution:0
msgid "Search Company Contribution"
msgstr ""
msgstr "Buscar contribución de la compañía"
#. module: hr_payroll
#: field:hr.allounce.deduction.categoty,user_id:0
msgid "User"
msgstr ""
msgstr "Usuario"
#. module: hr_payroll
#: view:hr.payroll.advice:0
msgid "Payment Lines"
msgstr ""
msgstr "Líneas de pago"
#. module: hr_payroll
#: view:hr.payslip:0
msgid "Compute Sheet"
msgstr ""
msgstr "Calcular hoja"
#. module: hr_payroll
#: field:company.contribution,active:0
#: field:hr.payroll.register,active:0
msgid "Active"
msgstr ""
msgstr "Activo"
#. module: hr_payroll
#: help:hr.allounce.deduction.categoty,condition:0
msgid "Applied this head for calculation if condition is true"
msgstr ""
msgstr "Aplicar este encabezado en el cálculo si la condición es verdadera"
#. module: hr_payroll
#: report:year.salary:0
+333
View File
@@ -0,0 +1,333 @@
# Russian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-12 22:30+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-06-13 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: hr_payroll_account
#: field:hr.payslip,move_line_ids:0
msgid "Accounting Lines"
msgstr "Строки счета"
#. module: hr_payroll_account
#: field:hr.payroll.register,bank_journal_id:0
#: field:hr.payslip,bank_journal_id:0
msgid "Bank Journal"
msgstr "Банковский журнал"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_contibution_register_line
msgid "Contribution Register Line"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_contibution_register
msgid "Contribution Register"
msgstr ""
#. module: hr_payroll_account
#: help:hr.employee,analytic_account:0
msgid "Analytic Account for Salary Analysis"
msgstr "Аналитический счет для анализа заработной платы"
#. module: hr_payroll_account
#: field:hr.payroll.register,journal_id:0
#: field:hr.payslip,journal_id:0
msgid "Expense Journal"
msgstr ""
#. module: hr_payroll_account
#: field:hr.contibution.register.line,period_id:0
msgid "Period"
msgstr "Период"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_employee
msgid "Employee"
msgstr "Сотрудник"
#. module: hr_payroll_account
#: view:hr.payslip:0
msgid "Other Informations"
msgstr "Прочая информация"
#. module: hr_payroll_account
#: field:hr.employee,salary_account:0
msgid "Salary Account"
msgstr "Зарплатный счет"
#. module: hr_payroll_account
#: help:hr.employee,property_bank_account:0
msgid "Select Bank Account from where Salary Expense will be Paid"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payroll_register
msgid "Payroll Register"
msgstr "Журнал начисления заработной платы"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip_account_move
msgid "Account Move Link to Pay Slip"
msgstr ""
#. module: hr_payroll_account
#: view:hr.payslip:0
msgid "Description"
msgstr "Описание"
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:331
#, python-format
msgid "Please Confirm all Expense Invoice appear for Reimbursement"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:432
#, python-format
msgid "Please defined partner in bank account for %s !"
msgstr ""
#. module: hr_payroll_account
#: view:hr.payslip:0
msgid "Accounting Informations"
msgstr "Учетная информация"
#. module: hr_payroll_account
#: help:hr.employee,salary_account:0
msgid "Expense account when Salary Expense will be recorded"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:429
#, python-format
msgid "Please defined bank account for %s !"
msgstr ""
#. module: hr_payroll_account
#: model:ir.module.module,description:hr_payroll_account.module_meta_information
msgid ""
"Generic Payroll system Integrated with Accountings\n"
" * Expanse Encoding\n"
" * Payment Encoding\n"
" * Comany Contribution Managemet\n"
" "
msgstr ""
#. module: hr_payroll_account
#: model:ir.module.module,shortdesc:hr_payroll_account.module_meta_information
msgid "Human Resource Payroll Accounting"
msgstr "Учёт выплат персоналу"
#. module: hr_payroll_account
#: view:hr.payslip:0
#: field:hr.payslip,move_payment_ids:0
msgid "Payment Lines"
msgstr "Позиции платежа"
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:270
#: code:addons/hr_payroll_account/hr_payroll_account.py:445
#, python-format
msgid "Please define fiscal year for perticular contract"
msgstr ""
#. module: hr_payroll_account
#: field:hr.payslip.account.move,slip_id:0
#: model:ir.model,name:hr_payroll_account.model_hr_payslip
msgid "Pay Slip"
msgstr "Расчетный листок"
#. module: hr_payroll_account
#: constraint:hr.employee:0
msgid "Error ! You cannot create recursive Hierarchy of Employees."
msgstr "Ошибка! Структура подчинения не может быть рекурсивной."
#. module: hr_payroll_account
#: view:hr.payslip:0
msgid "Account Lines"
msgstr "Строки счета"
#. module: hr_payroll_account
#: field:hr.contibution.register,account_id:0
#: field:hr.holidays.status,account_id:0
#: field:hr.payroll.advice,account_id:0
msgid "Account"
msgstr "Учётная запись"
#. module: hr_payroll_account
#: field:hr.employee,property_bank_account:0
msgid "Bank Account"
msgstr "Банковский счет"
#. module: hr_payroll_account
#: field:hr.payslip.account.move,name:0
msgid "Name"
msgstr "Название"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip_line
msgid "Payslip Line"
msgstr "Строка расчетного листка"
#. module: hr_payroll_account
#: view:hr.payslip:0
msgid "Accounting Vouchers"
msgstr ""
#. module: hr_payroll_account
#: constraint:hr.employee:0
msgid ""
"Error ! You cannot select a department for which the employee is the manager."
msgstr ""
"Ошибка! Вы не можете выбрать подразделение, руководителем которого является "
"этот сотрудник."
#. module: hr_payroll_account
#: help:hr.payroll.register,period_id:0
#: help:hr.payslip,period_id:0
msgid "Keep empty to use the period of the validation(Payslip) date."
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payroll_advice
msgid "Bank Advice Note"
msgstr ""
#. module: hr_payroll_account
#: field:hr.payslip.account.move,move_id:0
msgid "Expense Entries"
msgstr ""
#. module: hr_payroll_account
#: field:hr.payslip,move_ids:0
msgid "Accounting vouchers"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:270
#: code:addons/hr_payroll_account/hr_payroll_account.py:277
#: code:addons/hr_payroll_account/hr_payroll_account.py:280
#: code:addons/hr_payroll_account/hr_payroll_account.py:297
#: code:addons/hr_payroll_account/hr_payroll_account.py:331
#: code:addons/hr_payroll_account/hr_payroll_account.py:445
#: code:addons/hr_payroll_account/hr_payroll_account.py:452
#: code:addons/hr_payroll_account/hr_payroll_account.py:455
#: code:addons/hr_payroll_account/hr_payroll_account.py:469
#: code:addons/hr_payroll_account/hr_payroll_account.py:492
#, python-format
msgid "Warning !"
msgstr "Warning !"
#. module: hr_payroll_account
#: field:hr.employee,employee_account:0
msgid "Employee Account"
msgstr "Счёт работника"
#. module: hr_payroll_account
#: field:hr.payslip.line,account_id:0
msgid "General Account"
msgstr "Базовый счёт"
#. module: hr_payroll_account
#: field:hr.contibution.register,yearly_total_by_emp:0
msgid "Total By Employee"
msgstr "Всего на сотрудника"
#. module: hr_payroll_account
#: field:hr.payslip.account.move,sequence:0
msgid "Sequence"
msgstr "Последовательность"
#. module: hr_payroll_account
#: field:hr.payroll.register,period_id:0
#: field:hr.payslip,period_id:0
msgid "Force Period"
msgstr "Установить период"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_holidays_status
msgid "Leave Type"
msgstr "Тип отсутствия"
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:277
#: code:addons/hr_payroll_account/hr_payroll_account.py:452
#, python-format
msgid "Fiscal Year is not defined for slip date %s"
msgstr ""
#. module: hr_payroll_account
#: field:hr.contibution.register,analytic_account_id:0
#: field:hr.employee,analytic_account:0
#: field:hr.holidays.status,analytic_account_id:0
#: field:hr.payroll.structure,account_id:0
#: field:hr.payslip.line,analytic_account_id:0
msgid "Analytic Account"
msgstr "Счёт аналитики"
#. module: hr_payroll_account
#: help:hr.employee,employee_account:0
msgid "Employee Payable Account"
msgstr ""
#. module: hr_payroll_account
#: field:hr.contibution.register,yearly_total_by_comp:0
msgid "Total By Company"
msgstr "Всего по организации"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payroll_structure
msgid "Salary Structure"
msgstr "Структура зарплаты"
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:557
#, python-format
msgid "Please Configure Partners Receivable Account!!"
msgstr ""
#. module: hr_payroll_account
#: view:hr.contibution.register:0
msgid "Year"
msgstr "Год"
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:280
#: code:addons/hr_payroll_account/hr_payroll_account.py:455
#, python-format
msgid "Period is not defined for slip date %s"
msgstr ""
#. module: hr_payroll_account
#: view:hr.payslip:0
msgid "Accounting Details"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:540
#, python-format
msgid "Please Configure Partners Payable Account!!"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:429
#: code:addons/hr_payroll_account/hr_payroll_account.py:432
#: code:addons/hr_payroll_account/hr_payroll_account.py:533
#: code:addons/hr_payroll_account/hr_payroll_account.py:550
#, python-format
msgid "Integrity Error !"
msgstr ""
+23
View File
@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (C) 2010-2011 BAAMTU SARL (<http://www.baamtu.sn>).
# contact: leadsn@baamtu.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+42
View File
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (C) 2010-2011 BAAMTU SARL (<http://www.baamtu.sn>).
# contact: leadsn@baamtu.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
"name" : "OHADA - The accounting chart ",
"version" : "1.0",
"author" : "Baamtu Senegal",
"category" : "Localisation/Account Charts",
"description": """This module implements the accounting chart for OHADA area.
It allows any company or association to manage its financial accounting.
Countries that use OHADA are the following:
Benin, Burkina Faso, Cameroon, Central African Republic, Comoros, Congo,
Ivory Coast, Gabon, Guinea, Guinea Bissau,
Equatorial Guinea, Mali, Niger, Replica of Democratic Congo, Senegal, Chad, Togo.
""",
"website": "http://www.baamtu.com",
"depends" : ["account", "base_vat"],
"demo_xml" : [],
"init_xml":[],
"update_xml" : ["l10n_syscohada_data.xml","l10n_syscohada_wizard.xml"],
"active": False,
"installable": True
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+200
View File
@@ -0,0 +1,200 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * l10n_syscohada
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2010-05-09 10:31+0000\n"
"PO-Revision-Date: 2011-06-20 13:17+0000\n"
"Last-Translator: OpenERP Administrators <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: 2011-06-21 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: l10n_syscohada
#: model:ir.actions.todo,note:l10n_syscohada.config_call_account_template_syscohada
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_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_asset
msgid "Asset"
msgstr "Actifs"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_income
msgid "Income"
msgstr "Produits"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_payable
msgid "Payable"
msgstr "À payer"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stocks
msgid "Actif circulant"
msgstr "Actif circulant"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_dettes
msgid "Dettes long terme"
msgstr "Dettes long terme"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_tax
msgid "Tax"
msgstr "Taxes"
#. module: l10n_syscohada
#: constraint:account.account.template:0
msgid "Error ! You can not create recursive account templates."
msgstr "Erreur ! Vous ne pouvez pas créer des modéles de comptes récursifs"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_provision
msgid "Provisions"
msgstr "Provisions"
#. module: l10n_syscohada
#: constraint:account.tax.code.template:0
msgid "Error ! You can not create recursive Tax Codes."
msgstr "Erreur ! Vous ne pouvez pas créer de codes de taxe récursifs"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_commitment
msgid "Engagements"
msgstr "Engagements"
#. module: l10n_syscohada
#: model:ir.module.module,description:l10n_syscohada.module_meta_information
msgid "This module implementes the accounting chart for OHADA area."
msgstr ""
"Ce module implémente le plan comptable général du système comptable de la "
"zone OHAHA"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_expense
msgid "Expense"
msgstr "Charges"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_receivable
msgid "Receivable"
msgstr "Recevable"
#. module: l10n_syscohada
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Le nom de l'objet doit commencer avec x_ et ne pas contenir de charactères "
"spéciaux !"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_immobilisations
msgid "Immobilisations"
msgstr "Immobilisations"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_equity
msgid "Equity"
msgstr "Capitaux propres"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stock
msgid "Stocks"
msgstr "Stocks"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cash
msgid "Cash"
msgstr "Liquidités"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_special
msgid "Comptes spéciaux"
msgstr "Comptes spéciaux"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_view
msgid "View"
msgstr "Vue"
#. module: l10n_syscohada
#: model:ir.module.module,shortdesc:l10n_syscohada.module_meta_information
msgid "OHADA - Plan comptable général"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cloture
msgid "Cloture"
msgstr "Clôture"
#~ msgid "The journal must have centralised counterpart"
#~ msgstr "Le journal attend une contrepartie centralisée"
#~ msgid "Opening Entries Period"
#~ msgstr "Période des écritures d'ouvertures"
#~ msgid "Fiscal Year to close"
#~ msgstr "Année fiscale à clôturer"
#~ msgid "Generate Fiscal Year Opening Entries(Corrected)"
#~ msgstr "Générer les écritures d'ouvertures d'exercice fiscal(Corrigé)"
#~ msgid "Generated during fiscal year closing/opening process"
#~ msgstr "Ecriture de report"
#~ msgid "Opening Entries Journal"
#~ msgstr "Journal des écritures d'ouverture"
#~ msgid "The journal must have default credit and debit account"
#~ msgstr "Le journal doit posséder un compte de crédit et débit par défaut"
#~ msgid "Create entries"
#~ msgstr "Créer les écritures"
#~ msgid "Name of new entries"
#~ msgstr "Nom des nouvelles entrées"
#~ msgid "Closing of fiscal year cancelled, please check the box !"
#~ msgstr "Clôture de l'exercice fiscal annulée, veuillez cocher la case !"
#~ msgid "End of Fiscal Year Entry"
#~ msgstr "Écriture de fin d'exercice fiscal"
#~ msgid "The opening journal must not have any entry in the new fiscal year !"
#~ msgstr ""
#~ "Le journal d'ouverture ne doit pas contenir d'écriture dans le nouvel "
#~ "exercice fiscal !"
#~ msgid "Close Fiscal Year with new entries"
#~ msgstr "Clôturer l'exercice fiscal avec de nouvelles écritures"
#~ msgid "UserError"
#~ msgstr "Erreur utilsateur"
#~ msgid "New Fiscal Year"
#~ msgstr "Nouvel exercice fiscal"
#~ msgid "Check this box"
#~ msgstr "Cocher cette case"
#~ msgid "Are you sure you want to create entries?"
#~ msgstr "Etes vous sûr de vouloir enrégistrer des écritures"
#~ msgid "Cancel"
#~ msgstr "Annuler"
+240
View File
@@ -0,0 +1,240 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * l10n_syscohada
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2010-05-09 10:31+0000\n"
"PO-Revision-Date: 2010-05-09 10:31+0000\n"
"Last-Translator: Baamtu Sarl \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-05-09 10:31+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: l10n_syscohada
#: model:ir.actions.todo,note:l10n_syscohada.config_call_account_template_syscohada
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_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_asset
msgid "Asset"
msgstr "Actifs"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_income
msgid "Income"
msgstr "Produits"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_payable
msgid "Payable"
msgstr "À payer"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stocks
msgid "Actif circulant"
msgstr "Actif circulant"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_dettes
msgid "Dettes long terme"
msgstr "Dettes long terme"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_tax
msgid "Tax"
msgstr "Taxes"
#. module: l10n_syscohada
#: constraint:account.account.template:0
msgid "Error ! You can not create recursive account templates."
msgstr "Erreur ! Vous ne pouvez pas créer des modéles de comptes récursifs"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_provision
msgid "Provisions"
msgstr "Provisions"
#. module: l10n_syscohada
#: constraint:account.tax.code.template:0
msgid "Error ! You can not create recursive Tax Codes."
msgstr "Erreur ! Vous ne pouvez pas créer de codes de taxe récursifs"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_commitment
msgid "Engagements"
msgstr "Engagements"
#. module: l10n_syscohada
#: model:ir.module.module,description:l10n_syscohada.module_meta_information
msgid "This module implementes the accounting chart for OHADA area."
msgstr "Ce module implémente le plan comptable général du système comptable de la zone OHAHA"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_expense
msgid "Expense"
msgstr "Charges"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_receivable
msgid "Receivable"
msgstr "Recevable"
#. module: l10n_syscohada
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Le nom de l'objet doit commencer avec x_ et ne pas contenir de charactères "
"spéciaux !"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_immobilisations
msgid "Immobilisations"
msgstr "Immobilisations"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_equity
msgid "Equity"
msgstr "Capitaux propres"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stock
msgid "Stocks"
msgstr "Stocks"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cash
msgid "Cash"
msgstr "Liquidités"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_special
msgid "Comptes spéciaux"
msgstr "Comptes spéciaux"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_view
msgid "View"
msgstr "Vue"
#. module: l10n_syscohada
#: model:ir.module.module,shortdesc:l10n_syscohada.module_meta_information
msgid "OHADA - Plan comptable général"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cloture
msgid "Cloture"
msgstr "Clôture"
#. module: l10n_syscohada
#: code:addons/l10n_syscohada/wizard/wizard_fiscalyear_close.py:0
#, python-format
msgid "The journal must have centralised counterpart"
msgstr "Le journal attend une contrepartie centralisée"
#. module: l10n_syscohada
#: wizard_field:account.fiscalyear.close_corrected,init,period_id:0
msgid "Opening Entries Period"
msgstr "Période des écritures d'ouvertures"
#. module: l10n_syscohada
#: wizard_field:account.fiscalyear.close_corrected,init,fy_id:0
msgid "Fiscal Year to close"
msgstr "Année fiscale à clôturer"
#. module: l10n_syscohada
#: model:ir.actions.wizard,name:l10n_syscohada.wizard_fiscalyear_close_corrected
#: model:ir.ui.menu,name:l10n_syscohada.menu_wizard_fy_close_corrected
msgid "Generate Fiscal Year Opening Entries(Corrected)"
msgstr "Générer les écritures d'ouvertures d'exercice fiscal(Corrigé)"
#. module: l10n_syscohada
#: field:account.move.line,fy_opening:0
msgid "Generated during fiscal year closing/opening process"
msgstr "Ecriture de report"
#. module: l10n_syscohada
#: wizard_field:account.fiscalyear.close_corrected,init,journal_id:0
msgid "Opening Entries Journal"
msgstr "Journal des écritures d'ouverture"
#. module: l10n_syscohada
#: code:addons/l10n_syscohada/wizard/wizard_fiscalyear_close.py:0
#, python-format
msgid "The journal must have default credit and debit account"
msgstr "Le journal doit posséder un compte de crédit et débit par défaut"
#. module: l10n_syscohada
#: wizard_button:account.fiscalyear.close_corrected,init,close:0
msgid "Create entries"
msgstr "Créer les écritures"
#. module: l10n_syscohada
#: wizard_field:account.fiscalyear.close_corrected,init,report_name:0
msgid "Name of new entries"
msgstr "Nom des nouvelles entrées"
#. module: l10n_syscohada
#: code:addons/l10n_syscohada/wizard/wizard_fiscalyear_close.py:0
#, python-format
msgid "Closing of fiscal year cancelled, please check the box !"
msgstr "Clôture de l'exercice fiscal annulée, veuillez cocher la case !"
#. module: l10n_syscohada
#: code:addons/l10n_syscohada/wizard/wizard_fiscalyear_close.py:0
#, python-format
msgid "End of Fiscal Year Entry"
msgstr "Écriture de fin d'exercice fiscal"
#. module: l10n_syscohada
#: code:addons/l10n_syscohada/wizard/wizard_fiscalyear_close.py:0
#, python-format
msgid "The opening journal must not have any entry in the new fiscal year !"
msgstr "Le journal d'ouverture ne doit pas contenir d'écriture dans le nouvel exercice fiscal !"
#. module: l10n_syscohada
#: wizard_view:account.fiscalyear.close_corrected,init:0
msgid "Close Fiscal Year with new entries"
msgstr "Clôturer l'exercice fiscal avec de nouvelles écritures"
#. module: l10n_syscohada
#: code:addons/l10n_syscohada/wizard/wizard_fiscalyear_close.py:0
#, python-format
msgid "UserError"
msgstr "Erreur utilsateur"
#. module: l10n_syscohada
#: wizard_field:account.fiscalyear.close_corrected,init,fy2_id:0
msgid "New Fiscal Year"
msgstr "Nouvel exercice fiscal"
#. module: l10n_syscohada
#: wizard_field:account.fiscalyear.close_corrected,init,sure:0
msgid "Check this box"
msgstr "Cocher cette case"
#. module: l10n_syscohada
#: wizard_view:account.fiscalyear.close_corrected,init:0
msgid "Are you sure you want to create entries?"
msgstr "Etes vous sûr de vouloir enrégistrer des écritures"
#. module: l10n_syscohada
#: wizard_button:account.fiscalyear.close_corrected,init,end:0
msgid "Cancel"
msgstr "Annuler"
@@ -0,0 +1,137 @@
#,
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2010-05-09 10:31+0000\n"
"PO-Revision-Date: 2010-05-09 10:31+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-05-09 10:31+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: l10n_syscohada
#: model:ir.actions.todo,note:l10n_syscohada.config_call_account_template_syscohada
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_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_asset
msgid "Asset"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_income
msgid "Income"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_payable
msgid "Payable"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stocks
msgid "Actif circulant"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_dettes
msgid "Dettes long terme"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_tax
msgid "Tax"
msgstr ""
#. module: l10n_syscohada
#: constraint:account.account.template:0
msgid "Error ! You can not create recursive account templates."
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_provision
msgid "Provisions"
msgstr ""
#. module: l10n_syscohada
#: constraint:account.tax.code.template:0
msgid "Error ! You can not create recursive Tax Codes."
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_commitment
msgid "Engagements"
msgstr ""
#. module: l10n_syscohada
#: model:ir.module.module,description:l10n_syscohada.module_meta_information
msgid "This module implementes the accounting chart for OHADA area."
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_expense
msgid "Expense"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_receivable
msgid "Receivable"
msgstr ""
#. module: l10n_syscohada
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_immobilisations
msgid "Immobilisations"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_equity
msgid "Equity"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stock
msgid "Stocks"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cash
msgid "Cash"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_special
msgid "Comptes spéciaux"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_view
msgid "View"
msgstr ""
#. module: l10n_syscohada
#: model:ir.module.module,shortdesc:l10n_syscohada.module_meta_information
msgid "OHADA - Plan comptable général"
msgstr ""
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cloture
msgid "Cloture"
msgstr ""
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="config_call_account_template_syscohada" model="ir.actions.todo">
<field name="name">Generate Chart of Accounts from a Chart Template</field>
<field name="note">Generate Chart of Accounts from a SYSCOHADA 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.
This is the same wizard that runs from Financial Management/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template.</field>
<field name="action_id" ref="account.action_wizard_multi_chart"/>
<field name="state">open</field>
</record>
</data>
</openerp>
+360
View File
@@ -0,0 +1,360 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-20 10:00+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-21 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: mail_gateway
#: field:mailgate.message,res_id:0
msgid "Resource ID"
msgstr "Resurssi ID"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:68
#: code:addons/mail_gateway/mail_gateway.py:71
#: code:addons/mail_gateway/mail_gateway.py:89
#, python-format
msgid "Method is not implemented"
msgstr "Metodia ei ole toteutettu"
#. module: mail_gateway
#: view:mailgate.message:0
#: field:mailgate.message,email_from:0
msgid "From"
msgstr "Lähettäjä"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Open Attachments"
msgstr "Avaa liitteet"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Message Details"
msgstr "Viestin yksityiskohdat"
#. module: mail_gateway
#: field:mailgate.message,message_id:0
msgid "Message Id"
msgstr "Viestin ID"
#. module: mail_gateway
#: field:mailgate.message,ref_id:0
msgid "Reference Id"
msgstr "Viite id"
#. module: mail_gateway
#: view:mailgate.thread:0
msgid "Mailgateway History"
msgstr "Postiyhteyden historia"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:249
#, python-format
msgid "Note"
msgstr "Huomautus"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Group By..."
msgstr "Ryhmittely.."
#. module: mail_gateway
#: constraint:res.partner:0
msgid "Error ! You can not create recursive associated members."
msgstr "Virhe! Rekursiivisesti rinnastettuja jäseniä ei voi luoda."
#. module: mail_gateway
#: help:mailgate.message,message_id:0
msgid "Message Id on Email."
msgstr "Viestin id sähköpostissa"
#. module: mail_gateway
#: help:mailgate.message,email_to:0
msgid "Email Recipients"
msgstr "Sähköpostin vastaanottajat"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Details"
msgstr "Yksityiskohdat"
#. module: mail_gateway
#: view:mailgate.thread:0
msgid "Mailgate History"
msgstr "Sähöpostivälittäjän historia"
#. module: mail_gateway
#: model:ir.model,name:mail_gateway.model_email_server_tools
msgid "Email Server Tools"
msgstr "Sähköpostipalvelimen työkalut"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Email Followers"
msgstr "Sähköpostin seuraajat"
#. module: mail_gateway
#: model:ir.model,name:mail_gateway.model_res_partner
#: view:mailgate.message:0
#: field:mailgate.message,partner_id:0
msgid "Partner"
msgstr "Yhteistyökumppani"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:250
#, python-format
msgid " wrote on %s:\n"
msgstr ""
#. module: mail_gateway
#: view:mailgate.message:0
#: field:mailgate.message,description:0
#: field:mailgate.message,message:0
msgid "Description"
msgstr "Kuvaus"
#. module: mail_gateway
#: field:mailgate.message,email_to:0
msgid "To"
msgstr "Vastaanottaja"
#. module: mail_gateway
#: help:mailgate.message,references:0
msgid "References emails."
msgstr "Viittaavat sähköpostit"
#. module: mail_gateway
#: help:mailgate.message,email_cc:0
msgid "Carbon Copy Email Recipients"
msgstr "Kopio viestistä vastaanottajille"
#. module: mail_gateway
#: model:ir.module.module,shortdesc:mail_gateway.module_meta_information
msgid "Email Gateway System"
msgstr "Sähköpostivälitysjärjstelmä"
#. module: mail_gateway
#: field:mailgate.message,date:0
msgid "Date"
msgstr "Päiväys"
#. module: mail_gateway
#: field:mailgate.message,model:0
msgid "Object Name"
msgstr "Objektin nimi"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Partner Name"
msgstr "Kumppanin Nimi"
#. module: mail_gateway
#: model:ir.actions.act_window,name:mail_gateway.action_view_mailgate_thread
msgid "Mailgateway Threads"
msgstr "sähköpostivälittäjän keskustelut"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:247
#, python-format
msgid "Opportunity"
msgstr "Mahdollisuus"
#. module: mail_gateway
#: model:ir.actions.act_window,name:mail_gateway.act_res_partner_emails
#: model:ir.actions.act_window,name:mail_gateway.action_view_mailgate_message
#: view:mailgate.message:0
#: field:res.partner,emails:0
msgid "Emails"
msgstr "Sähköpostit"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:252
#, python-format
msgid "Stage"
msgstr "Vaihe"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:250
#, python-format
msgid " added note on "
msgstr " lisäsi huomautuksen "
#. module: mail_gateway
#: help:mailgate.message,email_from:0
msgid "Email From"
msgstr "Sähköposti lähettäjältä"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Thread"
msgstr "Keskustelu"
#. module: mail_gateway
#: model:ir.model,name:mail_gateway.model_mailgate_message
msgid "Mailgateway Message"
msgstr "sähköpostivälittäjän viesti"
#. module: mail_gateway
#: model:ir.actions.act_window,name:mail_gateway.action_view_mail_message
#: field:mailgate.thread,message_ids:0
msgid "Messages"
msgstr "Viestit"
#. module: mail_gateway
#: field:mailgate.message,user_id:0
msgid "User Responsible"
msgstr "Vastuunalainen käyttäjä"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:248
#, python-format
msgid "Converted to Opportunity"
msgstr "Muutettu mahdollisuudeksi"
#. module: mail_gateway
#: field:mailgate.message,email_bcc:0
msgid "Bcc"
msgstr "Piilokopio"
#. module: mail_gateway
#: field:mailgate.message,history:0
msgid "Is History?"
msgstr "onko historiaa?"
#. module: mail_gateway
#: help:mailgate.message,email_bcc:0
msgid "Blind Carbon Copy Email Recipients"
msgstr "Piilokopion vastaanottajat"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "mailgate message"
msgstr "Postinvälittäjän viesti"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:148
#: view:mailgate.thread:0
#: view:res.partner:0
#, python-format
msgid "History"
msgstr "Historia"
#. module: mail_gateway
#: field:mailgate.message,references:0
msgid "References"
msgstr "Viitteet"
#. module: mail_gateway
#: model:ir.model,name:mail_gateway.model_mailgate_thread
#: view:mailgate.thread:0
msgid "Mailgateway Thread"
msgstr "sähköpostivälittäjän keskustelu"
#. module: mail_gateway
#: model:ir.actions.act_window,name:mail_gateway.act_res_partner_open_email
#: view:mailgate.message:0
#: field:mailgate.message,attachment_ids:0
#: view:mailgate.thread:0
msgid "Attachments"
msgstr "Liitteet"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Open Document"
msgstr "Avaa asiakirja"
#. module: mail_gateway
#: view:mailgate.thread:0
msgid "Email Details"
msgstr "Sähköpostin yksityiskohdat"
#. module: mail_gateway
#: field:mailgate.message,email_cc:0
msgid "Cc"
msgstr "Kopio"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:254
#, python-format
msgid " on %s:\n"
msgstr ""
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Month"
msgstr "Kuukausi"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Email Search"
msgstr "Sähköpostin haku"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:561
#, python-format
msgid "receive"
msgstr "vastaanota"
#. module: mail_gateway
#: model:ir.module.module,description:mail_gateway.module_meta_information
msgid ""
"The generic email gateway system allows to send and receive emails\n"
" * History for Emails\n"
" * Easy Integration with any Module"
msgstr ""
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:255
#, python-format
msgid "Changed Status to: "
msgstr "Tila muutettu : "
#. module: mail_gateway
#: field:mailgate.message,display_text:0
msgid "Display Text"
msgstr "Näytä teksti"
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Owner"
msgstr "Omistaja"
#. module: mail_gateway
#: code:addons/mail_gateway/mail_gateway.py:253
#, python-format
msgid "Changed Stage to: "
msgstr "Vaihe muutettu : "
#. module: mail_gateway
#: view:mailgate.message:0
msgid "Message"
msgstr "Viesti"
#. module: mail_gateway
#: view:mailgate.message:0
#: field:mailgate.message,name:0
msgid "Subject"
msgstr "Aihe"
#. module: mail_gateway
#: help:mailgate.message,ref_id:0
msgid "Message Id in Email Server."
msgstr "Viestin ID sähköpostipalvelimella."
#, python-format
#~ msgid " wrote on "
#~ msgstr " kirjoitti "
+1 -1
View File
@@ -116,7 +116,7 @@
<page string="Invoicing">
<field name="invoice_method" colspan="4"/>
<field
name="pricelist_id" context="product_id=product_id"
name="pricelist_id" context="{'product_id':product_id}"
attrs="{'readonly':[('invoice_method','=', 'none')]}"/>
<field name="partner_invoice_id" attrs="{'readonly':[('invoice_method','=', 'none')]}"/>
<!-- <field name="invoice_id"/> -->
+147
View File
@@ -0,0 +1,147 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-20 09:14+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-21 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: outlook
#: field:outlook.installer,doc_file:0
msgid "Installation Manual"
msgstr "Asennusohje"
#. module: outlook
#: field:outlook.installer,plugin_file:0
msgid "Outlook Plug-in"
msgstr "Outlook liitännäinen"
#. module: outlook
#: field:outlook.installer,description:0
msgid "Description"
msgstr "Kuvaus"
#. module: outlook
#: model:ir.ui.menu,name:outlook.menu_base_config_plugins_outlook
#: view:outlook.installer:0
msgid "Outlook Plug-In"
msgstr "Outlook liitännäinen"
#. module: outlook
#: view:outlook.installer:0
msgid "Skip"
msgstr "Ohita"
#. module: outlook
#: model:ir.module.module,shortdesc:outlook.module_meta_information
msgid "Outlook Interface"
msgstr "Outlook liittymä"
#. module: outlook
#: field:outlook.installer,doc_name:0
#: field:outlook.installer,name:0
msgid "File name"
msgstr "Tiedostonimi"
#. module: outlook
#: field:outlook.installer,outlook:0
msgid "Outlook Plug-in "
msgstr "Outlook liitännäinen "
#. module: outlook
#: model:ir.module.module,description:outlook.module_meta_information
msgid ""
"\n"
" This module provide the Outlook plug-in. \n"
"\n"
" Outlook plug-in allows you to select an object that you’d like to add\n"
" to your email and its attachments from MS Outlook. You can select a "
"partner, a task,\n"
" a project, an analytical account, or any other object and Archived "
"selected\n"
" mail in mailgate.messages with attachments.\n"
"\n"
" "
msgstr ""
#. module: outlook
#: help:outlook.installer,doc_file:0
msgid "The documentation file :- how to install Outlook Plug-in."
msgstr "Dokumentointi : -kuinka outlook liitännäinen asennetaan."
#. module: outlook
#: model:ir.model,name:outlook.model_outlook_installer
msgid "outlook.installer"
msgstr ""
#. module: outlook
#: model:ir.actions.act_window,name:outlook.action_outlook_installer
#: model:ir.actions.act_window,name:outlook.action_outlook_wizard
#: view:outlook.installer:0
msgid "Outlook Plug-In Configuration"
msgstr "Outlook liitännäisen konfiguraatio"
#. module: outlook
#: field:outlook.installer,progress:0
msgid "Configuration Progress"
msgstr "Konfiguraation eteneminen"
#. module: outlook
#: view:outlook.installer:0
msgid ""
"This plug-in allows you to link your e-mail to OpenERP's documents. You can "
"attach it to any existing one in OpenERP or create a new one."
msgstr ""
"Tämä liitännäien sallii sinun linkittää sähköpostisi OpenERP dokumentteihin. "
"Voit liittää sen mihin tahansa OpenERP:iin tai luoda uuden."
#. module: outlook
#: help:outlook.installer,outlook:0
msgid ""
"Allows you to select an object that you would like to add to your email and "
"its attachments."
msgstr ""
"Voit valita objektin jonka haluat liittää sähköpostiin ja sen liitteisiin."
#. module: outlook
#: view:outlook.installer:0
msgid "title"
msgstr "otsikko"
#. module: outlook
#: view:outlook.installer:0
msgid "_Close"
msgstr ""
#. module: outlook
#: view:outlook.installer:0
msgid "Installation and Configuration Steps"
msgstr "Asennus ja konfigurointivaiheet"
#. module: outlook
#: field:outlook.installer,config_logo:0
msgid "Image"
msgstr "Kuva"
#. module: outlook
#: help:outlook.installer,plugin_file:0
msgid ""
"outlook plug-in file. Save as this file and install this plug-in in outlook."
msgstr ""
"Outlook liitännäistiedosto. Talleta se tiedostona ja asenna outlookissa."
#. module: outlook
#: view:outlook.installer:0
msgid "Configure"
msgstr "Konfiguroi"
+77
View File
@@ -0,0 +1,77 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-20 09:18+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-21 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: pad
#: code:addons/pad/web/editors.py:32
#, python-format
msgid "Ok"
msgstr "OK"
#. module: pad
#: code:addons/pad/web/editors.py:29
#, python-format
msgid "Name"
msgstr "Nimi"
#. module: pad
#: help:res.company,pad_index:0
msgid "The root URL of the company's pad instance"
msgstr "Peruspolku yrityksen PAD instassiin"
#. module: pad
#: model:ir.model,name:pad.model_res_company
msgid "Companies"
msgstr "Yritykset"
#. module: pad
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "Virhe! Et voi luoda sisäkkäisiä yrityksiä."
#. module: pad
#: code:addons/pad/web/editors.py:17
#, python-format
msgid "Write"
msgstr "Kirjoita"
#. module: pad
#: model:ir.module.module,description:pad.module_meta_information
msgid ""
"\n"
"Adds enhanced support for (Ether)Pad attachments in the web client, lets "
"the\n"
"company customize which Pad installation should be used to link to new pads\n"
"(by default, pad.openerp.com)\n"
" "
msgstr ""
#. module: pad
#: field:res.company,pad_index:0
msgid "Pad root URL"
msgstr "Padin peruspolku (URL)"
#. module: pad
#: view:res.company:0
msgid "Pad"
msgstr ""
#. module: pad
#: model:ir.module.module,shortdesc:pad.module_meta_information
msgid "Enhanced support for (Ether)Pad attachments"
msgstr "Parannettu tuki (Ether)PAD liitännöille"
+899
View File
@@ -0,0 +1,899 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-20 09:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-21 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: procurement
#: view:make.procurement:0
msgid "Ask New Products"
msgstr "Kysy uusia tuotteita"
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_sched
msgid "Schedulers"
msgstr "Ajastimet"
#. module: procurement
#: model:ir.model,name:procurement.model_make_procurement
msgid "Make Procurements"
msgstr "Tee hankinnat"
#. module: procurement
#: help:procurement.order.compute.all,automatic:0
msgid ""
"Triggers an automatic procurement for all products that have a virtual stock "
"under 0. You should probably not use this option, we suggest using a MTO "
"configuration on products."
msgstr ""
"Liipaisee automaattisen hankinnan kaikille tuotteille joiden näennäisvarasto "
"on alle 0. Tätä vaihtoehtoa ei yleensä käytetä, vaan tuotteille on parempi "
"määrittää varastosäännöt."
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Group By..."
msgstr "Ryhmittely.."
#. module: procurement
#: help:stock.warehouse.orderpoint,procurement_draft_ids:0
msgid "Draft procurement of the product and location of that orderpoint"
msgstr "Luonnnos hankinta tuotteelle ja tilauspisteen paikalle"
#. module: procurement
#: code:addons/procurement/procurement.py:288
#, python-format
msgid "No supplier defined for this product !"
msgstr "Tuotteelle ei ole määritelty toimittajaa!"
#. module: procurement
#: field:make.procurement,uom_id:0
msgid "Unit of Measure"
msgstr "Mittayksikkö"
#. module: procurement
#: field:procurement.order,procure_method:0
msgid "Procurement Method"
msgstr "Hankintatapa"
#. module: procurement
#: code:addons/procurement/procurement.py:304
#, python-format
msgid "No address defined for the supplier"
msgstr "Toimittajan osoitetta ei ole määritetty"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.action_procurement_compute
msgid "Compute Stock Minimum Rules Only"
msgstr "Laske vain varaston minimirajat"
#. module: procurement
#: field:procurement.order,company_id:0
#: field:stock.warehouse.orderpoint,company_id:0
msgid "Company"
msgstr "Yritys"
#. module: procurement
#: field:procurement.order,product_uos_qty:0
msgid "UoS Quantity"
msgstr "Myyntiyksikkö määrä"
#. module: procurement
#: view:procurement.order:0
#: field:procurement.order,name:0
msgid "Reason"
msgstr "Syy"
#. module: procurement
#: view:procurement.order.compute:0
msgid "Compute Procurements"
msgstr "Laske hankinnat"
#. module: procurement
#: field:procurement.order,message:0
msgid "Latest error"
msgstr "Viimeisin virhe"
#. module: procurement
#: help:mrp.property,composition:0
msgid "Not used in computations, for information purpose only."
msgstr "Ei käytetä laskutoimituksiin - vain tietoja varten."
#. module: procurement
#: field:stock.warehouse.orderpoint,procurement_id:0
msgid "Latest procurement"
msgstr "Viimeisin hankinta"
#. module: procurement
#: view:procurement.order:0
msgid "Notes"
msgstr "Huomautukset"
#. module: procurement
#: selection:procurement.order,procure_method:0
msgid "on order"
msgstr "tilauksessa"
#. module: procurement
#: help:procurement.order,message:0
msgid "Exception occurred while computing procurement orders."
msgstr "Hankintatilausten laskennassa sattui poikkeus."
#. module: procurement
#: help:procurement.order,state:0
msgid ""
"When a procurement is created the state is set to 'Draft'.\n"
" If the procurement is confirmed, the state is set to 'Confirmed'. "
" \n"
"After confirming the state is set to 'Running'.\n"
" If any exception arises in the order then the state is set to 'Exception'.\n"
" Once the exception is removed the state becomes 'Ready'.\n"
" It is in 'Waiting'. state when the procurement is waiting for another one "
"to finish."
msgstr ""
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Minimum Stock Rules Search"
msgstr "Minimivarasto sääntöjen haku"
#. module: procurement
#: help:stock.warehouse.orderpoint,product_min_qty:0
msgid ""
"When the virtual stock goes belong the Min Quantity, OpenERP generates a "
"procurement to bring the virtual stock to the Max Quantity."
msgstr ""
#. module: procurement
#: view:procurement.order.compute.all:0
msgid "Scheduler Parameters"
msgstr "Aikataulutuksen parametrit"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_move
msgid "Stock Move"
msgstr "Varastosiirto"
#. module: procurement
#: view:procurement.order:0
msgid "Planification"
msgstr "Suunnittelu"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Ready"
msgstr "Valmis"
#. module: procurement
#: field:procurement.order.compute.all,automatic:0
msgid "Automatic orderpoint"
msgstr "Automaattinen tilauspiste"
#. module: procurement
#: field:mrp.property,composition:0
msgid "Properties composition"
msgstr "Ominaisuuksien koostumus"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Confirmed"
msgstr "Vahvistettu"
#. module: procurement
#: view:procurement.order:0
msgid "Retry"
msgstr "Yritä uudelleen"
#. module: procurement
#: view:procurement.order.compute:0
#: view:procurement.orderpoint.compute:0
msgid "Parameters"
msgstr "Parametrit"
#. module: procurement
#: view:procurement.order:0
msgid "Confirm"
msgstr "Vahvista"
#. module: procurement
#: help:procurement.order,origin:0
msgid ""
"Reference of the document that created this Procurement.\n"
"This is automatically completed by OpenERP."
msgstr ""
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Procurement Orders to Process"
msgstr "Prosessoitavat hankintatilaukset"
#. module: procurement
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "Virhe! Et voi luoda sisäkkäisiä yrityksiä."
#. module: procurement
#: field:procurement.order,priority:0
msgid "Priority"
msgstr "Prioriteetti"
#. module: procurement
#: view:procurement.order:0
#: field:procurement.order,state:0
msgid "State"
msgstr "Tila"
#. module: procurement
#: field:procurement.order,location_id:0
#: view:stock.warehouse.orderpoint:0
#: field:stock.warehouse.orderpoint,location_id:0
msgid "Location"
msgstr "Sijainti"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_picking
msgid "Picking List"
msgstr "Keräilylista"
#. module: procurement
#: field:make.procurement,warehouse_id:0
#: view:stock.warehouse.orderpoint:0
#: field:stock.warehouse.orderpoint,warehouse_id:0
msgid "Warehouse"
msgstr "Varasto"
#. module: procurement
#: selection:stock.warehouse.orderpoint,logic:0
msgid "Best price (not yet active!)"
msgstr "Paras hinta (ei vielä aktiivinen!)"
#. module: procurement
#: view:procurement.order:0
msgid "Product & Location"
msgstr "Tuote & Sijainti"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute
msgid "Compute Procurement"
msgstr "Laske hankinta"
#. module: procurement
#: model:ir.module.module,shortdesc:procurement.module_meta_information
#: field:stock.move,procurements:0
msgid "Procurements"
msgstr "Hankinnat"
#. module: procurement
#: field:res.company,schedule_range:0
msgid "Scheduler Range Days"
msgstr "Ajastimen jakson päivät"
#. module: procurement
#: model:ir.actions.act_window,help:procurement.procurement_action
msgid ""
"A procurement order is used to record a need for a specific product at a "
"specific location. A procurement order is usually created automatically from "
"sales orders, a Pull Logistics rule or Minimum Stock Rules. When the "
"procurement order is confirmed, it automatically creates the necessary "
"operations to fullfil the need: purchase order proposition, manufacturing "
"order, etc."
msgstr ""
#. module: procurement
#: field:make.procurement,date_planned:0
msgid "Planned Date"
msgstr "Suunniteltu päivämäärä"
#. module: procurement
#: view:procurement.order:0
msgid "Group By"
msgstr "Ryhmittelyn peruste"
#. module: procurement
#: field:make.procurement,qty:0
#: field:procurement.order,product_qty:0
msgid "Quantity"
msgstr "Määrä"
#. module: procurement
#: code:addons/procurement/procurement.py:377
#, python-format
msgid "Not enough stock and no minimum orderpoint rule defined."
msgstr "Ei tarpeeksi varastoa eikä minimitilauspistesääntöä määriteltynä"
#. module: procurement
#: code:addons/procurement/procurement.py:137
#, python-format
msgid "Invalid action !"
msgstr "Virheellinen toiminto!"
#. module: procurement
#: view:procurement.order:0
msgid "References"
msgstr "Viitteet"
#. module: procurement
#: view:res.company:0
msgid "Configuration"
msgstr "Konfiguraatio"
#. module: procurement
#: field:stock.warehouse.orderpoint,qty_multiple:0
msgid "Qty Multiple"
msgstr "Määrän kerroin"
#. module: procurement
#: help:procurement.order,procure_method:0
msgid ""
"If you encode manually a Procurement, you probably want to use a make to "
"order method."
msgstr ""
#. module: procurement
#: model:ir.ui.menu,name:procurement.menu_stock_procurement
msgid "Automatic Procurements"
msgstr "Automaattiset hankinnat"
#. module: procurement
#: field:stock.warehouse.orderpoint,product_max_qty:0
msgid "Max Quantity"
msgstr "Maksimimäärä"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order
#: model:process.process,name:procurement.process_process_procurementprocess0
#: view:procurement.order:0
msgid "Procurement"
msgstr "Hankinta"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.procurement_action
msgid "Procurement Orders"
msgstr "Hankintatilaukset"
#. module: procurement
#: view:procurement.order:0
msgid "To Fix"
msgstr "Korjattavaksi"
#. module: procurement
#: view:procurement.order:0
msgid "Exceptions"
msgstr "Poikkeukset"
#. module: procurement
#: model:process.node,note:procurement.process_node_serviceonorder0
msgid "Assignment from Production or Purchase Order."
msgstr "Määritys tuotannosta tai ostotilaukselta."
#. module: procurement
#: model:ir.model,name:procurement.model_mrp_property
msgid "Property"
msgstr "Ominaisuus"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.act_make_procurement
#: view:make.procurement:0
msgid "Procurement Request"
msgstr "Hankintapyyntö"
#. module: procurement
#: view:procurement.orderpoint.compute:0
msgid "Compute Stock"
msgstr "Laske varasto"
#. module: procurement
#: view:procurement.order:0
msgid "Late"
msgstr "Myöhässä"
#. module: procurement
#: model:process.process,name:procurement.process_process_serviceproductprocess0
msgid "Service"
msgstr "Palvelu"
#. module: procurement
#: model:ir.module.module,description:procurement.module_meta_information
msgid ""
"\n"
" This is the module for computing Procurements.\n"
" "
msgstr ""
#. module: procurement
#: field:stock.warehouse.orderpoint,procurement_draft_ids:0
msgid "Related Procurement Orders"
msgstr "Liittyvät hankintatilaukset"
#. module: procurement
#: view:procurement.orderpoint.compute:0
msgid ""
"Wizard checks all the stock minimum rules and generate procurement order."
msgstr "Velho tarkistaa kaikki minimivarastosäännöt ja luo hankintatilauksen"
#. module: procurement
#: field:stock.warehouse.orderpoint,product_min_qty:0
msgid "Min Quantity"
msgstr "Minimimäärä"
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Urgent"
msgstr "Kiireellinen"
#. module: procurement
#: selection:mrp.property,composition:0
msgid "plus"
msgstr "plus"
#. module: procurement
#: code:addons/procurement/procurement.py:325
#, python-format
msgid ""
"Please check the Quantity in Procurement Order(s), it should not be less "
"than 1!"
msgstr ""
"Ole hyvä ja tarkista määrä hankintatilauksella. Sen ei tulisi olla alle 1 !"
#. module: procurement
#: help:stock.warehouse.orderpoint,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the "
"orderpoint without removing it."
msgstr ""
"Jos aktiivisen kentän tilaksi asetetaan epätosi (false) se mahdollistaa "
"tilauspisteen piilottamisen ilman sen poistamista"
#. module: procurement
#: help:stock.warehouse.orderpoint,product_max_qty:0
msgid ""
"When the virtual stock goes belong the Max Quantity, OpenERP generates a "
"procurement to bring the virtual stock to the Max Quantity."
msgstr ""
#. module: procurement
#: help:procurement.orderpoint.compute,automatic:0
msgid "If the stock of a product is under 0, it will act like an orderpoint"
msgstr "Jos tuotteen varastosaldo on alle 0, toimii se tilauspisteenä"
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Lines"
msgstr "Hankinnan rivit"
#. module: procurement
#: view:procurement.order.compute.all:0
msgid ""
"This wizard allows you to run all procurement, production and/or purchase "
"orders that should be processed based on their configuration. By default, "
"the scheduler is launched automatically every night by OpenERP. You can use "
"this menu to force it to be launched now. Note that it runs in the "
"background, you may have to wait for a few minutes until it has finished "
"computing."
msgstr ""
#. module: procurement
#: view:procurement.order:0
#: field:procurement.order,note:0
msgid "Note"
msgstr "Huomautus"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Draft"
msgstr "Luonnos"
#. module: procurement
#: view:procurement.order.compute:0
msgid "This wizard will schedule procurements."
msgstr "Tämä ohjattu toiminto ajoittaa hankinnat."
#. module: procurement
#: view:procurement.order:0
msgid "Status"
msgstr "Tila"
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Normal"
msgstr "Tavallinen"
#. module: procurement
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product"
msgstr "Erä ei ole samaa tuotetta"
#. module: procurement
#: field:stock.warehouse.orderpoint,active:0
msgid "Active"
msgstr "Aktiivinen"
#. module: procurement
#: model:process.node,name:procurement.process_node_procureproducts0
msgid "Procure Products"
msgstr "Hanki tuotteita"
#. module: procurement
#: field:procurement.order,date_planned:0
msgid "Scheduled date"
msgstr "Arvioitu päivämäärä"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Exception"
msgstr "Poikkeus"
#. module: procurement
#: code:addons/procurement/schedulers.py:179
#, python-format
msgid "Automatic OP: %s"
msgstr "Automaattinen tilauspiste: %s"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_orderpoint_compute
msgid "Automatic Order Point"
msgstr "Automaattinen tilauspiste"
#. module: procurement
#: model:ir.model,name:procurement.model_stock_warehouse_orderpoint
msgid "Minimum Inventory Rule"
msgstr "Minimivarastosääntö"
#. module: procurement
#: model:ir.model,name:procurement.model_res_company
msgid "Companies"
msgstr "Yritykset"
#. module: procurement
#: view:procurement.order:0
msgid "Extra Information"
msgstr "Lisätiedot"
#. module: procurement
#: help:procurement.order,name:0
msgid "Procurement name."
msgstr "Hankinnan nimi"
#. module: procurement
#: constraint:stock.move:0
msgid "You must assign a production lot for this product"
msgstr "Tälle tuotteelle pitää määrittää valmistuserä"
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Reason"
msgstr "Hankinnan syy"
#. module: procurement
#: sql_constraint:stock.warehouse.orderpoint:0
msgid "Qty Multiple must be greater than zero."
msgstr "Määrän kertoimen tulee olla yli 0"
#. module: procurement
#: selection:stock.warehouse.orderpoint,logic:0
msgid "Order to Max"
msgstr "Tilaa maksimiin"
#. module: procurement
#: field:procurement.order,date_close:0
msgid "Date Closed"
msgstr "Sulkemispäivä"
#. module: procurement
#: code:addons/procurement/procurement.py:372
#, python-format
msgid "Procurement '%s' is in exception: not enough stock."
msgstr ""
#. module: procurement
#: code:addons/procurement/procurement.py:138
#, python-format
msgid "Cannot delete Procurement Order(s) which are in %s State!"
msgstr "Ei voi poistaa hankintatilauksia jotka ovat tilassa %s !"
#. module: procurement
#: code:addons/procurement/procurement.py:324
#, python-format
msgid "Data Insufficient !"
msgstr "Riittämätön data!"
#. module: procurement
#: model:ir.model,name:procurement.model_mrp_property_group
#: field:mrp.property,group_id:0
#: field:mrp.property.group,name:0
msgid "Property Group"
msgstr "Ominaisuusryhmä"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Misc"
msgstr "Sekalaiset"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Locations"
msgstr "Sijainnit"
#. module: procurement
#: selection:procurement.order,procure_method:0
msgid "from stock"
msgstr "varastosta"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "General Information"
msgstr "Yleiset tiedot"
#. module: procurement
#: view:procurement.order:0
msgid "Run Procurement"
msgstr "Suorita hankinta"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Done"
msgstr "Valmis"
#. module: procurement
#: help:stock.warehouse.orderpoint,qty_multiple:0
msgid "The procurement quantity will by rounded up to this multiple."
msgstr "Hankinnan määrä pyöristetään ylös tähän moninkertaan."
#. module: procurement
#: view:make.procurement:0
#: view:procurement.order:0
#: selection:procurement.order,state:0
#: view:procurement.order.compute:0
#: view:procurement.order.compute.all:0
#: view:procurement.orderpoint.compute:0
msgid "Cancel"
msgstr "Peruuta"
#. module: procurement
#: field:stock.warehouse.orderpoint,logic:0
msgid "Reordering Mode"
msgstr "Uusintatilauksen tapa"
#. module: procurement
#: field:procurement.order,origin:0
msgid "Source Document"
msgstr "Lähdedokumentti"
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Not urgent"
msgstr "Ei kiireellinen"
#. module: procurement
#: model:ir.model,name:procurement.model_procurement_order_compute_all
msgid "Compute all schedulers"
msgstr "Laske kaikki ajastimet"
#. module: procurement
#: view:procurement.order:0
msgid "Current"
msgstr "Nykyinen"
#. module: procurement
#: view:board.board:0
msgid "Procurements in Exception"
msgstr "Poikkeavat hankinnat"
#. module: procurement
#: view:procurement.order:0
msgid "Details"
msgstr "Yksityiskohdat"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.procurement_action5
#: model:ir.actions.act_window,name:procurement.procurement_action_board
#: model:ir.actions.act_window,name:procurement.procurement_exceptions
#: model:ir.ui.menu,name:procurement.menu_stock_procurement_action
msgid "Procurement Exceptions"
msgstr "Hankinnan poikkeamat"
#. module: procurement
#: model:ir.actions.act_window,name:procurement.act_procurement_2_stock_warehouse_orderpoint
#: model:ir.actions.act_window,name:procurement.act_product_product_2_stock_warehouse_orderpoint
#: model:ir.actions.act_window,name:procurement.act_stock_warehouse_2_stock_warehouse_orderpoint
#: model:ir.actions.act_window,name:procurement.action_orderpoint_form
#: model:ir.ui.menu,name:procurement.menu_stock_order_points
#: view:stock.warehouse.orderpoint:0
msgid "Minimum Stock Rules"
msgstr "Varaston minimirajat"
#. module: procurement
#: field:procurement.order,close_move:0
msgid "Close Move at end"
msgstr "Sulje siirto lopussa"
#. module: procurement
#: view:procurement.order:0
msgid "Scheduled Date"
msgstr "Suunniteltu päivämäärä"
#. module: procurement
#: field:make.procurement,product_id:0
#: view:procurement.order:0
#: field:procurement.order,product_id:0
#: field:stock.warehouse.orderpoint,product_id:0
msgid "Product"
msgstr "Tuote"
#. module: procurement
#: view:procurement.order:0
msgid "Temporary"
msgstr "Väliaikainen"
#. module: procurement
#: field:mrp.property,description:0
#: field:mrp.property.group,description:0
msgid "Description"
msgstr "Kuvaus"
#. module: procurement
#: selection:mrp.property,composition:0
msgid "min"
msgstr "minimi"
#. module: procurement
#: view:stock.warehouse.orderpoint:0
msgid "Quantity Rules"
msgstr "Määräsäännöt"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Running"
msgstr "Käynnissä olevat"
#. module: procurement
#: field:stock.warehouse.orderpoint,product_uom:0
msgid "Product UOM"
msgstr "Tuotteen mittayksikkö"
#. module: procurement
#: model:process.node,name:procurement.process_node_serviceonorder0
msgid "Make to Order"
msgstr "Valmista tilaukselle"
#. module: procurement
#: view:procurement.order:0
msgid "UOM"
msgstr "Mittayksikkö"
#. module: procurement
#: selection:procurement.order,state:0
msgid "Waiting"
msgstr "Odotetaan"
#. module: procurement
#: model:ir.actions.act_window,help:procurement.action_orderpoint_form
msgid ""
"You can define your minimum stock rules, so that OpenERP will automatically "
"create draft manufacturing orders or purchase quotations according to the "
"stock level. Once the virtual stock of a product (= stock on hand minus all "
"confirmed orders and reservations) is below the minimum quantity, OpenERP "
"will generate a procurement request to increase the stock up to the maximum "
"quantity."
msgstr ""
#. module: procurement
#: field:procurement.order,move_id:0
msgid "Reservation"
msgstr "Varaus"
#. module: procurement
#: model:process.node,note:procurement.process_node_procureproducts0
msgid "The way to procurement depends on the product type."
msgstr "Hankintatapa riippuu tuotteen tyypistä"
#. module: procurement
#: view:make.procurement:0
msgid ""
"This wizard will plan the procurement for this product. This procurement may "
"generate task, production orders or purchase orders."
msgstr ""
#. module: procurement
#: view:res.company:0
msgid "MRP & Logistics Scheduler"
msgstr "MRP ja logistiikka ajastin"
#. module: procurement
#: field:mrp.property,name:0
#: field:stock.warehouse.orderpoint,name:0
msgid "Name"
msgstr "Nimi"
#. module: procurement
#: selection:mrp.property,composition:0
msgid "max"
msgstr "maksimi"
#. module: procurement
#: field:procurement.order,product_uos:0
msgid "Product UoS"
msgstr "Tuotteen myyntiyksikkö"
#. module: procurement
#: code:addons/procurement/procurement.py:353
#, python-format
msgid "from stock: products assigned."
msgstr "varastosta: tuotteet määrätty."
#. module: procurement
#: model:ir.actions.act_window,name:procurement.action_compute_schedulers
#: model:ir.ui.menu,name:procurement.menu_stock_proc_schedulers
#: view:procurement.order.compute.all:0
msgid "Compute Schedulers"
msgstr "Laske ajastimet"
#. module: procurement
#: model:ir.actions.act_window,help:procurement.procurement_exceptions
msgid ""
"Procurement Orders represent the need for a certain quantity of products, at "
"a given time, in a given location. Sales Orders are one typical source of "
"Procurement Orders (but these are distinct documents). Depending on the "
"procurement parameters and the product configuration, the procurement engine "
"will attempt to satisfy the need by reserving products from stock, ordering "
"products from a supplier, or passing a manufacturing order, etc. A "
"Procurement Exception occurs when the system cannot find a way to fulfill a "
"procurement. Some exceptions will resolve themselves automatically, but "
"others require manual intervention (those are identified by a specific error "
"message)."
msgstr ""
#. module: procurement
#: field:procurement.order,product_uom:0
msgid "Product UoM"
msgstr "Tuotteen mittayksikkö"
#. module: procurement
#: view:procurement.order:0
msgid "Search Procurement"
msgstr "Hae hankinnoista"
#. module: procurement
#: help:res.company,schedule_range:0
msgid ""
"This is the time frame analysed by the scheduler when computing "
"procurements. All procurements that are not between today and today+range "
"are skipped for future computation."
msgstr ""
"Aikaikkuna jonka ajastin analysoi hankintojen laskennassa. Kaikki hankinnat "
"jotka eivät ole jakson tänään ja tänään+jakso sisällä ohitetaan tulevia "
"laskentoja varten"
#. module: procurement
#: selection:procurement.order,priority:0
msgid "Very Urgent"
msgstr "Erittäin kiireellinen"
#. module: procurement
#: field:procurement.orderpoint.compute,automatic:0
msgid "Automatic Orderpoint"
msgstr "Automaattinen tilauspiste"
#. module: procurement
#: view:procurement.order:0
msgid "Procurement Details"
msgstr "Hankinnan yksityiskohdat"
#. module: procurement
#: code:addons/procurement/schedulers.py:180
#, python-format
msgid "SCHEDULER"
msgstr "AJASTIN"
+87
View File
@@ -0,0 +1,87 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-20 10:09+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-21 04:36+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: product_manufacturer
#: model:ir.module.module,description:product_manufacturer.module_meta_information
msgid "A module that add manufacturers and attributes on the product form"
msgstr "Moduuli jo lisää valmistajia ja attribuutteja tuotelomakkeelle"
#. module: product_manufacturer
#: field:product.product,manufacturer_pref:0
msgid "Manufacturer Product Code"
msgstr "Valmistajan tuotekoodi"
#. module: product_manufacturer
#: model:ir.model,name:product_manufacturer.model_product_product
#: field:product.manufacturer.attribute,product_id:0
msgid "Product"
msgstr "Tuote"
#. module: product_manufacturer
#: view:product.manufacturer.attribute:0
msgid "Product Template Name"
msgstr "Tuotemallipohjan nimi"
#. module: product_manufacturer
#: model:ir.model,name:product_manufacturer.model_product_manufacturer_attribute
msgid "Product attributes"
msgstr "Tuotteen attribuutit"
#. module: product_manufacturer
#: view:product.manufacturer.attribute:0
#: view:product.product:0
msgid "Product Attributes"
msgstr "Tuotteen attribuutit"
#. module: product_manufacturer
#: field:product.manufacturer.attribute,name:0
msgid "Attribute"
msgstr "Attribuutti"
#. module: product_manufacturer
#: field:product.manufacturer.attribute,value:0
msgid "Value"
msgstr "Arvo"
#. module: product_manufacturer
#: constraint:product.product:0
msgid "Error: Invalid ean code"
msgstr "Virhe: Väärä EAN-koodi"
#. module: product_manufacturer
#: view:product.product:0
#: field:product.product,attribute_ids:0
msgid "Attributes"
msgstr "Attribuutit"
#. module: product_manufacturer
#: model:ir.module.module,shortdesc:product_manufacturer.module_meta_information
msgid "Products Attributes & Manufacturers"
msgstr "Tuotteen attribuutit ja valmistajat"
#. module: product_manufacturer
#: field:product.product,manufacturer_pname:0
msgid "Manufacturer Product Name"
msgstr "Valmistajan tuotenimi"
#. module: product_manufacturer
#: view:product.product:0
#: field:product.product,manufacturer:0
msgid "Manufacturer"
msgstr "Valmistaja"
+28 -20
View File
@@ -433,7 +433,7 @@ class task(osv.osv):
'date_start': fields.datetime('Starting Date',select=True),
'date_end': fields.datetime('Ending Date',select=True),
'date_deadline': fields.date('Deadline',select=True),
'project_id': fields.many2one('project.project', 'Project', ondelete='set null'),
'project_id': fields.many2one('project.project', 'Project', ondelete='set null', select="1"),
'parent_ids': fields.many2many('project.task', 'project_task_parent_rel', 'task_id', 'parent_id', 'Parent Tasks'),
'child_ids': fields.many2many('project.task', 'project_task_parent_rel', 'parent_id', 'task_id', 'Delegated Tasks'),
'notes': fields.text('Notes'),
@@ -714,27 +714,35 @@ class task(osv.osv):
self.log(cr, uid, id, message)
return True
def next_type(self, cr, uid, ids, *args):
def _change_type(self, cr, uid, ids, next, *args):
"""
go to the next stage
if next is False, go to previous stage
"""
for task in self.browse(cr, uid, ids):
typeid = task.type_id.id
types = map(lambda x:x.id, task.project_id.type_ids or [])
if types:
if task.project_id.type_ids:
typeid = task.type_id.id
types_seq={}
for type in task.project_id.type_ids :
types_seq[type.id] = type.sequence
if next:
types = sorted(types_seq.items(), lambda x, y: cmp(x[1], y[1]))
else:
types = sorted(types_seq.items(), lambda x, y: cmp(y[1], x[1]))
sorted_types = [x[0] for x in types]
if not typeid:
self.write(cr, uid, task.id, {'type_id': types[0]})
elif typeid and typeid in types and types.index(typeid) != len(types)-1:
index = types.index(typeid)
self.write(cr, uid, task.id, {'type_id': types[index+1]})
self.write(cr, uid, task.id, {'type_id': sorted_types[0]})
elif typeid and typeid in sorted_types and sorted_types.index(typeid) != len(sorted_types)-1:
index = sorted_types.index(typeid)
self.write(cr, uid, task.id, {'type_id': sorted_types[index+1]})
return True
def next_type(self, cr, uid, ids, *args):
return self._change_type(cr, uid, ids, True, *args)
def prev_type(self, cr, uid, ids, *args):
for task in self.browse(cr, uid, ids):
typeid = task.type_id.id
types = map(lambda x:x.id, task.project_id and task.project_id.type_ids or [])
if types:
if typeid and typeid in types:
index = types.index(typeid)
self.write(cr, uid, task.id, {'type_id': index and types[index-1] or False})
return True
return self._change_type(cr, uid, ids, False, *args)
task()
@@ -743,10 +751,10 @@ class project_work(osv.osv):
_description = "Project Task Work"
_columns = {
'name': fields.char('Work summary', size=128),
'date': fields.datetime('Date'),
'task_id': fields.many2one('project.task', 'Task', ondelete='cascade', required=True),
'date': fields.datetime('Date', select="1"),
'task_id': fields.many2one('project.task', 'Task', ondelete='cascade', required=True, select="1"),
'hours': fields.float('Time Spent'),
'user_id': fields.many2one('res.users', 'Done by', required=True),
'user_id': fields.many2one('res.users', 'Done by', required=True, select="1"),
'company_id': fields.related('task_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
}
+83
View File
@@ -0,0 +1,83 @@
# Russian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-10 17:23+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-06-11 04:57+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: project_issue_sheet
#: model:ir.module.module,description:project_issue_sheet.module_meta_information
msgid ""
"\n"
" This module adds the Timesheet support for the "
"Issues/Bugs Management in Project\n"
" "
msgstr ""
"\n"
" Этот модуль добавляет поддержку табелей для управления "
"проблемами и ошибками в проекте\n"
" "
#. module: project_issue_sheet
#: model:ir.model,name:project_issue_sheet.model_account_analytic_line
msgid "Analytic Line"
msgstr "Позиция аналитики"
#. module: project_issue_sheet
#: model:ir.model,name:project_issue_sheet.model_project_issue
msgid "Project Issue"
msgstr "Проблема проекта"
#. module: project_issue_sheet
#: model:ir.model,name:project_issue_sheet.model_hr_analytic_timesheet
msgid "Timesheet Line"
msgstr "Строка табеля"
#. module: project_issue_sheet
#: view:project.issue:0
msgid "Timesheet"
msgstr "Табель"
#. module: project_issue_sheet
#: field:project.issue,analytic_account_id:0
msgid "Analytic Account"
msgstr "Счет аналитики"
#. module: project_issue_sheet
#: view:project.issue:0
msgid "Worklogs"
msgstr "Журналы работы"
#. module: project_issue_sheet
#: field:account.analytic.line,create_date:0
msgid "Create Date"
msgstr "Дата создания"
#. module: project_issue_sheet
#: field:project.issue,timesheet_ids:0
msgid "Timesheets"
msgstr "Табели"
#. module: project_issue_sheet
#: model:ir.module.module,shortdesc:project_issue_sheet.module_meta_information
msgid "Add the Timesheet support for Issue Management in Project Management"
msgstr ""
"Добавляет поддержку табелей для управления проблемами в рамках управления "
"проектом."
#. module: project_issue_sheet
#: field:hr.analytic.timesheet,issue_id:0
msgid "Issue"
msgstr "Проблема"
+13 -13
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2009-09-08 16:00+0000\n"
"Last-Translator: Genie-soft <rawan@genie-soft.com>\n"
"PO-Revision-Date: 2011-06-18 11:28+0000\n"
"Last-Translator: kifcaliph <kifcaliph@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: 2011-04-29 04:53+0000\n"
"X-Generator: Launchpad (build 12758)\n"
"X-Launchpad-Export-Date: 2011-06-19 04:36+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: project_scrum
#: help:project.scrum.email,scrum_master_email:0
@@ -29,12 +29,12 @@ msgstr ""
#. module: project_scrum
#: field:project.scrum.meeting,name:0
msgid "Meeting Name"
msgstr ""
msgstr "اسم الإجتماع"
#. module: project_scrum
#: model:process.transition,note:project_scrum.process_transition_backlogtask0
msgid "From backlog create task."
msgstr ""
msgstr "إنشاء مهمة من السجل التراكمي."
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -94,17 +94,17 @@ msgstr ""
#. module: project_scrum
#: model:process.node,note:project_scrum.process_node_productbacklog0
msgid "Create task from backlogs"
msgstr ""
msgstr "إنشاء مهمة من السجل التراكمي."
#. module: project_scrum
#: model:ir.module.module,shortdesc:project_scrum.module_meta_information
msgid "Scrum, Agile Development Method"
msgstr ""
msgstr "إدارة التطوير بطريقة الـ سكرم (Scrum) أو الـ آجيل (Agile)"
#. module: project_scrum
#: field:project.scrum.product.backlog,progress:0
msgid "Progress"
msgstr ""
msgstr "مستوي التقدم"
#. module: project_scrum
#: field:project.scrum.meeting,user_id:0
@@ -128,12 +128,12 @@ msgstr ""
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Are your Sprint Backlog estimate accurate ?"
msgstr ""
msgstr "هل تقديراتك دقيقة لسجل العدوات السريعة؟"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Retrospective"
msgstr ""
msgstr "أثر رجعي"
#. module: project_scrum
#: view:project.scrum.meeting:0
@@ -148,7 +148,7 @@ msgstr ""
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.dblc_proj
msgid "View project's backlog"
msgstr ""
msgstr "عرض السجل التراكمي للمشروع"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -248,7 +248,7 @@ msgstr ""
#: field:project.task,product_backlog_id:0
#, python-format
msgid "Product Backlog"
msgstr ""
msgstr "سجل تراكمي للمنتج"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_project
+2 -3
View File
@@ -317,12 +317,11 @@ class project_scrum_meeting(osv.osv):
return True
def email_send(self, cr, uid, ids, email, context=None):
email_from = tools.config.get('email_from', False)
meeting_id = self.browse(cr, uid, ids, context=context)[0]
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
user_email = email_from or user.address_id.email or email_from
user_email = user.user_email or tools.config.get('email_from', False)
body = _("Hello %s,\n \nI am sending you Daily Meeting Details of date %s for the Sprint %s\n") %(meeting_id.sprint_id.scrum_master_id.name, meeting_id.date, meeting_id.sprint_id.name)
body += _('\n*Tasks since yesterday:\n_______________________%s\n*Task for Today:\n_______________________ %s\n\n*Blocks encountered:\n_______________________ %s') %(meeting_id.question_yesterday,meeting_id.question_today, meeting_id.question_blocks or _('No Blocks'))
body += _('\n* Tasks since yesterday:\n_______________________\n%s\n\n* Task for Today:\n_______________________ \n%s\n\n* Blocks encountered:\n_______________________ \n\n%s') %(meeting_id.question_yesterday,meeting_id.question_today, meeting_id.question_blocks or _('No Blocks'))
body += _("\n\nThank you,\n%s") % user.name
sub_name = meeting_id.name or _('Scrum Meeting of %s') % meeting_id.date
flag = tools.email_send(user_email , [email], sub_name, body, reply_to=None, openobject_id=str(meeting_id.id))
+5 -5
View File
@@ -214,9 +214,9 @@
<separator string="Purchase Control" colspan="4"/>
<field name="validator"/>
<field name="date_approve"/>
<separator string="Invoices" colspan="4"/>
<newline/>
<field name="invoice_ids" groups="base.group_extended" nolabel="1" colspan="4" context="{'type':'in_invoice', 'journal_type':'purchase'}"/>
<separator string="Invoices" colspan="4"/>
<newline/>
<field name="invoice_ids" groups="base.group_extended" nolabel="1" colspan="4" context="{'type':'in_invoice', 'journal_type':'purchase'}"/>
</page>
<page string="Notes">
<field colspan="4" name="notes" nolabel="1"/>
@@ -316,8 +316,8 @@
<form string="Purchase Order Line">
<notebook colspan="4">
<page string="Order Line">
<field name="product_id" colspan="4" context="partner_id=parent.partner_id,quantity=product_qty,pricelist=parent.pricelist_id,uom=product_uom,warehouse=parent.warehouse_id" on_change="product_id_change(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,notes)"/>
<field name="product_qty" context="partner_id=parent.partner_id,quantity=product_qty,pricelist=parent.pricelist_id,uom=product_uom,warehouse=parent.warehouse_id" on_change="product_id_change(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id,parent.date_order,parent.fiscal_position,date_planned,name,price_unit,notes)"/>
<field name="product_id" colspan="4" context="{'partner_id':parent.partner_id, 'quantity':product_qty, 'pricelist':parent.pricelist_id, 'uom':product_uom, 'warehouse':parent.warehouse_id}" on_change="product_id_change(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,notes)"/>
<field name="product_qty" context="{'partner_id':parent.partner_id, 'quantity':product_qty, 'pricelist':parent.pricelist_id, 'uom':product_uom, 'warehouse':parent.warehouse_id}" on_change="product_id_change(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id,parent.date_order,parent.fiscal_position,date_planned,name,price_unit,notes)"/>
<field name="product_uom" on_change="product_uom_change(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,notes)"/>
<field colspan="4" name="name"/>
<field name="date_planned" widget="date"/>
+418
View File
@@ -0,0 +1,418 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-20 09:53+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-21 04:37+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: selection:purchase.requisition,state:0
msgid "In Progress"
msgstr "Käynnissä"
#. module: purchase_requisition
#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:44
#, python-format
msgid "No Product in Tender"
msgstr "Ei tarjottua tuotetta"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Confirm"
msgstr "Vahvista"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: field:purchase.requisition,user_id:0
msgid "Responsible"
msgstr "Vastuuhenkilö"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Group By..."
msgstr "Ryhmittely.."
#. module: purchase_requisition
#: view:purchase.requisition:0
#: field:purchase.requisition,state:0
msgid "State"
msgstr "Tila"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: selection:purchase.requisition,state:0
msgid "Draft"
msgstr "Luonnos"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Supplier"
msgstr "Toimittaja"
#. module: purchase_requisition
#: field:purchase.requisition,exclusive:0
msgid "Requisition Type"
msgstr "Pyynnön tyyppi"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Product Detail"
msgstr "Tuotteen yksityiskohdat"
#. module: purchase_requisition
#: report:purchase.requisition:0
#: field:purchase.requisition,date_start:0
msgid "Requisition Date"
msgstr "Pyynnön päivä"
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_partner
#: model:ir.actions.report.xml,name:purchase_requisition.report_purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_requisition
#: field:product.product,purchase_requisition:0
#: field:purchase.order,requisition_id:0
#: view:purchase.requisition:0
#: field:purchase.requisition.line,requisition_id:0
#: view:purchase.requisition.partner:0
msgid "Purchase Requisition"
msgstr "Ostotilaus pyyntö"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_requisition_line
msgid "Purchase Requisition Line"
msgstr "Ostotilauspyynnön rivi"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_product_product
#: field:purchase.requisition.line,product_id:0
msgid "Product"
msgstr "Tuote"
#. module: purchase_requisition
#: sql_constraint:purchase.order:0
msgid "Order Reference must be unique !"
msgstr "Tilauksen viite tulee olla yksilöllinen!"
#. module: purchase_requisition
#: report:purchase.requisition:0
#: field:purchase.requisition,description:0
msgid "Description"
msgstr "Kuvaus"
#. module: purchase_requisition
#: help:product.product,purchase_requisition:0
msgid ""
"Check this box so that requisitions generates purchase requisitions instead "
"of directly requests for quotations."
msgstr ""
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Type"
msgstr "Tyyppi"
#. module: purchase_requisition
#: field:purchase.requisition,company_id:0
#: field:purchase.requisition.line,company_id:0
msgid "Company"
msgstr "Yritys"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Request a Quotation"
msgstr "Pyydä tarjousta"
#. module: purchase_requisition
#: selection:purchase.requisition,exclusive:0
msgid "Multiple Requisitions"
msgstr "Useita pyyntöjä"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Approved by Supplier"
msgstr "Toimittajan vahvistama"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Reset to Draft"
msgstr "Palauta luonnokseksi"
#. module: purchase_requisition
#: model:ir.module.module,description:purchase_requisition.module_meta_information
msgid ""
"\n"
" This module allows you to manage your Purchase Requisition.\n"
" When a purchase order is created, you now have the opportunity to save "
"the related requisition.\n"
" This new object will regroup and will allow you to easily keep track and "
"order all your purchase orders.\n"
msgstr ""
#. module: purchase_requisition
#: field:purchase.requisition.partner,partner_address_id:0
msgid "Address"
msgstr "Osoite"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Order Reference"
msgstr "Tilauksen viite"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Start Date"
msgstr "Alkupäivä"
#. module: purchase_requisition
#: model:ir.actions.act_window,help:purchase_requisition.action_purchase_requisition
msgid ""
"A purchase requisition is the step before a request for quotation. In a "
"purchase requisition (or purchase tender), you can record the products you "
"need to buy and trigger the creation of RfQs to suppliers. After the "
"negotiation, once you have reviewed all the supplier's offers, you can "
"validate some and cancel others."
msgstr ""
#. module: purchase_requisition
#: field:purchase.requisition.line,product_qty:0
msgid "Quantity"
msgstr "Määrä"
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition
#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition_pro_mgt
msgid "Purchase Requisitions"
msgstr "Hankintapyynnöt"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "End Date"
msgstr "Loppupvm"
#. module: purchase_requisition
#: report:purchase.requisition:0
#: field:purchase.requisition,name:0
msgid "Requisition Reference"
msgstr "Pyynnön viite"
#. module: purchase_requisition
#: field:purchase.requisition,line_ids:0
msgid "Products to Purchase"
msgstr "Ostettavat tuotteet"
#. module: purchase_requisition
#: field:purchase.requisition,date_end:0
msgid "Requisition Deadline"
msgstr "Pyynnön takaraja (päivä)"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Search Purchase Requisition"
msgstr "Hae ostotilausehdotusta"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Notes"
msgstr "Huomautukset"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Date Ordered"
msgstr "Tilauspäivämäärä"
#. module: purchase_requisition
#: help:purchase.requisition,exclusive:0
msgid ""
"Purchase Requisition (exclusive): On the confirmation of a purchase order, "
"it cancels the remaining purchase order.\n"
"Purchase Requisition(Multiple): It allows to have multiple purchase "
"orders.On confirmation of a purchase order it does not cancel the remaining "
"orders"
msgstr ""
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Cancel Purchase Order"
msgstr "Peru ostotilaus"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_order
#: view:purchase.requisition:0
msgid "Purchase Order"
msgstr "Ostotilaus"
#. module: purchase_requisition
#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:44
#, python-format
msgid "Error!"
msgstr "Virhe!"
#. module: purchase_requisition
#: report:purchase.requisition:0
#: field:purchase.requisition.line,product_uom_id:0
msgid "Product UoM"
msgstr "Tuotteen mittayksikkö"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Products"
msgstr "Tuotteet"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Order Date"
msgstr "Tilauksen päivämäärä"
#. module: purchase_requisition
#: selection:purchase.requisition,state:0
msgid "Cancelled"
msgstr "Peruttu"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "["
msgstr ""
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_requisition_partner
msgid "Purchase Requisition Partner"
msgstr "Ostotilauspyynnön kumppani"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "]"
msgstr ""
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Quotation Detail"
msgstr "Tarjouspyynnön yksityiskohdat"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Purchase for Requisitions"
msgstr "Osta pyynnöille"
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.act_res_partner_2_purchase_order
msgid "Purchase orders"
msgstr "Ostotilaukset"
#. module: purchase_requisition
#: report:purchase.requisition:0
#: view:purchase.requisition:0
#: field:purchase.requisition,origin:0
msgid "Origin"
msgstr "Lähde"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Reference"
msgstr "Viite"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_procurement_order
msgid "Procurement"
msgstr "Hankinta"
#. module: purchase_requisition
#: field:purchase.requisition,warehouse_id:0
msgid "Warehouse"
msgstr "Varasto"
#. module: purchase_requisition
#: field:procurement.order,requisition_id:0
msgid "Latest Requisition"
msgstr "Viimeisin pyyntö"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Quotations"
msgstr "Tarjoukset"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Qty"
msgstr "Määrä"
#. module: purchase_requisition
#: selection:purchase.requisition,exclusive:0
msgid "Purchase Requisition (exclusive)"
msgstr "Ostotilauspyyntö (poissulkeva)"
#. module: purchase_requisition
#: view:purchase.requisition.partner:0
msgid "Create Quotation"
msgstr "Luo tarjous"
#. module: purchase_requisition
#: constraint:product.product:0
msgid "Error: Invalid ean code"
msgstr "Virhe: Väärä EAN-koodi"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: selection:purchase.requisition,state:0
msgid "Done"
msgstr "Valmis"
#. module: purchase_requisition
#: view:purchase.requisition.partner:0
msgid "_Cancel"
msgstr ""
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Confirm Purchase Order"
msgstr "Vahvista ostotilaus"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Cancel"
msgstr "Peruuta"
#. module: purchase_requisition
#: field:purchase.requisition.partner,partner_id:0
msgid "Partner"
msgstr "Kumppani"
#. module: purchase_requisition
#: model:ir.module.module,shortdesc:purchase_requisition.module_meta_information
msgid "Purchase - Purchase Requisition"
msgstr "Osto - hankintapyyntö"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Unassigned"
msgstr "Liittämätön"
#. module: purchase_requisition
#: view:purchase.order:0
msgid "Requisition"
msgstr "Pyyntö"
#. module: purchase_requisition
#: field:purchase.requisition,purchase_ids:0
msgid "Purchase Orders"
msgstr "Ostotilaukset"
#. module: purchase_requisition
#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:90
#, python-format
msgid ""
"You have already one %s purchase order for this partner, you must cancel "
"this purchase order to create a new quotation."
msgstr ""
+100
View File
@@ -0,0 +1,100 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-06-14 09:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-15 04:40+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: report_designer
#: model:ir.actions.act_window,name:report_designer.action_report_designer_installer
#: view:report_designer.installer:0
msgid "Reporting Tools Configuration"
msgstr "Raporttityökalujen konfiguraatio"
#. module: report_designer
#: field:report_designer.installer,base_report_creator:0
msgid "Query Builder"
msgstr "Kyselyn rakentaja"
#. module: report_designer
#: view:report_designer.installer:0
msgid "Configure"
msgstr "Konfiguroi"
#. module: report_designer
#: view:report_designer.installer:0
msgid "title"
msgstr "otsikko"
#. module: report_designer
#: model:ir.model,name:report_designer.model_report_designer_installer
msgid "report_designer.installer"
msgstr ""
#. module: report_designer
#: field:report_designer.installer,config_logo:0
msgid "Image"
msgstr "Kuva"
#. module: report_designer
#: field:report_designer.installer,base_report_designer:0
msgid "OpenOffice Report Designer"
msgstr "OpenOffice raporttisuunnittelija"
#. module: report_designer
#: model:ir.module.module,shortdesc:report_designer.module_meta_information
msgid "Reporting Tools"
msgstr "Raportointityökalut"
#. module: report_designer
#: view:report_designer.installer:0
msgid ""
"OpenERP's built-in reporting abilities can be improved even further with "
"some of the following applications"
msgstr ""
"OpenERP:in sisäänrakennettuja raportointimahdollisuuksia voidaan edelleen "
"parantaa käyttämällä seuraavia ohjelmia"
#. module: report_designer
#: view:report_designer.installer:0
msgid "Configure Reporting Tools"
msgstr "Konfiguroi raportointyökalut"
#. module: report_designer
#: help:report_designer.installer,base_report_creator:0
msgid ""
"Allows you to create any statistic reports on several objects. It's a SQL "
"query builder and browser for end users."
msgstr ""
#. module: report_designer
#: help:report_designer.installer,base_report_designer:0
msgid ""
"Adds wizards to Import/Export .SXW report which you can modify in "
"OpenOffice.Once you have modified it you can upload the report using the "
"same wizard."
msgstr ""
#. module: report_designer
#: model:ir.module.module,description:report_designer.module_meta_information
msgid ""
"Installer for reporting tools selection\n"
" "
msgstr ""
#. module: report_designer
#: field:report_designer.installer,progress:0
msgid "Configuration Progress"
msgstr "Konfiguraation eteneminen"
+348
View File
@@ -0,0 +1,348 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
"PO-Revision-Date: 2011-06-20 09:46+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-21 04:36+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: resource
#: help:resource.calendar.leaves,resource_id:0
msgid ""
"If empty, this is a generic holiday for the company. If a resource is set, "
"the holiday/leave is only for this resource"
msgstr ""
"Jos tyhjä, tämä on yrityksen yleinen loma-aika. Jos resurssi asetetaan, loma "
"koskee vain sitä resurssia."
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Friday"
msgstr "Perjantai"
#. module: resource
#: field:resource.resource,resource_type:0
msgid "Resource Type"
msgstr "Resurssin tyyppi"
#. module: resource
#: model:ir.model,name:resource.model_resource_calendar_leaves
#: view:resource.calendar.leaves:0
msgid "Leave Detail"
msgstr "Jätä yksityiskohdat"
#. module: resource
#: model:ir.actions.act_window,name:resource.resource_calendar_resources_leaves
msgid "Resources Leaves"
msgstr "Resurssin vapaat"
#. module: resource
#: model:ir.actions.act_window,name:resource.action_resource_calendar_form
#: view:resource.calendar:0
#: field:resource.calendar,attendance_ids:0
#: view:resource.calendar.attendance:0
msgid "Working Time"
msgstr "Työaika"
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Thursday"
msgstr "Torstai"
#. module: resource
#: view:resource.calendar.leaves:0
#: view:resource.resource:0
msgid "Group By..."
msgstr "Ryhmittely.."
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Sunday"
msgstr "Sunnuntai"
#. module: resource
#: view:resource.resource:0
msgid "Search Resource"
msgstr "Hae resurssia"
#. module: resource
#: view:resource.resource:0
msgid "Type"
msgstr "Tyyppi"
#. module: resource
#: model:ir.actions.act_window,name:resource.action_resource_resource_tree
#: view:resource.resource:0
msgid "Resources"
msgstr "Resurssit"
#. module: resource
#: field:resource.calendar,manager:0
msgid "Workgroup manager"
msgstr "Työryhmän johtaja"
#. module: resource
#: help:resource.calendar.attendance,hour_from:0
msgid "Working time will start from"
msgstr "Työaika alkaa"
#. module: resource
#: constraint:resource.calendar.leaves:0
msgid "Error! leave start-date must be lower then leave end-date."
msgstr "Virhe! loman alkupäivän tulee olla aikaisempi kuin loman loppupäivä"
#. module: resource
#: model:ir.model,name:resource.model_resource_calendar
msgid "Resource Calendar"
msgstr "Resurssikalenteri"
#. module: resource
#: field:resource.calendar,company_id:0
#: view:resource.calendar.leaves:0
#: field:resource.calendar.leaves,company_id:0
#: view:resource.resource:0
#: field:resource.resource,company_id:0
msgid "Company"
msgstr "Yritys"
#. module: resource
#: selection:resource.resource,resource_type:0
msgid "Material"
msgstr "Materiaali"
#. module: resource
#: field:resource.calendar.attendance,dayofweek:0
msgid "Day of week"
msgstr "Viikonpäivä"
#. module: resource
#: help:resource.calendar.attendance,hour_to:0
msgid "Working time will end at"
msgstr "Työaika loppuu"
#. module: resource
#: field:resource.calendar.attendance,date_from:0
msgid "Starting date"
msgstr "Aloituspäivämäärä"
#. module: resource
#: view:resource.calendar:0
msgid "Search Working Time"
msgstr "Hae työaikaa"
#. module: resource
#: view:resource.calendar.leaves:0
msgid "Reason"
msgstr "Syy"
#. module: resource
#: view:resource.resource:0
#: field:resource.resource,user_id:0
msgid "User"
msgstr "Käyttäjä"
#. module: resource
#: view:resource.calendar.leaves:0
msgid "Date"
msgstr "Päiväys"
#. module: resource
#: view:resource.calendar.leaves:0
msgid "Search Working Period Leaves"
msgstr "Hae työjakson lomia"
#. module: resource
#: field:resource.calendar.leaves,date_to:0
msgid "End Date"
msgstr "Loppupvm"
#. module: resource
#: model:ir.actions.act_window,name:resource.resource_calendar_closing_days
msgid "Closing Days"
msgstr "Sulkupäivät"
#. module: resource
#: model:ir.module.module,shortdesc:resource.module_meta_information
#: model:ir.ui.menu,name:resource.menu_resource_config
#: view:resource.calendar.leaves:0
#: field:resource.calendar.leaves,resource_id:0
#: view:resource.resource:0
msgid "Resource"
msgstr "Resurssi"
#. module: resource
#: view:resource.calendar:0
#: field:resource.calendar,name:0
#: field:resource.calendar.attendance,name:0
#: field:resource.calendar.leaves,name:0
#: field:resource.resource,name:0
msgid "Name"
msgstr "Nimi"
#. module: resource
#: model:ir.module.module,description:resource.module_meta_information
msgid ""
"\n"
" Module for resource management\n"
" A resource represent something that can be scheduled\n"
" (a developer on a task or a workcenter on manufacturing orders).\n"
" This module manages a resource calendar associated to every resource.\n"
" It also manages the leaves of every resource.\n"
"\n"
" "
msgstr ""
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Wednesday"
msgstr "Keskiviikko"
#. module: resource
#: view:resource.calendar.leaves:0
#: view:resource.resource:0
#: field:resource.resource,calendar_id:0
msgid "Working Period"
msgstr "Työjakso"
#. module: resource
#: model:ir.model,name:resource.model_resource_resource
msgid "Resource Detail"
msgstr "Resurssin yksityiskohdat"
#. module: resource
#: field:resource.resource,active:0
msgid "Active"
msgstr "Aktiivinen"
#. module: resource
#: help:resource.resource,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the resource "
"record without removing it."
msgstr ""
#. module: resource
#: field:resource.calendar.attendance,calendar_id:0
msgid "Resource's Calendar"
msgstr "Resurssin kalenteri"
#. module: resource
#: help:resource.resource,user_id:0
msgid "Related user name for the resource to manage its access."
msgstr "Liittyvä käyttäjätunnus resurssille sen oikeuksien määrittämiseksi"
#. module: resource
#: help:resource.resource,calendar_id:0
msgid "Define the schedule of resource"
msgstr "Määrittele resurssin aikataulutus"
#. module: resource
#: field:resource.calendar.attendance,hour_from:0
msgid "Work from"
msgstr "Työaika alkaen"
#. module: resource
#: field:resource.resource,code:0
msgid "Code"
msgstr "Koodi"
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Monday"
msgstr "Maanantai"
#. module: resource
#: field:resource.calendar.attendance,hour_to:0
msgid "Work to"
msgstr "Työaika päättyy"
#. module: resource
#: help:resource.resource,time_efficiency:0
msgid ""
"This field depict the efficiency of the resource to complete tasks. e.g "
"resource put alone on a phase of 5 days with 5 tasks assigned to him, will "
"show a load of 100% for this phase by default, but if we put a efficency of "
"200%, then his load will only be 50%."
msgstr ""
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Tuesday"
msgstr "Tiistai"
#. module: resource
#: field:resource.calendar.leaves,calendar_id:0
msgid "Working time"
msgstr "Työaika"
#. module: resource
#: model:ir.actions.act_window,name:resource.action_resource_calendar_leave_tree
#: model:ir.ui.menu,name:resource.menu_view_resource_calendar_leaves_search
msgid "Resource Leaves"
msgstr "Resurssin lomat"
#. module: resource
#: view:resource.resource:0
msgid "General Information"
msgstr "Yleiset tiedot"
#. module: resource
#: model:ir.actions.act_window,help:resource.action_resource_resource_tree
msgid ""
"Resources allow you to create and manage resources that should be involved "
"in a specific project phase. You can also set their efficiency level and "
"workload based on their weekly working hours."
msgstr ""
#. module: resource
#: view:resource.resource:0
msgid "Inactive"
msgstr "Passiivinen"
#. module: resource
#: code:addons/resource/faces/resource.py:340
#, python-format
msgid "(vacation)"
msgstr "(loma)"
#. module: resource
#: field:resource.resource,time_efficiency:0
msgid "Efficiency factor"
msgstr "Tehokkuuskerroin"
#. module: resource
#: selection:resource.resource,resource_type:0
msgid "Human"
msgstr "Ihminen"
#. module: resource
#: model:ir.model,name:resource.model_resource_calendar_attendance
msgid "Work Detail"
msgstr "Työn yksityiskohdat"
#. module: resource
#: field:resource.calendar.leaves,date_from:0
msgid "Start Date"
msgstr "Alkupäivä"
#. module: resource
#: code:addons/resource/resource.py:246
#, python-format
msgid " (copy)"
msgstr " (kopio)"
#. module: resource
#: selection:resource.calendar.attendance,dayofweek:0
msgid "Saturday"
msgstr "Lauantai"
+3 -3
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
"PO-Revision-Date: 2011-06-09 19:05+0000\n"
"PO-Revision-Date: 2011-06-10 19:46+0000\n"
"Last-Translator: Ayhan KIZILTAN <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: 2011-06-10 04:37+0000\n"
"X-Launchpad-Export-Date: 2011-06-11 04:56+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: sale
@@ -2083,7 +2083,7 @@ msgstr "Mayıs"
#. module: sale
#: help:sale.installer,sale_order_dates:0
msgid "Adds commitment, requested and effective dates on Sales Orders."
msgstr ""
msgstr "Satış Siparişlerine taahhüt, istenen ve yürürlük tarihlerini ekler."
#. module: sale
#: view:sale.order:0
+3 -3
View File
@@ -126,12 +126,12 @@
<notebook>
<page string="Order Line">
<field colspan="4"
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
name="product_id"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], True, parent.date_order, product_packaging, parent.fiscal_position, False)"
/>
<field
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
name="product_uom_qty"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, product_packaging, parent.fiscal_position, True)"
/>
@@ -141,7 +141,7 @@
<field groups="product.group_uos" name="product_uos"/>
<field
name="product_packaging"
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, product_packaging, parent.fiscal_position, False)"
domain="[('product_id','=',product_id)]"
groups="base.group_extended"/>
+2
View File
@@ -26,6 +26,8 @@ class sale_order(osv.osv):
_columns = {
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'categ_id': fields.many2one('crm.case.categ', 'Category', \
domain="['|',('section_id','=',section_id),('section_id','=',False), ('object_id.model', '=', 'crm.lead')]")
}
sale_order()
+1
View File
@@ -22,6 +22,7 @@
<field name="arch" type="xml">
<field name="user_id" position="after">
<field name="section_id" widget="selection" groups="base.group_extended"/>
<field name="categ_id" widget="selection" groups="base.group_extended"/>
</field>
</field>
</record>
+1
View File
@@ -91,6 +91,7 @@ class crm_make_sale(osv.osv_memory):
vals = {
'origin': _('Opportunity: %s') % str(case.id),
'section_id': case.section_id and case.section_id.id or False,
'categ_id': case.categ_id and case.categ_id.id or False,
'shop_id': make.shop_id.id,
'partner_id': partner.id,
'pricelist_id': pricelist,
+57 -57
View File
@@ -5,52 +5,52 @@
<field name="domain">[('layout_type','=', 'article')]</field>
</record>
<record model="ir.ui.view" id="view_order_form_inherit_1">
<field name="name">sale.order.form.inherit_1</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<record model="ir.ui.view" id="view_order_form_inherit_1">
<field name="name">sale.order.form.inherit_1</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="priority">30</field>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page/field[@name='order_line']" position="replace">
<field name="abstract_line_ids" colspan="4" nolabel="1" widget="one2many_list">
<form string="Sale Order Lines">
<notebook>
<page string="Order Line">
<separator colspan="4" string="Automatic Declaration"/>
<field colspan="4"
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
name="product_id"
attrs="{'readonly':[('layout_type','!=','article')]}"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], True, parent.date_order, product_packaging, parent.fiscal_position)"
select="1"/>
<field
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
name="product_uom_qty"
attrs="{'readonly':[('layout_type','!=','article')]}"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, product_packaging, parent.fiscal_position)"
select="1"/>
<field name="product_uom"
required="0"
attrs="{'readonly':[('layout_type','!=','article')], 'required':[('layout_type','not in',['title','text','subtotal','line','break'])]}"
on_change="product_uom_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order)"/>
<field
name="product_packaging"
attrs="{'readonly':[('layout_type','!=','article')]}"
context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, product_packaging, parent.fiscal_position)"
domain="[('product_id','=',product_id)]"
groups="base.group_extended"/>
<separator colspan="4" string="Manual Description" />
<field name="layout_type" on_change="onchange_sale_order_line_view(layout_type)"/>
<field name="sequence" string="Seq."/>
<field colspan="4" name="name" select="2" attrs="{'readonly':[('layout_type','in',('line','break'))] }"/>
<field name="price_unit" select="2" attrs="{'readonly':[('layout_type','!=','article')],'required':[('layout_type','not in',['title','text','subtotal','line','break'])]}"/>
<field name="discount" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field name="type" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field name="delay" select="2" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field colspan="4" name="tax_id" domain="[('parent_id','=',False)]" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<separator colspan="4" string="States"/>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page/field[@name='order_line']" position="replace">
<field name="abstract_line_ids" colspan="4" nolabel="1" widget="one2many_list">
<form string="Sale Order Lines">
<notebook>
<page string="Order Line">
<separator colspan="4" string="Automatic Declaration"/>
<field colspan="4"
context="{'partner_id':parent.partner_id,'quantity':product_uom_qty,'pricelist':parent.pricelist_id,'shop':parent.shop_id,'uom':product_uom}"
name="product_id"
attrs="{'readonly':[('layout_type','!=','article')]}"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], True, parent.date_order, product_packaging, parent.fiscal_position)"
select="1"/>
<field
context="{'partner_id':parent.partner_id,'quantity':product_uom_qty,'pricelist':parent.pricelist_id,'shop':parent.shop_id,'uom':product_uom}"
name="product_uom_qty"
attrs="{'readonly':[('layout_type','!=','article')]}"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, product_packaging, parent.fiscal_position)"
select="1"/>
<field name="product_uom"
required="0"
attrs="{'readonly':[('layout_type','!=','article')], 'required':[('layout_type','not in',['title','text','subtotal','line','break'])]}"
on_change="product_uom_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order)"/>
<field
name="product_packaging"
attrs="{'readonly':[('layout_type','!=','article')]}"
context="{'partner_id':parent.partner_id,'quantity':product_uom_qty,'pricelist':parent.pricelist_id,'shop':parent.shop_id,'uom':product_uom}"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order, product_packaging, parent.fiscal_position)"
domain="[('product_id','=',product_id)]"
groups="base.group_extended"/>
<separator colspan="4" string="Manual Description" />
<field name="layout_type" on_change="onchange_sale_order_line_view(layout_type)"/>
<field name="sequence" string="Seq."/>
<field colspan="4" name="name" select="2" attrs="{'readonly':[('layout_type','in',('line','break'))] }"/>
<field name="price_unit" select="2" attrs="{'readonly':[('layout_type','!=','article')],'required':[('layout_type','not in',['title','text','subtotal','line','break'])]}"/>
<field name="discount" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field name="type" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field name="delay" select="2" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<field colspan="4" name="tax_id" domain="[('parent_id','=',False)]" attrs="{'readonly':[('layout_type','!=','article')]}"/>
<separator colspan="4" string="States"/>
<field name="state" select="2"/>
<group col="3" colspan="2">
<field name="invoiced" select="2"/>
@@ -58,11 +58,11 @@
</group>
</page>
<page groups="base.group_extended" string="Extra Info">
<field groups="product.group_uos" name="product_uos_qty" on_change="uos_change(product_uos, product_uos_qty, product_id)"/>
<field groups="product.group_uos" name="product_uos"/>
<field name="address_allotment_id" select="2"/>
<separator colspan="4" string="Properties"/>
<field colspan="4" name="property_ids" nolabel="1"/>
<field groups="product.group_uos" name="product_uos_qty" on_change="uos_change(product_uos, product_uos_qty, product_id)"/>
<field groups="product.group_uos" name="product_uos"/>
<field name="address_allotment_id" select="2"/>
<separator colspan="4" string="Properties"/>
<field colspan="4" name="property_ids" nolabel="1"/>
</page>
<page string="Notes">
<field colspan="4" name="notes" nolabel="1"/>
@@ -74,8 +74,8 @@
<field colspan="4" name="move_ids" nolabel="1" widget="many2many"/>
</page>
</notebook>
</form>
<tree string="Sales order lines">
</form>
<tree string="Sales order lines">
<field colspan="4" name="name"/>
<field name="product_uom_qty" string="Qty"/>
<field name="product_uom" string="UoM"/>
@@ -85,10 +85,10 @@
<field name="price_subtotal"/>
<field name="sequence"/>
</tree>
</field>
</xpath>
</field>
</record>
</field>
</xpath>
</field>
</record>
</data>
</data>
</openerp>
+519
View File
@@ -0,0 +1,519 @@
# Finnish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
"PO-Revision-Date: 2011-06-13 06:18+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish <fi@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: 2011-06-14 04:40+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: share
#: code:addons/share/web/editors.py:15
#, python-format
msgid "Sharing"
msgstr "Jakaminen"
#. module: share
#: code:addons/share/wizard/share_wizard.py:462
#, python-format
msgid ""
"This additional data has been automatically added to your current access.\n"
msgstr "Nämä lisätiedot on automaattisesti lisätty nykyiseen pääsyysi.\n"
#. module: share
#: view:share.wizard:0
msgid "Existing External Users"
msgstr "Olemassaolevat sisäiset käyttäjät"
#. module: share
#: help:res.groups,share:0
msgid "Group created to set access rights for sharing data with some users."
msgstr ""
"Ryhmä luotu käyttöoikeuksien määrittämiseksi tietojen jakamiseksi joidenkin "
"käyttäjien kanssa."
#. module: share
#: model:ir.module.module,shortdesc:share.module_meta_information
msgid "Share Management"
msgstr ""
#. module: share
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr "Kahdella eri käyttäjällä ei voi olla samaa käyttäjätunnusta!"
#. module: share
#: code:addons/share/wizard/share_wizard.py:76
#, python-format
msgid "Sharing Wizard - Step 1"
msgstr "Jako velho - vaihe 1"
#. module: share
#: model:ir.actions.act_window,name:share.action_share_wizard
#: model:ir.ui.menu,name:share.menu_action_share_wizard
msgid "Share Access Rules"
msgstr ""
#. module: share
#: code:addons/share/wizard/share_wizard.py:453
#, python-format
msgid ""
"Dear,\n"
"\n"
"%s\n"
"\n"
msgstr ""
#. module: share
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr "Valittu yritys ei ole sallittu tälle käyttäjälle"
#. module: share
#: model:ir.model,name:share.model_res_users
msgid "res.users"
msgstr ""
#. module: share
#: view:share.wizard:0
msgid "Next"
msgstr "Seuraava"
#. module: share
#: help:share.wizard,action_id:0
msgid ""
"The action that opens the screen containing the data you wish to share."
msgstr "Toiminto avaa ruudun joka sisältää tiedot joita haluat jakaa."
#. module: share
#: code:addons/share/wizard/share_wizard.py:68
#, python-format
msgid "Please specify \"share_root_url\" in context"
msgstr ""
"Ole hyvä ja määrittele jakamisen perus url (share_root_url) alkupiste."
#. module: share
#: view:share.wizard:0
msgid "Congratulations, you have successfully setup a new shared access!"
msgstr "Onnittelut, olet onnistuneesti määritellyt uuden jaetun pääsyn!"
#. module: share
#: code:addons/share/wizard/share_wizard.py:275
#, python-format
msgid "(Copy for sharing)"
msgstr "(kopioi jaettavaksi)"
#. module: share
#: field:share.wizard.result.line,newly_created:0
msgid "Newly created"
msgstr "Uusi luotu"
#. module: share
#: field:share.wizard,share_root_url:0
msgid "Generic Share Access URL"
msgstr "Yleinen jaon URL"
#. module: share
#: code:addons/share/wizard/share_wizard.py:457
#, python-format
msgid ""
"You may use the following login and password to get access to this protected "
"area:\n"
msgstr ""
#. module: share
#: view:res.groups:0
msgid "Regular groups only (no share groups"
msgstr "Vain normaalit ryhmät (ei jakoryhmiä)"
#. module: share
#: selection:share.wizard,access_mode:0
msgid "Read & Write"
msgstr "Luku ja kirjoitus"
#. module: share
#: view:share.wizard:0
msgid "Share wizard: step 2"
msgstr "Jako velho: vaihe 2"
#. module: share
#: view:share.wizard:0
msgid "Share wizard: step 0"
msgstr "JJako velho: vaihe 0"
#. module: share
#: view:share.wizard:0
msgid "Share wizard: step 1"
msgstr "JJako velho: vaihe 1"
#. module: share
#: code:addons/share/wizard/share_wizard.py:458
#: field:share.wizard.result.line,login:0
#, python-format
msgid "Username"
msgstr "Käyttäjätunnus"
#. module: share
#: field:res.users,share:0
msgid "Share User"
msgstr "Jaettu käyttäjä"
#. module: share
#: code:addons/share/wizard/share_wizard.py:452
#, python-format
msgid "%s has shared OpenERP %s information with you"
msgstr "%s on jakanut OpenERP %s tietoja kanssasi"
#. module: share
#: view:share.wizard:0
msgid "Finish"
msgstr "Valmis"
#. module: share
#: field:share.wizard,user_ids:0
#: field:share.wizard.user,user_id:0
msgid "Users"
msgstr ""
#. module: share
#: code:addons/share/wizard/share_wizard.py:103
#, python-format
msgid ""
"This username (%s) already exists, perhaps data has already been shared with "
"this person.\n"
"You may want to try selecting existing shared users instead."
msgstr ""
"Käyttäjätunnus (%s) on jo olemassa, ehkä tiedot on jo jaettu tämän käyttäjän "
"kanssa.\n"
"Voit ehkä haluta valita olemassaolevia jaettuja käyttäjiä tämän sijasta."
#. module: share
#: field:share.wizard,new_users:0
msgid "New users"
msgstr "Uudet käyttäjät"
#. module: share
#: model:ir.model,name:share.model_res_groups
msgid "res.groups"
msgstr ""
#. module: share
#: code:addons/share/wizard/share_wizard.py:149
#, python-format
msgid "%s (Shared)"
msgstr "%s (jaettu)"
#. module: share
#: sql_constraint:res.groups:0
msgid "The name of the group must be unique !"
msgstr "Ryhmän nimen tulee olla uniikki!"
#. module: share
#: selection:share.wizard,user_type:0
msgid "New users (emails required)"
msgstr "Uudet käyttäjät (sähköpostit vaaditaan)"
#. module: share
#: code:addons/share/wizard/share_wizard.py:418
#, python-format
msgid "Sharing filter created by user %s (%s) for group %s"
msgstr "Jakosuodatin luotu käyttäjän %s (%s) toimesta ryhmälle %s"
#. module: share
#: view:res.groups:0
msgid "Groups"
msgstr "Ryhmät"
#. module: share
#: view:share.wizard:0
msgid "Select the desired shared access mode:"
msgstr "Valitse haluttu jaon tyyppi"
#. module: share
#: field:res.groups,share:0
msgid "Share Group"
msgstr "Jako ryhmä"
#. module: share
#: code:addons/share/wizard/share_wizard.py:459
#: field:share.wizard.result.line,password:0
#, python-format
msgid "Password"
msgstr "Salasana"
#. module: share
#: view:share.wizard:0
msgid "Who would you want to share this data with?"
msgstr "Kenen kanssa haluat jakaa nämä tiedot?"
#. module: share
#: model:ir.module.module,description:share.module_meta_information
msgid ""
"The goal is to implement a generic sharing mechanism, where user of OpenERP\n"
"can share data from OpenERP to their colleagues, customers, or friends.\n"
"The system will work by creating new users and groups on the fly, and by\n"
"combining the appropriate access rights and ir.rules to ensure that the "
"/shared\n"
"users/ will only have access to the correct data.\n"
" "
msgstr ""
#. module: share
#: code:addons/share/wizard/share_wizard.py:102
#, python-format
msgid "User already exists"
msgstr "Käyttäjä on jo olemassa"
#. module: share
#: view:share.wizard:0
msgid "Send Email Notification(s)"
msgstr "Lähetä sähköpostitiedote"
#. module: share
#: code:addons/share/wizard/share_wizard.py:463
#, python-format
msgid ""
"You may use your existing login and password to view it. As a reminder, your "
"login is %s.\n"
msgstr ""
"Voit käyttää nykyistä käyttäjätunnustasi ja salasanaasi katsoaksesi ne. "
"Muista että kirjautumisesti on %s.\n"
#. module: share
#: code:addons/share/wizard/share_wizard.py:460
#, python-format
msgid "Database"
msgstr "Tietokanta"
#. module: share
#: model:ir.model,name:share.model_share_wizard_user
msgid "share.wizard.user"
msgstr ""
#. module: share
#: view:share.wizard:0
msgid ""
"Please select the action that opens the screen containing the data you want "
"to share."
msgstr ""
"Ole hyvä ja valitse toiminto joka avaa ruudun jossa on tiedot jotka haluat "
"jakaa."
#. module: share
#: selection:share.wizard,user_type:0
msgid "Existing external users"
msgstr "Olemassaolevat sisäiset käyttäjät"
#. module: share
#: view:share.wizard:0
#: field:share.wizard,result_line_ids:0
msgid "Summary"
msgstr "Yhteenveto"
#. module: share
#: field:share.wizard,user_type:0
msgid "Users to share with"
msgstr "Käyttäjät joiden kanssa jaetaan"
#. module: share
#: code:addons/share/wizard/share_wizard.py:304
#, python-format
msgid "Indirect sharing filter created by user %s (%s) for group %s"
msgstr "Epäsuora jakosuodin luotu käyttäjän %s (%s) toimesta ryhmälle %s"
#. module: share
#: code:addons/share/wizard/share_wizard.py:448
#, python-format
msgid "Email required"
msgstr "Sähköposti vaaditaan"
#. module: share
#: code:addons/share/wizard/share_wizard.py:240
#, python-format
msgid "Copied access for sharing"
msgstr "Kopioitu pääsy jakamista varten"
#. module: share
#: view:share.wizard:0
msgid ""
"Optionally, you may specify an additional domain restriction that will be "
"applied to the shared data."
msgstr ""
"Vaihtoehtoisesti voit määritellä ylimääräisiä toimialuerajoituksia jotka "
"asetetaan jaetuille tiedoille."
#. module: share
#: view:share.wizard:0
msgid "New Users (please provide one e-mail address per line below)"
msgstr "Uudet käyttäjät (syötä alapuolelle yksi sähköpostiosoite per rivi)"
#. module: share
#: code:addons/share/wizard/share_wizard.py:448
#, python-format
msgid ""
"The current user must have an email address configured in User Preferences "
"to be able to send outgoing emails."
msgstr ""
"Nykyisellä käyttäjällä tulee olle sähköpostiosoite määriteltynä "
"käyttäjäasetuksissa voidakseen lähettää sähköposteja."
#. module: share
#: view:res.users:0
msgid "Regular users only (no share user)"
msgstr "Vain tavalliset käyttäjät (ei jaettuja käyttäjiä)"
#. module: share
#: field:share.wizard.result.line,share_url:0
msgid "Share URL"
msgstr "Jaon URL"
#. module: share
#: field:share.wizard,domain:0
msgid "Domain"
msgstr "Toimialue"
#. module: share
#: code:addons/share/wizard/share_wizard.py:314
#, python-format
msgid ""
"Sorry, the current screen and filter you are trying to share are not "
"supported at the moment.\n"
"You may want to try a simpler filter."
msgstr ""
"Anteeksi, nykyistä ruutua ja suodinta jota yrität jakaa ei tueta "
"tällähetkellä.\n"
"Voit yrittää yksinkertaisempaa suodinta."
#. module: share
#: field:share.wizard,access_mode:0
msgid "Access Mode"
msgstr "Pääsyn tyyppi"
#. module: share
#: view:share.wizard:0
msgid "Access info"
msgstr "Pääsyn tiedot"
#. module: share
#: code:addons/share/wizard/share_wizard.py:454
#, python-format
msgid ""
"To access it, you can go to the following URL:\n"
" %s"
msgstr ""
"Päästäksesi tietoihin, mene seuraavaan osoitteeseen (url):\n"
" %s"
#. module: share
#: field:share.wizard,action_id:0
msgid "Action to share"
msgstr "Jaettava toiminto"
#. module: share
#: code:addons/share/web/editors.py:18
#, python-format
msgid "Share"
msgstr "Jaa"
#. module: share
#: code:addons/share/wizard/share_wizard.py:434
#, python-format
msgid "Sharing Wizard - Step 2"
msgstr "Jakovelho - vaihe 2"
#. module: share
#: view:share.wizard:0
msgid "Here is a summary of the access points you have just created:"
msgstr "Tässä on yhteenveto pääsypisteistä jotka juuri teit."
#. module: share
#: model:ir.model,name:share.model_share_wizard_result_line
msgid "share.wizard.result.line"
msgstr ""
#. module: share
#: code:addons/share/wizard/share_wizard.py:313
#, python-format
msgid "Sharing access could not be setup"
msgstr "Jaon pääsyn tyyppi ei voi olla asennus"
#. module: share
#: model:ir.actions.act_window,name:share.action_share_wizard
#: model:ir.actions.act_window,name:share.action_share_wizard_step1
#: model:ir.model,name:share.model_share_wizard
#: model:ir.ui.menu,name:share.menu_action_share_wizard
#: field:share.wizard.result.line,share_wizard_id:0
msgid "Share Wizard"
msgstr "Jakovelho"
#. module: share
#: help:share.wizard,user_type:0
msgid "Select the type of user(s) you would like to share data with."
msgstr "Valitse käyttäjien tyyppi joiden kanssa haluat jakaa tietoja."
#. module: share
#: view:share.wizard:0
msgid "Cancel"
msgstr "Peruuta"
#. module: share
#: view:share.wizard:0
msgid "Close"
msgstr "Sulje"
#. module: share
#: help:res.users,share:0
msgid ""
"External user with limited access, created only for the purpose of sharing "
"data."
msgstr ""
"Ulkoinen käyttäjä jolla on rajoitettu pääsy, luotu vain tietojen jakamista "
"varten."
#. module: share
#: help:share.wizard,domain:0
msgid "Optional domain for further data filtering"
msgstr "Vaihtoehtoinen toimialue tarkempaa tietojen suodatusta varten"
#. module: share
#: selection:share.wizard,access_mode:0
msgid "Read-only"
msgstr "Vain luku"
#. module: share
#: code:addons/share/wizard/share_wizard.py:323
#, python-format
msgid "*usual password*"
msgstr "*normaali salasana*"
#, python-format
#~ msgid ""
#~ "Dear,\n"
#~ "\n"
#~ msgstr ""
#~ "Hyvä,\n"
#~ "\n"
#, python-format
#~ msgid ""
#~ "You may use the following login and password to get access to this protected "
#~ "area:"
#~ msgstr ""
#~ "Voit käyttää seuraavaa käyttäjätunnusta ja salasanaa päästäksesi tälle "
#~ "suojatulle alueelle"
#~ msgid "Sharing Tools"
#~ msgstr "Jakotyökalut"
#~ msgid "Access Groups"
#~ msgstr "Pääsyryhmät"
+3 -3
View File
@@ -57,7 +57,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Stock Inventory Lines">
<field context="location=location_id,uom=product_uom,to_date=parent.date" name="product_id" on_change="on_change_product_id(location_id,product_id,product_uom,parent.date)" select="1" domain="[('type','&lt;&gt;','service')]"/>
<field context="{'location':location_id, 'uom':product_uom, 'to_date':parent.date}" name="product_id" on_change="on_change_product_id(location_id,product_id,product_uom,parent.date)" select="1" domain="[('type','&lt;&gt;','service')]"/>
<field name="product_qty"/>
<field name="product_uom"/>
<field name="prod_lot_id" groups="base.group_extended"/>
@@ -117,7 +117,7 @@
<field colspan="4" name="inventory_line_id" nolabel="1" widget="one2many_list">
<tree string="Products" editable="bottom">
<field colspan="4" domain="[('usage','=','internal')]" name="location_id"/>
<field context="location=location_id,uom=product_uom,to_date=parent.date" name="product_id" on_change="on_change_product_id(location_id,product_id,product_uom,parent.date)" domain="[('type','&lt;&gt;','service')]"/>
<field context="{'location':location_id, 'uom':product_uom, 'to_date':parent.date}" name="product_id" on_change="on_change_product_id(location_id,product_id,product_uom,parent.date)" domain="[('type','&lt;&gt;','service')]"/>
<field name="product_qty"/>
<field name="product_uom"/>
<field name="prod_lot_id" groups="base.group_extended"/>
@@ -129,7 +129,7 @@
<form string="Products ">
<field domain="[('usage','=','internal')]" name="location_id"/>
<newline/>
<field context="location=location_id,uom=product_uom,to_date=parent.date" name="product_id" on_change="on_change_product_id(location_id,product_id,product_uom,parent.date)" domain="[('type','&lt;&gt;','service')]"/>
<field context="{'location':location_id, 'uom':product_uom, 'to_date':parent.date}" name="product_id" on_change="on_change_product_id(location_id,product_id,product_uom,parent.date)" domain="[('type','&lt;&gt;','service')]"/>
<field name="product_qty"/>
<field name="product_uom"/>
<group colspan="2" col="4">
File diff suppressed because it is too large Load Diff
+1
View File
@@ -98,6 +98,7 @@ class survey(osv.osv):
current_rec = self.read(cr, uid, ids, context=context)
title = current_rec.get('title') + ' (Copy)'
vals.update({'title':title})
vals.update({'history':[],'tot_start_survey':0,'tot_comp_survey':0})
return super(survey, self).copy(cr, uid, ids, vals, context=context)
def action_print_survey(self, cr, uid, ids, context=None):
@@ -167,6 +167,10 @@ class survey_send_invitation(osv.osv_memory):
res_user+= "- %s (Login: %s, Password: %s)\n" % \
(user_email.name, user_email.login, user_email.password)
continue
else:
error += "- No User found linked to email address '%s'.\n Impossible to send a reminder to a partner never invited before \n"%(addr.email)
continue
passwd= self.genpasswd()
out+= addr.email + ',' + passwd + '\n'
mail= record['mail'] % {'login' : addr.email, 'passwd' : passwd, 'name' : addr.name}
@@ -3,7 +3,7 @@
<data>
<!-- Survey send invitation Form View -->
<record id="view_survey_send_invitation" model="ir.ui.view">
<field name="name">Send Invitation</field>
<field name="model">survey.send.invitation</field>
@@ -11,21 +11,21 @@
<field name="arch" type="xml">
<form string="Send Invitation">
<separator string="Select Partner" colspan="4"/>
<field name="partner_ids" nolabel="1" colspan="4"/>
<field name="partner_ids" nolabel="1" colspan="4"/>
<separator colspan="4" string="Send mail for new user"/>
<field name="send_mail" nolabel="1"/>
<field name="mail_subject" colspan="3"/>
<separator colspan="4" string="Send reminder for existing user"/>
<field name="send_mail_existing" nolabel="1"/>
<field name="mail_subject_existing" colspan="3"/>
<field name="mail_subject_existing" colspan="3"/>
<separator colspan="4"/>
<field name="mail_from" colspan="4"/>
<separator string="Message" colspan="4"/>
<field name="mail" nolabel="1" colspan="4"/>
<separator colspan="4" />
<label align="0.0" colspan="2" string="" />
<button colspan="1" icon="gtk-cancel" special="cancel" string="Cancel"/>
<button colspan="1" icon="gtk-go-forward" name="action_send" string="Send" type="object"/>
<button colspan="1" icon="gtk-cancel" special="cancel" string="_Cancel"/>
<button colspan="1" icon="gtk-go-forward" name="action_send" string="_Send" type="object"/>
</form>
</field>
</record>
@@ -46,7 +46,7 @@
view_mode="form" target="new" view_type="form" />
<!-- Survey send invitation Display Log Form View -->
<record id="view_survey_send_invitation_log" model="ir.ui.view">
<field name="name">survey send invitation log</field>
<field name="model">survey.send.invitation.log</field>
@@ -58,7 +58,7 @@
<separator string="" colspan="4"/>
<group col="4" colspan="4">
<label align="0.0" colspan="3" string="" />
<button colspan="1" icon="gtk-ok" special="cancel" string="Ok"/>
<button colspan="1" icon="gtk-ok" special="cancel" string="_Ok"/>
</group>
</form>
</field>
+3 -1
View File
@@ -24,6 +24,7 @@ import base64
import email
import tools
import binascii
import dateutil.parser
class email_server_tools(osv.osv_memory):
_inherit = "email.server.tools"
def history_message(self, cr, uid, model, res_id, message, context=None):
@@ -73,7 +74,8 @@ class email_server_tools(osv.osv_memory):
msg['reply'] = self._decode_header(msg_txt.get('Reply-To'))
if 'Date' in fields:
msg['date'] = self._decode_header(msg_txt.get('Date'))
date = self._decode_header(msg_txt.get('Date'))
msg['date'] = dateutil.parser.parse(date).strftime("%Y-%m-%d %H:%M:%S")
if 'Content-Transfer-Encoding' in fields:
msg['encoding'] = msg_txt.get('Content-Transfer-Encoding')
Binary file not shown.
@@ -148,17 +148,10 @@ function getPredefinedFolder(type) {
// type 2 = selected messages
var use_dir = "mboximport.exportMSG.use_dir";
var dir_path="";
if(navigator.userAgent.indexOf('Linux')!= -1){
dir_path ="/tmp"
}
else if(navigator.userAgent.indexOf('Win')!= -1){
dir_path ="C:\\"
}
else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
dir_path ="/tmp"
}
var dirService = Components.classes["@mozilla.org/file/directory_service;1"].
getService(Components.interfaces.nsIProperties).get("Home", Components.interfaces.nsIFile);
var homeDir = dirService.path;
var dir_path = ((homeDir.search(/\\/) != -1) ? homeDir + "\\" : homeDir + "/")
try {
var localFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
localFile.initWithPath(dir_path);
@@ -38,6 +38,10 @@ function searchmail()
return true
}
var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
var dirService = Components.classes["@mozilla.org/file/directory_service;1"].
getService(Components.interfaces.nsIProperties).get("Home", Components.interfaces.nsIFile);
var homeDir = dirService.path;
var path = ((homeDir.search(/\\/) != -1) ? homeDir + "\\" : homeDir + "/")
var version_obj = prefService.getBranch("extensions.");
version_obj.QueryInterface(Components.interfaces.nsIPrefBranch2);
version = version_obj.getCharPref("lastAppVersion");
@@ -148,19 +152,7 @@ function searchmail()
url[i] = currentAttachments[i].url;
name[i] = currentAttachments[i].displayName;
var obj = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
if(navigator.userAgent.indexOf('Linux')!= -1){
obj.initWithPath("/tmp/");
}
else if(navigator.userAgent.indexOf('Win')!= -1){
obj.initWithPath("c:\\");
}
else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
obj.initWithPath("/tmp/");
}
else{
alert("Not Compatible for this Operating System");
false();
}
obj.initWithPath(path)
//saving the attachment files in system's temp folder
test[i] = messenger.saveAttachmentToFolder(contentType[i],url[i],name[i],uri,obj);
}
@@ -335,15 +327,10 @@ var listDocumentHandler = {
//function to archive the mail content through xmlrpc request
function parse_eml(){
var fpath =""
if(navigator.userAgent.indexOf('Linux')!= -1){
fpath ="/tmp/"
}
else if(navigator.userAgent.indexOf('Win')!= -1){
fpath ="C:\\"
}
else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
fpath ="/tmp/"
}
var dirService = Components.classes["@mozilla.org/file/directory_service;1"].
getService(Components.interfaces.nsIProperties).get("Home", Components.interfaces.nsIFile);
var homeDir = dirService.path;
fpath = ((homeDir.search(/\\/) != -1) ? homeDir + "\\" : homeDir + "/")
name = fpath + getPref().getCharPref('fname') +".eml"
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( name );
@@ -1434,34 +1434,6 @@ var listArchiveHandler = {
}
//function to archive the mail content through xmlrpc request
function parse_eml(){
var fpath =""
if(navigator.userAgent.indexOf('Linux')!= -1){
fpath ="/tmp/"
}
else if(navigator.userAgent.indexOf('Win')!= -1){
fpath ="C:\\"
}
else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
fpath ="/tmp/"
}
name = fpath + getFileName() +".eml"
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( name );
if ( file.exists() == false ) {
return null;
} else {
var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
is.init( file,0x01, 00004, null);
var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
sis.init( is );
var output = sis.read( sis.available() );
return output
}
}
function upload_archivemail()
{
list_documents = document.getElementById('listSearchBox')
@@ -1484,6 +1456,7 @@ function upload_archivemail()
strobj.data = 'thunderbird.partner';
var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
for(i=0;i<cnt;i++)
{
var object = list_documents.getSelectedItem(i);
@@ -1497,7 +1470,6 @@ function upload_archivemail()
var a = ['ref_ids','message'];
var b = [ref_ids, eml_string];
var arrofarr = dictcontact(a,b);
xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
}
+75 -7
View File
@@ -20,25 +20,93 @@
{
"name" : "Authenticate users with LDAP server",
"version" : "0.1",
"version" : "1.0",
"depends" : ["base"],
"images" : ["images/ldap_configuration.jpeg"],
"author" : "OpenERP SA",
"description": """
Adds support for authentication by LDAP server.
===============================================
This module allows users to login with their LDAP username and
password, and will automatically create OpenERP users for them
on the fly.
**Note**: This module only work on servers who have Python's
``ldap`` module installed.
Configuration
+++++++++++++
After installing this module, you need to configure the LDAP
parameters in the Configuration tab of the Company details.
Different companies may have different LDAP servers, as long
as they have unique usernames (usernames need to be unique in
OpenERP, even across multiple companies).
Anonymous LDAP binding is also supported (for LDAP servers
that allow it), by simpling keeping the LDAP user and password
empty in the LDAP configuration. This does **not** allow
anonymous authentication for users, it is only for the master
LDAP account that is used to verify if a user exists before
attempting to authenticate it.
Security Considerations
+++++++++++++++++++++++
Users' LDAP passwords are never stored in the OpenERP database,
the LDAP server is queried whenever a user needs to be
authenticated. No duplication of the password occurs, and
passwords are managed in one place only.
OpenERP does not manage password changes in the LDAP, so
any change of password should be conducted by other means
in the LDAP directory directly (for LDAP users).
It is also possible to have local OpenERP users in the
database along with LDAP-authenticated users (the Administrator
account is one obvious example).
Here is how it works:
* The system first attempts to authenticate users against
the local OpenERP database ;
* if this authentication fails (for example because the
user has no local password), the system then attempts
to authenticate against LDAP ;
As LDAP users have blank passwords by default in the local
OpenERP database (which means no access), the first step
always fails and the LDAP server is queried to do the
authentication.
User Template
+++++++++++++
In the LDAP configuration on the Company form, it is possible to
select a *User Template*. If set, this user will be used as
template to create the local users whenever someone authenticates
for the first time via LDAP authentication.
This allows pre-setting the default groups and menus of the
first-time users.
**Warning**: if you set a password for the user template,
this password will be assigned as local password for each new
LDAP user, effectively setting a *master password* for these
users (until manually changed). You usually do not want this.
One easy way to setup a template user is to login once with
a valid LDAP user, let OpenERP create a blank local user with the
same login (and a blank password), then rename this new user
to a username that does not exist in LDAP, and setup its
groups the way you want.
Interaction with base_crypt
+++++++++++++++++++++++++++
The base_crypt module is not compatible with this module, and
will disable LDAP authentication if installed at the same time.
This module only works with Unix/Linux.
""",
"website" : "http://www.openerp.com",
"category" : "Tools",
"init_xml" : [
],
"demo_xml" : [
],
"update_xml" : [
"data" : [
"users_ldap_view.xml",
],
"active": False,

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