Browse Source

[ADD]Initial Commit

pull/29/head
SHEREEF PT 8 years ago
parent
commit
b6f2a87bb8
  1. 2
      account_pdc_payment_report/__manifest__.py
  2. 2
      account_pdc_payment_report/__manifest__.py~
  3. 17
      website_coupon/README.rst
  4. 25
      website_coupon/__init__.py
  5. 42
      website_coupon/__manifest__.py
  6. 24
      website_coupon/controllers/__init__.py
  7. 138
      website_coupon/controllers/main.py
  8. 8
      website_coupon/data/product_data.xml
  9. 24
      website_coupon/models/__init__.py
  10. 84
      website_coupon/models/gift_voucher.py
  11. BIN
      website_coupon/static/description/apply_coupon.png
  12. BIN
      website_coupon/static/description/banner.jpg
  13. BIN
      website_coupon/static/description/coupon.png
  14. BIN
      website_coupon/static/description/cybro_logo.png
  15. BIN
      website_coupon/static/description/enable_voucher.png
  16. BIN
      website_coupon/static/description/history.png
  17. BIN
      website_coupon/static/description/icon.png
  18. 140
      website_coupon/static/description/index.html
  19. BIN
      website_coupon/static/description/voucher.png
  20. 46
      website_coupon/views/applied_coupons.xml
  21. 121
      website_coupon/views/gift_voucher.xml
  22. 89
      website_coupon/views/templates.xml

2
account_pdc_payment_report/__manifest__.py

@ -21,7 +21,7 @@
# #
############################################################################## ##############################################################################
{ {
'name': 'Payments Report', 'name': 'PDC Payments Report',
'version': '10.0.1.0', 'version': '10.0.1.0',
'author': 'Cybrosys Techno Solutions', 'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions', 'company': 'Cybrosys Techno Solutions',

2
account_pdc_payment_report/__manifest__.py~

@ -27,7 +27,7 @@
'company': 'Cybrosys Techno Solutions', 'company': 'Cybrosys Techno Solutions',
'website': 'http://www.cybrosys.com', 'website': 'http://www.cybrosys.com',
'category': 'Accounting', 'category': 'Accounting',
'summary': 'Report of Payments with filter for PDC type', 'summary': 'Report of Payments with Filter for PDC Type',
'description': """ Report of Payments with filter for PDC type """, 'description': """ Report of Payments with filter for PDC type """,
'depends': ['account_check_printing', 'account_pdc'], 'depends': ['account_check_printing', 'account_pdc'],
'data': [ 'data': [

17
website_coupon/README.rst

@ -0,0 +1,17 @@
Website Coupon Code v10
=======================
Manage Website Coupon Codes & Its Operations
Features
========
* Create and configure vouchers for providing a discount.
* Generate a unique code for each coupon.
* Limit the usage of coupons by each user.
* Provide a validity for the coupons.
* History of coupons used by each customer.
Credits
=======
Cybrosys Techno Solutions, <http://www.cybrosys.com>

25
website_coupon/__init__.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies(<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
import controllers

42
website_coupon/__manifest__.py

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies(<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': 'Website Coupon Code',
'version': '10.0.1.0.0',
'category': 'Website',
'sequence': 56,
'summary': 'Manage Website Coupon Codes & Its Operations',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'http://www.cybrosys.com',
'depends': ['sale', 'website_sale'],
'data': [
'data/product_data.xml',
'views/gift_voucher.xml',
'views/applied_coupons.xml',
'views/templates.xml',
],
'installable': True,
'license': 'LGPL-3',
'auto_install': False,
}

24
website_coupon/controllers/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies(<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 main

138
website_coupon/controllers/main.py

@ -0,0 +1,138 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies(<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 odoo import http, tools, _
from odoo.http import request
from datetime import datetime
from dateutil import parser
class WebsiteCoupon(http.Controller):
@http.route(['/shop/cart'], type='http', auth="public", website=True)
def cart(self, **post):
"""This function is overwritten because we need to pass the value 'coupon_not_available'
to the template, inorder to show the error message to the user that, 'this coupon is not available'. """
order = request.website.sale_get_order()
if order:
from_currency = order.company_id.currency_id
to_currency = order.pricelist_id.currency_id
compute_currency = lambda price: from_currency.compute(price, to_currency)
else:
compute_currency = lambda price: price
values = {
'website_sale_order': order,
'compute_currency': compute_currency,
'suggested_products': [],
}
if order:
_order = order
if not request.env.context.get('pricelist'):
_order = order.with_context(pricelist=order.pricelist_id.id)
values['suggested_products'] = _order._cart_accessories()
if post.get('type') == 'popover':
return request.render("website_sale.cart_popover", values)
if post.get('code_not_available'):
values['code_not_available'] = post.get('code_not_available')
elif post.get('coupon_not_available'):
values['coupon_not_available'] = post.get('coupon_not_available')
return request.render("website_sale.cart", values)
@http.route(['/shop/gift_coupon'], type='http', auth="public", website=True)
def gift_coupon(self, promo_voucher, **post):
"""This function will be executed when we click the apply button of the voucher code in the website.
It will verify the validity and availability of that coupon. If it can be applied, the coupon will be applied
and coupon balance will also be updated"""
curr_user = request.env.user
coupon = request.env['gift.coupon'].sudo().search([('code', '=', promo_voucher)], limit=1)
flag = True
if coupon and coupon.total_avail > 0:
applied_coupons = request.env['partner.coupon'].sudo().search([('coupon', '=', promo_voucher),
('partner_id', '=', curr_user.partner_id.id)], limit=1)
# checking voucher date and limit for each user for this coupon---------------------
if coupon.partner_id:
if curr_user.partner_id.id != coupon.partner_id.id:
flag = False
today = datetime.now().date()
if flag and applied_coupons.number < coupon.limit and today <= parser.parse(coupon.voucher.expiry_date).date():
# checking coupon validity ---------------------------
# checking date of coupon ------------
if coupon.start_date and coupon.end_date:
if today < parser.parse(coupon.start_date).date() or today > parser.parse(coupon.end_date).date():
flag = False
elif coupon.start_date:
if today < parser.parse(coupon.start_date).date():
flag = False
elif coupon.end_date:
if today > parser.parse(coupon.end_date).date():
flag = False
else:
flag = False
else:
flag = False
if flag:
product_id = coupon.voucher.product_id
voucher_val = coupon.voucher_val
type = coupon.type
coupon_product = request.env['product.product'].sudo().search([('name', '=', 'Gift Coupon')], limit=1)
if coupon_product:
order = request.website.sale_get_order(force_create=1)
flag_product = False
for line in order.order_line:
if line.product_id.name == 'Gift Coupon':
flag = False
break
if line.product_id.name == product_id.name:
flag_product = True
if flag and flag_product:
if type == 'fixed':
res = coupon_product.product_tmpl_id.write({'list_price': -voucher_val})
elif type == 'percentage':
amount = 0
for line in order.order_line:
amount += line.product_uom_qty * line.price_unit
amount_final = (voucher_val/100) * amount
res = coupon_product.product_tmpl_id.write({'list_price': -amount_final})
value = order._cart_update(product_id=coupon_product.id, set_qty=1, add_qty=1)
# updating coupon balance--------------
total = coupon.total_avail - 1
coupon.write({'total_avail': total})
# creating a record for this partner, i.e he is used this coupen once-----------
if not applied_coupons:
res = curr_user.partner_id.write({'applied_coupon': [(0, 0, {'partner_id': curr_user.partner_id.id,
'coupon': coupon.code,
'number': 1})]})
else:
applied_coupons.write({'number': applied_coupons.number + 1})
else:
return request.redirect("/shop/cart?coupon_not_available=1")
return request.redirect("/shop/cart")

8
website_coupon/data/product_data.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<record model="product.product" id="discount_product">
<field name="name">Gift Coupon</field>
<!--<field name="type">service</field>-->
</record>
</odoo>

24
website_coupon/models/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies(<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 gift_voucher

84
website_coupon/models/gift_voucher.py

@ -0,0 +1,84 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies(<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 string
import random
from odoo import models, fields, api, _
from odoo.exceptions import UserError
class GiftVoucher(models.Model):
_name = 'gift.voucher'
name = fields.Char(string="Name", required=True)
product_id = fields.Many2one('product.product', string="Product", required=True)
min_value = fields.Integer(string="Minimum Voucher Value", required=True)
max_value = fields.Integer(string="Maximum Voucher Value", required=True)
expiry_date = fields.Date(string="Expiry Date", required=True)
class GiftCoupon(models.Model):
_name = 'gift.coupon'
def get_code(self):
size = 7
chars = string.ascii_uppercase + string.digits
return ''.join(random.choice(chars) for _ in range(size))
_sql_constraints = [
('name_uniq', 'unique (code)', "Code already exists !"),
]
name = fields.Char(string="Name", required=True)
code = fields.Char(string="Code", default=get_code)
voucher = fields.Many2one('gift.voucher', string="Voucher", required=True)
start_date = fields.Date(string="Start Date")
end_date = fields.Date(string="End Date")
partner_id = fields.Many2one('res.partner', string="Limit to a Single Partner")
limit = fields.Integer(string="Total Available For Each User", default=1)
total_avail = fields.Integer(string="Total Available", default=1)
voucher_val = fields.Float(string="Voucher Value")
type = fields.Selection([
('fixed', 'Fixed Amount'),
('percentage', 'Percentage'),
], store=True, default='fixed')
@api.onchange('voucher_val')
def check_val(self):
if self.voucher_val > self.voucher.max_value or self.voucher_val < self.voucher.min_value:
raise UserError(_("Please check the voucher value"))
class CouponPartner(models.Model):
_name = 'partner.coupon'
partner_id = fields.Many2one('res.partner', string="Partner")
coupon = fields.Char(string="Coupon Applied")
number = fields.Integer(string="Number of Times Used")
class PartnerExtended(models.Model):
_inherit = 'res.partner'
applied_coupon = fields.One2many('partner.coupon', 'partner_id', string="Coupons Applied")

BIN
website_coupon/static/description/apply_coupon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
website_coupon/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
website_coupon/static/description/coupon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
website_coupon/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
website_coupon/static/description/enable_voucher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
website_coupon/static/description/history.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
website_coupon/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

140
website_coupon/static/description/index.html

@ -0,0 +1,140 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Website Coupon</h2>
<h3 class="oe_slogan">..Manage Your Coupon Codes Simply..</h3>
<h4 class="oe_slogan">Cybrosys Technologies , www.cybrosys.com</h4>
<div>
<p class='oe_mt32' style="text-align: center;">
This module by Cybrosys Technologies allows us to manage our customers in a better way by providing
discount coupons to our special customers, and thereby increase the sales.
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h2 style="color:#875A7B;">Features</h2>
<div class="oe_span6 text-justify oe_mt32">
<p class="oe_mb32" style="margin-left:48px;">
&#x261B; Create and configure vouchers for providing a discount.
</p>
<p class="oe_mb32" style="margin-left:48px;">
&#x261B; Generate a unique code for each coupon.
</p>
<p class="oe_mb32" style="margin-left:48px;">
&#x261B; Limit the usage of coupons by each user.
</p>
<p class="oe_mb32" style="margin-left:48px;">
&#x261B; Provide a validity for the coupons.
</p>
<p class="oe_mb32" style="margin-left:48px;">
&#x261B; History of coupons used by each customer.
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan">Enable the voucher option from the website.</h3>
<div class="oe_demo oe_screenshot">
<img src="enable_voucher.png">
</div>
<p class="oe_mt32" style="margin-left:48px;">
When we added some product to our cart, under the 'Customize' menu, we can see the 'Voucher Code' option.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan">Apply the coupon by providing the secret code.</h3>
<div class="oe_demo oe_screenshot">
<img src="apply_coupon.png">
</div>
<p class="oe_mt32" style="margin-left:48px;">
After enabling the 'Voucher Code' option, we can enter our coupon code. If that code is valid,
it will be applied to the order.
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan">Create and configure vouchers.</h3>
<div class="oe_demo oe_screenshot">
<img src="voucher.png">
</div>
<p class="oe_mt32" style="margin-left:48px;">
For creating a voucher, we need to specify a product, that means, this voucher will be applicable only
if the customer has selected this product in his order. The minimum and maximum voucher values can be set here.
The expiry date indicates the validity of this voucher.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan">Create and configure coupons and codes.</h3>
<div class="oe_demo oe_screenshot">
<img src="coupon.png">
</div>
<p class="oe_mt32" style="margin-left:48px;">
When we create the coupon, a unique, auto-generated and editable code will be there for each coupon. There are mainly
two types of coupons, fixed and percentage. The fixed type is used to deduct a fixed amount from the order. The
percentage type will deduct a certain percentage of amount from the order.
</p>
<p class="oe_mt32" style="margin-left:48px;">The total number of available coupons
and the number of times one user can use this coupon can be set here. It is also possible to limit this coupon to a single customer,
i.e, only one customer can use this coupon.
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan">Coupon History.</h3>
<div class="oe_demo oe_screenshot">
<img src="history.png">
</div>
<p class="oe_mt32" style="margin-left:48px;">
Under the 'Coupon History' menu, we can see the details of coupons used by all the customers.
</p>
</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="http://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="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;border-radius: 0;"
href="http://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
website_coupon/static/description/voucher.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

46
website_coupon/views/applied_coupons.xml

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="applied_coupons_view" model="ir.ui.view">
<field name="name">applied_coupons_form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='sales_purchases']" position="after">
<page name="coupon_applied" string="Applied Coupons">
<field name="applied_coupon" readonly="1">
<tree>
<field name="partner_id" invisible="1"/>
<field name="coupon"/>
<field name="number"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
<record id="gift_coupon_history_tree" model="ir.ui.view">
<field name="name">Gift Coupon History</field>
<field name="model">partner.coupon</field>
<field name="arch" type="xml">
<tree>
<field name="partner_id" />
<field name="coupon" />
<field name="number" />
</tree>
</field>
</record>
<record id="action_gift_coupon_history" model="ir.actions.act_window">
<field name="name">Gift Coupons History</field>
<field name="res_model">partner.coupon</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_id" ref="gift_coupon_history_tree"/>
<field name="view_mode">tree</field>
</record>
<menuitem name="Coupon History" id="gift_coupon_history" action="action_gift_coupon_history" parent="website_coupon.gift_coupon_main"/>
</data>
</odoo>

121
website_coupon/views/gift_voucher.xml

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="gift_voucher_form" model="ir.ui.view">
<field name="name">Gift Voucher</field>
<field name="model">gift.voucher</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name" />
<field name="product_id" />
<field name="min_value" />
<field name="max_value" />
<field name="expiry_date" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="gift_voucher_tree" model="ir.ui.view">
<field name="name">Gift Voucher</field>
<field name="model">gift.voucher</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="product_id" />
<field name="min_value" />
<field name="max_value" />
<field name="expiry_date" />
</tree>
</field>
</record>
<record id="gift_coupon_form" model="ir.ui.view">
<field name="name">Gift Coupon</field>
<field name="model">gift.coupon</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_title">
<label for="name" string="Name" />
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group>
<field name="code" />
<field name="start_date" />
</group>
<group>
<field name="voucher" />
<field name="end_date" />
</group>
</group>
<group string="Conditions">
<group>
<field name="total_avail" />
</group>
<group>
<field name="partner_id" />
<field name="limit" />
</group>
</group>
<group string="Pricing">
<group>
<field name="voucher_val" />
</group>
<group>
<field name="type" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="gift_coupon_tree" model="ir.ui.view">
<field name="name">Gift Coupon</field>
<field name="model">gift.coupon</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="code" />
<field name="voucher" />
<field name="start_date" />
<field name="end_date" />
<field name="partner_id" />
<field name="total_avail" />
<field name="type" />
</tree>
</field>
</record>
<record id="action_gift_voucher" model="ir.actions.act_window">
<field name="name">Gift Vouchers</field>
<field name="res_model">gift.voucher</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_id" ref="gift_voucher_tree"/>
<field name="view_mode">tree,form</field>
</record>
<record id="action_gift_coupon" model="ir.actions.act_window">
<field name="name">Generate Gift Coupons</field>
<field name="res_model">gift.coupon</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_id" ref="gift_coupon_tree"/>
<field name="view_mode">tree,form</field>
</record>
<menuitem name="Gift Voucher" id="gift_voucher" action="action_gift_voucher" parent="sales_team.menu_sale_config"/>
<menuitem name="Gift Coupons" id="gift_coupon_main" parent="sales_team.menu_base_partner"/>
<menuitem name="Gift Coupon" id="gift_coupon" action="action_gift_coupon" parent="gift_coupon_main"/>
</data>
</odoo>

89
website_coupon/views/templates.xml

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template id="voucher_code" inherit_id="website_sale.cart" active="False" customize_show="True" name="Voucher Code">
<xpath expr="//div[@id='right_column']" position="inside">
<h4>Voucher Code</h4>
<p>
Have a voucher code? Fill this field and apply.
</p>
<t t-if="coupon_not_available">
<p class="bg-warning">This gift code is not available</p>
</t>
<form t-if="website_sale_order and website_sale_order.website_order_line" action="/shop/gift_coupon" method="post" class="mb32">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()" />
<div class="input-group">
<input name="promo_voucher" class="form-control" type="text" placeholder="code..." t-att-value="website_sale_order.pricelist_id.code or None" />
<div class="input-group-btn">
<a class="btn btn-default a-submit">Apply</a>
</div>
</div>
</form>
</xpath>
</template>
<template id="cart_lines_extended" inherit_id="website_sale.cart_lines">
<xpath expr="//table[@id='cart_products']" position="replace">
<table class="table table-striped table-condensed js_cart_lines" id="cart_products" t-if="website_sale_order and website_sale_order.website_order_line">
<thead>
<tr>
<th width="100">Product</th>
<th></th>
<th width="130" class="text-center">Quantity</th>
<th width="100" class="text-center">Price</th>
</tr>
</thead>
<tbody>
<t t-foreach="website_sale_order.website_order_line" t-as="line">
<tr>
<td colspan="2" t-if="not line.product_id.product_tmpl_id"></td>
<td align="center" t-if="line.product_id.product_tmpl_id">
<span t-field="line.product_id.image_small" t-options="{'widget': 'image', 'class': 'img-rounded'}" />
</td>
<td t-if="line.product_id.product_tmpl_id">
<div>
<a t-attf-href="/shop/product/#{ slug(line.product_id.product_tmpl_id) }">
<strong t-esc="line.product_id.with_context(display_default_code=False).display_name" />
</a>
</div>
<div class="text-muted">
<t t-foreach="line.name.splitlines()[1:]" t-as="name_line">
<span><t t-esc="name_line"/></span><br/>
</t>
</div>
<t t-if="line.product_id.display_name != 'Gift Coupon'">
<a href='#' class='js_delete_product no-decoration'> <small><i class='fa fa-trash-o'></i> Remove</small></a>
</t>
</td>
<td class="text-center" id="td-qty">
<t t-if="line.product_id.display_name == 'Gift Coupon'">
<a href='#' class='js_delete_product no-decoration'> <small><i class='fa fa-trash-o'></i> Remove</small></a>
<div class="input-group oe_website_spinner">
<input type="hidden" class="js_quantity form-control" t-att-data-line-id="line.id" t-att-data-product-id="line.product_id.id" t-att-value="int(line.product_uom_qty)" />
</div>
</t>
<t t-if="line.product_id.display_name != 'Gift Coupon'">
<div class="input-group oe_website_spinner">
<a t-attf-href="#" class="mb8 input-group-addon js_add_cart_json" data-no-instant="">
<i class="fa fa-minus"></i>
</a>
<input type="text" class="js_quantity form-control" t-att-data-line-id="line.id" t-att-data-product-id="line.product_id.id" t-att-value="int(line.product_uom_qty)" />
<a t-attf-href="#" class="mb8 input-group-addon float_left js_add_cart_json" data-no-instant="">
<i class="fa fa-plus"></i>
</a>
</div>
</t>
</td>
<td class="text-center" id="td-price" name="price">
<t t-if="(compute_currency(line.product_id.lst_price) - line.price_reduce ) &gt; 0.01 and website.get_current_pricelist().discount_policy=='without_discount'">
<del t-attf-class="#{'text-danger mr8'}" style="white-space: nowrap;" t-esc="compute_currency(line.product_id.website_public_price)" t-options="{'widget': 'monetary', 'display_currency': website.get_current_pricelist().currency_id, 'from_currency': website.currency_id}" />
</t>
<span t-field="line.price_reduce_taxexcl" style="white-space: nowrap;" t-options="{'widget': 'monetary', 'from_currency': website_sale_order.pricelist_id.currency_id, 'display_currency': website.currency_id}" groups="sale.group_show_price_subtotal" />
<span t-field="line.price_reduce_taxinc" style="white-space: nowrap;" t-options="{'widget': 'monetary', 'from_currency': website_sale_order.pricelist_id.currency_id, 'display_currency': website.currency_id}" groups="sale.group_show_price_total" />
</td>
</tr>
</t>
</tbody>
</table>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save