[MERGE] trunk
bzr revid: sle@openerp.com-20140219092216-39qp9v5uixh6jmju
This commit is contained in:
commit
e671171ed8
|
@ -8,19 +8,19 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2010-09-29 11:28+0000\n"
|
||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
||||
"PO-Revision-Date: 2014-02-18 16:35+0000\n"
|
||||
"Last-Translator: Boško Stojaković <bluesoft83@gmail.com>\n"
|
||||
"Language-Team: Bosnian <bs@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-01-28 06:28+0000\n"
|
||||
"X-Generator: Launchpad (build 16914)\n"
|
||||
"X-Launchpad-Export-Date: 2014-02-19 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 16916)\n"
|
||||
|
||||
#. module: account_cancel
|
||||
#: view:account.invoice:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Otkaži"
|
||||
|
||||
#~ msgid "Account Cancel"
|
||||
#~ msgstr "Računovodstvo - povrat"
|
||||
|
|
|
@ -0,0 +1,94 @@
|
|||
# Finnish translation for openobject-addons
|
||||
# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2014-02-18 20:10+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Finnish <fi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-02-19 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 16916)\n"
|
||||
|
||||
#. module: event_sale
|
||||
#: model:ir.model,name:event_sale.model_product_product
|
||||
msgid "Product"
|
||||
msgstr "Tuote"
|
||||
|
||||
#. module: event_sale
|
||||
#: help:product.product,event_ok:0
|
||||
msgid ""
|
||||
"Determine if a product needs to create automatically an event registration "
|
||||
"at the confirmation of a sales order line."
|
||||
msgstr ""
|
||||
|
||||
#. module: event_sale
|
||||
#: help:sale.order.line,event_id:0
|
||||
msgid ""
|
||||
"Choose an event and it will automatically create a registration for this "
|
||||
"event."
|
||||
msgstr ""
|
||||
"Valitse tapahtuma ja se luo automaattisesti rekisteröinnin kyseiseen "
|
||||
"tapahtumaan."
|
||||
|
||||
#. module: event_sale
|
||||
#: model:event.event,name:event_sale.event_technical_training
|
||||
msgid "Technical training in Grand-Rosiere"
|
||||
msgstr ""
|
||||
|
||||
#. module: event_sale
|
||||
#: help:product.product,event_type_id:0
|
||||
msgid ""
|
||||
"Select event types so when we use this product in sales order lines, it will "
|
||||
"filter events of this type only."
|
||||
msgstr ""
|
||||
"Valitse tapahtumatyypit, joiden avulla myyntitilausrivillä voidaan suodattaa "
|
||||
"vain tämän tyyppiset tapahtumat."
|
||||
|
||||
#. module: event_sale
|
||||
#: field:product.product,event_type_id:0
|
||||
msgid "Type of Event"
|
||||
msgstr "Tapahtumatyyppi"
|
||||
|
||||
#. module: event_sale
|
||||
#: field:sale.order.line,event_ok:0
|
||||
msgid "event_ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: event_sale
|
||||
#: field:product.product,event_ok:0
|
||||
msgid "Event Subscription"
|
||||
msgstr "Tapahtumaan rekisteröityminen"
|
||||
|
||||
#. module: event_sale
|
||||
#: field:sale.order.line,event_type_id:0
|
||||
msgid "Event Type"
|
||||
msgstr "Tapahtumatyyppi"
|
||||
|
||||
#. module: event_sale
|
||||
#: model:product.template,name:event_sale.event_product_product_template
|
||||
msgid "Technical Training"
|
||||
msgstr "Tekninen koulutus"
|
||||
|
||||
#. module: event_sale
|
||||
#: code:addons/event_sale/event_sale.py:88
|
||||
#, python-format
|
||||
msgid "The registration %s has been created from the Sales Order %s."
|
||||
msgstr "Rekisteröinti %s on luotu myyntitilaukselta %s."
|
||||
|
||||
#. module: event_sale
|
||||
#: field:sale.order.line,event_id:0
|
||||
msgid "Event"
|
||||
msgstr "Tapahtuma"
|
||||
|
||||
#. module: event_sale
|
||||
#: model:ir.model,name:event_sale.model_sale_order_line
|
||||
msgid "Sales Order Line"
|
||||
msgstr "Myyntitilausrivi"
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
import logging
|
||||
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp import tools
|
||||
from openerp.modules.module import get_module_resource
|
||||
from openerp.osv import fields, osv
|
||||
|
@ -248,27 +249,46 @@ class hr_employee(osv.osv):
|
|||
'color': 0,
|
||||
}
|
||||
|
||||
def create(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
create_ctx = dict(context, mail_create_nolog=True)
|
||||
employee_id = super(hr_employee, self).create(cr, uid, data, context=create_ctx)
|
||||
def _broadcast_welcome(self, cr, uid, employee_id, context=None):
|
||||
""" Broadcast the welcome message to all users in the employee company. """
|
||||
employee = self.browse(cr, uid, employee_id, context=context)
|
||||
partner_ids = []
|
||||
_model, group_id = self.pool['ir.model.data'].get_object_reference(cr, uid, 'base', 'group_user')
|
||||
if employee.user_id:
|
||||
res_users = self.pool['res.users']
|
||||
# send a copy to every user of the company
|
||||
# TODO: post to the `Whole Company` mail.group when we'll be able to link to the employee record
|
||||
_model, group_id = self.pool['ir.model.data'].get_object_reference(cr, uid, 'base', 'group_user')
|
||||
user_ids = res_users.search(cr, uid, [('company_id', '=', employee.user_id.company_id.id),
|
||||
('groups_id', 'in', group_id)])
|
||||
partner_ids = list(set(u.partner_id.id for u in res_users.browse(cr, uid, user_ids, context=context)))
|
||||
company_id = employee.user_id.company_id.id
|
||||
elif employee.company_id:
|
||||
company_id = employee.company_id.id
|
||||
elif employee.job_id:
|
||||
company_id = employee.job_id.company_id.id
|
||||
elif employee.department_id:
|
||||
company_id = employee.department_id.company_id.id
|
||||
else:
|
||||
partner_ids = []
|
||||
self.message_post(cr, uid, [employee_id],
|
||||
company_id = self.pool['res.company']._company_default_get(cr, uid, 'hr.employee', context=context)
|
||||
res_users = self.pool['res.users']
|
||||
user_ids = res_users.search(
|
||||
cr, SUPERUSER_ID, [
|
||||
('company_id', '=', company_id),
|
||||
('groups_id', 'in', group_id)
|
||||
], context=context)
|
||||
partner_ids = list(set(u.partner_id.id for u in res_users.browse(cr, SUPERUSER_ID, user_ids, context=context)))
|
||||
self.message_post(
|
||||
cr, uid, [employee_id],
|
||||
body=_('Welcome to %s! Please help him/her take the first steps with OpenERP!') % (employee.name),
|
||||
partner_ids=partner_ids,
|
||||
subtype='mail.mt_comment', context=context
|
||||
)
|
||||
return True
|
||||
|
||||
def create(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if context.get("mail_broadcast"):
|
||||
context['mail_create_nolog'] = True
|
||||
|
||||
employee_id = super(hr_employee, self).create(cr, uid, data, context=context)
|
||||
|
||||
if context.get("mail_broadcast"):
|
||||
self._broadcast_welcome(cr, uid, employee_id, context=context)
|
||||
return employee_id
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -453,6 +453,7 @@ class hr_applicant(osv.Model):
|
|||
contact_name = self.pool.get('res.partner').name_get(cr, uid, [applicant.partner_id.id])[0][1]
|
||||
if applicant.job_id and (applicant.partner_name or contact_name):
|
||||
applicant.job_id.write({'no_of_hired_employee': applicant.job_id.no_of_hired_employee + 1}, context=context)
|
||||
create_ctx = dict(context, mail_broadcast=True)
|
||||
emp_id = hr_employee.create(cr, uid, {'name': applicant.partner_name or contact_name,
|
||||
'job_id': applicant.job_id.id,
|
||||
'address_home_id': address_id,
|
||||
|
@ -460,7 +461,7 @@ class hr_applicant(osv.Model):
|
|||
'address_id': applicant.company_id and applicant.company_id.partner_id and applicant.company_id.partner_id.id or False,
|
||||
'work_email': applicant.department_id and applicant.department_id.company_id and applicant.department_id.company_id.email or False,
|
||||
'work_phone': applicant.department_id and applicant.department_id.company_id and applicant.department_id.company_id.phone or False,
|
||||
})
|
||||
}, context=create_ctx)
|
||||
self.write(cr, uid, [applicant.id], {'emp_id': emp_id}, context=context)
|
||||
self.pool['hr.job'].message_post(
|
||||
cr, uid, [applicant.job_id.id],
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
|
@ -0,0 +1,548 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1600px"
|
||||
height="1200px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="posbox_doc_schema.svg"
|
||||
inkscape:export-filename="/home/fva/Code/openerp/posbox_doc_schema.png"
|
||||
inkscape:export-xdpi="67.5"
|
||||
inkscape:export-ydpi="67.5">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<marker
|
||||
inkscape:stockid="DotL"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="DotL"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path6730"
|
||||
d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
|
||||
transform="scale(0.8) translate(7.4, 1)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="DotM"
|
||||
orient="auto"
|
||||
refY="0.0"
|
||||
refX="0.0"
|
||||
id="DotM"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path6733"
|
||||
d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
|
||||
transform="scale(0.4) translate(7.4, 1)" />
|
||||
</marker>
|
||||
<pattern
|
||||
inkscape:collect="always"
|
||||
xlink:href="#Strips1_3"
|
||||
id="pattern6512"
|
||||
patternTransform="matrix(1.4070053,-1.4070053,10.196067,10.196067,0,0)" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:3"
|
||||
id="Strips1_3"
|
||||
patternTransform="translate(0,0) scale(10,10)"
|
||||
height="1"
|
||||
width="4"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4622"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.45254834"
|
||||
inkscape:cx="679.01909"
|
||||
inkscape:cy="813.9637"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-units="px"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="991"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g7313">
|
||||
<g
|
||||
transform="translate(0,35.355339)"
|
||||
id="g6566">
|
||||
<g
|
||||
id="g6514"
|
||||
transform="translate(-10.9375,-57.8125)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6489"
|
||||
d="m 905,179.59375 -34.8125,31.34375 -118.78125,0 c -5.54,0 -10,4.46 -10,10 l 0,102.5 -157.5,0 c -16.62,0 -30,13.38 -30,30 l 0,632.3125 -27.4375,24.9375 33.25,44.2813 c 0.10609,0.1442 0.2039,0.2952 0.3125,0.4374 l 2.125,2.8126 0.21875,-0.125 c 5.44486,5.6076 13.06148,9.0937 21.53125,9.0937 l 463.43755,0 c 16.6199,0 30,-13.38 30,-30 l 0,-683.75 c 0,-10.90688 -5.7475,-20.40588 -14.4063,-25.65625 l -41.125,-31 -27.3125,26.65625 -45.28125,0 0,-102.5 c 0,-2.89877 -1.22955,-5.48931 -3.1875,-7.3125 l 0.25,-0.375 L 905,179.59375 z"
|
||||
style="opacity:0.25;fill:url(#pattern6512);fill-opacity:1;stroke:none" />
|
||||
<g
|
||||
transform="translate(-2.2097087,75.130096)"
|
||||
id="g3823">
|
||||
<g
|
||||
id="g3847">
|
||||
<rect
|
||||
ry="5.274591"
|
||||
y="106.16312"
|
||||
x="711.8349"
|
||||
height="151.06096"
|
||||
width="194.27489"
|
||||
id="rect3843"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:8.48901749;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
rx="5.274591" />
|
||||
<rect
|
||||
rx="5.274591"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3845"
|
||||
width="175.41872"
|
||||
height="151.06096"
|
||||
x="721.263"
|
||||
y="106.16312"
|
||||
ry="5.274591" />
|
||||
</g>
|
||||
<rect
|
||||
rx="5.274591"
|
||||
ry="5.274591"
|
||||
y="869.83844"
|
||||
x="746.01172"
|
||||
height="110.99157"
|
||||
width="131.81378"
|
||||
id="rect3765"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:8.48901749;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:8.48901749;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect6618"
|
||||
width="125.18465"
|
||||
height="53.539146"
|
||||
x="938.25635"
|
||||
y="571.52777"
|
||||
ry="5.274591"
|
||||
rx="5.274591" />
|
||||
<rect
|
||||
rx="34.723557"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:8;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect2993"
|
||||
width="509.11688"
|
||||
height="730.677"
|
||||
x="525.61603"
|
||||
y="217.12157"
|
||||
ry="34.723557" />
|
||||
<rect
|
||||
rx="21.787001"
|
||||
ry="21.787001"
|
||||
y="235.37366"
|
||||
x="543.0672"
|
||||
height="694.12708"
|
||||
width="474.21454"
|
||||
id="rect3763"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.99425566;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:1.99425554;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3767"
|
||||
width="160.64433"
|
||||
height="9.1270761"
|
||||
x="562.84052"
|
||||
y="740.37366"
|
||||
rx="5.3000002"
|
||||
ry="5.3000002" />
|
||||
<rect
|
||||
ry="5.3000002"
|
||||
rx="5.2999997"
|
||||
y="667.30597"
|
||||
x="828.00549"
|
||||
height="9.1270761"
|
||||
width="73.434502"
|
||||
id="rect3769"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.99399996;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<rect
|
||||
ry="5.3000002"
|
||||
rx="5.3000002"
|
||||
y="313.75256"
|
||||
x="693.65527"
|
||||
height="9.1270761"
|
||||
width="160.64433"
|
||||
id="rect3771"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.99425554;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<g
|
||||
id="g3783">
|
||||
<rect
|
||||
ry="5.3000002"
|
||||
rx="5.3000002"
|
||||
y="245.39903"
|
||||
x="962.35583"
|
||||
height="271.93509"
|
||||
width="43.971706"
|
||||
id="rect3773"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.99425554;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<rect
|
||||
ry="5.3000002"
|
||||
rx="5.3000002"
|
||||
y="374.20874"
|
||||
x="952.03491"
|
||||
height="7.0710678"
|
||||
width="21.213203"
|
||||
id="rect3775"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="rect3777"
|
||||
width="21.213203"
|
||||
height="7.0710678"
|
||||
x="992.86823"
|
||||
y="373.3754"
|
||||
rx="5.3000002"
|
||||
ry="5.3000002" />
|
||||
<rect
|
||||
transform="matrix(0,-1,1,0,0,0)"
|
||||
ry="5.3000002"
|
||||
rx="5.3000002"
|
||||
y="981.60596"
|
||||
x="-260.01752"
|
||||
height="7.0710678"
|
||||
width="21.213203"
|
||||
id="rect3779"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="rect3781"
|
||||
width="21.213203"
|
||||
height="7.0710678"
|
||||
x="-526.6842"
|
||||
y="981.60596"
|
||||
rx="5.3000002"
|
||||
ry="5.3000002"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
</g>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 958.1875,822.25 c -9.01707,3.59482 -15.375,12.41301 -15.375,22.71875 0,13.50563 10.93187,24.46875 24.4375,24.46875 13.50563,0 24.46875,-10.96312 24.46875,-24.46875 0,-10.17788 -6.2141,-18.91637 -15.0625,-22.59375 l 0,8.8125 c 4.63325,2.9517 7.6875,8.02222 7.6875,13.78125 0,9.11223 -7.65608,16.5 -17.09375,16.5 -9.43767,0 -17.0625,-7.38777 -17.0625,-16.5 0,-5.88681 3.20248,-11.04837 8,-13.96875 l 0,-8.75 z"
|
||||
id="path3792" />
|
||||
<g
|
||||
id="g3818"
|
||||
transform="translate(0,-1.767767)">
|
||||
<rect
|
||||
ry="5.3000002"
|
||||
rx="5.2999992"
|
||||
y="879.66095"
|
||||
x="943.13324"
|
||||
height="8.7558908"
|
||||
width="46.827415"
|
||||
id="rect3794"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.99399996;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:1.99399996;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3798"
|
||||
width="46.827415"
|
||||
height="8.7558908"
|
||||
x="943.13324"
|
||||
y="895.68982"
|
||||
rx="5.2999992"
|
||||
ry="5.3000002" />
|
||||
<rect
|
||||
ry="5.3000002"
|
||||
rx="5.2999992"
|
||||
y="910.22754"
|
||||
x="943.13324"
|
||||
height="8.7558908"
|
||||
width="46.827415"
|
||||
id="rect3800"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.99399996;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
</g>
|
||||
<rect
|
||||
ry="5.3000002"
|
||||
rx="5.2999992"
|
||||
y="963.05292"
|
||||
x="-845.58075"
|
||||
height="8.7558908"
|
||||
width="32.390652"
|
||||
id="rect3812"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.99400008;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g6559"
|
||||
transform="translate(0,-7.7339804)">
|
||||
<path
|
||||
transform="matrix(1,0,0,0.85333333,0,117.03125)"
|
||||
d="m 1119.5313,856.64062 c 0,5.82488 -4.1974,10.54688 -9.375,10.54688 -5.1777,0 -9.375,-4.722 -9.375,-10.54688 0,-5.82487 4.1973,-10.54687 9.375,-10.54687 5.1776,0 9.375,4.722 9.375,10.54687 z"
|
||||
sodipodi:ry="10.546875"
|
||||
sodipodi:rx="9.375"
|
||||
sodipodi:cy="856.64062"
|
||||
sodipodi:cx="1110.1562"
|
||||
id="path6539"
|
||||
style="fill:#00fd28;fill-opacity:1;stroke:#000000;stroke-width:2.16506362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ff0d0d;fill-opacity:1;stroke:#000000;stroke-width:2.16506362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path6541"
|
||||
sodipodi:cx="1110.1562"
|
||||
sodipodi:cy="856.64062"
|
||||
sodipodi:rx="9.375"
|
||||
sodipodi:ry="10.546875"
|
||||
d="m 1119.5313,856.64062 c 0,5.82488 -4.1974,10.54688 -9.375,10.54688 -5.1777,0 -9.375,-4.722 -9.375,-10.54688 0,-5.82487 4.1973,-10.54687 9.375,-10.54687 5.1776,0 9.375,4.722 9.375,10.54687 z"
|
||||
transform="matrix(1,0,0,0.85333333,0,141.44531)" />
|
||||
<path
|
||||
transform="matrix(1,0,0,0.85333333,0,165.85937)"
|
||||
d="m 1119.5313,856.64062 c 0,5.82488 -4.1974,10.54688 -9.375,10.54688 -5.1777,0 -9.375,-4.722 -9.375,-10.54688 0,-5.82487 4.1973,-10.54687 9.375,-10.54687 5.1776,0 9.375,4.722 9.375,10.54687 z"
|
||||
sodipodi:ry="10.546875"
|
||||
sodipodi:rx="9.375"
|
||||
sodipodi:cy="856.64062"
|
||||
sodipodi:cx="1110.1562"
|
||||
id="path6543"
|
||||
style="fill:#00fd28;fill-opacity:1;stroke:#000000;stroke-width:2.16506362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#00fd28;fill-opacity:1;stroke:#000000;stroke-width:2.16506362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path6545"
|
||||
sodipodi:cx="1110.1562"
|
||||
sodipodi:cy="856.64062"
|
||||
sodipodi:rx="9.375"
|
||||
sodipodi:ry="10.546875"
|
||||
d="m 1119.5313,856.64062 c 0,5.82488 -4.1974,10.54688 -9.375,10.54688 -5.1777,0 -9.375,-4.722 -9.375,-10.54688 0,-5.82487 4.1973,-10.54687 9.375,-10.54687 5.1776,0 9.375,4.722 9.375,10.54687 z"
|
||||
transform="matrix(1,0,0,0.85333333,0,190.27344)" />
|
||||
<path
|
||||
transform="matrix(1,0,0,0.85333333,0,214.6875)"
|
||||
d="m 1119.5313,856.64062 c 0,5.82488 -4.1974,10.54688 -9.375,10.54688 -5.1777,0 -9.375,-4.722 -9.375,-10.54688 0,-5.82487 4.1973,-10.54687 9.375,-10.54687 5.1776,0 9.375,4.722 9.375,10.54687 z"
|
||||
sodipodi:ry="10.546875"
|
||||
sodipodi:rx="9.375"
|
||||
sodipodi:cy="856.64062"
|
||||
sodipodi:cx="1110.1562"
|
||||
id="path6547"
|
||||
style="fill:#fff90d;fill-opacity:1;stroke:#000000;stroke-width:2.16506362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text6598"
|
||||
y="178.8759"
|
||||
x="514.01447"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans"
|
||||
y="178.8759"
|
||||
x="514.01447"
|
||||
id="tspan6600"
|
||||
sodipodi:role="line">2A Power</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="724.2699"
|
||||
y="127.21583"
|
||||
id="text6602"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6604"
|
||||
x="724.2699"
|
||||
y="127.21583"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans">SD Card</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text6606"
|
||||
y="626.60999"
|
||||
x="319.89322"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans"
|
||||
y="626.60999"
|
||||
x="319.89322"
|
||||
id="tspan6608"
|
||||
sodipodi:role="line">HDMI</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="761.83496"
|
||||
y="1097.278"
|
||||
id="text6610"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6612"
|
||||
x="761.83496"
|
||||
y="1097.278"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans">USB</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text6614"
|
||||
y="1097.278"
|
||||
x="596.10681"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans"
|
||||
y="1097.278"
|
||||
x="596.10681"
|
||||
id="tspan6616"
|
||||
sodipodi:role="line">RJ45</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="1135.8894"
|
||||
y="660.90717"
|
||||
id="text6620"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6622"
|
||||
x="1135.8894"
|
||||
y="660.90717"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans">Composite</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text6624"
|
||||
y="774.18842"
|
||||
x="1135.8894"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans"
|
||||
y="774.18842"
|
||||
x="1135.8894"
|
||||
id="tspan6626"
|
||||
sodipodi:role="line">Audio</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="1135.8894"
|
||||
y="774.18842"
|
||||
id="text6628"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6630"
|
||||
x="1135.8894"
|
||||
y="774.18842"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans">Audio</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text6632"
|
||||
y="891.37592"
|
||||
x="1212.4519"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans"
|
||||
y="891.37592"
|
||||
x="1212.4519"
|
||||
id="tspan6634"
|
||||
sodipodi:role="line">Ready</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="1212.4519"
|
||||
y="940.45667"
|
||||
id="text6636"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6638"
|
||||
x="1212.4519"
|
||||
y="940.45667"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans">Power</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text6640"
|
||||
y="986.97278"
|
||||
x="1212.4519"
|
||||
style="font-size:36.98903275px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Droid Sans;-inkscape-font-specification:Droid Sans"
|
||||
y="986.97278"
|
||||
x="1212.4519"
|
||||
id="tspan6642"
|
||||
sodipodi:role="line">Network</tspan></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6663"
|
||||
d="m 437.5,614.15728 54.6875,0"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)"
|
||||
d="m 601.86625,199.79103 0,54.6875"
|
||||
id="path7295"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7297"
|
||||
d="m 1113.1075,650.87603 -54.6875,0"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)"
|
||||
d="m 1113.1075,761.81353 -76.5625,0"
|
||||
id="path7299"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)"
|
||||
d="m 1192.657,876.26632 -54.6875,0"
|
||||
id="path7301"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7303"
|
||||
d="m 1192.657,927.08963 -54.6875,-27.62136"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)"
|
||||
d="m 1192.657,974.04593 -54.6875,0"
|
||||
id="path7305"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path7307"
|
||||
d="m 1192.657,974.04593 -54.6875,-24.85922"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)"
|
||||
d="m 1192.657,974.04593 -54.6875,-49.16602"
|
||||
id="path7309"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL)"
|
||||
d="m 630.03792,1053.883 0,-32.0313"
|
||||
id="path7311"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 24 KiB |
|
@ -0,0 +1,395 @@
|
|||
====================
|
||||
PosBox Documentation
|
||||
====================
|
||||
|
||||
Posbox Setup Guide
|
||||
==================
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Before you start setting up your PosPox make sure you have everything.
|
||||
You will need :
|
||||
|
||||
- The PosBox
|
||||
- A 2A Power adapter
|
||||
- A computer or tablet with an up to date Firefox, Chrome or Safari web
|
||||
browser (we recommend Chrome)
|
||||
- A running SaaS or V8.0 OpenERP Instance with the Point of Sale
|
||||
Installed.
|
||||
- A local network set up with DHCP ( this is the default setting )
|
||||
- A RJ45 Ethrnet Cable
|
||||
- An Epson USB TM-T20 Printer or another compatible printer.
|
||||
- A Honewell Voyager USB Barcode Scanner or another compatible scanner.
|
||||
- An Epson compatible cash drawer.
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
.. image:: _images/posbox_doc_schema.png
|
||||
:width: 100%
|
||||
:align: center
|
||||
|
||||
1) Power the PosBox.
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Plug the PosBox to the 2A Power Adapter, a bright red status led should
|
||||
light up.
|
||||
|
||||
2) Connect it to the Local Network
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Connect the PosBox to the Local Network with the RJ45 Cable. Make sure
|
||||
You connect the PosBox to the same Network as your POS device. Once
|
||||
connected a bright yellow status led should light up, and a green status
|
||||
led should flash.
|
||||
|
||||
3) Connect the USB Printer
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Put a paper roll in the printer, power it up, then connect it to one of
|
||||
the PosBox's USB port
|
||||
|
||||
4) Connect the cash drawer
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The cash drawer should be connected to the printer with the RJ25 cable
|
||||
|
||||
5) Connect the USB Barcode Scanner
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Connect the usb barcode scanner to one of the PosBox's USB port. The
|
||||
Barcode Scanner should immediately light up and emit a loud beep.
|
||||
|
||||
6) Configure the USB Barcode Scanner
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The barcode scanner should be configured in QWERTY and emit a new line /
|
||||
return symbol after each scan. This is most likely the default
|
||||
configuration of your barcode scanner.
|
||||
|
||||
7) Make sure the PosBox is ready
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Once powered, The PosBox needs less than a minute to boot. Once the
|
||||
PosBox is ready, it should print a status receipt with its IP Adress.
|
||||
Also, the last status led, just after the red power status led, should
|
||||
be permanently lit green.
|
||||
|
||||
8) Set up the Point of Sale
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Make sure to activate the 'Print via Proxy', 'Remote Scanning' or
|
||||
'Cashdrawer' options in the Point of Sale configuration. If you are
|
||||
using firefox, you must manually specify the PosBox's IP address which
|
||||
was printed on the status receipt.
|
||||
|
||||
If you are running multiple Point of Sales on the same PosBox, make sure
|
||||
that only one of them has Remote Scanning activated.
|
||||
|
||||
9) Launch the Point of Sale.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you didn't spcecify the PosBox's IP address in the config, the POS
|
||||
will need some time to perform a network scan to find the PosBox. This
|
||||
is only done once.
|
||||
|
||||
The Point of Sale is now connected to the PosBox and your Hardware
|
||||
should be ready to use.
|
||||
|
||||
PosBoxless Setup Guide
|
||||
======================
|
||||
|
||||
If you are running your Point of Sale on a debian-based linux
|
||||
distribution, you do not need the PosBox as you can run its software
|
||||
locally. However the installation process is not foolproof. You'll need
|
||||
at least to know how to install and run openerp. You may also run into
|
||||
issues specific to your distribution or to your particular setup and
|
||||
hardware configuration.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
- A debian based linux distribution (Debian, Ubuntu, Mint, etc.)
|
||||
- A running trunk version of the OpenERP server
|
||||
- You must uninstall any esc-pos printer driver as it will conflict
|
||||
with OpenERP's built-in driver.
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
1) Extra dependencies
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The driver modules requires the installation of new python modules:
|
||||
|
||||
::
|
||||
|
||||
$ sudo pip install pyserial
|
||||
$ sudo pip install --pre pyusb
|
||||
|
||||
2) Database Setup
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
You must create a database called ``posbox`` with the modules
|
||||
``hw_proxy``, ``hw_escpos``, and ``hw_scanner`` installed.
|
||||
|
||||
3) Access Rights
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
The drivers need raw access to the printer and barcode scanner devices.
|
||||
Doing so requires a bit system administration. First we are going to
|
||||
create a group that has haccess to usb devices:
|
||||
|
||||
::
|
||||
|
||||
$ sudo groupadd usbusers
|
||||
|
||||
Then we add the user who will run the OpenERP server to ``usbusers``
|
||||
|
||||
::
|
||||
|
||||
$ sudo useradd -G usbusers USERNAME
|
||||
|
||||
Then we need to create a udev rule that will automatically allow members
|
||||
of ``usbusers`` to access raw usb devices. To do so create a file called
|
||||
``99-usbusers.rule`` in the ``/etc/udev/rules.d/`` directory with the
|
||||
following content:
|
||||
|
||||
::
|
||||
|
||||
SUBSYSTEM=="usb", GROUP="usbusers", MODE="0660"
|
||||
SUBSYSTEMS=="usb", GROUP="usbusers", MODE="0660"
|
||||
|
||||
Then you need to reboot your machine.
|
||||
|
||||
4) Start the local OpenERP Installl
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
We must launch the OpenERP server on the port ``8069`` with the correct
|
||||
database settings:
|
||||
|
||||
::
|
||||
|
||||
$ ./server/openerp-server --addons-path=addons,web/addons --db-filter='^posbox$' \
|
||||
--xmlrpc-port=8069 -d posbox
|
||||
|
||||
5) Check that everything works
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Plug all your hardware to your machine's USB ports, and go to
|
||||
``http://localhost/hw_proxy/status`` refresh the page a few times and
|
||||
see if all your devices are indicated as *Connected*. Possible source of
|
||||
errors are: The paths on the distribution differ from the paths expected
|
||||
by the drivers, another process has grabbed exclusive access to the
|
||||
devices, the udev rules do not apply or a superceeded by others.
|
||||
|
||||
5) Automatically Start OpenERP
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You must now make sure that this OpenERP install is automatically
|
||||
started after boot. There are various ways to do so, and how to do it
|
||||
depends on your particular setup. We use *systemd* on the PosBox, but
|
||||
*upstart* or *sysvinit* are other options.
|
||||
|
||||
6) Set up the Point of Sale
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Make sure that one of the posbox Make sure the IP Adress field in the
|
||||
POS Config is either ``127.0.0.1`` or ``localhost`` or simply leave it
|
||||
empty.
|
||||
|
||||
PosBox Technical Documentation
|
||||
==============================
|
||||
|
||||
Technical Overview
|
||||
------------------
|
||||
|
||||
The PosBox Hardware
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The PosBox's Hardware is based on a model B Raspberry Pi, a popular
|
||||
open-source micro-computer. The Raspberry Pi is powered with a 2A
|
||||
micro-usb power adapter. 2A is needed to give enough power to the
|
||||
barcode scanners. And we recommend Samsung power adapters for their
|
||||
availability and reliability ( but beware of counterfeits ). The
|
||||
Raspberry is protected by a ModMyPi Raspberry Pi Case. The Software is
|
||||
installed on a 8Gb Class 10 or Higher SD Card. The SD Card's class is
|
||||
important to ensure good performances. All this hardware is easily
|
||||
available worldwide from independant vendors.
|
||||
|
||||
Compatible Peripherals
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Printers:
|
||||
|
||||
- Epson TM-T20
|
||||
- Support for Other Esc-Pos compatible printers can be easily added
|
||||
on a case-by-case basis, please see the *Unsupported Printers*
|
||||
chapter of this manual.
|
||||
|
||||
- Barcode Scannners:
|
||||
|
||||
- Metapace S61
|
||||
- Honeywell Voyager 95x0 Series.
|
||||
- Most other barcode scanners should work out of the box. Some
|
||||
barcode scanners need more power than the PosBox can provide and
|
||||
must be plugged in a self-powered USB HUB. This is the case for
|
||||
Datalogic Barcode Scanners.
|
||||
|
||||
- Cash Drawers:
|
||||
|
||||
- As the cash drawers are connected to the printer, All Epson
|
||||
compatible cash drawers should work out of the Box.
|
||||
|
||||
The PosBox Software
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The PosBox runs a Raspbian Linux distribution, a Debian derivative
|
||||
optimized for the Raspberry Pi. It also runs a barebones install of
|
||||
OpenERP which provides the webserver and the drivers. The printer &
|
||||
scanner drivers are implemented as openerp modules. Those modules are
|
||||
named ``hw_proxy``, ``hw_escpos``, ``hw_scanner`` and are the only
|
||||
modules installed and running. OpenERP is only used for the framework it
|
||||
provides. No business data is processed or stored on the PosBox. The
|
||||
OpenERP install is a full bazaar clone of the ``trunk`` branch, and can
|
||||
thus be updated trough the usual means.
|
||||
|
||||
We use systemd to manage the Openerp server. Systemd makes sure OpenERP
|
||||
starts up at boot and is always up and running. Its systemd unit file is
|
||||
called ``openerp.service``, and can be found in
|
||||
``/etc/systemd/system/openerp.service``. The systemd version used is
|
||||
quite old and thus ``journalctl`` is not available. All logs can be
|
||||
found in instead ``/var/logs/syslog``
|
||||
|
||||
We removed all graphical software from the default install to reduce to
|
||||
image size but nothing prevents you from reinstalling them.
|
||||
|
||||
Local Access
|
||||
~~~~~~~~~~~~
|
||||
|
||||
If you plug a QWERTY USB keyboard into one of the PosBox's USB ports,
|
||||
and if you connect a computer monitor to the *HDMI* port of the PosBox,
|
||||
you can use it as a small UNIX computer and perform various
|
||||
administration tasks.
|
||||
|
||||
Once the PosBox is ready press ``ALT-F2`` to access the login prompt.
|
||||
The login is ``pi`` and the password ``admin``. The OpenERP install is
|
||||
in the ``~/openerp`` directory along with a few scripts to help with
|
||||
debugging and administration.
|
||||
|
||||
Remote Access
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
If you have the PosBox's IP address and a SSH client you can access the
|
||||
PosBox's system remotely. The login / password are ``pi``/``admin``
|
||||
|
||||
Unsupported Printers
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The PosBox should be able to print to any ESC-POS printer, not just the
|
||||
Epson TM-T20. If You have such a printer, you can activate it with the
|
||||
following steps:
|
||||
|
||||
- Get local or remote access to the PosBox.
|
||||
- Plug in your printer
|
||||
- type ``lsusb`` in a prompt
|
||||
- Find your printer in the list of connected USB devices
|
||||
- Find your printer's vendor id: It consists of two hexadecimal numbers
|
||||
separated by a colon.
|
||||
- Edit ``~/openerp/addons/hw_escpos/escpos/supported_devices.py`` and
|
||||
add an entry for your printer.
|
||||
- Restar The PosBox.
|
||||
- If everything works properly you can send your printer's name and
|
||||
vendor ID to ``support@openerp.com`` and we'll add it to the list of
|
||||
supported devices.
|
||||
|
||||
Updating The PosBox Software
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The best way to update the PosBox software is to download a new version
|
||||
of the image and flash the SD-Card with it. This operation is described
|
||||
in details on the following tutorial
|
||||
``http://elinux.org/RPi_Easy_SD_Card_Setup``, just replace the standard
|
||||
raspberry pi image to the latest one found at
|
||||
``http://nightly.openerp.com/trunk/posbox/``
|
||||
|
||||
Troubleshoot
|
||||
------------
|
||||
|
||||
The POS cannot connect to the PosBox.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- The easiest way to make sure the PosBox is properly set-up is to turn
|
||||
it on with the printer plugged in as it will print a receipt
|
||||
indicating any error if encountered or the PosBox's IP adress in case
|
||||
of success. If no receipt is printed, check the following steps:
|
||||
- Make sure the PosBox is powered on, indicated by a brightly lid red
|
||||
status LED.
|
||||
- Make sure the PosBox is ready, this is indicated by a brightly lid
|
||||
green status LED just above the red power status LED. The PosBox
|
||||
should be ready one minute after it is powered on.
|
||||
- Make sure the PosBox is connected to the Network. This is indicated
|
||||
by a brightly lid yellow status LED.
|
||||
- Make sure the PosBox is connected to the same network as your POS
|
||||
device. Both the device and the posbox should be visible in the list
|
||||
of connected devices on your network router.
|
||||
- Make sure that your LAN is set up with DHCP, and gives ip Address in
|
||||
the range 192.168.0.X, 192.168.1.X, 10.0.0.X. If you cannot setup
|
||||
your LAN that way, you must manually set up your PosBox's ip-address.
|
||||
See the relevant paragraph in the Setup chapter of this documentation
|
||||
- If you have specified the PosBox's IP address in the config, make
|
||||
sure it correspond to the printed on the PosBox's status receipt.
|
||||
- Make sure that the POS is not loaded over HTTPS.
|
||||
- A bug in Firefox's HTTP implementation prevents the autodiscovery
|
||||
from working reliably. When using Firefox you should manually set up
|
||||
the PosBox's ip address in the POS config.
|
||||
|
||||
The Barcode Scanner is not working
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- The PosBox needs a 2A power supply to work with some barcode
|
||||
scanners. If you are not using the provided power supply, make sure
|
||||
the one you use has enough power.
|
||||
- Some barcode scanners will need more than 2A and will not work, or
|
||||
will work unreliably, even with the provided power supply. In those
|
||||
case you can plug the barcode scanner in a self-powered USB Hub.
|
||||
- Some poorly built barcode scanners do not advertise themselves as
|
||||
barcode scanners but as a usb keyboard instead, and will not be
|
||||
recognized by the PosBox.
|
||||
|
||||
The Barcode Scanner is not working reliably
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Make sure that no more than one device with 'Scan via Proxy' enabled
|
||||
are connected to the PosBox at the same time.
|
||||
|
||||
Printing the receipt takes too much time.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- A small delay before the first print is expected, as the PosBox will
|
||||
do some preprocessing to speed up the next printings. If you suffer
|
||||
delays afterwards it is most likely due to poor network connection
|
||||
between the POS and the PosBox.
|
||||
|
||||
Some characters are not correctly printed on the receipt.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- The PosBox does not support all languages and characters. It
|
||||
currently supports latin and cyrillic based scripts, with basic
|
||||
japanese support.
|
||||
|
||||
The Printer is Offline
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- The PosBox only supports EPSON TM-T20 printers. Make sure the printer
|
||||
is connected, powered, has enough paper and has its lid closed, and
|
||||
does is not in an error status. If the error persists, please contact
|
||||
support.
|
||||
|
||||
The Cashdrawer does not open.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- The cashdrawer should be connected to the printer and should be
|
||||
activated in the POS Configuration
|
||||
|
|
@ -0,0 +1,286 @@
|
|||
# Finnish translation for openobject-addons
|
||||
# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2014-02-18 16:05+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Finnish <fi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-02-19 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 16916)\n"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,memo:0
|
||||
msgid "Note Content"
|
||||
msgstr "Muistiinpanon sisältö"
|
||||
|
||||
#. module: note
|
||||
#: view:note.stage:0
|
||||
msgid "Stages of Notes"
|
||||
msgstr "Muistiipanojen vaiheet"
|
||||
|
||||
#. module: note
|
||||
#: model:note.stage,name:note.demo_note_stage_04
|
||||
#: model:note.stage,name:note.note_stage_02
|
||||
msgid "This Week"
|
||||
msgstr "Tämä viikko"
|
||||
|
||||
#. module: note
|
||||
#: model:ir.model,name:note.model_base_config_settings
|
||||
msgid "base.config.settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: note
|
||||
#: model:ir.model,name:note.model_note_tag
|
||||
msgid "Note Tag"
|
||||
msgstr "Muistiinpanon tunniste"
|
||||
|
||||
#. module: note
|
||||
#: model:res.groups,name:note.group_note_fancy
|
||||
msgid "Notes / Fancy mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: note
|
||||
#: model:ir.model,name:note.model_note_note
|
||||
#: view:note.note:0
|
||||
msgid "Note"
|
||||
msgstr "Muistiinpano"
|
||||
|
||||
#. module: note
|
||||
#: view:note.note:0
|
||||
msgid "Group By..."
|
||||
msgstr "Ryhmittely..."
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
msgstr "Seuraajat"
|
||||
|
||||
#. module: note
|
||||
#: model:ir.actions.act_window,help:note.action_note_note
|
||||
msgid ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to add a personal note.\n"
|
||||
" </p><p>\n"
|
||||
" Use notes to organize personal tasks or notes. All\n"
|
||||
" notes are private; no one else will be able to see them. "
|
||||
"However\n"
|
||||
" you can share some notes with other people by inviting "
|
||||
"followers\n"
|
||||
" on the note. (Useful for meeting minutes, especially if\n"
|
||||
" you activate the pad feature for collaborative writings).\n"
|
||||
" </p><p>\n"
|
||||
" You can customize how you process your notes/tasks by adding,\n"
|
||||
" removing or modifying columns.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: note
|
||||
#: model:note.stage,name:note.demo_note_stage_01
|
||||
#: model:note.stage,name:note.note_stage_01
|
||||
msgid "Today"
|
||||
msgstr "Tänään"
|
||||
|
||||
#. module: note
|
||||
#: model:ir.model,name:note.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Käyttäjät"
|
||||
|
||||
#. module: note
|
||||
#: view:note.note:0
|
||||
msgid "í"
|
||||
msgstr "í"
|
||||
|
||||
#. module: note
|
||||
#: view:note.stage:0
|
||||
msgid "Stage of Notes"
|
||||
msgstr "Muistiinpanojenvaiheet"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,message_unread:0
|
||||
msgid "Unread Messages"
|
||||
msgstr "Lukemattomat viestit"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,current_partner_id:0
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
|
||||
#. module: note
|
||||
#: view:note.note:0
|
||||
msgid "By sticky note Category"
|
||||
msgstr "Muistilaput ryhmittäin"
|
||||
|
||||
#. module: note
|
||||
#: help:note.note,message_unread:0
|
||||
msgid "If checked new messages require your attention."
|
||||
msgstr "Jos valittu, uudet viestit vaativat huomiosi."
|
||||
|
||||
#. module: note
|
||||
#: field:note.stage,name:0
|
||||
msgid "Stage Name"
|
||||
msgstr "Vaiheen nimi"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,message_is_follower:0
|
||||
msgid "Is a Follower"
|
||||
msgstr "on seuraaja"
|
||||
|
||||
#. module: note
|
||||
#: model:note.stage,name:note.demo_note_stage_02
|
||||
msgid "Tomorrow"
|
||||
msgstr "Huomenna"
|
||||
|
||||
#. module: note
|
||||
#: view:note.note:0
|
||||
#: field:note.note,open:0
|
||||
msgid "Active"
|
||||
msgstr "Aktiivinen"
|
||||
|
||||
#. module: note
|
||||
#: help:note.stage,user_id:0
|
||||
msgid "Owner of the note stage."
|
||||
msgstr "Muistiinpanon vaiheen omistaja."
|
||||
|
||||
#. module: note
|
||||
#: model:ir.ui.menu,name:note.menu_notes_stage
|
||||
msgid "Categories"
|
||||
msgstr "Ryhmät"
|
||||
|
||||
#. module: note
|
||||
#: view:note.note:0
|
||||
#: field:note.note,stage_id:0
|
||||
msgid "Stage"
|
||||
msgstr "Vaihe"
|
||||
|
||||
#. module: note
|
||||
#: field:note.tag,name:0
|
||||
msgid "Tag Name"
|
||||
msgstr "Tunnisteen nimi"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,message_ids:0
|
||||
msgid "Messages"
|
||||
msgstr "Viestit"
|
||||
|
||||
#. module: note
|
||||
#: view:base.config.settings:0
|
||||
#: model:ir.actions.act_window,name:note.action_note_note
|
||||
#: model:ir.ui.menu,name:note.menu_note_notes
|
||||
#: view:note.note:0
|
||||
#: model:note.stage,name:note.note_stage_04
|
||||
msgid "Notes"
|
||||
msgstr "Muistiinpanot"
|
||||
|
||||
#. module: note
|
||||
#: model:note.stage,name:note.demo_note_stage_03
|
||||
#: model:note.stage,name:note.note_stage_03
|
||||
msgid "Later"
|
||||
msgstr "Myöhemmin"
|
||||
|
||||
#. module: note
|
||||
#: model:ir.model,name:note.model_note_stage
|
||||
msgid "Note Stage"
|
||||
msgstr "Muistiinpanon vaihe"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,message_summary:0
|
||||
msgid "Summary"
|
||||
msgstr "Yhteenveto"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,stage_ids:0
|
||||
msgid "Stages of Users"
|
||||
msgstr "Käyttäjien vaiheet"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,name:0
|
||||
msgid "Note Summary"
|
||||
msgstr "Muistiinpanon yhteenveto"
|
||||
|
||||
#. module: note
|
||||
#: model:ir.actions.act_window,name:note.action_note_stage
|
||||
#: view:note.note:0
|
||||
msgid "Stages"
|
||||
msgstr "Vaiheet"
|
||||
|
||||
#. module: note
|
||||
#: help:note.note,message_ids:0
|
||||
msgid "Messages and communication history"
|
||||
msgstr "Viesti- ja kommunikointihistoria"
|
||||
|
||||
#. module: note
|
||||
#: view:note.note:0
|
||||
msgid "Delete"
|
||||
msgstr "Poista"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,color:0
|
||||
msgid "Color Index"
|
||||
msgstr "Väri-indeksi"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,sequence:0
|
||||
#: field:note.stage,sequence:0
|
||||
msgid "Sequence"
|
||||
msgstr "Järjestysluku"
|
||||
|
||||
#. module: note
|
||||
#: view:note.note:0
|
||||
#: field:note.note,tag_ids:0
|
||||
msgid "Tags"
|
||||
msgstr "Tunnisteet"
|
||||
|
||||
#. module: note
|
||||
#: view:note.note:0
|
||||
msgid "Archive"
|
||||
msgstr "Arkisto"
|
||||
|
||||
#. module: note
|
||||
#: field:base.config.settings,module_note_pad:0
|
||||
msgid "Use collaborative pads (etherpad)"
|
||||
msgstr "Käytä yhteistyöhön tauluja (Etherpad)"
|
||||
|
||||
#. module: note
|
||||
#: help:note.note,message_summary:0
|
||||
msgid ""
|
||||
"Holds the Chatter summary (number of messages, ...). This summary is "
|
||||
"directly in html format in order to be inserted in kanban views."
|
||||
msgstr ""
|
||||
"Sisältää viestien yhteenvedon (viestien määrän,...). Tämä yhteenveto on "
|
||||
"valmiiksi html-muodossa, jotta se voidaan viedä kanban näkymään."
|
||||
|
||||
#. module: note
|
||||
#: field:base.config.settings,group_note_fancy:0
|
||||
msgid "Use fancy layouts for notes"
|
||||
msgstr ""
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,current_partner_id:0
|
||||
#: field:note.stage,user_id:0
|
||||
msgid "Owner"
|
||||
msgstr "Omistaja"
|
||||
|
||||
#. module: note
|
||||
#: help:note.stage,sequence:0
|
||||
msgid "Used to order the note stages"
|
||||
msgstr "Käytetään järjestämään muistiinpanon vaiheet"
|
||||
|
||||
#. module: note
|
||||
#: field:note.note,date_done:0
|
||||
msgid "Date done"
|
||||
msgstr "Valmis pvm."
|
||||
|
||||
#. module: note
|
||||
#: field:note.stage,fold:0
|
||||
msgid "Folded by Default"
|
||||
msgstr "Tyhjää ei näytetä"
|
Loading…
Reference in New Issue