@ -0,0 +1,11 @@ |
|||||
|
Merge Same Product Lines |
||||
|
======================== |
||||
|
|
||||
|
This module will merge the order lines/invoice with same product in the sale order line, purchase order line and account invoice line. |
||||
|
|
||||
|
Credits |
||||
|
======= |
||||
|
Cybrosys Techno Solutions |
||||
|
Author |
||||
|
------ |
||||
|
* Cybrosys <www.cybrosys.com> |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). |
||||
|
# Author: Niyas Raphy(<http://www.cybrosys.com>) |
||||
|
# you can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
# |
||||
|
# It is forbidden to publish, distribute, sublicense, or sell copies |
||||
|
# of the Software or modified copies of the Software. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
import models |
@ -0,0 +1,39 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). |
||||
|
# Author: Niyas Raphy(<http://www.cybrosys.com>) |
||||
|
# you can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
# |
||||
|
# It is forbidden to publish, distribute, sublicense, or sell copies |
||||
|
# of the Software or modified copies of the Software. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
{ |
||||
|
'name': 'Merge Same Product Line', |
||||
|
'version': '0.1', |
||||
|
'description': """""", |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'website': 'http://www.cybrosys.com', |
||||
|
'summary': "This module will merge order lines/invoice line with same product in sale, purchase order lines and invoice line", |
||||
|
'category': 'sale', |
||||
|
'depends': ['account', 'base', 'sale', 'purchase'], |
||||
|
'license': 'AGPL-3', |
||||
|
'data': [], |
||||
|
'demo': [], |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
|
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). |
||||
|
# Author: Niyas Raphy(<http://www.cybrosys.com>) |
||||
|
# you can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
# |
||||
|
# It is forbidden to publish, distribute, sublicense, or sell copies |
||||
|
# of the Software or modified copies of the Software. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
import sales_merge |
||||
|
import purchase_merge |
||||
|
import invoice_merge |
||||
|
|
@ -0,0 +1,154 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). |
||||
|
# Author: Niyas Raphy(<http://www.cybrosys.com>) |
||||
|
# you can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
# |
||||
|
# It is forbidden to publish, distribute, sublicense, or sell copies |
||||
|
# of the Software or modified copies of the Software. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
from openerp import api, models |
||||
|
|
||||
|
|
||||
|
class AccountInvoiceAppend(models.Model): |
||||
|
_inherit = "account.invoice" |
||||
|
|
||||
|
@api.model |
||||
|
def create(self, vals): |
||||
|
if "invoice_line_ids" in vals.keys(): |
||||
|
product_list = [] |
||||
|
new_list = [] |
||||
|
check_list = [] |
||||
|
for obj in vals['invoice_line_ids']: |
||||
|
if obj[2]: |
||||
|
if "product_id" in obj[2]: |
||||
|
if obj[2]['product_id'] not in product_list: |
||||
|
product_list.append(obj[2]['product_id']) |
||||
|
for obj in product_list: |
||||
|
quantity = 0 |
||||
|
for obj1 in vals['invoice_line_ids']: |
||||
|
if obj1[2]['product_id'] == obj: |
||||
|
quantity += obj1[2]['quantity'] |
||||
|
for obj1 in vals['invoice_line_ids']: |
||||
|
if obj1[2]['product_id'] == obj: |
||||
|
obj1[2]['quantity'] = quantity |
||||
|
for obj2 in vals['invoice_line_ids']: |
||||
|
if obj2[2]['product_id'] not in check_list: |
||||
|
new_list.append(obj2) |
||||
|
check_list.append(obj2[2]['product_id']) |
||||
|
vals['invoice_line_ids'] = new_list |
||||
|
res = super(AccountInvoiceAppend, self).create(vals) |
||||
|
return res |
||||
|
|
||||
|
@api.multi |
||||
|
def write(self, vals): |
||||
|
product_list_ext = [] |
||||
|
product_list_new = [] |
||||
|
if "invoice_line_ids" in vals.keys(): |
||||
|
new_list = vals['invoice_line_ids'] |
||||
|
for att in new_list: |
||||
|
if att[0] == 4: |
||||
|
s = self.invoice_line_ids.browse(att[1]) |
||||
|
if s.product_id.id not in product_list_ext: |
||||
|
product_list_ext.append(s.product_id.id) |
||||
|
if att[0] == 0: |
||||
|
if att[2]['product_id'] not in product_list_new: |
||||
|
product_list_new.append(att[2]['product_id']) |
||||
|
if att[0] == 1: |
||||
|
s = self.invoice_line_ids.browse(att[1]) |
||||
|
if s.product_id.id not in product_list_ext: |
||||
|
product_list_ext.append(s.product_id.id) |
||||
|
pro_list = [] |
||||
|
|
||||
|
for obj in product_list_new: |
||||
|
pro_qty = 0 |
||||
|
if obj in product_list_ext: |
||||
|
for att in new_list: |
||||
|
if att[0] == 4: |
||||
|
o = self.invoice_line_ids.browse(att[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
pro_qty += o.quantity |
||||
|
if att[1] == 0: |
||||
|
if att[2]['product_id'] == obj: |
||||
|
pro_qty += att[2]['quantity'] |
||||
|
if att[0] == 1: |
||||
|
o = self.invoice_line_ids.browse(att[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
pro_qty += att[2]['quantity'] |
||||
|
for att1 in new_list: |
||||
|
if att1[0] == 4: |
||||
|
o = self.invoice_line_ids.browse(att1[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
o.quantity = pro_qty |
||||
|
if att1[0] == 1: |
||||
|
o = self.invoice_line_ids.browse(att1[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
att1[2]['quantity'] = pro_qty |
||||
|
|
||||
|
for obj1 in product_list_new: |
||||
|
pro_qty = 0 |
||||
|
count = 0 |
||||
|
if obj1 not in product_list_ext: |
||||
|
for att1 in new_list: |
||||
|
if att1[0] == 0: |
||||
|
if att1[2]['product_id'] == obj1: |
||||
|
pro_qty += att1[2]['quantity'] |
||||
|
for att2 in new_list: |
||||
|
if att2[0] == 0: |
||||
|
|
||||
|
if att2[2]['product_id'] == obj1: |
||||
|
count += 1 |
||||
|
if count == 1: |
||||
|
att2[2]['quantity'] = pro_qty |
||||
|
pro_list.append(att2) |
||||
|
for obj2 in product_list_ext: |
||||
|
if obj2 not in product_list_new: |
||||
|
for att2 in new_list: |
||||
|
if att2[0] == 4: |
||||
|
o = self.invoice_line_ids.browse(att2[1]) |
||||
|
if o.product_id.id == obj2: |
||||
|
pro_list.append(att2) |
||||
|
for att3 in new_list: |
||||
|
if att3[0] == 2: |
||||
|
pro_list.append(att3) |
||||
|
if att3[0] == 1: |
||||
|
o = self.invoice_line_ids.browse(att3[1]) |
||||
|
if "quantity" in att3[2]: |
||||
|
o.quantity = att3[2]['quantity'] |
||||
|
vals['invoice_line_ids'] = pro_list |
||||
|
res = super(AccountInvoiceAppend, self).write(vals) |
||||
|
return res |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,131 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). |
||||
|
# Author: Niyas Raphy(<http://www.cybrosys.com>) |
||||
|
# you can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
# |
||||
|
# It is forbidden to publish, distribute, sublicense, or sell copies |
||||
|
# of the Software or modified copies of the Software. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
from openerp import api, models |
||||
|
|
||||
|
|
||||
|
class PurchaseOrderAppend(models.Model): |
||||
|
_inherit = "purchase.order" |
||||
|
|
||||
|
@api.model |
||||
|
def create(self, vals): |
||||
|
if "order_line" in vals.keys(): |
||||
|
product_list = [] |
||||
|
for obj in vals['order_line']: |
||||
|
if obj[2]['product_id'] not in product_list: |
||||
|
product_list.append(obj[2]['product_id']) |
||||
|
list_new = vals['order_line'] |
||||
|
new_list = [] |
||||
|
for obj in product_list: |
||||
|
count = 0 |
||||
|
qty = 0 |
||||
|
for ele in list_new: |
||||
|
if obj == ele[2]['product_id']: |
||||
|
count += 1 |
||||
|
qty += ele[2]['product_qty'] |
||||
|
if count == 1: |
||||
|
new_list.append(ele) |
||||
|
for att in new_list: |
||||
|
if obj == att[2]['product_id']: |
||||
|
att[2]['product_qty'] = qty |
||||
|
vals['order_line'] = new_list |
||||
|
res = super(PurchaseOrderAppend, self).create(vals) |
||||
|
return res |
||||
|
|
||||
|
@api.one |
||||
|
def write(self, vals): |
||||
|
product_list_ext = [] |
||||
|
product_list_new = [] |
||||
|
if "order_line" in vals.keys(): |
||||
|
new_list = vals['order_line'] |
||||
|
pro_list = [] |
||||
|
for att in new_list: |
||||
|
if att[0] == 4 or att[0] ==1: |
||||
|
s = self.order_line.browse(att[1]) |
||||
|
if s.product_id.id not in product_list_ext: |
||||
|
product_list_ext.append(s.product_id.id) |
||||
|
if att[0] == 0: |
||||
|
if att[2]['product_id'] not in product_list_new: |
||||
|
product_list_new.append(att[2]['product_id']) |
||||
|
for obj in product_list_new: |
||||
|
pro_qty = 0 |
||||
|
if obj in product_list_ext: |
||||
|
for att in new_list: |
||||
|
if att[0] == 4: |
||||
|
o = self.order_line.browse(att[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
pro_qty += o.product_qty |
||||
|
if att[0] == 1: |
||||
|
o = self.order_line.browse(att[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
pro_qty += att[2]['product_qty'] |
||||
|
if att[1] == 0: |
||||
|
if att[2]['product_id'] == obj: |
||||
|
pro_qty += att[2]['product_qty'] |
||||
|
for att1 in new_list: |
||||
|
if att1[0] == 4: |
||||
|
o = self.order_line.browse(att1[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
o.product_qty = pro_qty |
||||
|
if att1[0] == 1: |
||||
|
o = self.order_line.browse(att1[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
att1[2]['product_qty'] = pro_qty |
||||
|
for obj1 in product_list_new: |
||||
|
pro_qty = 0 |
||||
|
count = 0 |
||||
|
if obj1 not in product_list_ext: |
||||
|
for att1 in new_list: |
||||
|
if att1[0] == 0: |
||||
|
if att1[2]['product_id'] == obj1: |
||||
|
pro_qty += att1[2]['product_qty'] |
||||
|
for att2 in new_list: |
||||
|
if att2[0] == 0: |
||||
|
if att2[2]['product_id'] == obj: |
||||
|
count += 1 |
||||
|
if count == 1: |
||||
|
att2[2]['product_qty'] = pro_qty |
||||
|
pro_list.append(att2) |
||||
|
for obj2 in product_list_ext: |
||||
|
if obj2 not in product_list_new: |
||||
|
for att2 in new_list: |
||||
|
if att2[0] == 4: |
||||
|
o = self.order_line.browse(att2[1]) |
||||
|
if o.product_id.id == obj2: |
||||
|
pro_list.append(att2) |
||||
|
for obj2 in product_list_ext: |
||||
|
if obj2 in product_list_new: |
||||
|
for att2 in new_list: |
||||
|
if att2[0] == 1: |
||||
|
o = self.order_line.browse(att2[1]) |
||||
|
if o.product_id.id == obj2: |
||||
|
pro_list.append(att2) |
||||
|
for att3 in new_list: |
||||
|
if att3[0] == 2: |
||||
|
pro_list.append(att3) |
||||
|
if att3[0] == 1: |
||||
|
o = self.order_line.browse(att3[1]) |
||||
|
o.product_qty = att3[2]['product_qty'] |
||||
|
vals['order_line'] = pro_list |
||||
|
|
||||
|
res = super(PurchaseOrderAppend, self).write(vals) |
||||
|
return res |
@ -0,0 +1,159 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# Copyright (C) 2009-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). |
||||
|
# Author: Niyas Raphy(<http://www.cybrosys.com>) |
||||
|
# you can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
# |
||||
|
# It is forbidden to publish, distribute, sublicense, or sell copies |
||||
|
# of the Software or modified copies of the Software. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
from openerp import api, models |
||||
|
|
||||
|
|
||||
|
class SaleOrderAppend(models.Model): |
||||
|
_inherit = "sale.order" |
||||
|
|
||||
|
@api.model |
||||
|
def create(self, vals): |
||||
|
if "order_line" in vals.keys(): |
||||
|
product_list = [] |
||||
|
for obj in vals['order_line']: |
||||
|
if obj[2]['product_id'] not in product_list: |
||||
|
product_list.append(obj[2]['product_id']) |
||||
|
list_new = vals['order_line'] |
||||
|
new_list = [] |
||||
|
for obj in product_list: |
||||
|
count = 0 |
||||
|
qty = 0 |
||||
|
for element in list_new: |
||||
|
if obj == element[2]['product_id']: |
||||
|
qty += element[2]['product_uom_qty'] |
||||
|
for ele in list_new: |
||||
|
if obj == ele[2]['product_id']: |
||||
|
count += 1 |
||||
|
if count == 1: |
||||
|
ele[2]['product_uom_qty'] = qty |
||||
|
ele[2]['product_uos_qty'] = qty |
||||
|
new_list.append(ele) |
||||
|
vals['order_line'] = new_list |
||||
|
res = super(SaleOrderAppend, self).create(vals) |
||||
|
return res |
||||
|
|
||||
|
@api.multi |
||||
|
def write(self, vals): |
||||
|
product_list_ext = [] |
||||
|
product_list_new = [] |
||||
|
if "order_line" in vals.keys(): |
||||
|
new_list = vals['order_line'] |
||||
|
pro_list = [] |
||||
|
for att in new_list: |
||||
|
if att[0] == 4: |
||||
|
s = self.order_line.browse(att[1]) |
||||
|
if s.product_id not in product_list_ext: |
||||
|
product_list_ext.append(s.product_id.id) |
||||
|
if att[0] == 1: |
||||
|
s = self.order_line.browse(att[1]) |
||||
|
if s.product_id not in product_list_ext: |
||||
|
product_list_ext.append(s.product_id.id) |
||||
|
if att[0] == 0: |
||||
|
if att[2]['product_id'] not in product_list_new: |
||||
|
product_list_new.append(att[2]['product_id']) |
||||
|
for obj in product_list_new: |
||||
|
pro_qty = 0 |
||||
|
if obj in product_list_ext: |
||||
|
for att in new_list: |
||||
|
if att[0] == 4: |
||||
|
o = self.order_line.browse(att[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
pro_qty += o.product_uom_qty |
||||
|
if att[0] == 1: |
||||
|
o = self.order_line.browse(att[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
pro_qty += att[2]['product_uom_qty'] |
||||
|
if att[1] == 0: |
||||
|
if att[2]['product_id'] == obj: |
||||
|
pro_qty += att[2]['product_uom_qty'] |
||||
|
|
||||
|
for att1 in new_list: |
||||
|
if att1[0] == 4: |
||||
|
o = self.order_line.browse(att1[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
o.product_uom_qty = pro_qty |
||||
|
o.product_uos_qty = pro_qty |
||||
|
if att1[0] == 1: |
||||
|
o = self.order_line.browse(att1[1]) |
||||
|
if o.product_id.id == obj: |
||||
|
att1[2]['product_uom_qty'] = pro_qty |
||||
|
o.product_uom_qty = pro_qty |
||||
|
for obj1 in product_list_new: |
||||
|
pro_qty = 0 |
||||
|
count = 0 |
||||
|
if obj1 not in product_list_ext: |
||||
|
for att1 in new_list: |
||||
|
if att1[0] == 0: |
||||
|
if att1[2]['product_id'] == obj1: |
||||
|
pro_qty += att1[2]['product_uom_qty'] |
||||
|
for att2 in new_list: |
||||
|
if att2[0] == 0: |
||||
|
if att2[2]['product_id'] == obj1: |
||||
|
count += 1 |
||||
|
if count == 1: |
||||
|
att2[2]['product_uom_qty'] = pro_qty |
||||
|
att2[2]['product_uos_qty'] = pro_qty |
||||
|
pro_list.append(att2) |
||||
|
|
||||
|
for obj2 in product_list_ext: |
||||
|
if obj2 not in product_list_new: |
||||
|
for att2 in new_list: |
||||
|
if att2[0] == 4: |
||||
|
o = self.order_line.browse(att2[1]) |
||||
|
if o.product_id.id == obj2: |
||||
|
pro_list.append(att2) |
||||
|
for att3 in new_list: |
||||
|
if att3[0] == 2: |
||||
|
pro_list.append(att3) |
||||
|
if att3[0] == 1: |
||||
|
o = self.order_line.browse(att3[1]) |
||||
|
o.product_uom_qty = att3[2]['product_uom_qty'] |
||||
|
|
||||
|
vals['order_line'] = pro_list |
||||
|
res = super(SaleOrderAppend, self).write(vals) |
||||
|
return res |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
After Width: | Height: | Size: 132 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 9.2 KiB |
@ -0,0 +1,110 @@ |
|||||
|
<section class="oe_container"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan">Merging Same Product Line</h2> |
||||
|
<h3 class="oe_slogan">It helps to merge same products in order line & invoice line</h3> |
||||
|
<h4 class="oe_slogan">Cybrosys Techno Solutions, www.cybrosys.com</h4> |
||||
|
</div> |
||||
|
|
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<div class="oe_span12"> |
||||
|
<p class='oe_mt32'> |
||||
|
☛This module enables the feature to merge same products in the sale order line , purchase order line & invoice line into one on saving. |
||||
|
</p> |
||||
|
<div class="oe_centeralign oe_websiteonly"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section> |
||||
|
<div class="oe_row"> |
||||
|
<h2 class="oe_slogan">Sale Order</h2> |
||||
|
<div class="oe_span6"> |
||||
|
<p class='oe_mt32'> |
||||
|
Before saving the sale order<br> |
||||
|
</p> |
||||
|
<div class="oe_row_img oe_centered"> |
||||
|
<img class="oe_demo oe_picture oe_screenshot" src="sale_before_save.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="oe_span6"> |
||||
|
<p class='oe_mt32'> |
||||
|
After saving the sale order <br> |
||||
|
|
||||
|
</p> |
||||
|
<div class="oe_row_img oe_centered"> |
||||
|
<img class="oe_demo oe_picture oe_screenshot" src="sale_after_save.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container oe_dark"> |
||||
|
<div class="oe_row"> |
||||
|
<h2 class="oe_slogan">Purchase Order</h2> |
||||
|
<div class="oe_span6"> |
||||
|
<p class='oe_mt32'> |
||||
|
Before saving the order<br> |
||||
|
|
||||
|
</p> |
||||
|
<div class="oe_row_img oe_centered"> |
||||
|
<img class="oe_demo oe_picture oe_screenshot" src="purchase_before_save.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="oe_span6"> |
||||
|
<p class='oe_mt32'> |
||||
|
After saving the order <br> |
||||
|
|
||||
|
</p> |
||||
|
<div class="oe_row_img oe_centered"> |
||||
|
<img class="oe_demo oe_picture oe_screenshot" src="purchase_after_save.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section> |
||||
|
<div class="oe_row"> |
||||
|
<h2 class="oe_slogan">Invoice</h2> |
||||
|
<div class="oe_span6"> |
||||
|
<p class='oe_mt32'> |
||||
|
Before saving the order<br> |
||||
|
|
||||
|
</p> |
||||
|
<div class="oe_row_img oe_centered"> |
||||
|
<img class="oe_demo oe_picture oe_screenshot" src="invoice_before_save.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="oe_span6"> |
||||
|
<p class='oe_mt32'> |
||||
|
After saving the order <br> |
||||
|
|
||||
|
</p> |
||||
|
<div class="oe_row_img oe_centered"> |
||||
|
<img class="oe_demo oe_picture oe_screenshot" src="invoice_after_save.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container oe_dark"> |
||||
|
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2> |
||||
|
<div class="oe_slogan" style="margin-top:10px !important;"> |
||||
|
<a class="btn btn-primary btn-lg mt8" |
||||
|
style="color: #FFFFFF !important;" href="http://www.cybrosys.com"><i |
||||
|
class="fa fa-envelope"></i> Email </a> <a |
||||
|
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;" |
||||
|
href="http://www.cybrosys.com/contact/"><i |
||||
|
class="fa fa-phone"></i> Contact Us </a> <a |
||||
|
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;" |
||||
|
href="http://www.cybrosys.com/odoo-customization-and-installation/"><i |
||||
|
class="fa fa-check-square"></i> Request Customization </a> |
||||
|
</div> |
||||
|
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block"> |
||||
|
</section> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 159 KiB |
After Width: | Height: | Size: 146 KiB |