Browse Source

[INIT]Initial Commit

pull/124/head
Sreejith P 6 years ago
parent
commit
76a2a5e8ff
  1. 42
      product_barcode/README.rst
  2. 3
      product_barcode/__init__.py
  3. 42
      product_barcode/__manifest__.py
  4. 3
      product_barcode/models/__init__.py
  5. 66
      product_barcode/models/product_form.py
  6. BIN
      product_barcode/static/description/banner.jpg
  7. BIN
      product_barcode/static/description/barcode_generate_product.gif
  8. BIN
      product_barcode/static/description/cybro_logo.png
  9. BIN
      product_barcode/static/description/icon.png
  10. 82
      product_barcode/static/description/index.html
  11. BIN
      product_barcode/static/description/product_label.png
  12. 52
      product_barcode/views/product_label.xml

42
product_barcode/README.rst

@ -0,0 +1,42 @@
Product Barcode Generator v12
=============================
Generates EAN13 Standard Barcode for Product.
Also, introduces a new feature to print product variant price and name on the product label.
Depends
=======
[stock] addon Odoo
[product] addon Odoo
Tech
====
* [Python] - Models
* [XML] - Odoo views
Installation
============
- www.odoo.com/documentation/12.0/setup/install.html
- Install our custom addon
License
=======
GNU AGPL, Version 3 (AGPLv3)
(http://www.gnu.org/licenses/agpl.html)
Bug Tracker
===========
Contact odoo@cybrosys.com
Authors
-------
* Sreejith P <sreejith@cybrosys.in>
* Niyas Raphy <niyas@cybrosys.in>
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

3
product_barcode/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

42
product_barcode/__manifest__.py

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sreejith P(<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'Product Barcode Generator',
'version': '12.0.1.0.0',
'summary': 'Generates EAN13 Standard Barcode for Product.',
'category': 'Inventory',
'author': 'Cybrosys Techno solutions',
'maintainer': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'depends': ['stock', 'product'],
'data': [
'views/product_label.xml',
],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'application': False,
'auto_install': False,
}

3
product_barcode/models/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import product_form

66
product_barcode/models/product_form.py

@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
import math
import re
from odoo import api, models
class ProductAutoBarcode(models.Model):
_inherit = "product.product"
@api.model
def create(self, vals):
res = super(ProductAutoBarcode, self).create(vals)
ean = generate_ean(str(res.id))
res.barcode = ean
return res
def ean_checksum(eancode):
"""returns the checksum of an ean string of length 13, returns -1 if
the string has the wrong length"""
if len(eancode) != 13:
return -1
oddsum = 0
evensum = 0
eanvalue = eancode
reversevalue = eanvalue[::-1]
finalean = reversevalue[1:]
for i in range(len(finalean)):
if i % 2 == 0:
oddsum += int(finalean[i])
else:
evensum += int(finalean[i])
total = (oddsum * 3) + evensum
check = int(10 - math.ceil(total % 10.0)) % 10
return check
def check_ean(eancode):
"""returns True if eancode is a valid ean13 string, or null"""
if not eancode:
return True
if len(eancode) != 13:
return False
try:
int(eancode)
except:
return False
return ean_checksum(eancode) == int(eancode[-1])
def generate_ean(ean):
"""Creates and returns a valid ean13 from an invalid one"""
if not ean:
return "0000000000000"
ean = re.sub("[A-Za-z]", "0", ean)
ean = re.sub("[^0-9]", "", ean)
ean = ean[:13]
if len(ean) < 13:
ean = ean + '0' * (13 - len(ean))
return ean[:-1] + str(ean_checksum(ean))
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

BIN
product_barcode/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
product_barcode/static/description/barcode_generate_product.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
product_barcode/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
product_barcode/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

82
product_barcode/static/description/index.html

@ -0,0 +1,82 @@
<section class="oe_container">
<div class="oe_spaced">
<h2 class="oe_slogan">Product Barcode Generator</h2>
<h3 class="oe_slogan">Generates EAN13 Standard Barcode for Product </h3>
<h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h4>
<div style="padding-left:66px;">
<h4>Features:</h4>
<ul>
<li style="list-style:none !important;"><span style="color:green;"> &#8594;</span>&nbsp;&nbsp; Generates Barcode Automatically.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#8594;</span>&nbsp;&nbsp; Print Variant Price on Product Labels. </li>
<li style="list-style:none !important;"><span style="color:green;"> &#8594;</span>&nbsp;&nbsp; Print Variant Name on Product Labels. </li>
</ul>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_spaced">
<div class="oe_picture">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32">
The module automatically generates EAN13 standard barcode for each product while you create it.
The module also introduces a new feature to print product variant price on the product label.
Presently Odoo doesn’t have these features.
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Product Master</h4>
<div class="oe_span12">
<p class='oe_mt32'>
&#x261B; Create a Product.<br>
</p>
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="barcode_generate_product.gif">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Product Labels</h4>
<div class="oe_span12">
<p class='oe_mt32'>
&#x261B; Variant name on label.<br>
&#x261B; Variant sale price on label.<br>
</p>
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="product_label.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://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;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
<div>
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;"></i></a></td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px;padding-left: 8px;"></i></a></td>
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;"></i></a></td>
</div>
</div>
</section>

BIN
product_barcode/static/description/product_label.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

52
product_barcode/views/product_label.xml

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_simple_label" inherit_id="product.report_simple_label">
<xpath expr="//div[hasclass('col-4')]" position="replace">
<div class="col-xs-4" style="padding:0;">
<table style="border-spacing:0;margin-bottom:0;height:122px;" class="table">
<thead>
<tr style="width: 3in;">
<td style="border: 2px solid black;width: 2.63in;" colspan="2" class="col-xs-8 danger">
<t t-if="product.default_code">
[<strong t-field="product.default_code"/>]
</t>
<strong t-field="product.name"/>
<strong><span t-esc="', '.join(map(lambda x: x.name, product.attribute_value_ids))"/></strong>
</td>
</tr>
</thead>
<tbody>
<tr style="width: 1in;">
<td style="border: 2px solid black;text-align: center; vertical-align: middle;" class="col-xs-5">
<img t-if="product.barcode" t-att-src="'/report/barcode/?type=%s&amp;value=%s&amp;width=%s&amp;height=%s' % ('EAN13', product.barcode, 600, 150)" style="width:100%;height:20%;"/>
<span t-field="product.barcode"/>
</td>
<td style="border: 2px solid black; text-align: center;" class="col-xs-7">
<h4>
<strong t-field="product.company_id.currency_id.symbol"/>
<strong t-field="product.lst_price"/>
</h4>
</td>
</tr>
</tbody>
</table>
</div>
</xpath>
</template>
<template id="report_productlabel">
<t t-call="report.html_container">
<div class="page">
<t t-foreach="docs" t-as="product">
<t t-call="product.report_simple_label">
<t t-set="product" t-value="product"/>
</t>
</t>
</div>
</t>
</template>
</data>
</odoo>
Loading…
Cancel
Save