@ -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 |