add pos_receipt_design
|
@ -0,0 +1,398 @@
|
|||
SOFTWARE LICENCE AGREEMENT
|
||||
==========================
|
||||
|
||||
This AGREEMENT is made effective on the date of the purchase of the software
|
||||
between Webkul Software Pvt. Ltd.,Company incorporated under the Companies
|
||||
Act, 1956 (hereinafter referred to as “Licensor"), and the purchaser of the
|
||||
software/ product (hereinafter referred to as "Licensee").
|
||||
|
||||
|
||||
Preamble
|
||||
--------
|
||||
|
||||
Licensor is a web and mobile product based organization engaged in the
|
||||
business of developing and marketing software for enterprise level e-commerce
|
||||
businesses. It is an ISO and NSR (NASSCOM) certified organization having a
|
||||
team of more than 150 creative engineers which come from different
|
||||
backgrounds. It has developed more than 700 web extensions and apps in the
|
||||
past few years for open source platforms which are used and trusted globally.
|
||||
Licensee now wishes to obtain license, and Licensor wishes to grant a license,
|
||||
to allow use of the software so purchased in developing the e-commerce
|
||||
business website/ mobile app of the Licensee, subject to the terms and
|
||||
conditions set forth herein.
|
||||
|
||||
THEREFORE, with the intent to be legally bound, the parties hereby agree as
|
||||
follows:
|
||||
|
||||
|
||||
Agreement
|
||||
---------
|
||||
|
||||
1.DEFINITIONS.
|
||||
As used in this Agreement, the following capitalized terms
|
||||
shall have the definitions set forth below:
|
||||
|
||||
"Derivative Works" are works developed by Licensee, its officers, agents,
|
||||
contractors or employees, which are based upon, in whole or in part, the
|
||||
Source Code and/or the Documentation and may also be based upon and/or
|
||||
incorporate one or more other preexisting works of the Licensor. Derivative
|
||||
Works may be any improvement, revision, modification, translation (including
|
||||
compilation or recapitulation by computer), abridgment, condensation,
|
||||
expansion, or any other form in which such a preexisting work may be recast,
|
||||
transformed, or adapted. For purposes hereof, a Derivative Work shall also
|
||||
include any compilation that incorporates such a preexisting work.
|
||||
|
||||
"Documentation" is written, printed or otherwise recorded or stored (digital
|
||||
or paper) material relating to the Software and/or Source Code, including
|
||||
technical specifications and instructions for its use including Software/
|
||||
Source Code annotations and other descriptions of the principles of its
|
||||
operation and instructions for its use.
|
||||
|
||||
"Improvements" shall mean, with respect to the Software, all modifications and
|
||||
changes made, developed, acquired or conceived after the date hereof and
|
||||
during the entire term of this Agreement.
|
||||
|
||||
"Source Code" is the computer programming source code form of the Software in
|
||||
the form maintained by the Licensor, and includes all non-third-party
|
||||
executables, libraries, components, and Documentation created or used in the
|
||||
creation, development, maintenance, and support of the Software as well as all
|
||||
updates, error corrections and revisions thereto provided by Licensor, in
|
||||
whole or in part.
|
||||
|
||||
|
||||
2.SOFTWARE LICENSE.
|
||||
|
||||
(a)Grant of License. For the consideration set forth below, Licensor hereby
|
||||
grants to Licensee, and Licensee hereby accepts the worldwide, non-exclusive,
|
||||
perpetual, royalty-free rights and licenses set forth below:
|
||||
|
||||
(i)The right and license to use and incorporate the software, in whole or in
|
||||
part, to develop its website/ mobile app (including the integration of all or
|
||||
part of the Licensor’s software into Licensee's own software) on one domain (
|
||||
Except Joomla modules , listed on store are entitled to be used on unlimited
|
||||
domain as per the standard guidelines ) only, solely for the own personal or
|
||||
business use of the Licensee. However, the License does not authorize the
|
||||
Licensee to compile, copy or distribute the said Software or its Derivative
|
||||
Works.
|
||||
|
||||
(ii)The right and license does not authorize the Licensee to share any backup
|
||||
or archival copies of the Software and / or the Source Code and Documentation
|
||||
on any public internet space including github , stackoverflow etc . The
|
||||
Licensee must ensure that the backup are not accessible to any other person
|
||||
and the Licensee must prevent copying / use of source code by any unauthorized
|
||||
persons.
|
||||
|
||||
(iii)The right and license does not authorize the Licensee to migrate the
|
||||
domain license to another domain.
|
||||
|
||||
(iv)Our Joomla extensions are published under the GNU/GPL.
|
||||
|
||||
|
||||
(b)Scope; Rights and Responsibilities.
|
||||
|
||||
(i)Licensor shall enable the Licensee to download one complete copy of the
|
||||
Software.
|
||||
|
||||
(ii)The Software is intended for the sole use of the Licensee in development
|
||||
of its own website/ mobile app.
|
||||
|
||||
(iii)Licensee does not have the right to hand over, sell, distribute,
|
||||
sub-license, rent, lease or lend any portion of the Software or Documentation,
|
||||
whether modified or unmodified, to anyone. Licensee should not place the
|
||||
Software on a server so that it becomes accessible via a public network such
|
||||
as the Internet for distribution purposes. In case the Licensee is using any
|
||||
source code management system like github, it can use the code there only when
|
||||
it has paid subscription from such management system.
|
||||
|
||||
(iv) In case the Licensee purchases the module and allow the third party
|
||||
development agency to customize as per its need, it is at liberty to do so
|
||||
subject to the condition that the Licensee as well as the Agency are not
|
||||
authorized to sell the modified version of the extension. Except for the
|
||||
required customization purposes, Licensee is not authorized to release the
|
||||
Source Code, Derivative Work source code and/or Documentation to any third
|
||||
party, which shall be considered as violation of the Agreement, inter-alia
|
||||
entailing forthwith termination and legal action.
|
||||
|
||||
|
||||
(c)Ownership.
|
||||
|
||||
(i)Software and Source Code. All right, title, copyright, and interest in the
|
||||
Software, Source Code, Software Modifications and Error corrections will be
|
||||
and remain the property of Licensor.
|
||||
|
||||
(ii)Derivative Works. As creation of Derivative Works by the Licensee is
|
||||
prohibited, thus, all right, title, copyright, and interest in any and/or all
|
||||
Derivative Works and Improvements created by, or on behalf of, Licensee will
|
||||
also be deemed to the property of Licensor. Licensor shall be entitled to
|
||||
protect copyright / intellectual property in all such Derivative Works and
|
||||
Improvements also in any country as it may deem fit including without
|
||||
limitation seeking copyright and/or patent protection.
|
||||
|
||||
|
||||
3.CONSIDERATION.
|
||||
|
||||
(a)Licensee shall pay to Licensor the amount as mentioned on the website from
|
||||
where the order is placed, as one-time, upfront fees in consideration for the
|
||||
licenses and rights granted hereunder (hereinafter referred to as the "License
|
||||
Fee"). The License Fee to be paid by Licensee shall be paid upfront at the
|
||||
time of placing the order, and no credit will be allowed under any
|
||||
circumstances.
|
||||
|
||||
(b)Once paid, the License Fees shall be non-refundable. The Licensee has fully
|
||||
satisfied itself about the Software and has seen the demonstration, and only
|
||||
thereafter has placed the order. Thus, the License Fees or any part thereof is
|
||||
non-refundable. No claim for refund of the Licence Fees shall be entertained
|
||||
under any circumstances.
|
||||
|
||||
|
||||
4.REPRESENTATIONS AND WARRANTIES.
|
||||
|
||||
(a)Mutual. Each of the parties represents and warrants to the other as
|
||||
follows.
|
||||
|
||||
(i)such party is a legal entity duly organized, validly existing and in good
|
||||
standing;
|
||||
|
||||
(ii)such party has the power and authority to conduct its business as
|
||||
presently conducted and to enter into, execute, deliver and perform this
|
||||
Agreement.
|
||||
|
||||
(iii)This Agreement has been duly and validly accepted by such party and
|
||||
constitutes the legal, valid and binding obligations of such party
|
||||
respectively, enforceable against such party in accordance with their
|
||||
respective terms;
|
||||
|
||||
(iv)the acceptance, execution, delivery and performance of this Agreement does
|
||||
not and will not violate such party's charter or by-laws; nor require any
|
||||
consent, authorization, approval, exemption or other action by any third party
|
||||
or governmental entity.
|
||||
|
||||
|
||||
(b)Licensor warrants that, at the time of purchase of the Software:
|
||||
|
||||
the Software will function materially as set forth in the website or published
|
||||
functionality provided by Licensor to customers and potential customers
|
||||
describing the Software; and
|
||||
|
||||
Software add-ons, if purchased by the Licensee from the Licensor, will not
|
||||
materially diminish the features or functions of or the specifications of the
|
||||
Software as they existed as of the execution of this Agreement.
|
||||
|
||||
|
||||
(c)Title. Licensor represents and warrants that it is the exclusive owner of
|
||||
all copyright/ intellectual property in the Software (including the Source
|
||||
Code) and has good and marketable title to the Software (including the Source
|
||||
Code) free and clear of all liens, claims and encumbrances of any nature
|
||||
whatsoever (collectively, "Liens"). Licensor's grant of license and rights to
|
||||
Licensee hereunder does not, and will not infringe any third party's property,
|
||||
intellectual property or personal rights.
|
||||
|
||||
|
||||
5.TERM.
|
||||
|
||||
(a)Subject to Licensee's payment obligations, this Agreement shall commence as
|
||||
on the date of making payment of the Software by the Licensee to the Licensor,
|
||||
and shall continue until terminated by either party.
|
||||
|
||||
(b)The Licensor retains the right to terminate the license at any time, if the
|
||||
Licensee is not abiding by any of the terms of the Agreement. The Licensee may
|
||||
terminate the Agreement at any time at its own discretion by uninstalling the
|
||||
Software and /or by destroying the said Software (or any copies thereof).
|
||||
However, the Licensee shall not be entitled to seek any refund of the amount
|
||||
paid by it to the Licensor, under any circumstances.
|
||||
|
||||
(c)Survival. In the event this Agreement is terminated for any reason, the
|
||||
provisions set forth in Sections 2(a), 2(b), and 2(c) shall survive.
|
||||
|
||||
|
||||
6.INDEMNIFICATION.
|
||||
|
||||
The Licensee release the Licensor from, and agree to indemnify, defend and
|
||||
hold harmless the Licensor (and its officers, directors, employees, agents and
|
||||
Affiliates) against, any claim, loss, damage, settlement, cost, taxes, expense
|
||||
or other liability (including, without limitation, attorneys' fees) (each, a
|
||||
"Claim") arising from or related to: (a) any actual or alleged breach of any
|
||||
obligations in this Agreement; (b) any refund, adjustment, or return of
|
||||
Software,(c) any claim for actual or alleged infringement of any Intellectual
|
||||
Property Rights made by any third party or damages related thereto; or (d)
|
||||
Taxes.
|
||||
|
||||
|
||||
7.LIMITATION OF LIABILITY.
|
||||
|
||||
The Licensor will not be liable for any direct, indirect, incidental, special,
|
||||
consequential or exemplary damages, including but not limited to, damages for
|
||||
loss of profits, goodwill, use, data or other intangible losses arising out of
|
||||
or in connection with the Software, whether in contract, warranty, tort etc. (
|
||||
including negligence, software liability, any type of civil responsibility or
|
||||
other theory or otherwise) to the Licensee or any other person for cost of
|
||||
software, cover, recovery or recoupment of any investment made by the Licensee
|
||||
or its affiliates in connection with this Agreement, or for any other loss of
|
||||
profit, revenue, business, or data or punitive or consequential damages
|
||||
arising out of or relating to this Agreement. Further, the aggregate liability
|
||||
of the Licensor, arising out of or in connection with this Agreement or the
|
||||
transactions contemplated hereby will not exceed at any time, or under any
|
||||
circumstances, the total amounts received by the Licensor from the Licensee in
|
||||
connection with the particular software giving rise to the claim.
|
||||
|
||||
|
||||
8.FORCE MAJEURE.
|
||||
|
||||
The Licensor will not be liable for any delay or failure to perform any of its
|
||||
obligations under this Agreement by reasons, events or other matters beyond
|
||||
its reasonable control.
|
||||
|
||||
|
||||
9.RELATIONSHIP OF PARTIES.
|
||||
|
||||
The Licensor and Licensee are independent legal entities, and nothing in this
|
||||
Agreement will be construed to create a partnership, joint venture,
|
||||
association of persons, agency, franchise, sales representative, or employment
|
||||
relationship between the parties. The Licensee will have no authority to make
|
||||
or accept any offers or representations on behalf of the Licensor. The
|
||||
relationship between the parties is that of Licensor and Licensee only, and
|
||||
the rights, duties, liabilities of each party shall be governed by this
|
||||
Agreement.
|
||||
|
||||
|
||||
10.MODIFICATION.
|
||||
|
||||
The Licensor may amend any of the terms and conditions contained in this
|
||||
Agreement at any time and solely at its discretion. Any changes will be
|
||||
effective upon the posting of such changes on the Portal/ website, and the
|
||||
Licensee is responsible for reviewing these changes and informing itself of
|
||||
all applicable changes or notices. The continued use of a software by the
|
||||
Licensee after posting of any changes by the Licensor, will constitute the
|
||||
acceptance of such changes or modifications by the Licensee.
|
||||
|
||||
|
||||
11.MISCELLANEOUS.
|
||||
|
||||
(a)General Provisions. This Agreement: (i) may be amended only by a writing
|
||||
signed by each of the parties; (ii) may be executed in several counterparts,
|
||||
each of which shall be deemed an original but all of which shall constitute
|
||||
one and the same instrument; (iii) contains the entire agreement of the
|
||||
parties with respect to the transactions contemplated hereby and supersedes
|
||||
all prior written and oral agreements, and all contemporaneous oral
|
||||
agreements, relating to such transactions; (iv) shall be governed by, and
|
||||
construed and enforced in accordance with, the laws of India; and (v) shall be
|
||||
binding upon, and inure to the benefit of, the parties and their respective
|
||||
successors and permitted assigns. Each of the parties hereby irrevocably
|
||||
submits to the jurisdiction of the Courts at Delhi, India, for the purposes of
|
||||
any action or proceeding arising out of or relating to this Agreement or the
|
||||
subject matter hereof and brought by any other party.
|
||||
|
||||
(b)Assignment. Except for the purpose of customization as mentioned in clause
|
||||
2(b)(iv) above, Licensee cannot assign, pledge or otherwise transfer, whether
|
||||
by operation of law or otherwise, this Agreement, or any of its obligations
|
||||
hereunder, without the prior written consent of Licensor, which consent shall
|
||||
not be unreasonably withheld.
|
||||
|
||||
(c)Notices. Unless otherwise specifically provided herein, all notices,
|
||||
consents, requests, demands and other communications required or permitted
|
||||
hereunder:
|
||||
|
||||
(i)shall be in writing;
|
||||
|
||||
(ii)shall be sent by messenger, certified or registered mail/email, or
|
||||
reliable express delivery service, to the appropriate address(es) set forth
|
||||
below; and
|
||||
|
||||
(iii)shall be deemed to have been given on the date of receipt by the
|
||||
addressee, as evidenced by a receipt executed by the addressee (or a
|
||||
responsible person in his or her office), the records of the Party delivering
|
||||
such communication or a notice to the effect that such addressee refused to
|
||||
claim or accept such communication, if sent by messenger, mail or express
|
||||
delivery service.
|
||||
|
||||
All such communications shall be sent to the following addresses or numbers,
|
||||
or to such other addresses or numbers as any party may inform the others by
|
||||
giving five days' prior notice:
|
||||
|
||||
If to Webkul Software Pvt. Ltd.:
|
||||
|
||||
Webkul Software Pvt. Ltd.
|
||||
A-67, Sector 63, NOIDA – 201301,
|
||||
Uttar Pradesh, India
|
||||
|
||||
If to Licensee:
|
||||
At the address mentioned by the Licensee
|
||||
(at the time of placing order of generating Invoice)
|
||||
|
||||
(d)Severability. It is the intent of the parties that the provisions of this
|
||||
Agreement be enforced to the fullest extent permissible under the laws and
|
||||
public policies of India in which enforcement hereof is sought. In
|
||||
furtherance of the foregoing, each provision hereof shall be severable from
|
||||
each other provision, and any provision hereof which is/ becomes unenforceable
|
||||
shall be subject to the following: (i) if such provision is contrary to or
|
||||
conflicts with any requirement of any statute, rule or regulation in effect,
|
||||
then such requirement shall be incorporated into, or substituted for, such
|
||||
unenforceable provision to the minimum extent necessary to make such provision
|
||||
enforceable; (ii) the court, agency or arbitrator considering the matter is
|
||||
hereby authorized to (or, if such court, agency or arbitrator is unwilling or
|
||||
fails to do so, then the parties shall) amend such provision to the minimum
|
||||
extent necessary to make such provision enforceable, and the parties hereby
|
||||
consent to the entry of an order so amending such provision; and (iii) if
|
||||
any such provision cannot be or is not reformed and made enforceable pursuant
|
||||
to clause (i) or (ii) above, then such provision shall be ineffective to the
|
||||
minimum extent necessary to make the remainder of this Agreement enforceable.
|
||||
Any application of the foregoing provisions to any provision hereof shall not
|
||||
effect the validity or enforceability of any other provision hereof.
|
||||
|
||||
(e)By purchasing the Software, the Licensee acknowledge that it has read this
|
||||
Agreement, and that it agrees to the content of the Agreement, its terms and
|
||||
agree to use the Software in compliance with this Agreement.
|
||||
|
||||
(f)The Licensor holds the sole copyright of the Software. The Software or any
|
||||
portion thereof is a copyrightable matter and is liable to be protected by the
|
||||
applicable laws. Copyright infringement in any manner can lead to prosecution
|
||||
according to the current law. The Licensor reserves the right to revoke the
|
||||
license of any user who is not holding any license or is holding an invalid
|
||||
license.
|
||||
|
||||
(g)This Agreement gives the right to use only one copy of the Software on one
|
||||
domain solely for the own personal or business use of the Licensee, subject to
|
||||
all the terms and conditions of this Agreement. A separate License has to be
|
||||
purchased for each new Software installation. Any distribution of the Software
|
||||
without the written consent of the Licensor (including non-commercial
|
||||
distribution) is regarded as violation of this Agreement, and will entail
|
||||
immediate termination of the Agreement and may invite liability, both civil
|
||||
and criminal, as per applicable laws.
|
||||
|
||||
(h)The Licensor reserves the rights to publish a selected list of users/
|
||||
Licensees of its Software, and no permission of any Licensee is needed in this
|
||||
regard. The Licensee agrees that the Licensor may, in its sole discretion,
|
||||
disclose or make available any information provided or submitted by the
|
||||
Licensee or related to it under this Agreement to any judicial,
|
||||
quasi-judicial, governmental, regulatory or any other authority as may be
|
||||
required by the Licensor to co-operate and / or comply with any of their
|
||||
orders, instructions or directions or to fulfill any requirements under
|
||||
applicable Laws.
|
||||
|
||||
(i)If the Licensee continues to use the Software even after the sending of the
|
||||
notice by the Licensor for termination, the Licensee agree to accept an
|
||||
injunction to restrain itself from its further use, and to pay all costs (
|
||||
including but not limited to reasonable attorney fees) to enforce injunction
|
||||
or to revoke the License, and any damages suffered by the Licensor because of
|
||||
the misuse of the Software by the Licensee.
|
||||
|
||||
|
||||
12.ARBITRATION.
|
||||
|
||||
If any dispute arises between the Licensor and the Licensee at any time, in
|
||||
connection with the validity, interpretation, implementation or alleged breach
|
||||
of any provision of this Agreement, the same shall be referred to a sole
|
||||
Arbitrator who shall be an independent and neutral third party appointed
|
||||
exclusively by the Licensor. The Licensee shall not object to the appointment
|
||||
of the Arbitrator so appointed by the Licensor. The place of arbitration shall
|
||||
be Delhi, India. The Arbitration & Conciliation Act, 1996 as amended by The
|
||||
Arbitration & Conciliation (Amendment) Act, 2015, shall govern the
|
||||
arbitration proceedings. The arbitration proceedings shall be held in the
|
||||
English language.
|
||||
|
||||
|
||||
This document is an electronic record in terms of Information Technology Act,
|
||||
2000 and the amended provisions pertaining to electronic records in various
|
||||
statutes as amended by the Information Technology Act, 2000. This electronic
|
||||
record is generated by a computer system and does not require any physical or
|
||||
digital signatures.
|
|
@ -0,0 +1,18 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#################################################################################
|
||||
#
|
||||
# Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>)
|
||||
# See LICENSE file for full copyright and licensing details.
|
||||
# License URL : <https://store.webkul.com/license.html/>
|
||||
#
|
||||
#################################################################################
|
||||
from . import models
|
||||
|
||||
def pre_init_check(cr):
|
||||
from odoo.service import common
|
||||
from odoo.exceptions import Warning
|
||||
version_info = common.exp_version()
|
||||
server_serie =version_info.get('server_serie')
|
||||
if server_serie!='15.0':
|
||||
raise Warning('Module support Odoo series 15.0 found {}.'.format(server_serie))
|
||||
return True
|
|
@ -0,0 +1,51 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#################################################################################
|
||||
# Author : Webkul Software Pvt. Ltd. (<https://webkul.com/>)
|
||||
# Copyright(c): 2015-Present Webkul Software Pvt. Ltd.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
#
|
||||
#
|
||||
# This program is copyright property of the author mentioned above.
|
||||
# You can`t redistribute it and/or modify it.
|
||||
#
|
||||
#
|
||||
# You should have received a copy of the License along with this program.
|
||||
# If not, see <https://store.webkul.com/license.html/>
|
||||
#################################################################################
|
||||
{
|
||||
"name" : "POS Receipt Design",
|
||||
"summary" : """This module allows to make custom POS Receipt.""",
|
||||
"category" : "Point Of Sale",
|
||||
"version" : "1.0.2",
|
||||
"author" : "Webkul Software Pvt. Ltd.",
|
||||
"license" : "Other proprietary",
|
||||
"website" : "https://store.webkul.com",
|
||||
"description" : """Odoo POS Receipt Design
|
||||
Custom Receipt
|
||||
Design Receipt
|
||||
Custom XML Receipt
|
||||
POS Receipt
|
||||
POS Ticket""",
|
||||
"live_test_url" : "http://odoodemo.webkul.com/?module=pos_receipt_design&custom_url=/pos/auto",
|
||||
"depends" : ['point_of_sale'],
|
||||
"data" : [
|
||||
'security/ir.model.access.csv',
|
||||
'demo/demo.xml',
|
||||
'views/pos_config_view.xml',
|
||||
'views/receipt_design_view.xml',
|
||||
],
|
||||
"assets" : {
|
||||
'point_of_sale.assets': [
|
||||
"/pos_receipt_design/static/src/js/models.js",
|
||||
],
|
||||
},
|
||||
"qweb" : ['static/src/xml/pos.xml'],
|
||||
"images" : ['static/description/Odoo_POS-Receipt-Design_POS-Receipt-Design-Banner.png'],
|
||||
"application" : True,
|
||||
"installable" : True,
|
||||
"auto_install" : False,
|
||||
"price" : 79,
|
||||
"currency" : "USD",
|
||||
"pre_init_hook" : "pre_init_check",
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<!-- Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>) -->
|
||||
<!-- See LICENSE file for full copyright and licensing details. -->
|
||||
<!-- License URL : <https://store.webkul.com/license.html/> -->
|
||||
<odoo noupdate="1">
|
||||
<function
|
||||
model="receipt.design"
|
||||
name="_create_receipt_design_1"/>
|
||||
<function
|
||||
model="receipt.design"
|
||||
name="_create_receipt_design_2"/>
|
||||
<function
|
||||
model="receipt.design"
|
||||
name="_create_receipt_design_3"/>
|
||||
<function
|
||||
model="receipt.design"
|
||||
name="_create_receipt_design_4"/>
|
||||
</odoo>
|
|
@ -0,0 +1,10 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#################################################################################
|
||||
#
|
||||
# Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>)
|
||||
# See LICENSE file for full copyright and licensing details.
|
||||
# License URL : <https://store.webkul.com/license.html/>
|
||||
#
|
||||
#################################################################################
|
||||
from . import pos_config
|
||||
from . import receipt_design
|
|
@ -0,0 +1,17 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#################################################################################
|
||||
#
|
||||
# Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>)
|
||||
# See LICENSE file for full copyright and licensing details.
|
||||
# License URL : <https://store.webkul.com/license.html/>
|
||||
#
|
||||
#################################################################################
|
||||
from odoo import api, fields, models, _
|
||||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class PosConfig(models.Model):
|
||||
_inherit = 'pos.config'
|
||||
|
||||
use_custom_receipt = fields.Boolean(string="Use Custom Receipt")
|
||||
receipt_design_id = fields.Many2one('receipt.design', string="Receipt Design")
|
|
@ -0,0 +1,606 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#################################################################################
|
||||
#
|
||||
# Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>)
|
||||
# See LICENSE file for full copyright and licensing details.
|
||||
# License URL : <https://store.webkul.com/license.html/>
|
||||
#
|
||||
#################################################################################
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
class ReceiptDesign(models.Model):
|
||||
_name = "receipt.design"
|
||||
_rec_name = "name"
|
||||
|
||||
name = fields.Char(string="Name")
|
||||
receipt_design = fields.Text(string='Description', required=True)
|
||||
|
||||
@api.model
|
||||
def _create_receipt_design_1(self):
|
||||
record_data = {}
|
||||
record_data['name'] = "Receipt Design 1"
|
||||
record_data['receipt_design'] = """
|
||||
<div class="pos-receipt">
|
||||
<div style="font-size: 80%; text-align:center;">
|
||||
<div><span t-esc='receipt.date.localestring'/> <span t-esc='receipt.name'/></div>
|
||||
</div>
|
||||
<br/>
|
||||
<t t-if='receipt.company.logo'>
|
||||
<img style="width: 30%;display: block;margin: auto;" t-att-src='receipt.company.logo' alt="Logo"/>
|
||||
<br/>
|
||||
</t>
|
||||
<div style="font-size: 80%; text-align:center;">
|
||||
<t t-if='!receipt.company.logo'>
|
||||
<h2 class="pos-receipt-center-align">
|
||||
<t t-esc='receipt.company.name' />
|
||||
</h2>
|
||||
</t>
|
||||
<t t-if='receipt.company.contact_address'>
|
||||
<div><t t-esc='receipt.company.contact_address' /></div>
|
||||
</t>
|
||||
<t t-if='receipt.company.phone'>
|
||||
<div>Tel:<t t-esc='receipt.company.phone' /></div>
|
||||
</t>
|
||||
<t t-if='receipt.company.website'>
|
||||
<div><t t-esc='receipt.company.website' /></div>
|
||||
</t>
|
||||
<t t-if='receipt.header_html'>
|
||||
<t t-raw='receipt.header_html' />
|
||||
</t>
|
||||
<t t-if='!receipt.header_html and receipt.header'>
|
||||
<div><t t-esc='receipt.header' /></div>
|
||||
</t>
|
||||
<br/>
|
||||
</div>
|
||||
<br />
|
||||
<!-- Orderlines -->
|
||||
<div class='orderlines'>
|
||||
<div style="text-align:center; font-size: 75%; border-top: 1px dashed black;border-bottom: 1px dashed black;padding-top: 5px;padding-bottom: 5px;">
|
||||
<div>Receipt : <span t-esc='receipt.name' /></div>
|
||||
<br/>
|
||||
<div>Date :
|
||||
<t t-if="order.formatted_validation_date">
|
||||
<span t-esc='order.formatted_validation_date' />
|
||||
</t>
|
||||
<t t-else="">
|
||||
<span t-esc='order.validation_date' />
|
||||
</t>
|
||||
</div>
|
||||
<br/>
|
||||
<t t-if='receipt.client'>
|
||||
<div>Client : <t t-esc='receipt.client.name' /></div>
|
||||
<br/>
|
||||
</t>
|
||||
<t t-if='receipt.cashier'>
|
||||
<div class='cashier'>
|
||||
<div>Served by <t t-esc='receipt.cashier' /></div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
<table style="width: 100%;">
|
||||
<tr style="border-bottom: 2px solid black;font-size:15px;">
|
||||
<th style="text-align:left;">Product</th>
|
||||
<th>Qty</th>
|
||||
<th style="text-align: center;">Unit Price</th>
|
||||
<th>Amount</th>
|
||||
</tr>
|
||||
<tr t-foreach="receipt.orderlines" t-as="line" style="border-bottom: 1px solid #ddd;font-size: 16px;font-family: initial;">
|
||||
<td><div style="padding-top: 10px;padding-bottom: 10px;">
|
||||
<span t-esc='line.product_name_wrapped[0]'/>
|
||||
<t t-if='line.discount !== 0'>
|
||||
<h5 style="margin-top: 0%;margin-bottom: 0%;font-size: 12px;color: #848484;">
|
||||
<t t-esc='line.discount' />% Discount
|
||||
</h5>
|
||||
</t>
|
||||
</div>
|
||||
</td>
|
||||
<td style="text-align: center;"><span t-esc="line.quantity"/><span t-if='line.unit_name !== "Units"' t-esc='line.unit_name'/></td>
|
||||
<td style="text-align: center;"><span t-esc="widget.pos.format_currency_no_symbol(line.price)"/></td>
|
||||
<td style="text-align: center;"><span t-esc='widget.pos.format_currency_no_symbol(line.price_display)'/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<!-- Subtotal -->
|
||||
<t t-set='taxincluded' t-value='Math.abs(receipt.subtotal - receipt.total_with_tax) <= 0.000001' />
|
||||
<t t-if='!taxincluded'>
|
||||
<br/>
|
||||
<div style="font-weight: 700;text-align: right; font-size: 20px;border-top: 2px solid;margin-left: 30%; padding-top: 2%;">Subtotal : <span t-esc='widget.pos.format_currency(receipt.subtotal)' class="pos-receipt-right-align"/></div>
|
||||
<t t-foreach='receipt.tax_details' t-as='tax'>
|
||||
<div style="font-weight: 700;text-align: right;">
|
||||
<t t-esc='tax.name' />
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(tax.amount)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
<!-- Total -->
|
||||
<br/>
|
||||
<div style="font-size: 20px;text-align: right;font-weight: 700; border-top: 2px solid;margin-left: 30%;padding-top: 2%;">
|
||||
TOTAL :
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_with_tax)'/>
|
||||
</div>
|
||||
<br/>
|
||||
<!-- Extra Payment Info -->
|
||||
<t t-if='receipt.total_discount'>
|
||||
<div style="font-size: 14px;text-align: right;border-top: 1px solid;margin-left: 30%;padding-top: 2%;">
|
||||
Discounts
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_discount)'/>
|
||||
</div>
|
||||
</t>
|
||||
<br/>
|
||||
<t t-if='taxincluded'>
|
||||
<t t-foreach='receipt.tax_details' t-as='tax'>
|
||||
<div style="font-size: 15px; text-align: right; font-weight: 700; border-top: 1px solid;margin-left: 30%;padding-top: 2%;">
|
||||
<t t-esc='tax.name' />
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(tax.amount)'/>
|
||||
</div>
|
||||
</t>
|
||||
<div style="font-size: 15px; text-align: right; font-weight: 700;">
|
||||
Total Taxes :
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_tax)'/>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
<div style="border-top: 1px dashed black;padding-top: 5%;border-bottom: 1px dashed black;">
|
||||
<!-- Payment Lines -->
|
||||
<t t-foreach='paymentlines' t-as='line'>
|
||||
<div style="font-size: 14px;">
|
||||
<t t-esc='line.name' />
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(line.get_amount())' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<br/>
|
||||
<div class="receipt-change" style="font-size: 14px;">
|
||||
CHANGE
|
||||
<span t-esc='widget.pos.format_currency(receipt.change)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
<div class='before-footer' />
|
||||
<!-- Footer -->
|
||||
<div t-if='receipt.footer_html' class="pos-receipt-center-align" style="font-size: 14px;">
|
||||
<t t-raw='receipt.footer_html'/>
|
||||
</div>
|
||||
<div t-if='!receipt.footer_html and receipt.footer' class="pos-receipt-center-align" style="font-size: 13px;">
|
||||
<br/>
|
||||
<t t-esc='receipt.footer'/>
|
||||
<br/>
|
||||
<br/>
|
||||
</div>
|
||||
<div class='after-footer' style="font-size: 14px;">
|
||||
<t t-foreach='paymentlines' t-as='line'>
|
||||
<t t-if='line.ticket'>
|
||||
<br />
|
||||
<div class="pos-payment-terminal-receipt">
|
||||
<t t-raw='line.ticket'/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</div>
|
||||
<br/>
|
||||
<div style="text-align:center;">
|
||||
Thank You. Please Visit Again !!
|
||||
</div>
|
||||
</div>"""
|
||||
record_id = self.create(record_data)
|
||||
pos_config_id = self.env.ref('point_of_sale.pos_config_main')
|
||||
if record_id and pos_config_id:
|
||||
pos_config_id.use_custom_receipt = True
|
||||
pos_config_id.receipt_design_id = record_id.id
|
||||
|
||||
@api.model
|
||||
def _create_receipt_design_2(self):
|
||||
record_data = {}
|
||||
record_data['name'] = "Receipt Design 2"
|
||||
record_data['receipt_design'] = """
|
||||
<div class="pos-receipt" style="font-family: monospace;">
|
||||
<div class="pos-center-align" style="font-size: 12px;">
|
||||
<t t-if="order.formatted_validation_date">
|
||||
<t t-esc="order.formatted_validation_date"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<t t-esc="order.validation_date"/>
|
||||
</t>
|
||||
<br/><t t-esc="order.name"/></div>
|
||||
<br />
|
||||
<t t-esc="widget.pos.company.name"/><br />
|
||||
<div style="font-size:13px">
|
||||
Phone: <t t-esc="widget.pos.company.phone || ''"/><br />
|
||||
</div>
|
||||
<div style="font-size:13px">
|
||||
User: <t t-esc="widget.pos.cashier ? widget.pos.cashier.name : widget.pos.user.name"/><br />
|
||||
</div>
|
||||
<br />
|
||||
<t t-if="receipt.header">
|
||||
<div style='text-align:center; font-size:13px'>
|
||||
<t t-esc="receipt.header" />
|
||||
</div>
|
||||
<br />
|
||||
</t>
|
||||
<table class='receipt-orderlines' style="font-size:13px;">
|
||||
<colgroup>
|
||||
<col width='45%' />
|
||||
<col width='25%' />
|
||||
<col width='30%' />
|
||||
</colgroup>
|
||||
<tr t-foreach="orderlines" t-as="orderline">
|
||||
<td><div style="padding-top: 5px;padding-bottom: 5px;">
|
||||
<t t-esc="orderline.get_product().display_name"/>
|
||||
<t t-if="orderline.get_discount() > 0">
|
||||
<div style="font-size: 12px;font-style: italic;color: #808080;">
|
||||
<t t-esc="orderline.get_discount()"/>% discount
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</td>
|
||||
<td class="pos-right-align">
|
||||
<div>
|
||||
<t t-esc="orderline.get_quantity_str_with_unit()"/>
|
||||
</div>
|
||||
</td>
|
||||
<td class="pos-right-align">
|
||||
<div>
|
||||
<t t-esc="widget.pos.format_currency(orderline.get_display_price())"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<!-- Subtotal -->
|
||||
<t t-set='taxincluded' t-value='Math.abs(receipt.subtotal - receipt.total_with_tax) <= 0.000001' />
|
||||
<t t-if='!taxincluded'>
|
||||
<br/>
|
||||
<div style="font-weight: 700; font-size: 14px;">Subtotal<span t-esc='widget.pos.format_currency(receipt.subtotal)' class="pos-receipt-right-align"/></div>
|
||||
<t t-foreach='receipt.tax_details' t-as='tax'>
|
||||
<div style="font-weight: 700; font-size: 14px;">
|
||||
<t t-esc='tax.name' />
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(tax.amount)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
<!-- Total -->
|
||||
<br/>
|
||||
<div style="font-weight: 700; font-size: 14px;">
|
||||
TOTAL
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_with_tax)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
<br/><br/>
|
||||
<!-- Payment Lines -->
|
||||
<t t-foreach='paymentlines' t-as='line'>
|
||||
<div style="font-size: 14px;">
|
||||
<t t-esc='line.name' />
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(line.get_amount())' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<br/>
|
||||
<div class="receipt-change" style="font-size: 14px;">
|
||||
CHANGE
|
||||
<span t-esc='widget.pos.format_currency(receipt.change)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
<br/>
|
||||
<!-- Extra Payment Info -->
|
||||
<t t-if='receipt.total_discount'>
|
||||
<div style="font-size: 14px;">
|
||||
Discounts
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_discount)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if='taxincluded'>
|
||||
<t t-foreach='receipt.tax_details' t-as='tax'>
|
||||
<div style="font-size: 14px;">
|
||||
<t t-esc='tax.name' />
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(tax.amount)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<div style="font-size: 14px;">
|
||||
Total Taxes
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_tax)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<div class='before-footer' />
|
||||
<!-- Footer -->
|
||||
<div t-if='receipt.footer_html' style="text-align: center; font-size: 14px;">
|
||||
<t t-raw='receipt.footer_html'/>
|
||||
</div>
|
||||
<div t-if='!receipt.footer_html and receipt.footer' style="text-align: center;font-size: 14px;">
|
||||
<br/>
|
||||
<t t-esc='receipt.footer'/>
|
||||
<br/><br/>
|
||||
</div>
|
||||
<div class='after-footer' style="font-size: 14px;">
|
||||
<t t-foreach='paymentlines' t-as='line'>
|
||||
<t t-if='line.ticket'>
|
||||
<br />
|
||||
<div class="pos-payment-terminal-receipt">
|
||||
<t t-raw='line.ticket'/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</div>
|
||||
<br/><br/>
|
||||
<div style="text-align:center;border-top: 2px dotted black;padding-top: 15px;">
|
||||
<t t-if='receipt.cashier'>
|
||||
<div class='cashier' style="text-align:center;">
|
||||
<div>Served by <t t-esc='receipt.cashier' /></div>
|
||||
</div>
|
||||
</t>
|
||||
<br/>
|
||||
Thank You. Please Visit Again !!
|
||||
</div>
|
||||
</div>"""
|
||||
self.create(record_data)
|
||||
|
||||
@api.model
|
||||
def _create_receipt_design_3(self):
|
||||
record_data = {}
|
||||
record_data['name'] = "Receipt Design 3"
|
||||
record_data['receipt_design'] = """
|
||||
<div class="pos-receipt">
|
||||
<t t-esc="widget.pos.company.name"/><br />
|
||||
<div style="font-size:13px">
|
||||
Phone: <t t-esc="widget.pos.company.phone || ''"/><br />
|
||||
</div>
|
||||
<div style="font-size:13px">
|
||||
User : <t t-esc="widget.pos.cashier ? widget.pos.cashier.name : widget.pos.user.name"/><br />
|
||||
</div>
|
||||
<br/>
|
||||
<div style="font-size:13px">
|
||||
Date :
|
||||
<t t-if="order.formatted_validation_date">
|
||||
<t t-esc="order.formatted_validation_date"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<t t-esc="order.validation_date"/>
|
||||
</t>
|
||||
<br />
|
||||
</div>
|
||||
<div style="font-size:13px">
|
||||
Order : <t t-esc="order.name"/><br />
|
||||
</div>
|
||||
<br />
|
||||
<div style="font-size:13px">
|
||||
Cashier : <t t-esc='receipt.cashier' /><br />
|
||||
</div>
|
||||
<br/>
|
||||
<t t-if="receipt.header">
|
||||
<div style='text-align:center; font-size:13px'>
|
||||
<t t-esc="receipt.header" />
|
||||
</div>
|
||||
<br />
|
||||
</t>
|
||||
<div>
|
||||
<table class='receipt-orderlines' style="font-size:15px; border-style: double;
|
||||
border-left: none;border-right: none;border-bottom: none;width: 100%;">
|
||||
<colgroup>
|
||||
<col width='40%' />
|
||||
<col width='30%' />
|
||||
<col width='30%' />
|
||||
</colgroup>
|
||||
<tr style="border-bottom: 1px dashed black;">
|
||||
<th style="text-align:left;">Product</th>
|
||||
<th style="text-align:center;">Qty</th>
|
||||
<th style="text-align:center;">Amount</th>
|
||||
</tr>
|
||||
<tr t-foreach="orderlines" t-as="orderline">
|
||||
<td style="padding-top: 1%;padding-bottom: 1%;">
|
||||
<t t-esc="orderline.get_product().display_name"/>
|
||||
<t t-if="orderline.get_discount() > 0">
|
||||
<div style="font-size: 12px;font-style: italic;color: #808080;">
|
||||
<t t-esc="orderline.get_discount()"/>% discount
|
||||
</div>
|
||||
</t>
|
||||
</td>
|
||||
<td class="pos-center-align">
|
||||
<t t-esc="orderline.get_quantity_str_with_unit()"/>
|
||||
</td>
|
||||
<td class="pos-center-align">
|
||||
<t t-esc="widget.pos.format_currency(orderline.get_display_price())"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br />
|
||||
<div style="padding-top: 6px;">
|
||||
<!-- Subtotal -->
|
||||
<t t-set='taxincluded' t-value='Math.abs(receipt.subtotal - receipt.total_with_tax) <= 0.000001' />
|
||||
<t t-if='!taxincluded'>
|
||||
<br/>
|
||||
<div style="font-weight: 700; font-size: 14px; border-top:1px dashed;"><span style="margin-left: 40%;">Subtotal : </span><span t-esc='widget.pos.format_currency(receipt.subtotal)' class="pos-receipt-right-align"/></div>
|
||||
<t t-foreach='receipt.tax_details' t-as='tax'>
|
||||
<div style="font-weight: 700; font-size: 14px;">
|
||||
<span style="margin-left: 40%;"><t t-esc='tax.name' /></span>
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(tax.amount)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
<!-- Total -->
|
||||
<br/>
|
||||
<div style="font-weight: 700; font-size: 14px;">
|
||||
<span style="margin-left: 40%;">TOTAL : </span>
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_with_tax)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
<br/><br/>
|
||||
</div>
|
||||
<!-- Payment Lines -->
|
||||
<t t-foreach='paymentlines' t-as='line'>
|
||||
<div style="font-size: 14px;border-top:1px dashed;padding-top: 5px;">
|
||||
<span style="margin-left: 40%;"><t t-esc='line.name' /></span>
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(line.get_amount())' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<br/>
|
||||
<div class="receipt-change" style="font-size: 14px;">
|
||||
<span style="margin-left: 40%;">CHANGE : </span>
|
||||
<span t-esc='widget.pos.format_currency(receipt.change)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
<br/>
|
||||
<!-- Extra Payment Info -->
|
||||
<t t-if='receipt.total_discount'>
|
||||
<div style="font-size: 14px; border-top:1px dashed;padding-top: 5px;">
|
||||
<span style="margin-left: 40%;">Discounts : </span>
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_discount)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if='taxincluded'>
|
||||
<t t-foreach='receipt.tax_details' t-as='tax'>
|
||||
<div style="font-size: 14px;">
|
||||
<span style="margin-left: 40%;"><t t-esc='tax.name' /></span>
|
||||
<span t-esc='widget.pos.format_currency_no_symbol(tax.amount)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<div style="font-size: 14px;">
|
||||
<span style="margin-left: 40%;">Total Taxes : </span>
|
||||
<span t-esc='widget.pos.format_currency(receipt.total_tax)' class="pos-receipt-right-align"/>
|
||||
</div>
|
||||
</t>
|
||||
<div class='before-footer' />
|
||||
<!-- Footer -->
|
||||
<div t-if='receipt.footer_html' style="text-align: center; font-size: 14px;">
|
||||
<t t-raw='receipt.footer_html'/>
|
||||
</div>
|
||||
<div t-if='!receipt.footer_html and receipt.footer' style="text-align: center;font-size: 14px;">
|
||||
<br/>
|
||||
<t t-esc='receipt.footer'/>
|
||||
<br/><br/>
|
||||
</div>
|
||||
<div class='after-footer' style="font-size: 14px;">
|
||||
<t t-foreach='paymentlines' t-as='line'>
|
||||
<t t-if='line.ticket'>
|
||||
<br />
|
||||
<div class="pos-payment-terminal-receipt">
|
||||
<t t-raw='line.ticket'/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</div>
|
||||
<br/><br/>
|
||||
<div>
|
||||
Thank You. Please Visit Again !!
|
||||
</div>
|
||||
</div>"""
|
||||
self.create(record_data)
|
||||
|
||||
@api.model
|
||||
def _create_receipt_design_4(self):
|
||||
record_data = {}
|
||||
record_data['name'] = "Receipt Design 4"
|
||||
record_data['receipt_design'] = """
|
||||
<div class="pos-receipt" style="font-family: 'Inconsolata';">
|
||||
<div class="pos-receipt-order-data" style="font-size: 14px;">
|
||||
<t t-if="order.formatted_validation_date">
|
||||
<t t-esc="order.formatted_validation_date"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<t t-esc="order.validation_date"/>
|
||||
</t>
|
||||
<t t-esc="order.name"/></div>
|
||||
<br />
|
||||
<div class="pos-receipt-contact" style="font-size: 14px; font-family: 'Inconsolata'; text-align:left;">
|
||||
<div style="font-size:15px;">
|
||||
<t t-esc="widget.pos.company.name"/><br />
|
||||
</div>
|
||||
<div>
|
||||
Phone: <t t-esc="widget.pos.company.phone || ''"/><br />
|
||||
</div>
|
||||
<div class='cashier'>
|
||||
User: <t t-esc="widget.pos.cashier ? widget.pos.cashier.name : widget.pos.user.name"/><br />
|
||||
</div>
|
||||
<br />
|
||||
<t t-if="receipt.header">
|
||||
<div style='text-align:center;'>
|
||||
<t t-esc="receipt.header" />
|
||||
</div>
|
||||
<br />
|
||||
</t>
|
||||
</div>
|
||||
<table class='orderlines'>
|
||||
<colgroup>
|
||||
<col width='40%' />
|
||||
<col width='30%' />
|
||||
<col width='30%' />
|
||||
</colgroup>
|
||||
<tr t-foreach="orderlines" t-as="orderline">
|
||||
<td><div style="padding-top: 5px;padding-bottom: 5px;">
|
||||
<t t-esc="orderline.get_product().display_name"/>
|
||||
<t t-if="orderline.get_discount() > 0">
|
||||
<div style="font-size: 12px;font-style: italic;color: #808080;">
|
||||
<t t-esc="orderline.get_discount()"/>% discount
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</td>
|
||||
<td style="text-align:right;">
|
||||
<div>
|
||||
<t t-esc="orderline.get_quantity_str_with_unit()"/>
|
||||
</div>
|
||||
</td>
|
||||
<td style="text-align:right;">
|
||||
<div>
|
||||
<t t-esc="widget.pos.format_currency(orderline.get_display_price())"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<td>Subtotal:</td>
|
||||
<td class="pos-receipt-right-align">
|
||||
<t t-esc="widget.pos.format_currency(order.get_total_without_tax())"/>
|
||||
</td>
|
||||
</tr>
|
||||
<t t-foreach="order.get_tax_details()" t-as="taxdetail">
|
||||
<tr>
|
||||
<td><t t-esc="taxdetail.name" /></td>
|
||||
<td class="pos-receipt-right-align">
|
||||
<t t-esc="widget.pos.format_currency(taxdetail.amount)" />
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
<tr>
|
||||
<t t-if="order.get_total_discount() > 0">
|
||||
<td>Discount:</td>
|
||||
<td class="pos-receipt-right-align">
|
||||
<t t-esc="widget.pos.format_currency(order.get_total_discount())"/>
|
||||
</td>
|
||||
</t>
|
||||
</tr>
|
||||
<tr style="font-size: 20px;margin: 5px;">
|
||||
<td>Total:</td>
|
||||
<td class="pos-receipt-right-align">
|
||||
<t t-esc="widget.pos.format_currency(order.get_total_with_tax())"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
<table style="width: 100%;">
|
||||
<t t-foreach="paymentlines" t-as="line">
|
||||
<tr>
|
||||
<td>
|
||||
<t t-esc="line.name"/>
|
||||
</td>
|
||||
<td class="pos-receipt-right-align">
|
||||
<t t-esc="widget.pos.format_currency(line.get_amount())"/>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
</table>
|
||||
<br />
|
||||
<table style="width: 100%;">
|
||||
<tr><td>Change:</td><td class="pos-receipt-right-align">
|
||||
<t t-esc="widget.pos.format_currency(order.get_change())"/>
|
||||
</td></tr>
|
||||
</table>
|
||||
<t t-if="receipt.footer">
|
||||
<br />
|
||||
<div style='text-align:center'>
|
||||
<t t-esc="receipt.footer" />
|
||||
</div>
|
||||
</t>
|
||||
</div>"""
|
||||
self.create(record_data)
|
|
@ -0,0 +1,3 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_receipt_design_user,receipt.design,model_receipt_design,point_of_sale.group_pos_user,1,0,0,0
|
||||
access_receipt_design_manager,receipt.design,model_receipt_design,point_of_sale.group_pos_manager,1,1,1,1
|
|
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 832 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 334 KiB |
After Width: | Height: | Size: 9.5 KiB |
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 51.3 (57544) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>support/booking-commerce</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="sticky-notes" transform="translate(-291.000000, -4463.000000)">
|
||||
<g id="support" transform="translate(271.000000, 4375.000000)">
|
||||
<g id="Support" transform="translate(0.000000, 67.000000)">
|
||||
<g id="Booking-commerce" transform="translate(20.000000, 21.000000)">
|
||||
<g id="support/booking-commerce">
|
||||
<circle id="Oval" fill="#E9E9E9" cx="30" cy="30" r="30"></circle>
|
||||
<rect id="bg-top-half-f" fill="#777777" fill-rule="nonzero" x="20" y="20" width="21" height="10"></rect>
|
||||
<rect id="bg-bottom-half-f" fill="#6C6C6C" fill-rule="nonzero" x="20" y="30" width="21" height="11"></rect>
|
||||
<path d="M45.991,32 L43.991,29 L44.991,29 L44.991,18.988 C44.9912653,18.1993381 44.6781565,17.442887 44.1205821,16.8851251 C43.5630077,16.3273631 42.8066619,16.014 42.018,16.014 L18.976,16.014 C18.1868184,16.0132036 17.4297016,16.3262152 16.8714781,16.8840635 C16.3132546,17.4419118 15.9997341,18.1988181 16,18.988 L16,20 C16,20.5522847 15.5522847,21 15,21 C14.4477153,21 14,20.5522847 14,20 C14,20 14,19.995 14,19.992 L14,17.836 C13.9999999,16.8182829 14.4044232,15.8422781 15.1242454,15.122831 C15.8440676,14.403384 16.8202831,13.9994694 17.838,14 L43.155,14 C45.2735643,14 46.991,15.7174357 46.991,17.836 L46.991,29 L47.991,29 L45.991,32 Z M40,17 L40,18 L41,18 C42.1045695,18 43,18.8954305 43,20 L43,41 C43,42.1045695 42.1045695,43 41,43 L20,43 C18.8954305,43 18,42.1045695 18,41 L18,20 C18,18.8954305 18.8954305,18 20,18 L21,18 L21,17 L25,17 L25,18 L36,18 L36,17 L40,17 Z M25,20 L20,20 L20,41 L41,41 L41,20 L25,20 Z M17,31.991 L16,31.991 L16,42.034 C15.9997347,42.8226619 16.3128435,43.579113 16.8704179,44.1368749 C17.4279923,44.6946369 18.1843381,45.008 18.973,45.008 L42.017,45.008 C42.8056619,45.008 43.5620077,44.6946369 44.1195821,44.1368749 C44.6771565,43.579113 44.9902653,42.8226619 44.99,42.034 L44.99,41 L45,41 C45,40.4477153 45.4477153,40 46,40 C46.5522847,40 47,40.4477153 47,41 C47,41.016 46.992,41.029 46.991,41.044 L46.991,43.155 C46.991,45.2735643 45.2735643,46.991 43.155,46.991 L17.838,46.991 C16.8204563,46.9915306 15.8443924,46.5877532 15.124599,45.8685224 C14.4048056,45.1492917 14.0002651,44.1735438 14,43.156 L14,31.991 L13,31.991 L15,28.991 L17,31.991 Z" id="black-lines-f" fill="#333333"></path>
|
||||
<path d="M26,37 L30.939,37 C31.9955738,37.0551938 33.0384606,36.7412673 33.889,36.112 C34.5961294,35.5744822 35.0046951,34.7320941 34.989,33.844 C34.9945538,33.1225376 34.7318982,32.4247361 34.252,31.886 C33.7524197,31.3122483 33.0603091,30.9409412 32.306,30.842 C33.906,30.4166667 34.706,29.5313333 34.706,28.186 C34.7245398,27.306405 34.3381985,26.4669974 33.658,25.909 C32.8154629,25.2628981 31.7677136,24.9432457 30.708,25.009 L26,25.009 L26,37 Z M30.531,26.547 C31.0894085,26.5133722 31.6412987,26.6816011 32.086,27.021 C32.4643734,27.3486066 32.670912,27.8321281 32.646,28.332 C32.6715885,28.8288285 32.4646197,29.3092919 32.086,29.632 C31.6390381,29.9662439 31.0881196,30.1313423 30.531,30.098 L28.029,30.098 L28.029,26.548 L30.534,26.548 L30.531,26.547 Z M28.026,31.636 L30.691,31.636 C31.2870862,31.6063307 31.8738053,31.7931432 32.343,32.162 C32.7575602,32.5124261 32.9871066,33.0346257 32.965,33.577 C32.9927286,34.1053167 32.7767734,34.6171968 32.379,34.966 C31.918091,35.322516 31.3437011,35.5001258 30.762,35.466 L28.029,35.466 L28.029,31.637 L28.026,31.636 Z" id="b-f" fill="#FFFFFF"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 743 B |
After Width: | Height: | Size: 224 B |
After Width: | Height: | Size: 361 B |
After Width: | Height: | Size: 315 KiB |
After Width: | Height: | Size: 34 KiB |
|
@ -0,0 +1,333 @@
|
|||
<!-- Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>) -->
|
||||
<!-- See LICENSE file for full copyright and licensing details. -->
|
||||
<!-- License URL : <https://store.webkul.com/license.html/> -->
|
||||
<section class="oe_container" style="padding-left: 2%; padding-right: 2%;">
|
||||
<section class="oe_container" id="wk_header">
|
||||
<div class="mt32 mb32">
|
||||
<h2 class="text-center" style="color:#000">
|
||||
Odoo POS Receipt Design
|
||||
</h2>
|
||||
<h5 class="mt8 mb8 text-center" style="font-weight:500; font-size:18px; color:#484848; font-family:'Montserrat', sans-serif">
|
||||
<i>Design The POS Receipt as You Want!</i>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="row mt16 mb16 py-2 m-1" style="font-weight:500; font-size:18px; color:#484848; font-family:'Montserrat', sans-serif">
|
||||
<div class=" card p-3 container col-md-6 border-right" style="font-weight:500; line-height:24px; font-size:16px; color:#484848; font-family:'Montserrat', sans-serif; vertical-align:middle; display:grid">
|
||||
<p class="text-justify mb4 mt4 mr8">
|
||||
Odoo POS Receipt Design allows you to design the reciepts for your Odoo POS as you want to make it more informative as well as enticing. You can easily simply go to your Odoo backend and add easy XML code to make the receipt design more presentable.
|
||||
</p>
|
||||
</div>
|
||||
<div class="card p-3 container col-md-6 ">
|
||||
<h4 class="ml-md-3">Information</h4>
|
||||
<div class="mt-2 ml-md-3" style="display:flex">
|
||||
<span class="ml-1 mr-2 my-auto"><img src="icon-user-guide.png" alt="user-guide"></span>
|
||||
<div style="font-weight:600; font-size:14px; line-height:10px" class="mt-2">
|
||||
User Guide
|
||||
</div>
|
||||
</div>
|
||||
<div class="ml-md-3" style="display:flex">
|
||||
<span style="font-size:15px; margin-top:0.2rem">https://webkul.com/blog/odoo-pos-receipt-design/</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="shadow-sm mb-5 bg-white rounded" style="background: #FFFFFF;box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.17196);border-radius: 2px;padding: 2%;padding-bottom: 1%;padding-top: 1%;
|
||||
margin-top: 4%;margin-bottom: 4%;">
|
||||
<h3 style="font-family: Montserrat;font-style: normal;font-weight: 600;font-size: 24px;line-height: 37px;color: #333333;">
|
||||
Do you want to enhance the monotonous receipt design?</h3>
|
||||
<p style="font-family: Montserrat;font-style: normal;font-weight: normal;font-size: 16px;line-height: 37px;color: #484848;margin-bottom: 0%;;">
|
||||
Now, do it with some quick and easy steps. It's completely your call to design the receipt of your Odoo POS as you want.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 text-justify">
|
||||
<div>
|
||||
<h3 style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 24px;
|
||||
line-height: 40px;
|
||||
color: #333333;">
|
||||
Customize the design of Receipt as You want</h3>
|
||||
<h3>
|
||||
<div class="mt-4">
|
||||
<p style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 30px;
|
||||
color: #484848;">
|
||||
Receipt is not just a document acknowledging that a person has received money or goods.
|
||||
</p>
|
||||
<p style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 30px;
|
||||
color: #484848;">
|
||||
However, you can design your receipt for promotions of your store as well as.
|
||||
</p>
|
||||
<p style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 30px;
|
||||
color: #484848;">
|
||||
Apart from promotions, it also helps you to build an impression in front of your customers.
|
||||
</p>
|
||||
</div>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-xs-12 " style="text-align: center;">
|
||||
<div>
|
||||
<img class="img-responsive" style="display: inline-block;width: 70%;" src="illustration-1.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<section class="oe_container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-xs-12 " style="text-align: center;">
|
||||
<div>
|
||||
<img class="img-responsive" style="display: inline-block;width: 65%;" src="Illustration-2.png">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 text-justify" style="margin-top: 25px;">
|
||||
<div>
|
||||
<h3 style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 24px;
|
||||
line-height: 40px;
|
||||
color: #333333;">
|
||||
Easy Way to Enhance Receipt Design</h3>
|
||||
<h3>
|
||||
<div class="mt-4">
|
||||
<p style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 27px;
|
||||
color: #484848;">
|
||||
You need to simply navigate in your Odoo backend and add easy XML code to make the receipt design more presentable.
|
||||
</p>
|
||||
<br/>
|
||||
<p style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 27px;
|
||||
color: #484848;">
|
||||
Hence, choose your colors or style it's all up to you. Moreover, you can select unique design for each POS shop.
|
||||
</p>
|
||||
</div>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<br/>
|
||||
|
||||
<section class="oe_container" style="margin-top: 2%;">
|
||||
<h3 style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 24px;
|
||||
line-height: 40px;
|
||||
color: #333333;">What do you get with Odoo POS Receipt Design?
|
||||
</h3>
|
||||
<div style="padding: 1%;">
|
||||
<div class="row">
|
||||
<div class="col-lg-4" style="padding: 1%;">
|
||||
<div class="shadow-sm mb-5 bg-white rounded" style="height: 140px;">
|
||||
<div style="padding-bottom: 8%;padding-left: 7%;padding-top: 6%;">
|
||||
<a><img src="icon-1 (1).png"></a>
|
||||
</div>
|
||||
<div style="padding: 5%;padding-top: 0%;">
|
||||
<span style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
line-height: 22px;
|
||||
color: #333333;">Design POS receipt as you want</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4" style="padding: 1%;">
|
||||
<div class="shadow-sm mb-5 bg-white rounded" style="height: 140px;">
|
||||
<div style="padding-bottom: 8%;padding-left: 7%;padding-top: 6%;">
|
||||
<a><img src="Icon-2.png"></a>
|
||||
</div>
|
||||
<div style="padding: 5%;padding-top: 1%;">
|
||||
<span style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
line-height: 22px;
|
||||
color: #333333;">Add the XML code for the design</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4" style="padding: 1%;">
|
||||
<div class="shadow-sm mb-5 bg-white rounded" style="height: 140px;">
|
||||
<div style="padding-bottom: 8%;padding-left: 7%;padding-top: 6%;">
|
||||
<a><img src="Icon-3 (1).png"></a>
|
||||
</div>
|
||||
<div style="padding-left: 5%;padding-right: 2%;">
|
||||
<span style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
line-height: 22px;
|
||||
color: #333333;">Set Unique Receipt design for each POS Shop</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container mp_tabs">
|
||||
<div id="my-tab-content" class="tab-content">
|
||||
<div class="" id="odoo_nexmo_view_tab1">
|
||||
<section class="shadow-sm mb-5 bg-white rounded oe_container mb-4 mt-4" style="background: #FFFFFF;box-shadow: 0 4px 8px 3px rgba(0,0,0,0.09);">
|
||||
<div class="oe_container">
|
||||
<div class="panel panel-primary" id="wkid0">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title" style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
line-height: 22px;
|
||||
text-align: center;
|
||||
color: #333333;
|
||||
padding-top: 1%;">Design Receipt with XML Code in Odoo Backend</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="padding: 1%; font-size: 18px;color: #484848;text-align: center;">
|
||||
<a href="receipt_screen1.png">
|
||||
<img class="img-border img-responsive thumbnail img-fluid" style="border: 1px solid #E0E0E0;" src="receipt_screen1.png">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class=" shadow-sm mb-5 bg-white rounded oe_container mb-4 mt-4"style="background: #FFFFFF;box-shadow: 0 4px 8px 3px rgba(0,0,0,0.09);">
|
||||
<div class="oe_container">
|
||||
<div class="panel panel-primary" id="wkid0">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title" style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
line-height: 22px;
|
||||
text-align: center;
|
||||
color: #333333;
|
||||
padding-top: 1%;">Select Receipt design for Odoo POS</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="padding: 1%; font-size: 18px;color: #484848;text-align: center;">
|
||||
<a href="receipt_screen2.png">
|
||||
<img class="img-border img-responsive thumbnail img-fluid" style="border: 1px solid #E0E0E0;" src="receipt_screen2.png">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="shadow-sm mb-5 bg-white rounded oe_container mb-4 mt-4" style="background: #FFFFFF;box-shadow: 0 4px 8px 3px rgba(0,0,0,0.09);">
|
||||
<div class="oe_container">
|
||||
<div class="panel panel-primary" id="wkid0">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title" style="font-family: Montserrat;
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
line-height: 22px;
|
||||
text-align: center;
|
||||
color: #333333;
|
||||
padding-top: 1%;">Freshly Designed Odoo POS Receipt</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="padding: 1%; font-size: 18px;color: #484848;text-align: center;">
|
||||
<div class="row">
|
||||
<div style="width:215px;float:left; padding:5px;margin:3px;margin-left: 5%;">
|
||||
<a href="receipt_1.jpg">
|
||||
<img src="receipt_1.jpg" alt="receipt 1" style="width:215px;float:left;background:#ededed; padding:5px;margin:3px;border:1px solid #c8c8c8">
|
||||
</a>
|
||||
</div>
|
||||
<div style="width:215px;float:left; padding:5px;margin:3px">
|
||||
<a href="receipt_2.jpg">
|
||||
<img src="receipt_2.jpg" alt="receipt 2" style="width:215px;float:left;background:#ededed; padding:5px;margin:3px;border:1px solid #c8c8c8">
|
||||
</a>
|
||||
</div>
|
||||
<div style="width:215px;float:left;padding:5px;margin:3px">
|
||||
<a href="receipt_3.jpg">
|
||||
<img src="receipt_3.jpg" alt="receipt 3" style="width:215px;float:left;background:#ededed; padding:5px;margin:3px;border:1px solid #c8c8c8">
|
||||
</a>
|
||||
</div>
|
||||
<div style="width:215px;float:left; padding:5px;margin:3px">
|
||||
<a href="receipt_4.jpg">
|
||||
<img src="receipt_4.jpg" alt="receipt 4" style="width:215px;float:left;background:#ededed; padding:5px;margin:3px;border:1px solid #c8c8c8">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="pt32" id="webkul_support">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h2 class="text-center">Help and Support</h2>
|
||||
<p class="mb-2 text-center" style="font-size:16px; color:#333; font-weight:400">Get Immediate support for any of your query</p>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<p class="text-center px-5" style="font-size:14px; color:#555; font-weight:normal">You will get 90 days free support for any doubt, queries, and bug fixing (excluding data recovery) or any type of issue related to this module.</p>
|
||||
</div>
|
||||
<div class="mx-auto col-lg-9 mb-4 oe_screenshot">
|
||||
<div class="row align-items-center justify-content-center mx-0 p-3">
|
||||
<div class="col-sm-2 text-center pr-0">
|
||||
<img src="mail.png" alt="mail" class="img img-fluid">
|
||||
</div>
|
||||
<div class="col-xl-7 col-sm-10">
|
||||
<p class="my-2" style="color:#555; font-weight:bold">Write a mail to us:</p>
|
||||
<b class="text-primary" style="font-size:18px">support@webkul.com</b>
|
||||
<p class="my-2" style="font-size:14px; color:#777; font-weight:normal">Any queries or want any extra features? Just drop a mail to our support.</p>
|
||||
</div>
|
||||
<div class="col-xl-3 offset-xl-0 float-xl-right col-sm-10 offset-sm-2 float-left mt16">
|
||||
<a href="mailto:support@webkul.com" style="padding:10px 22px; background-color:#2335D7; font-size:14px; color:#fff"><i class="fa fa-pencil-square-o" style="color:white; margin-right:4px"></i>Write To US</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mx-auto col-lg-9 oe_screenshot">
|
||||
<div class="row align-items-center justify-content-center mx-0 p-3">
|
||||
<div class="col-sm-2 text-center pr-0">
|
||||
<img src="support-icon.png" alt="support-icon" class="img img-fluid">
|
||||
</div>
|
||||
<div class="col-sm-10 ">
|
||||
<p class="my-2" style="font-weight:bold; color:#555">Get in touch with our Expert:</p>
|
||||
<b class="text-primary text-break" style="font-size:18px">https://webkul.uvdesk.com/en/customer/create-ticket/</b>
|
||||
<p class="my-2" style="font-weight:normal; font-size:14px; color:#777">Have any technical queries, want extra features, or anything else? Our team is here to answer all your questions. Just Raise A Support Ticket.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<br/>
|
||||
<section class="oe_container">
|
||||
<div class="span12">
|
||||
<!-- Piwik Image Tracker-->
|
||||
<img src="http://odooimg.webkul.com/analytics/piwik/piwik.php?idsite=3&rec=1&action_name=POS-RECEIPT-DESIGN&url=https://apps.openerp.com/apps/modules/14.0/pos_receipt_design&uid=pos_receipt_design" style="border:0" alt="">
|
||||
<!-- End Piwik -->
|
||||
</div>
|
||||
<section>
|
||||
</section>
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 51.3 (57544) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>support/uvdesk</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="sticky-notes" transform="translate(-291.000000, -4577.000000)">
|
||||
<g id="support" transform="translate(271.000000, 4375.000000)">
|
||||
<g id="Support" transform="translate(0.000000, 67.000000)">
|
||||
<g id="UVdesk" transform="translate(20.000000, 135.000000)">
|
||||
<g id="support/uvdesk">
|
||||
<circle id="Oval" fill="#E9E9E9" cx="30" cy="30" r="30"></circle>
|
||||
<g id="uvdesk" transform="translate(16.000000, 14.000000)" fill="#575757">
|
||||
<path d="M28.98,16.663 L28.98,16.44 C28.9741496,16.2310148 29.1142521,16.046013 29.317,15.995 L30.666,15.995 C30.886,15.995 31.003,16.073 31.003,16.218 L31.003,16.663 L28.98,16.663 Z M27.291,20.663 L25.618,20.663 L25.618,12.007 L27.291,12.007 C27.5590971,11.9698078 27.8294423,12.0576284 28.0245013,12.2452752 C28.2195603,12.4329219 28.3177832,12.6996639 28.291,12.969 L28.291,19.705 C28.3177832,19.9743361 28.2195603,20.2410781 28.0245013,20.4287248 C27.8294423,20.6163716 27.5590971,20.7041922 27.291,20.667 L27.291,20.663 Z M6.4,21.333 C5.55516536,21.3504938 4.76691072,20.9097876 4.33936257,20.1809157 C3.91181441,19.4520438 3.91181441,18.5489562 4.33936257,17.8200843 C4.76691072,17.0912124 5.55516536,16.6505062 6.4,16.668 C7.24483464,16.6505062 8.03308928,17.0912124 8.46063743,17.8200843 C8.88818559,18.5489562 8.88818559,19.4520438 8.46063743,20.1809157 C8.03308928,20.9097876 7.24483464,21.3504938 6.4,21.333 Z M22.473,14.349 C19.2569328,16.5704071 15.0970234,16.8978568 11.573,15.207 C10.2502614,14.6098427 9.04965321,13.7727058 8.032,12.738 C6.58967546,14.501886 4.54173171,15.664907 2.288,16 L2.288,19.52 C2.29784571,22.3188499 3.35443341,25.0127562 5.25,27.072 C6.33244248,28.2485896 7.66520977,29.1671739 9.15,29.76 L8.5,32 C6.60081885,31.2946599 4.91078793,30.1206164 3.587,28.587 C1.30225519,26.0624102 0.0255828499,22.7858433 6.66133815e-16,19.381 L6.66133815e-16,14.9 L0,12.16 C0.101266362,5.40153198 5.61879957,-0.0188270327 12.378,6.6610671e-16 C19.0177713,0.00846272136 24.4909491,5.20929946 24.838,11.84 C24.8569585,12.1597192 24.8569585,12.4802808 24.838,12.8 L22.473,14.349 Z M15.5,27.326 C16.2403525,27.3271042 16.8397352,27.9279784 16.8389993,28.6683313 C16.8382635,29.4086843 16.2376876,30.0083659 15.4973343,30.0079983 C14.7569811,30.0076308 14.1570008,29.4073533 14.157,28.667 C14.1572651,28.3110794 14.2989083,27.9698418 14.5507697,27.7183555 C14.8026311,27.4668692 15.1440794,27.3257347 15.5,27.326 Z M18.532,16.668 C19.8168525,16.6834216 20.8473569,17.7348736 20.8369229,19.0197763 C20.826489,20.304679 19.7790451,21.3392571 18.4941116,21.333811 C17.2091781,21.3283649 16.1705418,20.284945 16.171,19 C16.1744383,18.3780643 16.4248036,17.7829685 16.8670165,17.3456316 C17.3092294,16.9082947 17.9070645,16.6645426 18.529,16.668 L18.532,16.668 Z M29.032,17.335 L31,17.335 C31.383,26.919 20.8,29.435 17.517,29.328 C17.657156,29.0278906 17.657156,28.6811094 17.517,28.381 C30.633,27.774 29.031,17.335 29.031,17.335 L29.032,17.335 Z" id="Logo-Icon"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
|
@ -0,0 +1,122 @@
|
|||
/* Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>) */
|
||||
/* See LICENSE file for full copyright and licensing details. */
|
||||
/* License URL : <https://store.webkul.com/license.html/> */
|
||||
|
||||
odoo.define('wk_pos_invoice_offline.models', function (require) {
|
||||
"use strict"
|
||||
var models = require('point_of_sale.models');
|
||||
var PosDB = require("point_of_sale.DB");
|
||||
const Registries = require('point_of_sale.Registries');
|
||||
const OrderReceipt = require('point_of_sale.OrderReceipt');
|
||||
const AbstractReceiptScreen = require('point_of_sale.AbstractReceiptScreen');
|
||||
const { nextFrame } = require('point_of_sale.utils');
|
||||
|
||||
models.load_models([{
|
||||
model: 'receipt.design',
|
||||
loaded: function(self, designs) {
|
||||
self.db.all_designs = designs;
|
||||
self.db.receipt_by_id = {};
|
||||
designs.forEach(function(design){
|
||||
self.db.receipt_by_id[design.id] = design;
|
||||
});
|
||||
},
|
||||
}])
|
||||
|
||||
PosDB.include({
|
||||
init: function(options){
|
||||
var self = this;
|
||||
this._super(options);
|
||||
this.receipt_design = null;
|
||||
},
|
||||
})
|
||||
|
||||
// Inherit AbstractReceiptScreen
|
||||
const PosResAbstractReceiptScreen = (AbstractReceiptScreen) =>
|
||||
class extends AbstractReceiptScreen{
|
||||
async _printReceipt() {
|
||||
var self = this;
|
||||
if(!self.env.pos.config.use_custom_receipt){
|
||||
var data = super._printReceipt();
|
||||
return data
|
||||
} else {
|
||||
if (self.env.pos.proxy.printer) {
|
||||
var receipt_design_id = self.env.pos.config.receipt_design_id[0]
|
||||
var receipt_design = self.env.pos.db.receipt_by_id[receipt_design_id].receipt_design
|
||||
var order = self.env.pos.get_order();
|
||||
|
||||
var data = { widget: self.env,
|
||||
pos: order.pos,
|
||||
order: order,
|
||||
receipt: order.export_for_printing(),
|
||||
orderlines: order.get_orderlines(),
|
||||
paymentlines: order.get_paymentlines(), };
|
||||
|
||||
var parser = new DOMParser();
|
||||
var xmlDoc = parser.parseFromString(receipt_design,"text/xml");
|
||||
|
||||
var s = new XMLSerializer();
|
||||
var newXmlStr = s.serializeToString(xmlDoc);
|
||||
|
||||
//Works using the DOMParser
|
||||
var qweb = new QWeb2.Engine();
|
||||
qweb.add_template('<templates><t t-name="receipt_design">'+newXmlStr+'</t></templates>');
|
||||
|
||||
var receipt = qweb.render('receipt_design',data);
|
||||
|
||||
const printResult = await self.env.pos.proxy.printer.print_receipt(receipt);
|
||||
if (printResult.successful) {
|
||||
return true;
|
||||
} else {
|
||||
const { confirmed } = await self.showPopup('ConfirmPopup', {
|
||||
title: printResult.message.title,
|
||||
body: 'Do you want to print using the web printer?',
|
||||
});
|
||||
if (confirmed) {
|
||||
await nextFrame();
|
||||
return await self._printWeb();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return await self._printWeb();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Registries.Component.extend(AbstractReceiptScreen, PosResAbstractReceiptScreen);
|
||||
|
||||
// Inherit OrderReceipt
|
||||
const PosResOrderReceipt = (OrderReceipt) =>
|
||||
class extends OrderReceipt{
|
||||
mounted(){
|
||||
var self = this;
|
||||
super.mounted();
|
||||
if(self.env.pos.config.use_custom_receipt){
|
||||
var receipt_design_id = self.env.pos.config.receipt_design_id[0]
|
||||
var receipt_design = self.env.pos.db.receipt_by_id[receipt_design_id].receipt_design
|
||||
var order = self._receiptEnv.order;
|
||||
|
||||
var data = { widget: self.env,
|
||||
pos: order.pos,
|
||||
order: order,
|
||||
receipt: order.export_for_printing(),
|
||||
orderlines: order.get_orderlines(),
|
||||
paymentlines: order.get_paymentlines(), };
|
||||
|
||||
var parser = new DOMParser();
|
||||
var xmlDoc = parser.parseFromString(receipt_design,"text/xml");
|
||||
|
||||
var s = new XMLSerializer();
|
||||
var newXmlStr = s.serializeToString(xmlDoc);
|
||||
|
||||
//Works using the DOMParser
|
||||
var qweb = new QWeb2.Engine();
|
||||
qweb.add_template('<templates><t t-name="receipt_design">'+newXmlStr+'</t></templates>');
|
||||
|
||||
var receipt = qweb.render('receipt_design',data) ;
|
||||
$('div.pos-receipt').replaceWith(receipt);
|
||||
}
|
||||
}
|
||||
}
|
||||
Registries.Component.extend(OrderReceipt, PosResOrderReceipt);
|
||||
});
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>) -->
|
||||
<!-- See LICENSE file for full copyright and licensing details. -->
|
||||
<!-- License URL : <https://store.webkul.com/license.html/> -->
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="pos_config_view_receipt_design_form_inherit" model="ir.ui.view">
|
||||
<field name="name">pos.config.form</field>
|
||||
<field name="model">pos.config</field>
|
||||
<field name="inherit_id" ref="point_of_sale.pos_config_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='iface_invoicing']" position="after">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="use_custom_receipt"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="use_custom_receipt"/>
|
||||
<div class="text-muted">
|
||||
Use Custom Receipt
|
||||
</div>
|
||||
<div class="content-group mt16" attrs="{'invisible': [('use_custom_receipt', '=', False)]}">
|
||||
<field name="receipt_design_id" attrs="{'required': [('use_custom_receipt', '=', True)]}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2016-Present Webkul Software Pvt. Ltd. (<https://webkul.com/>) -->
|
||||
<!-- See LICENSE file for full copyright and licensing details. -->
|
||||
<!-- License URL : <https://store.webkul.com/license.html/> -->
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="receipt_design_form_view" model="ir.ui.view">
|
||||
<field name="name">Receipt Design</field>
|
||||
<field name="model">receipt.design</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string='Receipt Design'>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name='receipt_design' widget="ace" options="{'mode': 'xml'}" string="Receipt XML"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="receipt_design_tree_view" model="ir.ui.view">
|
||||
<field name="name">Receipt Design</field>
|
||||
<field name="model">receipt.design</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string='Receipt Design'>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="receipt_design_action_window" model="ir.actions.act_window">
|
||||
<field name="name">Receipt Designs</field>
|
||||
<field name="res_model">receipt.design</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="pos_receipt_design.receipt_design_tree_view"/>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_receipt_design" parent="point_of_sale.menu_point_config_product" action="pos_receipt_design.receipt_design_action_window"/>
|
||||
</data>
|
||||
</odoo>
|