You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

91 lines
2.8 KiB

from openerp import fields, models, api
class config_bool(models.Model):
_inherit = 'sale.config.settings'
conf_bool = fields.Boolean(string="Enables Sale order splitting")
class wizard(models.TransientModel):
_name = 'split.button.wiz'
temp = 1
line_count = fields.Char('Divide By', required=True)
@api.one
def confirm_split(self,vals):
line_ids = []
so_create = []
so_id = vals['active_id']
sale_obj = self.pool.get('sale.order').browse(self._cr, self._uid, so_id)
countt= 0
for lines in sale_obj.order_line:
create_obt = {
'product_id': lines.product_id.id,
'name': lines.name,
'product_uom_qty': lines.product_uom_qty,
'price_unit': lines.price_unit,
'tax_id': lines.tax_id,
'product_uom': lines.product_uom.id,
'price_subtotal': lines.price_subtotal
}
so_create.append((0, 0, create_obt))
line_ids.append({'ids': lines.id})
if len(line_ids) == int(self.line_count):
countt = countt + 1
self.pool.get('sale.order').create(self._cr, self._uid, {
'name': sale_obj.name + '/00' + str(countt),
'partner_id': sale_obj.partner_id.id,
'validity_date': sale_obj.validity_date,
'order_line': so_create,
'pricelist_id': sale_obj.pricelist_id.id
})
so_create = []
for idss in line_ids:
self._cr.execute("delete from sale_order_line where id = %s", [idss['ids']])
line_ids = []
self.temp = 0
self.temp += 1
counted=0
for i in sale_obj.order_line:
counted += 1
if counted == 0:
self._cr.execute("delete from sale_order where id = %s", [sale_obj.id])
else:
untaxed_total = 0.0
tax = 0.0
for line in sale_obj.order_line:
untaxed_total += line.price_subtotal
tax += line.price_tax
sale_obj.amount_untaxed = sale_obj.pricelist_id.currency_id.round(untaxed_total)
sale_obj.amount_tax = sale_obj.pricelist_id.currency_id.round(tax)
sale_obj.amount_total = sale_obj.amount_untaxed + sale_obj.amount_tax
class button_split(models.Model):
_inherit = 'sale.order'
parent_id = fields.Char()
def button_split(self, cr, uid, ids, context=None):
return {
'name': 'Confirm Split',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'split.button.wiz',
'target': 'new',
'vals': self.pool.get('sale.order').browse(cr, uid, ids).id
}