commit
804b40ad23
|
@ -2874,10 +2874,12 @@ class wizard_multi_charts_accounts(osv.osv_memory):
|
|||
obj_ac_fp.create(cr, uid, vals_acc)
|
||||
|
||||
ir_values = self.pool.get('ir.values')
|
||||
ir_values.set(cr, uid, key='default', key2=False, name="taxes_id", company=obj_multi.company_id.id
|
||||
, models =[('product.product',False)], value=[tax_template_to_tax[obj_multi.sale_tax.id]])
|
||||
ir_values.set(cr, uid, key='default', key2=False, name="supplier_taxes_id", company=obj_multi.company_id.id
|
||||
, models =[('product.product',False)], value=[tax_template_to_tax[obj_multi.purchase_tax.id]])
|
||||
if obj_multi.sale_tax:
|
||||
ir_values.set(cr, uid, key='default', key2=False, name="taxes_id", company=obj_multi.company_id.id,
|
||||
models =[('product.product',False)], value=[tax_template_to_tax[obj_multi.sale_tax.id]])
|
||||
if obj_multi.purchase_tax:
|
||||
ir_values.set(cr, uid, key='default', key2=False, name="supplier_taxes_id", company=obj_multi.company_id.id,
|
||||
models =[('product.product',False)], value=[tax_template_to_tax[obj_multi.purchase_tax.id]])
|
||||
|
||||
wizard_multi_charts_accounts()
|
||||
|
||||
|
|
|
@ -198,7 +198,7 @@
|
|||
<search string="Accounts">
|
||||
<group col="10" colspan="4">
|
||||
<filter icon="terp-sale" string="Receivable Accounts" domain="[('type','=','receivable')]"/>
|
||||
<filter icon="terp-purchase" string="Purchase Accounts" domain="[('type','=','purchase')]"/>
|
||||
<filter icon="terp-purchase" string="Payable Accounts" domain="[('type','=','payable')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
|
|
|
@ -79,7 +79,6 @@ class partner_balance(report_sxw.rml_parse, common_report_header):
|
|||
move_state = ['posted']
|
||||
|
||||
full_account = []
|
||||
result_tmp = 0.0
|
||||
self.cr.execute(
|
||||
"SELECT p.ref,l.account_id,ac.name AS account_name,ac.code AS code,p.name, sum(debit) AS debit, sum(credit) AS credit, " \
|
||||
"CASE WHEN sum(debit) > sum(credit) " \
|
||||
|
|
|
@ -77,7 +77,6 @@ class report_pl_account_horizontal(rml_parse.rml_parse, common_report_header):
|
|||
db_pool = pooler.get_pool(self.cr.dbname)
|
||||
|
||||
account_pool = db_pool.get('account.account')
|
||||
year_pool = db_pool.get('account.fiscalyear')
|
||||
|
||||
types = [
|
||||
'expense',
|
||||
|
|
|
@ -21,9 +21,9 @@
|
|||
##############################################################################
|
||||
|
||||
import time
|
||||
|
||||
import rml_parse
|
||||
from report import report_sxw
|
||||
import re
|
||||
|
||||
def _get_country(record):
|
||||
if record.partner_id \
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
import re
|
||||
import sys
|
||||
|
||||
|
@ -55,15 +54,15 @@ class rml_parse(report_sxw.rml_parse):
|
|||
ellipsis = ellipsis or ''
|
||||
try:
|
||||
return string[:maxlen - len(ellipsis) ] + (ellipsis, '')[len(string) < maxlen]
|
||||
except Exception, e:
|
||||
except:
|
||||
return False
|
||||
def _strip_name(self, name, maxlen=50):
|
||||
return self._ellipsis(name, maxlen, '...')
|
||||
|
||||
def _get_and_change_date_format_for_swiss (self,date_to_format):
|
||||
def _get_and_change_date_format_for_swiss(self,date_to_format):
|
||||
date_formatted=''
|
||||
if date_to_format:
|
||||
date_formatted = strptime (date_to_format,'%Y-%m-%d').strftime('%d.%m.%Y')
|
||||
date_formatted = strptime(date_to_format,'%Y-%m-%d').strftime('%d.%m.%Y')
|
||||
return date_formatted
|
||||
|
||||
def _explode_name(self,chaine,length):
|
||||
|
@ -109,15 +108,14 @@ class rml_parse(report_sxw.rml_parse):
|
|||
i = i + length
|
||||
chaine = str("".join(ast))
|
||||
return chaine
|
||||
def repair_string(self,chaine):
|
||||
def repair_string(self, chaine):
|
||||
ast = list(chaine)
|
||||
UnicodeAst = []
|
||||
_previouslyfound = False
|
||||
i = 0
|
||||
while i < len(ast):
|
||||
elem = ast[i]
|
||||
try:
|
||||
Stringer = elem.encode("utf-8")
|
||||
elem.encode("utf-8")
|
||||
except UnicodeDecodeError:
|
||||
to_reencode = elem + ast[i+1]
|
||||
print str(to_reencode)
|
||||
|
|
|
@ -66,7 +66,8 @@ class account_tax_chart(osv.osv_memory):
|
|||
result['context'] = str({'state': data['target_move']})
|
||||
|
||||
if data['period_id']:
|
||||
result['name'] += ':' + self.pool.get('account.period').read(cr, uid, [data['period_id']], context=context)[0]['code']
|
||||
period_code = period_obj.read(cr, uid, [data['period_id']], context=context)[0]['code']
|
||||
result['name'] += period_code and (':' + period_code) or ''
|
||||
return result
|
||||
|
||||
_defaults = {
|
||||
|
|
|
@ -250,33 +250,56 @@ class account_analytic_account(osv.osv):
|
|||
|
||||
def _ca_invoiced_calc(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
parent_ids = tuple(self.search(cr, uid, [('parent_id', 'child_of', ids)], context=context))
|
||||
if parent_ids:
|
||||
cr.execute("SELECT account_analytic_line.account_id, COALESCE(SUM(amount_currency), 0.0) \
|
||||
res_final = {}
|
||||
child_ids = tuple(self.search(cr, uid, [('parent_id', 'child_of', ids)], context=context))
|
||||
for i in child_ids:
|
||||
res[i] = {}
|
||||
for n in [name]:
|
||||
res[i][n] = 0.0
|
||||
if not child_ids:
|
||||
return res
|
||||
|
||||
if child_ids:
|
||||
cr.execute("SELECT account_analytic_line.account_id, COALESCE(SUM(amount), 0.0) \
|
||||
FROM account_analytic_line \
|
||||
JOIN account_analytic_journal \
|
||||
ON account_analytic_line.journal_id = account_analytic_journal.id \
|
||||
WHERE account_analytic_line.account_id IN %s \
|
||||
AND account_analytic_journal.type = 'sale' \
|
||||
GROUP BY account_analytic_line.account_id", (parent_ids,))
|
||||
GROUP BY account_analytic_line.account_id", (child_ids,))
|
||||
for account_id, sum in cr.fetchall():
|
||||
res[account_id] = round(sum,2)
|
||||
return self._compute_currency_for_level_tree(cr, uid, ids, parent_ids, res, context=context)
|
||||
res[account_id][name] = round(sum,2)
|
||||
data = self._compute_level_tree(cr, uid, ids, child_ids, res, [name], context)
|
||||
for i in data:
|
||||
res_final[i] = data[i][name]
|
||||
return res_final
|
||||
|
||||
def _total_cost_calc(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
parent_ids = tuple(self.search(cr, uid, [('parent_id', 'child_of', ids)], context=context))
|
||||
if parent_ids:
|
||||
cr.execute("""SELECT account_analytic_line.account_id, COALESCE(SUM(amount_currency), 0.0) \
|
||||
res_final = {}
|
||||
child_ids = tuple(self.search(cr, uid, [('parent_id', 'child_of', ids)], context=context))
|
||||
|
||||
for i in child_ids:
|
||||
res[i] = {}
|
||||
for n in [name]:
|
||||
res[i][n] = 0.0
|
||||
if not child_ids:
|
||||
return res
|
||||
|
||||
if child_ids:
|
||||
cr.execute("""SELECT account_analytic_line.account_id, COALESCE(SUM(amount), 0.0) \
|
||||
FROM account_analytic_line \
|
||||
JOIN account_analytic_journal \
|
||||
ON account_analytic_line.journal_id = account_analytic_journal.id \
|
||||
WHERE account_analytic_line.account_id IN %s \
|
||||
AND amount<0 \
|
||||
GROUP BY account_analytic_line.account_id""",(parent_ids,))
|
||||
GROUP BY account_analytic_line.account_id""",(child_ids,))
|
||||
for account_id, sum in cr.fetchall():
|
||||
res[account_id] = round(sum,2)
|
||||
return self._compute_currency_for_level_tree(cr, uid, ids, parent_ids, res, context=context)
|
||||
res[account_id][name] = round(sum,2)
|
||||
data = self._compute_level_tree(cr, uid, ids, child_ids, res, [name], context)
|
||||
for i in data:
|
||||
res_final[i] = data[i][name]
|
||||
return res_final
|
||||
|
||||
def _remaining_hours_calc(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
|
|
|
@ -24,4 +24,4 @@ import invoice
|
|||
import report
|
||||
import wizard
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -573,6 +573,7 @@ class account_voucher(osv.osv):
|
|||
move_line_pool = self.pool.get('account.move.line')
|
||||
currency_pool = self.pool.get('res.currency')
|
||||
tax_obj = self.pool.get('account.tax')
|
||||
seq_obj = self.pool.get('ir.sequence')
|
||||
for inv in self.browse(cr, uid, ids):
|
||||
if not inv.line_ids:
|
||||
raise osv.except_osv(_('No Lines !'), _('Please create some lines'))
|
||||
|
@ -581,7 +582,7 @@ class account_voucher(osv.osv):
|
|||
if inv.number:
|
||||
name = inv.number
|
||||
elif inv.journal_id.sequence_id:
|
||||
name = self.pool.get('ir.sequence').get_id(cr, uid, inv.journal_id.sequence_id.id)
|
||||
name = seq_obj.get_id(cr, uid, inv.journal_id.sequence_id.id)
|
||||
else:
|
||||
raise osv.except_osv(_('Error !'), _('Please define a sequence on the journal !'))
|
||||
if not inv.reference:
|
||||
|
@ -687,7 +688,7 @@ class account_voucher(osv.osv):
|
|||
rec_ids = [master_line, line.move_line_id.id]
|
||||
rec_list_ids.append(rec_ids)
|
||||
|
||||
if not self.pool.get('res.currency').is_zero(cr, uid, inv.currency_id, line_total):
|
||||
if not currency_pool.is_zero(cr, uid, inv.currency_id, line_total):
|
||||
diff = line_total
|
||||
move_line = {
|
||||
'name': name,
|
||||
|
@ -854,17 +855,19 @@ class account_bank_statement(osv.osv):
|
|||
_inherit = 'account.bank.statement'
|
||||
|
||||
def button_cancel(self, cr, uid, ids, context=None):
|
||||
voucher_obj = self.pool.get('account.voucher')
|
||||
for st in self.browse(cr, uid, ids, context):
|
||||
voucher_ids = []
|
||||
for line in st.line_ids:
|
||||
if line.voucher_id:
|
||||
voucher_ids.append(line.voucher_id.id)
|
||||
self.pool.get('account.voucher').cancel_voucher(cr, uid, voucher_ids, context)
|
||||
voucher_obj.cancel_voucher(cr, uid, voucher_ids, context)
|
||||
return super(account_bank_statement, self).button_cancel(cr, uid, ids, context=context)
|
||||
|
||||
def create_move_from_st_line(self, cr, uid, st_line_id, company_currency_id, next_number, context=None):
|
||||
voucher_obj = self.pool.get('account.voucher')
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
move_line_obj = self.pool.get('account.move.line')
|
||||
bank_st_line_obj = self.pool.get('account.bank.statement.line')
|
||||
st_line = bank_st_line_obj.browse(cr, uid, st_line_id, context=context)
|
||||
if st_line.voucher_id:
|
||||
|
@ -878,7 +881,7 @@ class account_bank_statement(osv.osv):
|
|||
'move_ids': [(4, v.move_id.id, False)]
|
||||
})
|
||||
|
||||
return self.pool.get('account.move.line').write(cr, uid, [x.id for x in v.move_ids], {'statement_id': st_line.statement_id.id}, context=context)
|
||||
return move_line_obj.write(cr, uid, [x.id for x in v.move_ids], {'statement_id': st_line.statement_id.id}, context=context)
|
||||
return super(account_bank_statement, self).create_move_from_st_line(cr, uid, st_line.id, company_currency_id, next_number, context=context)
|
||||
|
||||
account_bank_statement()
|
||||
|
@ -912,14 +915,15 @@ class account_bank_statement_line(osv.osv):
|
|||
}
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
voucher_obj = self.pool.get('account.voucher')
|
||||
statement_line = self.browse(cr, uid, ids, context)
|
||||
unlink_ids = []
|
||||
for st_line in statement_line:
|
||||
if st_line.voucher_id:
|
||||
unlink_ids.append(st_line.voucher_id.id)
|
||||
self.pool.get('account.voucher').unlink(cr, uid, unlink_ids, context=context)
|
||||
voucher_obj.unlink(cr, uid, unlink_ids, context=context)
|
||||
return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context)
|
||||
|
||||
account_bank_statement_line()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:=======
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -32,7 +32,7 @@ class report_voucher(report_sxw.rml_parse):
|
|||
'get_title': self.get_title,
|
||||
'debit':self.debit,
|
||||
'credit':self.credit,
|
||||
'get_ref' : self._get_ref
|
||||
'get_ref': self._get_ref
|
||||
})
|
||||
|
||||
def convert(self, amount, cur):
|
||||
|
@ -58,9 +58,10 @@ class report_voucher(report_sxw.rml_parse):
|
|||
return credit
|
||||
|
||||
def _get_ref(self, voucher_id, move_ids):
|
||||
voucher_line = self.pool.get('account.voucher.line').search(self.cr, self.uid, [('partner_id', '=', move_ids.partner_id.id), ('voucher_id', '=', voucher_id)])
|
||||
voucher_line_obj = self.pool.get('account.voucher.line')
|
||||
voucher_line = voucher_line_obj.search(self.cr, self.uid, [('partner_id', '=', move_ids.partner_id.id), ('voucher_id', '=', voucher_id)])
|
||||
if voucher_line:
|
||||
voucher = self.pool.get('account.voucher.line').browse(self.cr, self.uid, voucher_line)[0]
|
||||
voucher = voucher_line_obj.browse(self.cr, self.uid, voucher_line)[0]
|
||||
return voucher.name
|
||||
else:
|
||||
return
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
|
||||
from osv import fields, osv
|
||||
|
|
|
@ -25,15 +25,15 @@ from osv import fields
|
|||
class account_voucher_unreconcile(osv.osv_memory):
|
||||
_name = "account.voucher.unreconcile"
|
||||
_description = "Account voucher unreconcile"
|
||||
|
||||
|
||||
_columns = {
|
||||
'remove':fields.boolean('Want to remove accounting entries too ?', required=False),
|
||||
}
|
||||
|
||||
|
||||
_defaults = {
|
||||
'remove': True,
|
||||
}
|
||||
|
||||
|
||||
def trans_unrec(self, cr, uid, ids, context=None):
|
||||
# res = self.browse(cr, uid, ids[0])
|
||||
if context is None:
|
||||
|
@ -54,9 +54,9 @@ class account_voucher_unreconcile(osv.osv_memory):
|
|||
voucher_pool.cancel_voucher(cr, uid, [context.get('active_id')], context)
|
||||
# wf_service = netsvc.LocalService("workflow")
|
||||
# wf_service.trg_validate(uid, 'account.voucher', context.get('active_id'), 'cancel_voucher', cr)
|
||||
|
||||
|
||||
return {}
|
||||
|
||||
account_voucher_unreconcile()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -59,6 +59,7 @@ if HOST.lower() == 'none':
|
|||
else:
|
||||
netsvc.Logger().notifyChannel("FTP", netsvc.LOG_INFO, "\n Serving FTP on %s:%s\n" % (HOST, PORT))
|
||||
ds = ftp_server()
|
||||
ds.daemon = True
|
||||
ds.start()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -103,7 +103,7 @@ def get_value(cursor, user, recid, message=None, template=None, context=None):
|
|||
|
||||
class email_template(osv.osv):
|
||||
"Templates for sending Email"
|
||||
|
||||
|
||||
_name = "email.template"
|
||||
_description = 'Email Templates for Models'
|
||||
|
||||
|
@ -131,7 +131,7 @@ class email_template(osv.osv):
|
|||
'def_to':fields.char(
|
||||
'Recipient (To)',
|
||||
size=250,
|
||||
help="The Recipient of email. "
|
||||
help="The Recipient of email. "
|
||||
"Placeholders can be used here. "
|
||||
"e.g. ${object.email_to}"),
|
||||
'def_cc':fields.char(
|
||||
|
@ -146,20 +146,20 @@ class email_template(osv.osv):
|
|||
help="Blind Carbon Copy address(es), comma-separated."
|
||||
" Placeholders can be used here. "
|
||||
"e.g. ${object.email_bcc}"),
|
||||
'reply_to':fields.char('Reply-To',
|
||||
size=250,
|
||||
'reply_to':fields.char('Reply-To',
|
||||
size=250,
|
||||
help="The address recipients should reply to,"
|
||||
" if different from the From address."
|
||||
" Placeholders can be used here. "
|
||||
"e.g. ${object.email_reply_to}"),
|
||||
'message_id':fields.char('Message-ID',
|
||||
size=250,
|
||||
'message_id':fields.char('Message-ID',
|
||||
size=250,
|
||||
help="Specify the Message-ID SMTP header to use in outgoing emails. Please note that this overrides the Resource tracking option! Placeholders can be used here."),
|
||||
'track_campaign_item':fields.boolean('Resource Tracking',
|
||||
help="Enable this is you wish to include a special \
|
||||
tracking marker in outgoing emails so you can identify replies and link \
|
||||
them back to the corresponding resource record. \
|
||||
This is useful for CRM leads for example"),
|
||||
This is useful for CRM leads for example"),
|
||||
'lang':fields.char(
|
||||
'Language',
|
||||
size=250,
|
||||
|
@ -182,7 +182,7 @@ This is useful for CRM leads for example"),
|
|||
translate=True),
|
||||
'use_sign':fields.boolean(
|
||||
'Signature',
|
||||
help="the signature from the User details"
|
||||
help="the signature from the User details"
|
||||
" will be appended to the mail"),
|
||||
'file_name':fields.char(
|
||||
'Report Filename',
|
||||
|
@ -199,16 +199,16 @@ This is useful for CRM leads for example"),
|
|||
'attachment_id',
|
||||
'Attached Files',
|
||||
help="You may attach existing files to this template, "
|
||||
"so they will be added in all emails created from this template"),
|
||||
"so they will be added in all emails created from this template"),
|
||||
'ref_ir_act_window':fields.many2one(
|
||||
'ir.actions.act_window',
|
||||
'Window Action',
|
||||
help="Action that will open this email template on Resource records",
|
||||
help="Action that will open this email template on Resource records",
|
||||
readonly=True),
|
||||
'ref_ir_value':fields.many2one(
|
||||
'ir.values',
|
||||
'Wizard Button',
|
||||
help="Button in the side bar of the form view of this Resource that will invoke the Window Action",
|
||||
help="Button in the side bar of the form view of this Resource that will invoke the Window Action",
|
||||
readonly=True),
|
||||
'allowed_groups':fields.many2many(
|
||||
'res.groups',
|
||||
|
@ -265,7 +265,7 @@ This is useful for CRM leads for example"),
|
|||
'template_language' : lambda *a:'mako',
|
||||
|
||||
}
|
||||
|
||||
|
||||
_sql_constraints = [
|
||||
('name', 'unique (name)', _('The template name must be unique !'))
|
||||
]
|
||||
|
@ -312,11 +312,11 @@ This is useful for CRM leads for example"),
|
|||
def delete_action(self, cr, uid, ids, context):
|
||||
self.unlink_action(cr, uid, ids, context)
|
||||
return True
|
||||
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
self.unlink_action(cr, uid, ids, context)
|
||||
return super(email_template, self).unlink(cr, uid, ids, context)
|
||||
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
|
@ -328,7 +328,7 @@ This is useful for CRM leads for example"),
|
|||
new_name = new_name + '_' + random.choice('abcdefghij') + random.choice('lmnopqrs') + random.choice('tuvwzyz')
|
||||
default.update({'name':new_name})
|
||||
return super(email_template, self).copy(cr, uid, id, default, context)
|
||||
|
||||
|
||||
def build_expression(self, field_name, sub_field_name, null_value, template_language='mako'):
|
||||
"""
|
||||
Returns a template expression based on data provided
|
||||
|
@ -354,10 +354,10 @@ This is useful for CRM leads for example"),
|
|||
if sub_field_name:
|
||||
expression += "." + sub_field_name
|
||||
if null_value:
|
||||
expression += "|default: '''%s'''" % null_value
|
||||
expression += "|default: '''%s'''" % null_value
|
||||
expression += "}}"
|
||||
return expression
|
||||
|
||||
return expression
|
||||
|
||||
def onchange_model_object_field(self, cr, uid, ids, model_object_field, template_language, context=None):
|
||||
if not model_object_field:
|
||||
return {}
|
||||
|
@ -385,7 +385,7 @@ This is useful for CRM leads for example"),
|
|||
result['sub_model_object_field'] = False
|
||||
result['null_value'] = False
|
||||
return {'value':result}
|
||||
|
||||
|
||||
def onchange_sub_model_object_field(self, cr, uid, ids, model_object_field, sub_model_object_field, template_language, context=None):
|
||||
if not model_object_field or not sub_model_object_field:
|
||||
return {}
|
||||
|
@ -447,7 +447,7 @@ This is useful for CRM leads for example"),
|
|||
def _add_attachment(self, cursor, user, mailbox_id, name, data, filename, context=None):
|
||||
"""
|
||||
Add an attachment to a given mailbox entry.
|
||||
|
||||
|
||||
:param data: base64 encoded attachment data to store
|
||||
"""
|
||||
attachment_obj = self.pool.get('ir.attachment')
|
||||
|
@ -484,7 +484,7 @@ This is useful for CRM leads for example"),
|
|||
"""
|
||||
Generate report to be attached and attach it
|
||||
to the email, and add any directly attached files as well.
|
||||
|
||||
|
||||
@param cursor: Database Cursor
|
||||
@param user: ID of User
|
||||
@param template: Browse record of
|
||||
|
@ -492,8 +492,8 @@ This is useful for CRM leads for example"),
|
|||
@param record_id: ID of the target model
|
||||
for which this mail has
|
||||
to be generated
|
||||
@param mail: Browse record of email object
|
||||
@return: True
|
||||
@param mail: Browse record of email object
|
||||
@return: True
|
||||
"""
|
||||
if template.report_template:
|
||||
reportname = 'report.' + \
|
||||
|
@ -510,7 +510,7 @@ This is useful for CRM leads for example"),
|
|||
user,
|
||||
[record_id],
|
||||
data,
|
||||
context)
|
||||
context)
|
||||
fname = tools.ustr(get_value(cursor, user, record_id,
|
||||
template.file_name, template, context)
|
||||
or 'Report')
|
||||
|
@ -524,7 +524,7 @@ This is useful for CRM leads for example"),
|
|||
self._add_attachment(cursor, user, mail.id, attachment.name, attachment.datas, attachment.datas_fname, context)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def _generate_mailbox_item_from_template(self,
|
||||
cursor,
|
||||
user,
|
||||
|
@ -534,7 +534,7 @@ This is useful for CRM leads for example"),
|
|||
"""
|
||||
Generates an email from the template for
|
||||
record record_id of target object
|
||||
|
||||
|
||||
@param cursor: Database Cursor
|
||||
@param user: ID of User
|
||||
@param template: Browse record of
|
||||
|
@ -542,7 +542,7 @@ This is useful for CRM leads for example"),
|
|||
@param record_id: ID of the target model
|
||||
for which this mail has
|
||||
to be generated
|
||||
@return: ID of created object
|
||||
@return: ID of created object
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -571,9 +571,9 @@ This is useful for CRM leads for example"),
|
|||
ctx = context.copy()
|
||||
ctx.update({'lang':lang})
|
||||
template = self.browse(cursor, user, template.id, context=ctx)
|
||||
|
||||
# determine name of sender, either it is specified in email_id or we
|
||||
# use the account name
|
||||
|
||||
# determine name of sender, either it is specified in email_id or we
|
||||
# use the account name
|
||||
email_id = from_account['email_id'].strip()
|
||||
email_from = re.findall(r'([^ ,<@]+@[^> ,]+)', email_id)[0]
|
||||
if email_from != email_id:
|
||||
|
@ -663,7 +663,7 @@ This is useful for CRM leads for example"),
|
|||
context)
|
||||
|
||||
return mailbox_id
|
||||
|
||||
|
||||
|
||||
def generate_mail(self,
|
||||
cursor,
|
||||
|
@ -721,7 +721,7 @@ email_template()
|
|||
class email_template_preview(osv.osv_memory):
|
||||
_name = "email_template.preview"
|
||||
_description = "Email Template Preview"
|
||||
|
||||
|
||||
def _get_model_recs(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -738,6 +738,7 @@ class email_template_preview(osv.osv_memory):
|
|||
if default_id and default_id not in ref_obj_ids:
|
||||
ref_obj_ids.insert(0, default_id)
|
||||
return model_obj.name_get(cr, uid, ref_obj_ids, context)
|
||||
return []
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
if context is None:
|
||||
|
@ -762,7 +763,7 @@ class email_template_preview(osv.osv_memory):
|
|||
context['template_id'],
|
||||
['object_name'],
|
||||
context)['object_name']
|
||||
|
||||
|
||||
_columns = {
|
||||
'ref_template':fields.many2one(
|
||||
'email.template',
|
||||
|
@ -772,13 +773,13 @@ class email_template_preview(osv.osv_memory):
|
|||
'to':fields.char('To', size=250, readonly=True),
|
||||
'cc':fields.char('CC', size=250, readonly=True),
|
||||
'bcc':fields.char('BCC', size=250, readonly=True),
|
||||
'reply_to':fields.char('Reply-To',
|
||||
size=250,
|
||||
'reply_to':fields.char('Reply-To',
|
||||
size=250,
|
||||
help="The address recipients should reply to,"
|
||||
" if different from the From address."
|
||||
" Placeholders can be used here."),
|
||||
'message_id':fields.char('Message-ID',
|
||||
size=250,
|
||||
'message_id':fields.char('Message-ID',
|
||||
size=250,
|
||||
help="The Message-ID header value, if you need to"
|
||||
"specify it, for example to automatically recognize the replies later."
|
||||
" Placeholders can be used here."),
|
||||
|
@ -819,7 +820,7 @@ class email_template_preview(osv.osv_memory):
|
|||
vals['body_html'] = get_value(cr, uid, rel_model_ref, template.def_body_html, template, context)
|
||||
vals['report'] = get_value(cr, uid, rel_model_ref, template.file_name, template, context)
|
||||
return {'value':vals}
|
||||
|
||||
|
||||
email_template_preview()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -55,7 +55,8 @@ class event_event(osv.osv):
|
|||
'registration_ids': False,
|
||||
})
|
||||
return super(event_event, self).copy(cr, uid, id, default=default, context=context)
|
||||
def onchange_product(self, cr, uid, ids, product_id):
|
||||
|
||||
def onchange_product(self, cr, uid, ids, product_id=False):
|
||||
"""This function returns value of product's unit price based on product id.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
|
@ -132,7 +133,6 @@ class event_event(osv.osv):
|
|||
}
|
||||
return res
|
||||
|
||||
|
||||
def _get_register(self, cr, uid, ids, fields, args, context=None):
|
||||
"""Get Confirm or uncofirm register value.
|
||||
@param ids: List of Event registration type's id
|
||||
|
@ -165,7 +165,6 @@ class event_event(osv.osv):
|
|||
res[event.id]['register_current'] = number and number[0] or 0.0
|
||||
if 'register_prospect' in fields:
|
||||
res[event.id]['register_prospect'] = number and number[0] or 0.0
|
||||
|
||||
return res
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
|
@ -707,7 +706,7 @@ class event_registration_badge(osv.osv):
|
|||
_name = 'event.registration.badge'
|
||||
_description = __doc__
|
||||
_columns = {
|
||||
'registration_id': fields.many2one('event.registration', 'Registration', required=True),
|
||||
"registration_id": fields.many2one('event.registration', 'Registration', required=True),
|
||||
"title": fields.char('Title', size=128),
|
||||
"name": fields.char('Name', size=128, required=True),
|
||||
"address_id": fields.many2one('res.partner.address', 'Address'),
|
||||
|
|
|
@ -25,6 +25,8 @@ from osv import fields, osv
|
|||
import tools
|
||||
from tools.translate import _
|
||||
|
||||
import addons
|
||||
|
||||
class hr_employee_category(osv.osv):
|
||||
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
|
@ -180,9 +182,8 @@ class hr_employee(osv.osv):
|
|||
return {'value': {'work_email' : work_email}}
|
||||
|
||||
def _get_photo(self, cr, uid, context=None):
|
||||
return open(os.path.join(
|
||||
tools.config['addons_path'], 'hr/image', 'photo.png'),
|
||||
'rb') .read().encode('base64')
|
||||
res_path = addons.get_module_resource("hr","image/photo.png")
|
||||
return open(res_path,'rb').read().encode('base64')
|
||||
|
||||
_defaults = {
|
||||
'active': 1,
|
||||
|
|
|
@ -6718,6 +6718,7 @@
|
|||
<field name="ref_base_code_id" ref="vat_code_a49"/>
|
||||
<field name="ref_tax_code_id" ref="vat_code_a64"/>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="sequence">0</field>
|
||||
</record>
|
||||
<record id="vat_21_s" model="account.tax.template">
|
||||
<field name="chart_template_id" ref="l10nbe_chart_template"/>
|
||||
|
|
|
@ -1,166 +0,0 @@
|
|||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<record id="account_tax_testingtax0" model="account.tax">
|
||||
<field eval="1" name="sequence"/>
|
||||
<field eval="1.0" name="base_sign"/>
|
||||
<field eval=""true"" name="applicable_type"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field eval=""# price_unit
|
||||
# address : res.partner.address object or False
|
||||
# product : product.product object or False
|
||||
|
||||
result = price_unit * 0.10"" name="python_compute_inv"/>
|
||||
<field eval="1.0" name="ref_tax_sign"/>
|
||||
<field eval=""percent"" name="type"/>
|
||||
<field eval="1.0" name="ref_base_sign"/>
|
||||
<field eval=""1"" name="active"/>
|
||||
<field eval=""testing tax"" name="name"/>
|
||||
<field eval="0.069" name="amount"/>
|
||||
<field eval=""# price_unit
|
||||
# address : res.partner.address object or False
|
||||
# product : product.product object or None
|
||||
# partner : res.partner object or None
|
||||
|
||||
result = price_unit * 0.10"" name="python_compute"/>
|
||||
<field eval="1.0" name="tax_sign"/>
|
||||
</record>
|
||||
</data>
|
||||
<data noupdate="1">
|
||||
<record id="base.EUR" model="res.currency"/>
|
||||
</data>
|
||||
<data>
|
||||
<record id="product_template_0" model="product.template">
|
||||
<field name="list_price" eval="150.0"/>
|
||||
<field name="name" eval=""Membership 2006""/>
|
||||
<field name="categ_id" eval="7"/>
|
||||
<field name="type" eval=""service""/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="product_product_0" model="product.product">
|
||||
<field eval=""2007-03-31"" name="membership_date_to"/>
|
||||
<field eval=""1"" name="membership"/>
|
||||
<field eval=""m2006"" name="default_code"/>
|
||||
<field eval=""2006-01-01"" name="membership_date_from"/>
|
||||
<field eval=""1"" name="active"/>
|
||||
<field eval="150.0" name="price_margin"/>
|
||||
<field name="product_tmpl_id" ref="product_template_0"/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="product_template_1" model="product.template">
|
||||
<field name="list_price" eval="160.0"/>
|
||||
<field name="name" eval=""Membership 2007""/>
|
||||
<field name="categ_id" eval="7"/>
|
||||
<field name="type" eval=""service""/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="product_product_1" model="product.product">
|
||||
<field eval=""2008-03-31"" name="membership_date_to"/>
|
||||
<field eval=""1"" name="membership"/>
|
||||
<field eval=""m2007"" name="default_code"/>
|
||||
<field eval=""2007-01-01"" name="membership_date_from"/>
|
||||
<field eval=""1"" name="active"/>
|
||||
<field eval="160.0" name="price_margin"/>
|
||||
<field name="product_tmpl_id" ref="product_template_1"/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="product_template_2" model="product.template">
|
||||
<field name="list_price" eval="165.0"/>
|
||||
<field name="name" eval=""Membership 2008""/>
|
||||
<field name="categ_id" eval="7"/>
|
||||
<field name="type" eval=""service""/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="product_product_2" model="product.product">
|
||||
<field eval=""2009-03-31"" name="membership_date_to"/>
|
||||
<field eval=""1"" name="membership"/>
|
||||
<field eval=""m2008"" name="default_code"/>
|
||||
<field eval=""2008-01-01"" name="membership_date_from"/>
|
||||
<field eval=""1"" name="active"/>
|
||||
<field eval="165.0" name="price_margin"/>
|
||||
<field name="product_tmpl_id" ref="product_template_2"/>
|
||||
</record>
|
||||
</data>
|
||||
<data noupdate="1">
|
||||
<record id="account_invoice_0" model="account.invoice">
|
||||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||
<field name="account_id" ref="account.a_recv"/>
|
||||
<field name="address_contact_id" ref="base.res_partner_address_8"/>
|
||||
<field eval=""none"" name="reference_type"/>
|
||||
<field name="journal_id" ref="account.sales_journal"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="address_invoice_id" ref="base.res_partner_address_8"/>
|
||||
<field eval=""paid"" name="state"/>
|
||||
<field eval=""out_invoice"" name="type"/>
|
||||
<field eval=""2006-02-10"" name="date_invoice"/>
|
||||
</record>
|
||||
<record id="account_invoice_line_membership0" model="account.invoice.line">
|
||||
<field name="uos_id" ref="product.product_uom_unit"/>
|
||||
<field eval=""Membership 2006"" name="name"/>
|
||||
<field name="invoice_id" ref="account_invoice_0"/>
|
||||
<field eval="150.0" name="price_unit"/>
|
||||
<field eval="[(6,0,[ref('account_tax_testingtax0')])]" name="invoice_line_tax_id"/>
|
||||
<field name="product_id" ref="product_product_0"/>
|
||||
<field eval="1.0" name="quantity"/>
|
||||
<field name="account_id" ref="account.a_sale"/>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<data noupdate="1">
|
||||
<record id="account_invoice_1" model="account.invoice">
|
||||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||
<field name="account_id" ref="account.a_recv"/>
|
||||
<field name="address_contact_id" ref="base.res_partner_address_8"/>
|
||||
<field eval=""none"" name="reference_type"/>
|
||||
<field name="journal_id" ref="account.sales_journal"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="address_invoice_id" ref="base.res_partner_address_8"/>
|
||||
<field eval=""paid"" name="state"/>
|
||||
<field eval=""out_invoice"" name="type"/>
|
||||
<field eval=""2007-01-30"" name="date_invoice"/>
|
||||
</record>
|
||||
<record id="account_invoice_line_membership1" model="account.invoice.line">
|
||||
<field name="uos_id" ref="product.product_uom_unit"/>
|
||||
<field eval=""Membership 2007"" name="name"/>
|
||||
<field name="invoice_id" ref="account_invoice_1"/>
|
||||
<field eval="160.0" name="price_unit"/>
|
||||
<field eval="[(6,0,[ref('account_tax_testingtax0')])]" name="invoice_line_tax_id"/>
|
||||
<field name="product_id" ref="product_product_1"/>
|
||||
<field eval="1.0" name="quantity"/>
|
||||
<field name="account_id" ref="account.a_sale"/>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<data noupdate="1">
|
||||
<record id="account_invoice_2" model="account.invoice">
|
||||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||
<field name="account_id" ref="account.a_recv"/>
|
||||
<field name="address_contact_id" ref="base.res_partner_address_8"/>
|
||||
<field eval=""none"" name="reference_type"/>
|
||||
<field name="journal_id" ref="account.sales_journal"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="address_invoice_id" ref="base.res_partner_address_8"/>
|
||||
<field eval=""paid"" name="state"/>
|
||||
<field eval=""out_invoice"" name="type"/>
|
||||
<field eval=""2007-11-30"" name="date_invoice"/>
|
||||
</record>
|
||||
<record id="account_invoice_line_membership1" model="account.invoice.line">
|
||||
<field name="uos_id" ref="product.product_uom_unit"/>
|
||||
<field eval=""Membership 2007"" name="name"/>
|
||||
<field name="invoice_id" ref="account_invoice_2"/>
|
||||
<field eval="160.0" name="price_unit"/>
|
||||
<field eval="[(6,0,[ref('account_tax_testingtax0')])]" name="invoice_line_tax_id"/>
|
||||
<field name="product_id" ref="product_product_2"/>
|
||||
<field eval="1.0" name="quantity"/>
|
||||
<field name="account_id" ref="account.a_sale"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
|
@ -484,6 +484,7 @@ class Product(osv.osv):
|
|||
_defaults = {
|
||||
'membership': False,
|
||||
}
|
||||
|
||||
Product()
|
||||
|
||||
|
||||
|
@ -501,6 +502,7 @@ class Invoice(osv.osv):
|
|||
[l.id for l in invoice.invoice_line])])
|
||||
member_line_obj.write(cr, uid, mlines, {'date_cancel': today})
|
||||
return super(Invoice, self).action_cancel(cr, uid, ids)
|
||||
|
||||
Invoice()
|
||||
|
||||
class account_invoice_line(osv.osv):
|
||||
|
@ -573,4 +575,5 @@ class account_invoice_line(osv.osv):
|
|||
return result
|
||||
|
||||
account_invoice_line()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -23,7 +23,6 @@ from osv import fields, osv
|
|||
import tools
|
||||
import decimal_precision as dp
|
||||
|
||||
|
||||
STATE = [
|
||||
('none', 'Non Member'),
|
||||
('canceled', 'Cancelled Member'),
|
||||
|
@ -63,7 +62,7 @@ class report_membership(osv.osv):
|
|||
'membership_state': fields.selection(STATE, 'Current Membership State', readonly=True),
|
||||
'user_id': fields.many2one('res.users', 'Salesman', readonly=True),
|
||||
'company_id': fields.many2one('res.company', 'Company', readonly=True)
|
||||
}
|
||||
}
|
||||
|
||||
def init(self, cr):
|
||||
'''Create the view'''
|
||||
|
@ -127,20 +126,20 @@ class report_membership(osv.osv):
|
|||
ml.state,
|
||||
ml.id
|
||||
) AS foo
|
||||
GROUP BY
|
||||
year,
|
||||
month,
|
||||
date_from,
|
||||
date_to,
|
||||
partner_id,
|
||||
user_id,
|
||||
membership_id,
|
||||
company_id,
|
||||
membership_state,
|
||||
associate_member_id,
|
||||
GROUP BY
|
||||
year,
|
||||
month,
|
||||
date_from,
|
||||
date_to,
|
||||
partner_id,
|
||||
user_id,
|
||||
membership_id,
|
||||
company_id,
|
||||
membership_state,
|
||||
associate_member_id,
|
||||
membership_amount
|
||||
)""")
|
||||
|
||||
report_membership()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -19,11 +19,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
import tools
|
||||
import decimal_precision as dp
|
||||
|
||||
class membership_invoice(osv.osv_memory):
|
||||
|
@ -35,7 +31,7 @@ class membership_invoice(osv.osv_memory):
|
|||
'product_id': fields.many2one('product.product','Membership', required=True),
|
||||
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Sale Price'), required=True),
|
||||
}
|
||||
def onchange_product(self, cr, uid, ids, product_id):
|
||||
def onchange_product(self, cr, uid, ids, product_id=False):
|
||||
"""This function returns value of product's member price based on product id.
|
||||
"""
|
||||
if not product_id:
|
||||
|
@ -49,15 +45,14 @@ class membership_invoice(osv.osv_memory):
|
|||
datas = {}
|
||||
if not context:
|
||||
context = {}
|
||||
data = self.browse(cr, uid, ids)
|
||||
data = self.browse(cr, uid, ids, context=context)
|
||||
if data:
|
||||
data = data[0]
|
||||
datas = {
|
||||
'membership_product_id': data.product_id.id,
|
||||
'amount': data.member_price
|
||||
}
|
||||
invoice_ids = context.get('active_ids', [])
|
||||
invoice_list = partner_obj.create_membership_invoice(cr, uid, invoice_ids, datas=datas, context=context)
|
||||
invoice_list = partner_obj.create_membership_invoice(cr, uid, context.get('active_ids', []), datas=datas, context=context)
|
||||
|
||||
return {
|
||||
'domain': [('id', 'in', invoice_list)],
|
||||
|
@ -70,4 +65,4 @@ class membership_invoice(osv.osv_memory):
|
|||
|
||||
membership_invoice()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -26,6 +26,7 @@ from osv import osv, fields
|
|||
from tools.translate import _
|
||||
import netsvc
|
||||
import time
|
||||
import tools
|
||||
|
||||
|
||||
#----------------------------------------------------------
|
||||
|
@ -311,7 +312,7 @@ class mrp_bom(osv.osv):
|
|||
mult = (d + (m and 1.0 or 0.0))
|
||||
cycle = mult * wc_use.cycle_nbr
|
||||
result2.append({
|
||||
'name': bom.routing_id.name,
|
||||
'name': tools.ustr(wc_use.name) + ' - ' + tools.ustr(bom.product_id.name),
|
||||
'workcenter_id': wc.id,
|
||||
'sequence': level+(wc_use.sequence or 0),
|
||||
'cycle': cycle,
|
||||
|
|
|
@ -1,117 +0,0 @@
|
|||
# German translation for openobject-addons
|
||||
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-08-20 08:40+0000\n"
|
||||
"PO-Revision-Date: 2010-10-05 13:33+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-10-08 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: code:addons/partner_geo_assign/partner_geo_assign.py:0
|
||||
#, python-format
|
||||
msgid "Network error"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: help:res.partner,partner_weight:0
|
||||
msgid ""
|
||||
"Gives the probability to assign a lead to this partner. (0 means no "
|
||||
"assignation.)"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.module.module,description:partner_geo_assign.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
"This is the module used by OpenERP SA to redirect customers to his "
|
||||
"partners,\n"
|
||||
"based on geolocalization.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:res.partner,partner_weight:0
|
||||
msgid "Weight"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.module.module,shortdesc:partner_geo_assign.module_meta_information
|
||||
msgid "Partner Geo-Localisation"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:res.partner:0
|
||||
msgid "Geo Localization"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: code:addons/partner_geo_assign/partner_geo_assign.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not contact geolocation servers, please make sure you have a working "
|
||||
"internet connection (%s)"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:res.partner,date_localization:0
|
||||
msgid "Geo Localization Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:crm.lead:0
|
||||
msgid "Geo Assign"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:crm.lead,partner_latitude:0
|
||||
#: field:res.partner,partner_latitude:0
|
||||
msgid "Geo Latitude"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.model,name:partner_geo_assign.model_crm_lead
|
||||
msgid "crm.lead"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.model,name:partner_geo_assign.model_res_partner
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:crm.lead:0
|
||||
msgid "Geo Assignation"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:res.partner:0
|
||||
msgid "Geo Localize"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:crm.lead,partner_longitude:0
|
||||
#: field:res.partner,partner_longitude:0
|
||||
msgid "Geo Longitude"
|
||||
msgstr ""
|
|
@ -1,116 +0,0 @@
|
|||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * partner_geo_assign
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2010-08-20 08:40+0000\n"
|
||||
"PO-Revision-Date: 2010-08-30 12:19+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-09-29 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: code:addons/partner_geo_assign/partner_geo_assign.py:0
|
||||
#, python-format
|
||||
msgid "Network error"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: help:res.partner,partner_weight:0
|
||||
msgid ""
|
||||
"Gives the probability to assign a lead to this partner. (0 means no "
|
||||
"assignation.)"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.module.module,description:partner_geo_assign.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
"This is the module used by OpenERP SA to redirect customers to his "
|
||||
"partners,\n"
|
||||
"based on geolocalization.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:res.partner,partner_weight:0
|
||||
msgid "Weight"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.module.module,shortdesc:partner_geo_assign.module_meta_information
|
||||
msgid "Partner Geo-Localisation"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:res.partner:0
|
||||
msgid "Geo Localization"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: code:addons/partner_geo_assign/partner_geo_assign.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not contact geolocation servers, please make sure you have a working "
|
||||
"internet connection (%s)"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:res.partner,date_localization:0
|
||||
msgid "Geo Localization Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:crm.lead:0
|
||||
msgid "Geo Assign"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:crm.lead,partner_latitude:0
|
||||
#: field:res.partner,partner_latitude:0
|
||||
msgid "Geo Latitude"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.model,name:partner_geo_assign.model_crm_lead
|
||||
msgid "crm.lead"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.model,name:partner_geo_assign.model_res_partner
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:crm.lead:0
|
||||
msgid "Geo Assignation"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:res.partner:0
|
||||
msgid "Geo Localize"
|
||||
msgstr ""
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:crm.lead,partner_longitude:0
|
||||
#: field:res.partner,partner_longitude:0
|
||||
msgid "Geo Longitude"
|
||||
msgstr ""
|
|
@ -1,128 +0,0 @@
|
|||
# Italian translation for openobject-addons
|
||||
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-08-20 08:40+0000\n"
|
||||
"PO-Revision-Date: 2010-09-29 09:26+0000\n"
|
||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
||||
"Language-Team: Italian <it@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-09-30 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: code:addons/partner_geo_assign/partner_geo_assign.py:0
|
||||
#, python-format
|
||||
msgid "Network error"
|
||||
msgstr "Errore di rete"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "XML non valido per Visualizzare l'architettura!"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: help:res.partner,partner_weight:0
|
||||
msgid ""
|
||||
"Gives the probability to assign a lead to this partner. (0 means no "
|
||||
"assignation.)"
|
||||
msgstr ""
|
||||
"Fornisce la probabilità di assegnare una richesta a questo partner (0 "
|
||||
"significa nessuna assegnazione)."
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.module.module,description:partner_geo_assign.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
"This is the module used by OpenERP SA to redirect customers to his "
|
||||
"partners,\n"
|
||||
"based on geolocalization.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Questo è il modulo usato da OpenERP SA per indirizzare i venditori ai loro "
|
||||
"partners,\n"
|
||||
"basandosi sulla geolocalizzazione.\n"
|
||||
" "
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:res.partner,partner_weight:0
|
||||
msgid "Weight"
|
||||
msgstr "Peso"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.module.module,shortdesc:partner_geo_assign.module_meta_information
|
||||
msgid "Partner Geo-Localisation"
|
||||
msgstr "Geo-Localizzazione Partner"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:res.partner:0
|
||||
msgid "Geo Localization"
|
||||
msgstr "Geo-Localizzazione"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: code:addons/partner_geo_assign/partner_geo_assign.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not contact geolocation servers, please make sure you have a working "
|
||||
"internet connection (%s)"
|
||||
msgstr ""
|
||||
"Non è possibile contattare i server per la geo-localizzaziome, per favore "
|
||||
"assicurarsi di avere una connessione ad internet funzionante (%s)"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr ""
|
||||
"Il nome dell'oggetto deve iniziare per x_ e non deve contenere caratteri "
|
||||
"speciali!"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:res.partner,date_localization:0
|
||||
msgid "Geo Localization Date"
|
||||
msgstr "Data Geo-localizzazione"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:crm.lead:0
|
||||
msgid "Geo Assign"
|
||||
msgstr "Geo assegnamento"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:crm.lead,partner_latitude:0
|
||||
#: field:res.partner,partner_latitude:0
|
||||
msgid "Geo Latitude"
|
||||
msgstr "Geo Latitudine"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.model,name:partner_geo_assign.model_crm_lead
|
||||
msgid "crm.lead"
|
||||
msgstr "crm.lead"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: model:ir.model,name:partner_geo_assign.model_res_partner
|
||||
msgid "Partner"
|
||||
msgstr "Partner"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:crm.lead:0
|
||||
msgid "Geo Assignation"
|
||||
msgstr "Geo Assegnazione"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: view:res.partner:0
|
||||
msgid "Geo Localize"
|
||||
msgstr "Geo Localizzazione"
|
||||
|
||||
#. module: partner_geo_assign
|
||||
#: field:crm.lead,partner_longitude:0
|
||||
#: field:res.partner,partner_longitude:0
|
||||
msgid "Geo Longitude"
|
||||
msgstr "Geo Longitudine"
|
|
@ -19,7 +19,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import pos
|
||||
import point_of_sale
|
||||
import account_bank_statement
|
||||
import wizard
|
||||
import report
|
||||
|
|
|
@ -62,18 +62,18 @@ Main features :
|
|||
'wizard/pos_payment.xml',
|
||||
'wizard/pos_scan_product_view.xml',
|
||||
'wizard/pos_return_view.xml',
|
||||
'pos_report.xml',
|
||||
'pos_view.xml',
|
||||
'point_of_sale_report.xml',
|
||||
'point_of_sale_view.xml',
|
||||
'report/report_pos_order_view.xml',
|
||||
'report/report_cash_register_view.xml',
|
||||
'pos_sequence.xml',
|
||||
'pos_workflow.xml',
|
||||
'statement_view.xml',
|
||||
'statement_report.xml',
|
||||
'point_of_sale_sequence.xml',
|
||||
'point_of_sale_workflow.xml',
|
||||
'account_statement_view.xml',
|
||||
'account_statement_report.xml',
|
||||
],
|
||||
'demo_xml': ['pos_demo.xml','singer_statement_demo.xml'],
|
||||
'test':['test/pos_test.yml',
|
||||
'test/pos_report.yml',
|
||||
'demo_xml': ['point_of_sale_demo.xml','account_statement_demo.xml'],
|
||||
'test': ['test/point_of_sale_test.yml',
|
||||
'test/point_of_sale_report.yml',
|
||||
],
|
||||
'installable': True,
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2008 PC Solutions (<http://pcsol.be>). All Rights Reserved
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
|
@ -16,21 +16,19 @@
|
|||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv
|
||||
from osv import fields
|
||||
from osv import fields, osv
|
||||
|
||||
class account_journal(osv.osv):
|
||||
|
||||
_inherit = 'account.journal'
|
||||
_columns = {
|
||||
'auto_cash': fields.boolean('Automatic Opening', help="This field authorize the automatic creation of the cashbox"),
|
||||
'special_journal': fields.boolean('Special Journal', help="Will put all the orders in waiting status till being accepted"),
|
||||
'check_dtls': fields.boolean('Check Details', help="This field authorize Validation of Cashbox without checking ending details"),
|
||||
'journal_users': fields.many2many('res.users','pos_journal_users','journal_id','user_id','Users'),
|
||||
'journal_users': fields.many2many('res.users', 'pos_journal_users', 'journal_id', 'user_id', 'Users'),
|
||||
}
|
||||
_defaults = {
|
||||
'check_dtls': False,
|
||||
|
@ -39,7 +37,7 @@ class account_journal(osv.osv):
|
|||
account_journal()
|
||||
|
||||
class account_cash_statement(osv.osv):
|
||||
|
||||
|
||||
_inherit = 'account.bank.statement'
|
||||
|
||||
def _equal_balance(self, cr, uid, cash_id, context=None):
|
||||
|
@ -48,12 +46,11 @@ class account_cash_statement(osv.osv):
|
|||
statement = self.browse(cr, uid, cash_id, context=context)
|
||||
if not statement.journal_id.check_dtls:
|
||||
return True
|
||||
|
||||
if statement.journal_id.check_dtls and (statement.balance_end != statement.balance_end_cash):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
return True
|
||||
|
||||
def _user_allow(self, cr, uid, statement_id, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -62,12 +59,10 @@ class account_cash_statement(osv.osv):
|
|||
statement = self.browse(cr, uid, statement_id, context=context)
|
||||
for user in statement.journal_id.journal_users:
|
||||
uids.append(user.id)
|
||||
|
||||
if uid in uids:
|
||||
res = True
|
||||
|
||||
return res
|
||||
|
||||
|
||||
def _get_cash_open_box_lines(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -81,7 +76,7 @@ class account_cash_statement(osv.osv):
|
|||
res.append(dct)
|
||||
res.sort()
|
||||
return res
|
||||
|
||||
|
||||
def _get_default_cash_close_box_lines(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -95,7 +90,7 @@ class account_cash_statement(osv.osv):
|
|||
res.append(dct)
|
||||
res.sort()
|
||||
return res
|
||||
|
||||
|
||||
account_cash_statement()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="account.cash_journal" model="account.journal">
|
||||
<field eval="[(6, 0, [ref('base.user_root')])]" name="journal_users"/>
|
||||
</record>
|
||||
|
||||
<record id="account_invoice_invoicefrompospos0" model="account.invoice">
|
||||
<field name="origin">POS/019</field>
|
||||
<field name="reference">POS/019</field>
|
|
@ -88,7 +88,7 @@
|
|||
- name: statement
|
||||
date: "2010-10-13"
|
||||
type: customer
|
||||
account_id: account_account_sales0
|
||||
account_id: account_pos_account_sales
|
||||
amount: 100
|
||||
partner_id: base.res_partner_agrolait
|
||||
period_id: account.period_5
|
|
@ -3,42 +3,42 @@
|
|||
|
||||
-
|
||||
I configure all details for the Customer, Salesman and Product, Account.
|
||||
-
|
||||
-
|
||||
I create View Account Type.
|
||||
-
|
||||
-
|
||||
!record {model: account.account.type, id: account_account_type_view0}:
|
||||
close_method: none
|
||||
code: View
|
||||
name: View
|
||||
sign: 1
|
||||
-
|
||||
-
|
||||
I create Income Account Type.
|
||||
-
|
||||
-
|
||||
!record {model: account.account.type, id: account_account_type_income0}:
|
||||
close_method: unreconciled
|
||||
code: Income
|
||||
name: Income
|
||||
sign: 1
|
||||
-
|
||||
-
|
||||
I create Expense Account Type.
|
||||
-
|
||||
-
|
||||
!record {model: account.account.type, id: account_account_type_expense0}:
|
||||
close_method: unreconciled
|
||||
code: Expense
|
||||
name: Expense
|
||||
sign: 1
|
||||
-
|
||||
-
|
||||
I create Cash Account Type.
|
||||
-
|
||||
-
|
||||
!record {model: account.account.type, id: account_account_type_cash0}:
|
||||
close_method: balance
|
||||
code: Cash
|
||||
name: Cash
|
||||
sign: 1
|
||||
-
|
||||
-
|
||||
I create Minimal Chart Account.
|
||||
-
|
||||
!record {model: account.account, id: account_account_minimalchart0}:
|
||||
-
|
||||
!record {model: account.account, id: account_pos_account_minimalchart}:
|
||||
code: '0'
|
||||
company_id: base.main_company
|
||||
currency_mode: current
|
||||
|
@ -47,188 +47,188 @@
|
|||
parent_right: 12
|
||||
type: view
|
||||
user_type: account_account_type_view0
|
||||
-
|
||||
-
|
||||
I create Payable Account.
|
||||
-
|
||||
!record {model: account.account, id: account_account_payable1}:
|
||||
-
|
||||
!record {model: account.account, id: account_pos_account_payable}:
|
||||
code: AP
|
||||
company_id: base.main_company
|
||||
currency_mode: current
|
||||
name: Payable
|
||||
parent_id: account_account_minimalchart0
|
||||
parent_id: account_pos_account_minimalchart
|
||||
parent_left: 2
|
||||
parent_right: 3
|
||||
reconcile: true
|
||||
type: payable
|
||||
user_type: account_account_type_expense0
|
||||
-
|
||||
-
|
||||
I create Receivable Account.
|
||||
-
|
||||
!record {model: account.account, id: account_account_receivable0}:
|
||||
-
|
||||
!record {model: account.account, id: account_pos_account_receivable}:
|
||||
code: AR
|
||||
company_id: base.main_company
|
||||
currency_mode: current
|
||||
name: Receivable
|
||||
parent_id: account_account_minimalchart0
|
||||
parent_id: account_pos_account_minimalchart
|
||||
parent_left: 4
|
||||
parent_right: 5
|
||||
reconcile: true
|
||||
type: receivable
|
||||
user_type: account_account_type_income0
|
||||
-
|
||||
-
|
||||
I create Cash Account.
|
||||
-
|
||||
!record {model: account.account, id: account_account_cash0}:
|
||||
-
|
||||
!record {model: account.account, id: account_pos_account_cash}:
|
||||
code: C
|
||||
company_id: base.main_company
|
||||
currency_mode: current
|
||||
name: Cash
|
||||
parent_id: account_account_minimalchart0
|
||||
parent_id: account_pos_account_minimalchart
|
||||
parent_left: 6
|
||||
parent_right: 7
|
||||
type: other
|
||||
user_type: account_account_type_cash0
|
||||
-
|
||||
-
|
||||
I create Purchases Account.
|
||||
-
|
||||
!record {model: account.account, id: account_account_purchases0}:
|
||||
-
|
||||
!record {model: account.account, id: account_pos_account_purchases}:
|
||||
code: P
|
||||
company_id: base.main_company
|
||||
currency_mode: current
|
||||
name: Purchases
|
||||
parent_id: account_account_minimalchart0
|
||||
parent_id: account_pos_account_minimalchart
|
||||
parent_left: 8
|
||||
parent_right: 9
|
||||
type: other
|
||||
user_type: account_account_type_expense0
|
||||
-
|
||||
-
|
||||
I create Sales Account.
|
||||
-
|
||||
!record {model: account.account, id: account_account_sales0}:
|
||||
-
|
||||
!record {model: account.account, id: account_pos_account_sales}:
|
||||
code: Sale
|
||||
company_id: base.main_company
|
||||
currency_mode: current
|
||||
name: Sales
|
||||
parent_id: account_account_minimalchart0
|
||||
parent_id: account_pos_account_minimalchart
|
||||
parent_left: 10
|
||||
parent_right: 11
|
||||
type: other
|
||||
user_type: account_account_type_income0
|
||||
-
|
||||
-
|
||||
I create Purchase Journal.
|
||||
-
|
||||
!record {model: account.journal, id: account_journal_purchasejournal0}:
|
||||
-
|
||||
!record {model: account.journal, id: account_pos_account_journal_purchasejournal}:
|
||||
code: PUJ
|
||||
company_id: base.main_company
|
||||
default_credit_account_id: account_account_purchases0
|
||||
default_debit_account_id: account_account_purchases0
|
||||
default_credit_account_id: account_pos_account_purchases
|
||||
default_debit_account_id: account_pos_account_purchases
|
||||
name: Purchase Journal
|
||||
sequence_id: account.sequence_purchase_journal
|
||||
type: purchase
|
||||
view_id: account.account_journal_view
|
||||
-
|
||||
-
|
||||
I create Sale Journal.
|
||||
-
|
||||
!record {model: account.journal, id: account_journal_salejournal0}:
|
||||
-
|
||||
!record {model: account.journal, id: account_pos_account_journal_salejournal}:
|
||||
code: SAJ
|
||||
company_id: base.main_company
|
||||
default_credit_account_id: account_account_sales0
|
||||
default_debit_account_id: account_account_sales0
|
||||
default_credit_account_id: account_pos_account_sales
|
||||
default_debit_account_id: account_pos_account_sales
|
||||
name: Sale Journal
|
||||
sequence_id: account.sequence_sale_journal
|
||||
type: sale
|
||||
view_id: account.account_journal_view
|
||||
-
|
||||
-
|
||||
I create Bank Journal.
|
||||
-
|
||||
!record {model: account.journal, id: account_journal_bankjournal0}:
|
||||
-
|
||||
!record {model: account.journal, id: account_pos_account_journal_bankjournal}:
|
||||
code: BNK
|
||||
company_id: base.main_company
|
||||
default_credit_account_id: account_account_cash0
|
||||
default_debit_account_id: account_account_cash0
|
||||
default_credit_account_id: account_pos_account_cash
|
||||
default_debit_account_id: account_pos_account_cash
|
||||
name: Bank Journal
|
||||
sequence_id: account.sequence_journal
|
||||
type: cash
|
||||
view_id: account.account_journal_bank_view
|
||||
-
|
||||
-
|
||||
I create property for account payable.
|
||||
-
|
||||
-
|
||||
!record {model: ir.property, id: ir_property_propertyaccountexpensecateg0}:
|
||||
company_id: base.main_company
|
||||
fields_id: account.field_res_partner_property_account_payable
|
||||
name: property_account_expense_categ
|
||||
value_reference: account.account,5
|
||||
-
|
||||
-
|
||||
I create property for account receivable.
|
||||
-
|
||||
-
|
||||
!record {model: ir.property, id: ir_property_propertyaccountincomecateg0}:
|
||||
company_id: base.main_company
|
||||
fields_id: account.field_res_partner_property_account_receivable
|
||||
name: property_account_income_categ
|
||||
value_reference: account.account,6
|
||||
-
|
||||
-
|
||||
I create Partner category Customers.
|
||||
-
|
||||
-
|
||||
!record {model: res.partner.category, id: res_partner_category_customers0}:
|
||||
name: Customers
|
||||
-
|
||||
I create partner
|
||||
-
|
||||
-
|
||||
!record {model: res.partner, id: res_partner_cleartrail0}:
|
||||
category_id:
|
||||
- res_partner_category_customers0
|
||||
name: Cleartrail
|
||||
-
|
||||
-
|
||||
I create partner address.
|
||||
-
|
||||
-
|
||||
!record {model: res.partner.address, id: res_partner_address_1}:
|
||||
partner_id: res_partner_cleartrail0
|
||||
street: onam plaza, 14 B palasia A B Road
|
||||
type: contact
|
||||
-
|
||||
-
|
||||
I create partner invoice address.
|
||||
-
|
||||
-
|
||||
!record {model: res.partner.address, id: res_partner_address_2}:
|
||||
partner_id: res_partner_cleartrail0
|
||||
type: invoice
|
||||
-
|
||||
-
|
||||
I create partner delivery address.
|
||||
-
|
||||
-
|
||||
!record {model: res.partner.address, id: res_partner_address_3}:
|
||||
partner_id: res_partner_cleartrail0
|
||||
street: sangam house 15 B palasia, A B Road
|
||||
type: delivery
|
||||
-
|
||||
I create product category.
|
||||
-
|
||||
I create product category.
|
||||
-
|
||||
!record {model: product.category, id: product_category_allproductssellable0}:
|
||||
name: Mobile Products Sellable
|
||||
-
|
||||
I create partner.
|
||||
-
|
||||
-
|
||||
!record {model: res.partner, id: res_partner_microlinktechnologies0}:
|
||||
address:
|
||||
- street: Kailash Vaibhav, Parksite
|
||||
name: Micro Link Technologies
|
||||
property_account_payable: account_account_payable1
|
||||
property_account_receivable: account_account_receivable0
|
||||
supplier: true
|
||||
property_account_payable: account_pos_account_payable
|
||||
property_account_receivable: account_pos_account_receivable
|
||||
supplier: true
|
||||
-
|
||||
I create partner address .
|
||||
-
|
||||
-
|
||||
!record {model: res.partner.address, id: res_partner_address_0}:
|
||||
country_id: base.in
|
||||
partner_id: res_partner_microlinktechnologies0
|
||||
street: Ash House, Ash Road
|
||||
title: base.res_partner_title_miss
|
||||
-
|
||||
-
|
||||
I create product category .
|
||||
-
|
||||
-
|
||||
!record {model: product.category, id: product_category_services0}:
|
||||
name: Mobile Services
|
||||
-
|
||||
-
|
||||
I create product template .
|
||||
-
|
||||
-
|
||||
!record {model: product.template, id: product_template_lgviewtysmart0}:
|
||||
categ_id: product_category_allproductssellable0
|
||||
cost_method: standard
|
||||
|
@ -241,9 +241,9 @@
|
|||
type: product
|
||||
uom_id: product.product_uom_unit
|
||||
uom_po_id: product.product_uom_unit
|
||||
-
|
||||
-
|
||||
I create product LG Viewty Smart.
|
||||
-
|
||||
-
|
||||
!record {model: product.product, id: product_product_lgviewtysmart0}:
|
||||
categ_id: product_category_allproductssellable0
|
||||
cost_method: standard
|
||||
|
@ -251,22 +251,22 @@
|
|||
mes_type: fixed
|
||||
name: LG Viewty Smart
|
||||
procure_method: make_to_order
|
||||
property_account_expense: account_account_payable1
|
||||
property_account_income: account_account_receivable0
|
||||
property_account_expense: account_pos_account_payable
|
||||
property_account_income: account_pos_account_receivable
|
||||
seller_delay: '1'
|
||||
standard_price: 160.0
|
||||
supply_method: produce
|
||||
type: product
|
||||
uom_id: product.product_uom_unit
|
||||
uom_po_id: product.product_uom_unit
|
||||
-
|
||||
I create product category .
|
||||
-
|
||||
I create product category .
|
||||
-
|
||||
!record {model: product.category, id: product_category_computer0}:
|
||||
name: Computer
|
||||
-
|
||||
-
|
||||
I create product HP Pavilion Desktop PCs
|
||||
-
|
||||
-
|
||||
!record {model: product.product, id: product_product_hppaviliondesktoppcs0}:
|
||||
categ_id: product_category_computer0
|
||||
cost_method: standard
|
||||
|
@ -282,9 +282,9 @@
|
|||
type: product
|
||||
uom_id: product.product_uom_unit
|
||||
uom_po_id: product.product_uom_unit
|
||||
property_account_expense: account_account_payable1
|
||||
property_account_income: account_account_receivable0
|
||||
-
|
||||
property_account_expense: account_pos_account_payable
|
||||
property_account_income: account_pos_account_receivable
|
||||
-
|
||||
I create New Order by adding the details of Salesman and "Product" as LG Viewty Smart Quantity as 10.
|
||||
-
|
||||
!record {model: pos.order, id: pos_order_pos0}:
|
|
@ -19,40 +19,30 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import netsvc
|
||||
from osv import osv,fields
|
||||
from tools.translate import _
|
||||
import time
|
||||
from osv import osv
|
||||
|
||||
class all_closed_cashbox_of_the_day(osv.osv_memory):
|
||||
_name = 'all.closed.cashbox.of.the.day'
|
||||
_description = 'All closed cashbox of the day'
|
||||
|
||||
_columns = {
|
||||
|
||||
}
|
||||
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
|
||||
"""
|
||||
To get the date and print the report
|
||||
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return : retrun report
|
||||
"""
|
||||
datas = {'ids' : context.get('active_ids',[])}
|
||||
datas = {'ids': context.get('active_ids', [])}
|
||||
res = {}
|
||||
datas['form'] = res
|
||||
|
||||
return {
|
||||
'type' : 'ir.actions.report.xml',
|
||||
'report_name':'all.closed.cashbox.of.the.day',
|
||||
'datas' : datas,
|
||||
'type': 'ir.actions.report.xml',
|
||||
'report_name': 'all.closed.cashbox.of.the.day',
|
||||
'datas': datas,
|
||||
}
|
||||
|
||||
all_closed_cashbox_of_the_day()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -32,10 +32,10 @@ class add_product(osv.osv_memory):
|
|||
'quantity': fields.float('Quantity', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'quantity': lambda *a: 1,
|
||||
'quantity': 1,
|
||||
}
|
||||
|
||||
def select_product(self, cr, uid, ids, context):
|
||||
def select_product(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
To get the product and quantity and add in order .
|
||||
@param self: The object pointer.
|
||||
|
@ -44,13 +44,14 @@ class add_product(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return : Return the add product form again for adding more product
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
this = self.browse(cr, uid, ids[0], context=context)
|
||||
record_id = context and context.get('active_id', False)
|
||||
assert record_id, _('Active ID is not found')
|
||||
if record_id:
|
||||
order_obj = self.pool.get('pos.order')
|
||||
order_obj.add_product(cr, uid, record_id, this.product_id.id, this.quantity, context=context)
|
||||
|
||||
return {
|
||||
'name': _('Add Product'),
|
||||
'view_type': 'form',
|
||||
|
@ -61,34 +62,36 @@ class add_product(osv.osv_memory):
|
|||
'views': False,
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
def close_action(self, cr, uid, ids, context):
|
||||
|
||||
def close_action(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
To get the product and Make the payment .
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return : Return the Make Payment
|
||||
@return : Return the Make Payment
|
||||
"""
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
record_id = context and context.get('active_id', False)
|
||||
order_obj= self.pool.get('pos.order')
|
||||
obj=order_obj.browse(cr, uid, record_id)
|
||||
order_obj.write(cr, uid, [record_id], {'state':'done'})
|
||||
obj = order_obj.browse(cr, uid, record_id, context=context)
|
||||
order_obj.write(cr, uid, [record_id], {'state': 'done'}, context=context)
|
||||
if obj.amount_total != obj.amount_paid:
|
||||
return {
|
||||
'name': _('Make Payment'),
|
||||
'context ':context and context.get('active_id', False),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'pos.make.payment',
|
||||
'view_id': False,
|
||||
'target': 'new',
|
||||
'views': False,
|
||||
'type': 'ir.actions.act_window',
|
||||
|
||||
'name': _('Make Payment'),
|
||||
'context': context and context.get('active_id', False),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'pos.make.payment',
|
||||
'view_id': False,
|
||||
'target': 'new',
|
||||
'views': False,
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
return {}
|
||||
return {}
|
||||
|
||||
add_product()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -19,30 +19,31 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv, fields
|
||||
import time
|
||||
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
|
||||
|
||||
def get_journal(self, cr, uid, context):
|
||||
def get_journal(self, cr, uid, context=None):
|
||||
"""
|
||||
Make the selection list of Cash Journal .
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return :Return the list of journal
|
||||
Make the selection list of Cash Journal .
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param context: A standard dictionary
|
||||
@return :Return the list of journal
|
||||
"""
|
||||
|
||||
obj = self.pool.get('account.journal')
|
||||
journal_obj = self.pool.get('account.journal')
|
||||
statement_obj = self.pool.get('account.bank.statement')
|
||||
cr.execute("SELECT DISTINCT journal_id from pos_journal_users where user_id=%s order by journal_id", (uid,))
|
||||
cr.execute("SELECT DISTINCT journal_id FROM pos_journal_users WHERE user_id = %s ORDER BY journal_id", (uid, ))
|
||||
j_ids = map(lambda x1: x1[0], cr.fetchall())
|
||||
ids = obj.search(cr, uid, [('type', '=', 'cash'), ('id', 'in', j_ids)])
|
||||
obj_ids= statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', 'in', ids)])
|
||||
res_obj = obj.read(cr, uid, ids, ['journal_id'], context)
|
||||
res_obj = [(r1['id'])for r1 in res_obj]
|
||||
res = statement_obj.read(cr, uid, obj_ids, ['journal_id'], context)
|
||||
ids = journal_obj.search(cr, uid, [('type', '=', 'cash'), ('id', 'in', j_ids)], context=context)
|
||||
obj_ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', 'in', ids)], context=context)
|
||||
res_obj = journal_obj.read(cr, uid, ids, ['journal_id'], context=context)
|
||||
res_obj = [(r1['id']) for r1 in res_obj]
|
||||
res = statement_obj.read(cr, uid, obj_ids, ['journal_id'], context=context)
|
||||
res = [(r['journal_id']) for r in res]
|
||||
res.insert(0, ('', ''))
|
||||
return res
|
||||
|
@ -51,10 +52,7 @@ class pos_box_entries(osv.osv_memory):
|
|||
_name = 'pos.box.entries'
|
||||
_description = 'Pos Box Entries'
|
||||
|
||||
|
||||
|
||||
def _get_income_product(self, cr, uid, context):
|
||||
|
||||
def _get_income_product(self, cr, uid, context=None):
|
||||
"""
|
||||
Make the selection list of purchasing products.
|
||||
@param self: The object pointer.
|
||||
|
@ -63,10 +61,10 @@ class pos_box_entries(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return :Return of operation of product
|
||||
"""
|
||||
obj = self.pool.get('product.product')
|
||||
ids = obj.search(cr, uid, [('income_pdt', '=', True)])
|
||||
res = obj.read(cr, uid, ids, ['id', 'name'], context)
|
||||
res = [(r['id'],r['name']) for r in res]
|
||||
product_obj = self.pool.get('product.product')
|
||||
ids = product_obj.search(cr, uid, [('income_pdt', '=', True)], context=context)
|
||||
res = product_obj.read(cr, uid, ids, ['id', 'name'], context=context)
|
||||
res = [(r['id'], r['name']) for r in res]
|
||||
res.insert(0, ('', ''))
|
||||
|
||||
return res
|
||||
|
@ -80,11 +78,11 @@ class pos_box_entries(osv.osv_memory):
|
|||
'ref': fields.char('Ref', size=32),
|
||||
}
|
||||
_defaults = {
|
||||
'journal_id': lambda *a: 1,
|
||||
'product_id': lambda *a: 1,
|
||||
'journal_id': 1,
|
||||
'product_id': 1,
|
||||
}
|
||||
|
||||
def get_in(self, cr, uid, ids, context):
|
||||
def get_in(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Create the entry of statement in journal.
|
||||
@param self: The object pointer.
|
||||
|
@ -94,14 +92,13 @@ class pos_box_entries(osv.osv_memory):
|
|||
@return :Return of operation of product
|
||||
"""
|
||||
statement_obj = self.pool.get('account.bank.statement')
|
||||
product_obj = self.pool.get('product.template')
|
||||
res_obj = self.pool.get('res.users')
|
||||
product_obj = self.pool.get('product.product')
|
||||
bank_statement = self.pool.get('account.bank.statement.line')
|
||||
for data in self.read(cr, uid, ids):
|
||||
args = {}
|
||||
curr_company = res_obj.browse(cr, uid, uid).company_id.id
|
||||
statement_id = statement_obj.search(cr, uid, [('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid), ('state', '=', 'open')])
|
||||
for data in self.read(cr, uid, ids, context=context):
|
||||
vals = {}
|
||||
curr_company = res_obj.browse(cr, uid, uid, context=context).company_id.id
|
||||
statement_id = statement_obj.search(cr, uid, [('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid), ('state', '=', 'open')], context=context)
|
||||
if not statement_id:
|
||||
raise osv.except_osv(_('Error !'), _('You have to open at least one cashbox'))
|
||||
|
||||
|
@ -116,22 +113,20 @@ class pos_box_entries(osv.osv_memory):
|
|||
'journal_id': data['journal_id'],
|
||||
'company_id': curr_company,
|
||||
'user_id': uid,
|
||||
})
|
||||
}, context=context)
|
||||
|
||||
args['statement_id'] = statement_id
|
||||
args['journal_id'] = data['journal_id']
|
||||
vals['statement_id'] = statement_id
|
||||
valss['journal_id'] = data['journal_id']
|
||||
if acc_id:
|
||||
args['account_id'] = acc_id.id
|
||||
args['amount'] = data['amount'] or 0.0
|
||||
args['ref'] = "%s" % (data['ref'] or '')
|
||||
args['name'] = "%s: %s " % (product_obj.browse(cr, uid, data['product_id']).name, data['name'].decode('utf8'))
|
||||
address_u = res_obj.browse(cr, uid, uid).address_id
|
||||
vals['account_id'] = acc_id.id
|
||||
vals['amount'] = data['amount'] or 0.0
|
||||
vals['ref'] = "%s" % (data['ref'] or '')
|
||||
vals['name'] = "%s: %s " % (product_obj.browse(cr, uid, data['product_id'], context=context).name, data['name'].decode('utf8'))
|
||||
address_u = res_obj.browse(cr, uid, uid, context=context).address_id
|
||||
if address_u:
|
||||
partner_id = address_u.partner_id and address_u.partner_id.id or None
|
||||
args['partner_id'] = partner_id
|
||||
bank_statement.create(cr, uid, args)
|
||||
|
||||
return {}
|
||||
vals['partner_id'] = address_u.partner_id and address_u.partner_id.id or None
|
||||
bank_statement.create(cr, uid, vals, context=context)
|
||||
return {}
|
||||
|
||||
pos_box_entries()
|
||||
|
||||
|
|
|
@ -19,20 +19,19 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv, fields
|
||||
import time
|
||||
from tools.translate import _
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
import pos_box_entries
|
||||
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
import pos_box_entries
|
||||
|
||||
class pos_box_out(osv.osv_memory):
|
||||
_name = 'pos.box.out'
|
||||
_description = 'Pos Box Out'
|
||||
|
||||
def _get_expense_product(self, cr, uid, context):
|
||||
|
||||
def _get_expense_product(self, cr, uid, context=None):
|
||||
"""
|
||||
Make the selection list of expense product.
|
||||
@param self: The object pointer.
|
||||
|
@ -41,10 +40,10 @@ class pos_box_out(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return :Return of operation of product
|
||||
"""
|
||||
obj = self.pool.get('product.product')
|
||||
company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id
|
||||
ids = obj.search(cr, uid, ['&', ('expense_pdt', '=', True), '|', ('company_id', '=', company_id), ('company_id', '=', None)])
|
||||
res = obj.read(cr, uid, ids, ['id', 'name'], context)
|
||||
product_obj = self.pool.get('product.product')
|
||||
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
|
||||
ids = product_obj.search(cr, uid, ['&', ('expense_pdt', '=', True), '|', ('company_id', '=', company_id), ('company_id', '=', None)], context=context)
|
||||
res = product_obj.read(cr, uid, ids, ['id', 'name'], context=context)
|
||||
res = [(r['id'], r['name']) for r in res]
|
||||
res.insert(0, ('', ''))
|
||||
return res
|
||||
|
@ -57,10 +56,10 @@ class pos_box_out(osv.osv_memory):
|
|||
'ref': fields.char('Ref', size=32),
|
||||
}
|
||||
_defaults = {
|
||||
'journal_id': lambda *a: 1,
|
||||
'product_id': lambda *a: 1,
|
||||
'journal_id': 1,
|
||||
'product_id': 1,
|
||||
}
|
||||
def get_out(self, cr, uid, ids, context):
|
||||
def get_out(self, cr, uid, ids, context=None):
|
||||
|
||||
"""
|
||||
Create the entries in the CashBox .
|
||||
|
@ -70,34 +69,34 @@ class pos_box_out(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return :Return of operation of product
|
||||
"""
|
||||
args = {}
|
||||
vals = {}
|
||||
statement_obj = self.pool.get('account.bank.statement')
|
||||
statement_line_obj = self.pool.get('account.bank.statement.line')
|
||||
product_obj = self.pool.get('product.template')
|
||||
productp_obj = self.pool.get('product.product')
|
||||
res_obj = self.pool.get('res.users')
|
||||
for data in self.read(cr, uid, ids):
|
||||
curr_company = res_obj.browse(cr, uid, uid).company_id.id
|
||||
statement_id = statement_obj.search(cr, uid, [('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid), ('state', '=', 'open')])
|
||||
for data in self.read(cr, uid, ids, context=context):
|
||||
curr_company = res_obj.browse(cr, uid, uid, context=context).company_id.id
|
||||
statement_id = statement_obj.search(cr, uid, [('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid), ('state', '=', 'open')], context=context)
|
||||
monday = (datetime.today() + relativedelta(weekday=0)).strftime('%Y-%m-%d')
|
||||
sunday = (datetime.today() + relativedelta(weekday=6)).strftime('%Y-%m-%d')
|
||||
done_statmt = statement_obj.search(cr, uid, [('date', '>=', monday+' 00:00:00'), ('date', '<=', sunday+' 23:59:59'), ('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid)])
|
||||
stat_done = statement_obj.browse(cr, uid, done_statmt)
|
||||
address_u = res_obj.browse(cr, uid, uid).address_id
|
||||
done_statmt = statement_obj.search(cr, uid, [('date', '>=', monday+' 00:00:00'), ('date', '<=', sunday+' 23:59:59'), ('journal_id', '=', data['journal_id']), ('company_id', '=', curr_company), ('user_id', '=', uid)], context=context)
|
||||
stat_done = statement_obj.browse(cr, uid, done_statmt, context=context)
|
||||
address_u = res_obj.browse(cr, uid, uid, context=context).address_id
|
||||
am = 0.0
|
||||
|
||||
amount_check = productp_obj.browse(cr, uid, data['product_id']).am_out or False
|
||||
amount_check = productp_obj.browse(cr, uid, data['product_id'], context=context).am_out or False
|
||||
for st in stat_done:
|
||||
for s in st.line_ids:
|
||||
if address_u and s.partner_id == address_u.partner_id and s.am_out:
|
||||
am += s.amount
|
||||
if (-data['amount'] or 0.0) + am < -(res_obj.browse(cr, uid, uid).company_id.max_diff or 0.0) and amount_check:
|
||||
if (-data['amount'] or 0.0) + am < -(res_obj.browse(cr, uid, uid, context=context).company_id.max_diff or 0.0) and amount_check:
|
||||
val = (res_obj.browse(cr, uid, uid).company_id.max_diff or 0.0) + am
|
||||
raise osv.except_osv(_('Error !'), _('The maximum value you can still withdraw is exceeded. \n Remaining value is equal to %d ')%(val))
|
||||
|
||||
acc_id = product_obj.browse(cr, uid, data['product_id']).property_account_income
|
||||
acc_id = product_obj.browse(cr, uid, data['product_id'], context=context).property_account_income
|
||||
if not acc_id:
|
||||
raise osv.except_osv(_('Error !'), _('please check that account is set to %s')%(product_obj.browse(cr, uid, data['product_id']).name))
|
||||
raise osv.except_osv(_('Error !'), _('please check that account is set to %s')%(product_obj.browse(cr, uid, data['product_id'], context=context).name))
|
||||
if not statement_id:
|
||||
raise osv.except_osv(_('Error !'), _('You have to open at least one cashbox'))
|
||||
if statement_id:
|
||||
|
@ -108,24 +107,23 @@ class pos_box_out(osv.osv_memory):
|
|||
'journal_id': data['journal_id'],
|
||||
'company_id': curr_company,
|
||||
'user_id': uid,
|
||||
})
|
||||
args['statement_id'] = statement_id
|
||||
args['journal_id'] = data['journal_id']
|
||||
}, context=context)
|
||||
vals['statement_id'] = statement_id
|
||||
vals['journal_id'] = data['journal_id']
|
||||
if acc_id:
|
||||
args['account_id'] = acc_id.id
|
||||
vals['account_id'] = acc_id.id
|
||||
amount = data['amount'] or 0.0
|
||||
if data['amount'] > 0:
|
||||
amount = -data['amount']
|
||||
args['amount'] = amount
|
||||
if productp_obj.browse(cr, uid, data['product_id']).am_out:
|
||||
args['am_out'] = True
|
||||
args['ref'] = data['ref'] or ''
|
||||
args['name'] = "%s: %s " % (product_obj.browse(cr, uid, data['product_id']).name, data['name'].decode('utf8'))
|
||||
address_u = res_obj.browse(cr, uid, uid).address_id
|
||||
vals['amount'] = amount
|
||||
if productp_obj.browse(cr, uid, data['product_id'], context=context).am_out:
|
||||
vals['am_out'] = True
|
||||
vals['ref'] = data['ref'] or ''
|
||||
vals['name'] = "%s: %s " % (product_obj.browse(cr, uid, data['product_id'], context=context).name, data['name'].decode('utf8'))
|
||||
address_u = res_obj.browse(cr, uid, uid, context=context).address_id
|
||||
if address_u:
|
||||
partner_id = address_u.partner_id and address_u.partner_id.id or None
|
||||
args['partner_id'] = partner_id
|
||||
statement_line_id = statement_line_obj.create(cr, uid, args)
|
||||
vals['partner_id'] = address_u.partner_id and address_u.partner_id.id or None
|
||||
statement_line_id = statement_line_obj.create(cr, uid, vals, context=context)
|
||||
return {}
|
||||
|
||||
pos_box_out()
|
||||
|
|
|
@ -26,7 +26,7 @@ class pos_close_statement(osv.osv_memory):
|
|||
_name = 'pos.close.statement'
|
||||
_description = 'Close Statements'
|
||||
|
||||
def close_statement(self, cr, uid, ids, context):
|
||||
def close_statement(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Close the statements
|
||||
@param self: The object pointer.
|
||||
|
@ -39,34 +39,33 @@ class pos_close_statement(osv.osv_memory):
|
|||
statement_obj = self.pool.get('account.bank.statement')
|
||||
journal_obj = self.pool.get('account.journal')
|
||||
cr.execute("SELECT DISTINCT journal_id FROM pos_journal_users "
|
||||
"WHERE user_id=%s ORDER BY journal_id", (uid,))
|
||||
"WHERE user_id=%s ORDER BY journal_id", (uid, ))
|
||||
j_ids = map(lambda x1: x1[0], cr.fetchall())
|
||||
journal_ids = journal_obj.search(cr, uid, [('auto_cash', '=', True), ('type', '=', 'cash'), ('id', 'in', j_ids)])
|
||||
ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', 'in', journal_ids)])
|
||||
for journal in journal_obj.browse(cr, uid, journal_ids):
|
||||
journal_ids = journal_obj.search(cr, uid, [('auto_cash', '=', True), ('type', '=', 'cash'), ('id', 'in', j_ids)], context=context)
|
||||
ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', 'in', journal_ids)], context=context)
|
||||
for journal in journal_obj.browse(cr, uid, journal_ids, context=context):
|
||||
if not ids:
|
||||
raise osv.except_osv(_('Message'), _('Cash registers are already closed.'))
|
||||
else:
|
||||
if not journal.check_dtls:
|
||||
statement_obj.button_confirm_cash(cr, uid, ids, context)
|
||||
statement_obj.button_confirm_cash(cr, uid, ids, context=context)
|
||||
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
id2 = data_obj._get_id(cr, uid, 'account', 'view_bank_statement_tree')
|
||||
id3 = data_obj._get_id(cr, uid, 'account', 'view_bank_statement_form2')
|
||||
result = data_obj._get_id(cr, uid, 'point_of_sale', 'view_pos_confirm_cash_statement_filter')
|
||||
id2 = mod_obj._get_id(cr, uid, 'account', 'view_bank_statement_tree')
|
||||
id3 = mod_obj._get_id(cr, uid, 'account', 'view_bank_statement_form2')
|
||||
result = mod_obj._get_id(cr, uid, 'point_of_sale', 'view_pos_confirm_cash_statement_filter')
|
||||
search_id = mod_obj.read(cr, uid, result, ['res_id'], context=context)
|
||||
if id2:
|
||||
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
|
||||
id2 = mod_obj.browse(cr, uid, id2, context=context).res_id
|
||||
if id3:
|
||||
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
|
||||
id3 = mod_obj.browse(cr, uid, id3, context=context).res_id
|
||||
return {
|
||||
'domain': "[('id','in'," + str(ids) + ")]",
|
||||
'domain': "[('id', 'in', " + str(ids) + ")]",
|
||||
'name': 'Close Statements',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'view_mode': 'tree, form',
|
||||
'search_view_id': search_id['res_id'],
|
||||
'res_model': 'account.bank.statement',
|
||||
'views': [(id2, 'tree'),(id3, 'form')],
|
||||
'views': [(id2, 'tree'), (id3, 'form')],
|
||||
'type': 'ir.actions.act_window'
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ class pos_confirm(osv.osv_memory):
|
|||
_name = 'pos.confirm'
|
||||
_description = 'Point of Sale Confirm'
|
||||
|
||||
def action_confirm(self, cr, uid, ids, context):
|
||||
def action_confirm(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Confirm the order and close the sales.
|
||||
@param self: The object pointer.
|
||||
|
@ -37,7 +37,8 @@ class pos_confirm(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return :Blank dictionary
|
||||
"""
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
record_id = context and context.get('active_id', False)
|
||||
if record_id:
|
||||
if isinstance(record_id, (int, long)):
|
||||
|
@ -47,7 +48,7 @@ class pos_confirm(osv.osv_memory):
|
|||
|
||||
for order_id in order_obj.browse(cr, uid, record_id, context=context):
|
||||
if order_id.state == 'paid':
|
||||
order_obj.write(cr, uid, [order_id.id], {'journal_entry': True})
|
||||
order_obj.write(cr, uid, [order_id.id], {'journal_entry': True}, context=context)
|
||||
order_obj.create_account_move(cr, uid, [order_id.id], context=context)
|
||||
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
|
|
|
@ -19,9 +19,10 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
import time
|
||||
|
||||
|
||||
class pos_details(osv.osv_memory):
|
||||
|
@ -33,11 +34,11 @@ class pos_details(osv.osv_memory):
|
|||
'date_end': fields.date('Date End', required=True)
|
||||
}
|
||||
_defaults = {
|
||||
'date_start': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'date_end': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'date_start': time.strftime('%Y-%m-%d'),
|
||||
'date_end': time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
|
||||
def print_report(self, cr, uid, ids, context={}):
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
To get the date and print the report
|
||||
@param self: The object pointer.
|
||||
|
@ -46,12 +47,12 @@ class pos_details(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return : retrun report
|
||||
"""
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
datas = {'ids': context.get('active_ids', [])}
|
||||
res = self.read(cr, uid, ids, ['date_start', 'date_end'], context)
|
||||
res = self.read(cr, uid, ids, ['date_start', 'date_end'], context=context)
|
||||
res = res and res[0] or {}
|
||||
datas['form'] = res
|
||||
|
||||
return {
|
||||
'type': 'ir.actions.report.xml',
|
||||
'report_name': 'pos.details',
|
||||
|
|
|
@ -32,7 +32,7 @@ class pos_discount(osv.osv_memory):
|
|||
'discount_notes': fields.char('Discount Notes', size= 128, required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'discount': lambda *a: 5,
|
||||
'discount': 5,
|
||||
}
|
||||
|
||||
|
||||
|
@ -47,11 +47,11 @@ class pos_discount(osv.osv_memory):
|
|||
"""
|
||||
res = super(pos_discount, self).view_init(cr, uid, fields_list, context=context)
|
||||
record_id = context and context.get('active_id', False) or False
|
||||
order = self.pool.get('pos.order').browse(cr, uid, record_id)
|
||||
order = self.pool.get('pos.order').browse(cr, uid, record_id, context=context)
|
||||
if not order.lines:
|
||||
raise osv.except_osv('Error!','No Order Lines ')
|
||||
True
|
||||
def apply_discount(self, cr, uid, ids, context):
|
||||
def apply_discount(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
To give the discount of product and check the.
|
||||
|
||||
|
@ -61,16 +61,16 @@ class pos_discount(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return : nothing
|
||||
"""
|
||||
order_ref = self.pool.get('pos.order')
|
||||
order_line_ref = self.pool.get('pos.order.line')
|
||||
if context is None:
|
||||
context = {}
|
||||
this = self.browse(cr, uid, ids[0], context=context)
|
||||
record_id = context and context.get('active_id', False)
|
||||
if isinstance(record_id, (int, long)):
|
||||
record_id = [record_id]
|
||||
|
||||
order_ref = self.pool.get('pos.order')
|
||||
order_line_ref = self.pool.get('pos.order.line')
|
||||
|
||||
for order in order_ref.browse(cr, uid, record_id, context=context):
|
||||
|
||||
for line in order.lines:
|
||||
company_discount = order.company_id.company_discount
|
||||
applied_discount = this.discount
|
||||
|
@ -81,10 +81,7 @@ class pos_discount(osv.osv_memory):
|
|||
notice = 'Minimum Discount'
|
||||
else:
|
||||
notice = this.discount_notes
|
||||
|
||||
res_new = {
|
||||
}
|
||||
|
||||
res_new = {}
|
||||
if this.discount <= company_discount:
|
||||
res_new = {
|
||||
'discount': this.discount,
|
||||
|
|
|
@ -28,10 +28,10 @@ class pos_get_sale(osv.osv_memory):
|
|||
_description = 'Get From Sale'
|
||||
|
||||
_columns = {
|
||||
'picking_id': fields.many2one('stock.picking', 'Sale Order', domain=[('state', 'in', ('assigned', 'confirmed')), ('type', '=', 'out')], context="{'contact_display':'partner'}", required=True),
|
||||
'picking_id': fields.many2one('stock.picking', 'Sale Order', domain=[('state', 'in', ('assigned', 'confirmed')), ('type', '=', 'out')], context="{'contact_display': 'partner'}", required=True),
|
||||
}
|
||||
|
||||
def sale_complete(self, cr, uid, ids, context):
|
||||
def sale_complete(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Select the picking order and add the in Point of sale order
|
||||
@param self: The object pointer.
|
||||
|
@ -40,29 +40,29 @@ class pos_get_sale(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return : nothing
|
||||
"""
|
||||
this = self.browse(cr, uid, ids[0], context=context)
|
||||
record_id = context and context.get('active_id', False)
|
||||
|
||||
proxy_pos = self.pool.get('pos.order')
|
||||
proxy_pick = self.pool.get('stock.picking')
|
||||
proxy_order_line = self.pool.get('pos.order.line')
|
||||
if context is None:
|
||||
context = {}
|
||||
this = self.browse(cr, uid, ids[0], context=context)
|
||||
record_id = context and context.get('active_id', False)
|
||||
|
||||
if record_id:
|
||||
order = proxy_pos.browse(cr, uid, record_id, context)
|
||||
|
||||
order = proxy_pos.browse(cr, uid, record_id, context=context)
|
||||
if order.state in ('paid', 'invoiced'):
|
||||
raise osv.except_osv(_('UserError '), _("You can't modify this order. It has already been paid"))
|
||||
|
||||
for pick in proxy_pick.browse(cr, uid, [this.picking_id.id], context):
|
||||
for pick in proxy_pick.browse(cr, uid, [this.picking_id.id], context=context):
|
||||
proxy_pos.write(cr, uid, record_id, {
|
||||
'picking_id': this.picking_id.id,
|
||||
'partner_id': pick.address_id and pick.address_id.partner_id.id
|
||||
})
|
||||
}, context=context)
|
||||
|
||||
order = proxy_pick.write(cr, uid, [this.picking_id.id], {
|
||||
'invoice_state': 'none',
|
||||
'pos_order': record_id
|
||||
})
|
||||
}, context=context)
|
||||
|
||||
for line in pick.move_lines:
|
||||
proxy_order_line.create(cr, uid, {
|
||||
|
@ -72,8 +72,7 @@ class pos_get_sale(osv.osv_memory):
|
|||
'product_id': line.product_id.id,
|
||||
'price_unit': line.sale_line_id.price_unit,
|
||||
'discount': line.sale_line_id.discount,
|
||||
})
|
||||
|
||||
}, context=context)
|
||||
return {}
|
||||
|
||||
pos_get_sale()
|
||||
|
|
|
@ -26,7 +26,7 @@ class pos_open_statement(osv.osv_memory):
|
|||
_name = 'pos.open.statement'
|
||||
_description = 'Open Statements'
|
||||
|
||||
def open_statement(self, cr, uid, ids, context):
|
||||
def open_statement(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Open the statements
|
||||
@param self: The object pointer.
|
||||
|
@ -37,20 +37,20 @@ class pos_open_statement(osv.osv_memory):
|
|||
"""
|
||||
data = {}
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id
|
||||
statement_obj = self.pool.get('account.bank.statement')
|
||||
sequence_obj = self.pool.get('ir.sequence')
|
||||
journal_obj = self.pool.get('account.journal')
|
||||
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
|
||||
cr.execute("SELECT DISTINCT journal_id FROM pos_journal_users "
|
||||
"WHERE user_id=%s ORDER BY journal_id"% (uid,))
|
||||
"WHERE user_id = %s ORDER BY journal_id"% (uid, ))
|
||||
j_ids = map(lambda x1: x1[0], cr.fetchall())
|
||||
journal_ids = journal_obj.search(cr, uid, [('auto_cash', '=', True), ('type', '=', 'cash'), ('id', 'in', j_ids)])
|
||||
journal_ids = journal_obj.search(cr, uid, [('auto_cash', '=', True), ('type', '=', 'cash'), ('id', 'in', j_ids)], context=context)
|
||||
|
||||
for journal in journal_obj.browse(cr, uid, journal_ids):
|
||||
ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)])
|
||||
for journal in journal_obj.browse(cr, uid, journal_ids, context=context):
|
||||
ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)], context=context)
|
||||
if len(ids):
|
||||
raise osv.except_osv(_('Message'), _('You can not open a Cashbox for "%s".\nPlease close its related cash register.' %(journal.name)))
|
||||
|
||||
|
||||
number = ''
|
||||
if journal.sequence_id:
|
||||
number = sequence_obj.get_id(cr, uid, journal.sequence_id.id)
|
||||
|
@ -62,27 +62,26 @@ class pos_open_statement(osv.osv_memory):
|
|||
'user_id': uid,
|
||||
'state': 'draft',
|
||||
'name': number })
|
||||
statement_id = statement_obj.create(cr, uid, data)
|
||||
statement_id = statement_obj.create(cr, uid, data, context=context)
|
||||
statement_obj.button_open(cr, uid, [statement_id], context)
|
||||
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
id2 = data_obj._get_id(cr, uid, 'account', 'view_bank_statement_tree')
|
||||
id3 = data_obj._get_id(cr, uid, 'account', 'view_bank_statement_form2')
|
||||
result = data_obj._get_id(cr, uid, 'point_of_sale', 'view_pos_open_cash_statement_filter')
|
||||
id2 = mod_obj._get_id(cr, uid, 'account', 'view_bank_statement_tree')
|
||||
id3 = mod_obj._get_id(cr, uid, 'account', 'view_bank_statement_form2')
|
||||
result = mod_obj._get_id(cr, uid, 'point_of_sale', 'view_pos_open_cash_statement_filter')
|
||||
search_id = mod_obj.read(cr, uid, result, ['res_id'], context=context)
|
||||
if id2:
|
||||
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
|
||||
id2 = mod_obj.browse(cr, uid, id2, context=context).res_id
|
||||
if id3:
|
||||
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
|
||||
id3 = mod_obj.browse(cr, uid, id3, context=context).res_id
|
||||
|
||||
return {
|
||||
'domain': "[('state','=','open'),('user_id','=',"+ str(uid) +")]",
|
||||
'domain': "[('state', '=', 'open'),('user_id', '=', "+ str(uid) +")]",
|
||||
'name': 'Open Statement',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'view_mode': 'tree, form',
|
||||
'search_view_id': search_id['res_id'],
|
||||
'res_model': 'account.bank.statement',
|
||||
'views': [(id2, 'tree'),(id3, 'form')],
|
||||
'views': [(id2, 'tree'), (id3, 'form')],
|
||||
'context': {'search_default_open': 1},
|
||||
'type': 'ir.actions.act_window'
|
||||
}
|
||||
|
|
|
@ -19,16 +19,18 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv,fields
|
||||
import time
|
||||
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
import pos_box_entries
|
||||
import time
|
||||
|
||||
|
||||
class pos_make_payment(osv.osv_memory):
|
||||
_name = 'pos.make.payment'
|
||||
_description = 'Point of Sale Payment'
|
||||
|
||||
def default_get(self, cr, uid, fields, context):
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
"""
|
||||
To get default values for the object.
|
||||
@param self: The object pointer.
|
||||
|
@ -38,40 +40,40 @@ class pos_make_payment(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return: A dictionary which of fields with values.
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
j_obj = self.pool.get('account.journal')
|
||||
order_obj=self.pool.get('pos.order')
|
||||
res = super(pos_make_payment, self).default_get(cr, uid, fields, context=context)
|
||||
active_id = context and context.get('active_id',False)
|
||||
active_id = context and context.get('active_id', False)
|
||||
if active_id:
|
||||
j_obj = self.pool.get('account.journal')
|
||||
cr.execute("SELECT DISTINCT journal_id FROM pos_journal_users "
|
||||
"WHERE user_id=%d ORDER BY journal_id"% (uid,))
|
||||
"WHERE user_id = %d ORDER BY journal_id"% (uid, ))
|
||||
j_ids = map(lambda x1: x1[0], cr.fetchall())
|
||||
journal = j_obj.search(cr, uid, [('type', '=', 'cash'), ('id', 'in', j_ids)])
|
||||
|
||||
journal = j_obj.search(cr, uid, [('type', '=', 'cash'), ('id', 'in', j_ids)], context=context)
|
||||
journal = journal and journal[0] or False
|
||||
|
||||
order_obj=self.pool.get('pos.order')
|
||||
order = order_obj.browse(cr, uid, active_id, context)
|
||||
order = order_obj.browse(cr, uid, active_id, context=context)
|
||||
#get amount to pay
|
||||
amount = order.amount_total - order.amount_paid
|
||||
if amount <= 0.0:
|
||||
context.update({'flag': True})
|
||||
order_obj.action_paid(cr, uid, [active_id], context)
|
||||
elif order.amount_paid > 0.0:
|
||||
order_obj.write(cr, uid, [active_id], {'state': 'advance'})
|
||||
order_obj.write(cr, uid, [active_id], {'state': 'advance'}, context=context)
|
||||
invoice_wanted_checked = False
|
||||
|
||||
current_date = time.strftime('%Y-%m-%d')
|
||||
|
||||
if 'journal' in fields:
|
||||
res.update({'journal':journal})
|
||||
res.update({'journal': journal})
|
||||
if 'amount' in fields:
|
||||
res.update({'amount':amount})
|
||||
res.update({'amount': amount})
|
||||
if 'invoice_wanted' in fields:
|
||||
res.update({'invoice_wanted':invoice_wanted_checked})
|
||||
res.update({'invoice_wanted': invoice_wanted_checked})
|
||||
if 'payment_date' in fields:
|
||||
res.update({'payment_date':current_date})
|
||||
res.update({'payment_date': current_date})
|
||||
if 'payment_name' in fields:
|
||||
res.update({'payment_name':'Payment'})
|
||||
res.update({'payment_name': 'Payment'})
|
||||
if 'partner_id' in fields:
|
||||
res.update({'partner_id': order.partner_id.id or False})
|
||||
if 'pricelist_id' in fields:
|
||||
|
@ -82,7 +84,7 @@ class pos_make_payment(osv.osv_memory):
|
|||
super(pos_make_payment, self).view_init(cr, uid, fields_list, context=context)
|
||||
active_id = context and context.get('active_id', False) or False
|
||||
if active_id:
|
||||
order = self.pool.get('pos.order').browse(cr, uid, active_id)
|
||||
order = self.pool.get('pos.order').browse(cr, uid, active_id, context=context)
|
||||
if not order.lines:
|
||||
raise osv.except_osv(_('Error!'),_('No order lines defined for this sale '))
|
||||
return True
|
||||
|
@ -99,15 +101,15 @@ class pos_make_payment(osv.osv_memory):
|
|||
@return: New arch of view.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
result = super(pos_make_payment, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
|
||||
if context is None:
|
||||
context = {}
|
||||
active_model = context.get('active_model')
|
||||
active_id = context.get('active_id', False)
|
||||
if not active_id or (active_model and active_model != 'pos.order'):
|
||||
return result
|
||||
|
||||
order = self.pool.get('pos.order').browse(cr, uid, active_id)
|
||||
order = self.pool.get('pos.order').browse(cr, uid, active_id, context=context)
|
||||
if order.amount_total == order.amount_paid:
|
||||
result['arch'] = """ <form string="Make Payment" colspan="4">
|
||||
<group col="2" colspan="2">
|
||||
|
@ -132,26 +134,25 @@ class pos_make_payment(osv.osv_memory):
|
|||
amount = amount - product.list_price
|
||||
return {'value': {'amount': amount}}
|
||||
|
||||
def check(self, cr, uid, ids, context):
|
||||
|
||||
def check(self, cr, uid, ids, context=None):
|
||||
"""Check the order:
|
||||
if the order is not paid: continue payment,
|
||||
if the order is paid print invoice (if wanted) or ticket.
|
||||
"""
|
||||
active_id = context and context.get('active_id',False)
|
||||
order_obj = self.pool.get('pos.order')
|
||||
active_id = context and context.get('active_id', False)
|
||||
order = order_obj.browse(cr, uid, active_id, context)
|
||||
amount = order.amount_total - order.amount_paid
|
||||
data = self.read(cr, uid, ids)[0]
|
||||
data = self.read(cr, uid, ids, context=context)[0]
|
||||
invoice_wanted = data['invoice_wanted']
|
||||
is_accompte = data['is_acc']
|
||||
# Todo need to check ...
|
||||
if is_accompte:
|
||||
line_id, price = order_obj.add_product(cr, uid, order.id, data['product_id'], -1.0, context)
|
||||
amount = order.amount_total - order.amount_paid - price
|
||||
|
||||
|
||||
if amount != 0.0:
|
||||
order_obj.write(cr, uid, [active_id], {'invoice_wanted': invoice_wanted, 'partner_id': data['partner_id']})
|
||||
order_obj.write(cr, uid, [active_id], {'invoice_wanted': invoice_wanted, 'partner_id': data['partner_id']}, context=context)
|
||||
order_obj.add_payment(cr, uid, active_id, data, context=context)
|
||||
|
||||
if order_obj.test_paid(cr, uid, [active_id]):
|
||||
|
@ -159,33 +160,33 @@ class pos_make_payment(osv.osv_memory):
|
|||
order_obj.action_invoice(cr, uid, [active_id], context)
|
||||
order_obj.create_picking(cr, uid, [active_id], context)
|
||||
if context.get('return'):
|
||||
order_obj.write(cr, uid, [active_id],{'state':'done'})
|
||||
order_obj.write(cr, uid, [active_id], {'state':'done'}, context=context)
|
||||
else:
|
||||
order_obj.write(cr, uid, [active_id],{'state':'paid'})
|
||||
order_obj.write(cr, uid, [active_id],{'state':'paid'}, context=context)
|
||||
return self.create_invoice(cr, uid, ids, context)
|
||||
else:
|
||||
context.update({'flag': True})
|
||||
order_obj.action_paid(cr, uid, [active_id], context)
|
||||
if context.get('return'):
|
||||
order_obj.write(cr, uid, [active_id],{'state':'done'})
|
||||
order_obj.write(cr, uid, [active_id], {'state':'done'}, context=context)
|
||||
else:
|
||||
order_obj.write(cr, uid, [active_id],{'state':'paid'})
|
||||
order_obj.write(cr, uid, [active_id], {'state':'paid'}, context=context)
|
||||
return self.print_report(cr, uid, ids, context)
|
||||
|
||||
if order.amount_paid > 0.0:
|
||||
context.update({'flag': True})
|
||||
# Todo need to check
|
||||
order_obj.action_paid(cr, uid, [active_id], context)
|
||||
order_obj.write(cr, uid, [active_id],{'state': 'advance'})
|
||||
order_obj.write(cr, uid, [active_id], {'state': 'advance'}, context=context)
|
||||
return self.print_report(cr, uid, ids, context)
|
||||
return {}
|
||||
|
||||
|
||||
def create_invoice(self, cr, uid, ids, context):
|
||||
def create_invoice(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Create a invoice
|
||||
"""
|
||||
active_ids = [context and context.get('active_id',False)]
|
||||
active_ids = [context and context.get('active_id', False)]
|
||||
datas = {'ids': active_ids}
|
||||
datas['form'] = {}
|
||||
return {
|
||||
|
@ -204,12 +205,11 @@ class pos_make_payment(osv.osv_memory):
|
|||
@return : retrun report
|
||||
"""
|
||||
if not context:
|
||||
context={}
|
||||
active_id=context.get('active_id',[])
|
||||
context = {}
|
||||
active_id = context.get('active_id', [])
|
||||
datas = {'ids' : [active_id]}
|
||||
res = {}
|
||||
datas['form'] = res
|
||||
|
||||
return {
|
||||
'type': 'ir.actions.report.xml',
|
||||
'report_name': 'pos.receipt',
|
||||
|
@ -217,14 +217,14 @@ class pos_make_payment(osv.osv_memory):
|
|||
}
|
||||
|
||||
_columns = {
|
||||
'journal':fields.selection(pos_box_entries.get_journal, "Cash Register",required=True),
|
||||
'journal': fields.selection(pos_box_entries.get_journal, "Cash Register", required=True),
|
||||
'product_id': fields.many2one('product.product', "Advance"),
|
||||
'amount':fields.float('Amount', digits=(16,2) ,required= True),
|
||||
'amount': fields.float('Amount', digits=(16,2) ,required= True),
|
||||
'payment_name': fields.char('Payment name', size=32, required=True),
|
||||
'payment_date': fields.date('Payment date', required=True),
|
||||
'is_acc': fields.boolean('Advance'),
|
||||
'invoice_wanted': fields.boolean('Invoice'),
|
||||
'num_sale':fields.char('Num.File', size=32),
|
||||
'num_sale': fields.char('Num.File', size=32),
|
||||
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist'),
|
||||
'partner_id': fields.many2one('res.partner', 'Customer'),
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
|
@ -15,20 +15,18 @@
|
|||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
from osv import osv
|
||||
from tools.translate import _
|
||||
|
||||
|
||||
class pos_payment_report(osv.osv_memory):
|
||||
_name = 'pos.payment.report'
|
||||
_description = 'Payment Report'
|
||||
|
||||
def print_report(self, cr, uid, ids, context={}):
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
To get the date and print the report
|
||||
@param self: The object pointer.
|
||||
|
@ -37,7 +35,8 @@ class pos_payment_report(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return : retrun report
|
||||
"""
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
datas = {'ids': context.get('active_ids', [])}
|
||||
return {
|
||||
'type': 'ir.actions.report.xml',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
|
@ -15,20 +15,21 @@
|
|||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
|
||||
from osv import osv
|
||||
from osv import fields
|
||||
import time
|
||||
|
||||
|
||||
class pos_payment_report_date(osv.osv_memory):
|
||||
_name = 'pos.payment.report.date'
|
||||
_description = 'POS Payment Report according to date'
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
To get the date and print the report
|
||||
@param self: The object pointer.
|
||||
|
@ -37,8 +38,10 @@ class pos_payment_report_date(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return : retrun report
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
datas = {'ids': context.get('active_ids', [])}
|
||||
res = self.read(cr, uid, ids, ['date_start', 'date_end', 'user_id'])
|
||||
res = self.read(cr, uid, ids, ['date_start', 'date_end', 'user_id'], context=context)
|
||||
res = res and res[0] or {}
|
||||
datas['form'] = res
|
||||
|
||||
|
@ -54,8 +57,8 @@ class pos_payment_report_date(osv.osv_memory):
|
|||
'user_id': fields.many2many('res.users', 'res_user_sale', 'user_id', 'sale_id', 'Salesman')
|
||||
}
|
||||
_defaults = {
|
||||
'date_start': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'date_end': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'date_start': time.strftime('%Y-%m-%d'),
|
||||
'date_end': time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
|
||||
pos_payment_report_date()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
|
@ -15,19 +15,16 @@
|
|||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv
|
||||
from osv import fields
|
||||
|
||||
from osv import osv, fields
|
||||
|
||||
class pos_payment_report_user(osv.osv_memory):
|
||||
_name = 'pos.payment.report.user'
|
||||
_description = 'Sales lines by Users'
|
||||
def print_report(self, cr, uid, ids, context=None):
|
||||
|
||||
"""
|
||||
To get the date and print the report
|
||||
@param self: The object pointer.
|
||||
|
@ -36,11 +33,12 @@ class pos_payment_report_user(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return : retrun report
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
datas = {'ids': context.get('active_ids', [])}
|
||||
res = self.read(cr, uid, ids, ['user_id'])
|
||||
res = self.read(cr, uid, ids, ['user_id'], context=context)
|
||||
res = res and res[0] or {}
|
||||
datas['form'] = res
|
||||
|
||||
return {
|
||||
'type': 'ir.actions.report.xml',
|
||||
'report_name': 'pos.payment.report.user',
|
||||
|
|
|
@ -483,7 +483,10 @@ class task(osv.osv):
|
|||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
users_obj = self.pool.get('res.users')
|
||||
obj_tm = users_obj.browse(cr, uid, uid, context).company_id.project_time_mode_id
|
||||
|
||||
# read uom as admin to avoid access rights issues, e.g. for portal/share users,
|
||||
# this should be safe (no context passed to avoid side-effects)
|
||||
obj_tm = users_obj.browse(cr, 1, uid).company_id.project_time_mode_id
|
||||
tm = obj_tm and obj_tm.name or 'Hours'
|
||||
|
||||
res = super(task, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu=submenu)
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
<label string="ID: %%(task_id)s"/>
|
||||
<label string="Status: %%(state)s"/>
|
||||
<label string="Date Start: %%(date_start)s"/>
|
||||
<label string="Date Stop: %%(date_stop)s"/>
|
||||
<label string="Date Stop: %%(date)s"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Tasks Stages" groups="base.group_extended">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="view_order_form_inherit">
|
||||
<field name="name">sale.order.form.inherit</field>
|
||||
|
@ -18,9 +18,9 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="sale.view_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="product_id" position="after">
|
||||
<field name="analytics_id" domain="[('plan_id','<>',False)]"/>
|
||||
</field>
|
||||
<xpath expr="/form/notebook/page/field[@name='order_line']/form/notebook/page/field[@name='product_id']" position="after">
|
||||
<field name="analytics_id" domain="[('plan_id','<>',False)]" groups="analytic.group_analytic_accounting"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
@ -31,10 +31,10 @@
|
|||
<field name="inherit_id" ref="sale.view_order_line_form2"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="product_id" position="after">
|
||||
<field name="analytics_id" domain="[('plan_id','<>',False)]"/>
|
||||
<field name="analytics_id" domain="[('plan_id','<>',False)]" groups="analytic.group_analytic_accounting"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -290,7 +290,7 @@ class share_create(osv.osv_memory):
|
|||
user_obj = self.pool.get('res.users')
|
||||
result_obj = self.pool.get('share.wizard.result.line')
|
||||
share_root_url = wizard_data.share_root_url
|
||||
format_url = '%(login)' in share_root_url and '%(password)' in share_root_url
|
||||
format_url = '%(login)s' in share_root_url and '%(password)s' in share_root_url
|
||||
existing_passwd_str = _('*usual password*')
|
||||
if wizard_data.user_type == 'new':
|
||||
for email in wizard_data.new_users.split('\n'):
|
||||
|
@ -430,7 +430,7 @@ class share_create(osv.osv_memory):
|
|||
else:
|
||||
body += _("This additional data has been automatically added to your current access.\n")
|
||||
body += _("You may use your existing login and password to view it. As a reminder, your login is %s.\n") % result_line.login
|
||||
|
||||
|
||||
if not tools.email_send(
|
||||
user.user_email,
|
||||
email_to,
|
||||
|
|
|
@ -90,7 +90,7 @@
|
|||
- 'action_id' (id of action)
|
||||
- 'domain' (string expression for full domain to apply as sent to server,
|
||||
with dynamic data like 'uid' replaced by actual value (i.e. after eval)!)
|
||||
- 'share_root_url' : URL for direct access to share page (may include %(login) and %(password) placeholders)
|
||||
- 'share_root_url' : URL for direct access to share page (may include %(login)s and %(password)s placeholders)
|
||||
-->
|
||||
<record id="action_share_wizard" model="ir.actions.act_window">
|
||||
<field name="name">Share Wizard</field>
|
||||
|
@ -106,7 +106,7 @@
|
|||
- 'action_id' (id of action)
|
||||
- 'domain' (string expression for full domain to apply as sent to server,
|
||||
with dynamic data like 'uid' replaced by actual value (i.e. after eval)!)
|
||||
- 'share_root_url' : URL for direct access to share page (may include %(login) and %(password) placeholders)
|
||||
- 'share_root_url' : URL for direct access to share page (may include %(login)s and %(password)s placeholders)
|
||||
-->
|
||||
<record id="action_share_wizard_step1" model="ir.actions.act_window">
|
||||
<field name="name">Share Wizard</field>
|
||||
|
|
|
@ -49,7 +49,7 @@ class survey_question_wiz(osv.osv_memory):
|
|||
@param context: A standard dictionary for contextual values
|
||||
@return : Dictionary value for created view of particular survey pages.
|
||||
"""
|
||||
|
||||
|
||||
result = super(survey_question_wiz, self).fields_view_get(cr, uid, view_id, \
|
||||
view_type, context, toolbar,submenu)
|
||||
|
||||
|
@ -61,7 +61,8 @@ class survey_question_wiz(osv.osv_memory):
|
|||
sur_response_obj = self.pool.get('survey.response')
|
||||
que_col_head = self.pool.get('survey.question.column.heading')
|
||||
user_obj = self.pool.get('res.users')
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
if view_type in ['form']:
|
||||
wiz_id = 0
|
||||
if not context.has_key('sur_name_id'):
|
||||
|
@ -82,6 +83,8 @@ class survey_question_wiz(osv.osv_memory):
|
|||
context.pop('active_id')
|
||||
|
||||
survey_id = context.get('survey_id', False)
|
||||
if not survey_id:
|
||||
return {}
|
||||
sur_rec = survey_obj.browse(cr, uid, survey_id)
|
||||
p_id = map(lambda x:x.id, sur_rec.page_ids)
|
||||
total_pages = len(p_id)
|
||||
|
|
Loading…
Reference in New Issue