Forums / All Other Contributions/Addons / ZX POS [Support Thread]

ZX POS [Support Thread]

Started by balihr on 22 Nov 2020, 4:29 PM · Views: 4,913

Results 1 to 20 of 32
22 Nov 2020, 4:29 PM
#1
balihr avatar

balihr

Totally Zenned

Join Date:
Oct 2008
Location:
Croatia
Posts:
1,814
Plugin Contributions:
24

ZX POS [Support Thread]

This Point of Sale (POS) module for Zen Cart was built to help you overcome the gap between online sales and sales made through other channels. If you have a physical store with customers walking in to make a purchase, you can use this plugin as a cash register (please check your law requirements first). It can also be used to take orders by your staff over the phone.

Basic features:

  • completely integrated with Zen Cart
  • works with any barcode scanner
  • allows you to create new accounts or log in to existing customer accounts or place Guest orders
  • comes with built-in shipping and payment modules to make checkout faster
  • built-in calculator for cash return
  • supports Stock by Attributes (SBA)

The Point of Sale module allows you to add products to cart using a barcode scanner, by manually typing in the barcode or by typing in product's model number (or shortcode).

Your customers can use the same account for both online purchases AND in-store purchases. This allows them to keep track of their entire order history in your shop, or earn Loyalty Rewards if you have any.

YouTube demo here.

I'm not sure how much support I'll be able to provide for this plugin, so if anyone wants to help with that part, please do.

My site - Pro ZC Help
My portfolio | My plugins

22 Nov 2020, 9:26 PM
#2
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,896
Plugin Contributions:
21

Re: ZX POS [Support Thread]

balihr:

I'm not sure how much support I'll be able to provide for this plugin, so if anyone wants to help with that part, please do. Lots of folks have been looking for this and would probably participate in it's continuing if you created a github repository for the project.

https://guides.github.com/activities/hello-world/

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com

22 Nov 2020, 9:45 PM
#3
balihr avatar

balihr

Totally Zenned

Join Date:
Oct 2008
Location:
Croatia
Posts:
1,814
Plugin Contributions:
24

Re: ZX POS [Support Thread]

Sure. The plugin is still awaiting approval so I didn't think it would be good to release any code before it's approved (in case of any required edits), but ok - link to github

The idea was actually for someone/anyone else to be answering the questions about it here etc because I don't think I'll have much time, and I do believe there will be questions...

My site - Pro ZC Help
My portfolio | My plugins

24 Jan 2021, 9:24 PM
#4
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

This is a nice feature to have, especially if you wish to use your cart for on site sales as well as online.

I've been experimenting with it a bit using zc157b and so far have found a couple of "less than desirable" effects it produces. I installed a test copy of zc157b in a folder on the server to find out which module was causing these effects. First, I installed the onepage checkout, which didn't produce the effect, but upon installing the POS as the second mod, it showed up, soooooo, here we are.

On my test installation, I have found it to mess around with the site/includes/templates/responsive_classic/common/tpl_header.php. First, it reduces the 245 line file down to 115 lines. No big thing as everything I've found so far still seems to work exclusive of the issues I'm referring to.

  1. It slides the header search box to the left below and at the end of the navbar ( Home | Login | whatever else ) and I can't find anyway to change that. I just turned the header search off in admin, though I'd like to have it up where it belongs on the right hand side.

2 It does something funky with the logo and tagline - The Tagline moves to the center top of the section (div or wrapper whatever), not particularly important if one wants a tagline centered at the top of the box, but to move it back I copied that section from the backup copy of the tpl_header.php to the appropriate area in the questionable file, it's only 9 or 10 lines, but it places the logo/tagline relationship back to it's original postion so I can play with the header starting with its out-of-box location.

I understand that both of these effects may be intentional, but having things in their proper places is desirable to me - being green, just to be able to keep track of original configuration while implementing customizations. I would like that search bar up where it originally was if anybody has any thoughts.

Also, it seems, and I haven't been able to test this thoroughly, but if I login as a customer from the admin perspective within the POS interface, that is - a walk in customer that also has an online account - when I later login as if I AM that customer through a browser there's a POS button up in the navbar, even though POS has been logged out. Sometimes though when I select it from the navbar from the customer perspective after logging the pos out, it sends a not authorized message, which is a good thing, just wouldn't like the customer to see it from a browser at any time.

Waiting to be Zenned - Over-thinking makes an easy task complicated.

24 Jan 2021, 10:22 PM
#5
balihr avatar

balihr

Totally Zenned

Join Date:
Oct 2008
Location:
Croatia
Posts:
1,814
Plugin Contributions:
24

Re: ZX POS [Support Thread]

TheGrimReaper:

On my test installation, I have found it to mess around with the site/includes/templates/responsive_classic/common/tpl_header.php. First, it reduces the 245 line file down to 115 lines. No big thing as everything I've found so far still seems to work exclusive of the issues I'm referring to.
245 lines to 115? I'm assuming you're talking about viewing source in the browser window? If so, then that's perfectly normal and expected because (if installed properly), the POS page is supposed to hide your header, footer and sidebar(s), meaning all of that code doesn't process at all and is not sent to the browser.

  1. It slides the header search box to the left below and at the end of the navbar ( Home | Login | whatever else ) and I can't find anyway to change that. I just turned the header search off in admin, though I'd like to have it up where it belongs on the right hand side.
    The only part of the header that should show is the breadcrumbs section which allows you to "exit" the POS page and browse your storefront. If you're seeing anything else other than the breadcrumbs, followed by the 3 columns showing your logo, current time and totals, you probably missed something during the install process and didn't merge the code correctly.

2 It does something funky with the logo and tagline - The Tagline moves to the center top of the section (div or wrapper whatever), not particularly important if one wants a tagline centered at the top of the box, but to move it back I copied that section from the backup copy of the tpl_header.php to the appropriate area in the questionable file, it's only 9 or 10 lines, but it places the logo/tagline relationship back to it's original postion so I can play with the header starting with its out-of-box location.
Again, as above - if you're seeing THAT while viewing the POS page, you must've made a mistake during installation.
Take a look at the YouTube demo - although it's using an older version of Zen Cart, it's the same principle. You're only supposed to see the breadcrumbs, but if you click the Home button, it takes you to your homepage, and the ONLY difference is a new link in the header named "POS" which allows you to go back to the POS page.
If you're not getting that behavior, you will need to check how you installed the plugin (I believe you missed something in either tpl_main_page.php or tpl_header.php).

Also, it seems, and I haven't been able to test this thoroughly, but if I login as a customer from the admin perspective within the POS interface, that is - a walk in customer that also has an online account - when I later login as if I AM that customer through a browser there's a POS button up in the navbar, even though POS has been logged out. Sometimes though when I select it from the navbar from the customer perspective after logging the pos out, it sends a not authorized message, which is a good thing, just wouldn't like the customer to see it from a browser at any time.
If you didn't close your browser window, your POS session will be active no matter what you do. If you log out as customer, your POS session is still active in YOUR browser and you'll see the POS button because of that. So, in order to actually log out of POS (completely), you need to log out from the admin section AND close your browser completely (meaning all tabs and all browser windows).

Hope this helps...

My site - Pro ZC Help
My portfolio | My plugins

24 Jan 2021, 11:10 PM
#6
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

balihr:

245 lines to 115? I'm assuming you're talking about viewing source in the browser window? If so, then that's perfectly normal and expected because (if installed properly), the POS page is supposed to hide your header, footer and sidebar(s), meaning all of that code doesn't process at all and is not sent to the browser.

The only part of the header that should show is the breadcrumbs section which allows you to "exit" the POS page and browse your storefront. If you're seeing anything else other than the breadcrumbs, followed by the 3 columns showing your logo, current time and totals, you probably missed something during the install process and didn't merge the code correctly.

Again, as above - if you're seeing THAT while viewing the POS page, you must've made a mistake during installation.
Take a look at the YouTube demo - although it's using an older version of Zen Cart, it's the same principle. You're only supposed to see the breadcrumbs, but if you click the Home button, it takes you to your homepage, and the ONLY difference is a new link in the header named "POS" which allows you to go back to the POS page.
If you're not getting that behavior, you will need to check how you installed the plugin (I believe you missed something in either tpl_main_page.php or tpl_header.php).

If you didn't close your browser window, your POS session will be active no matter what you do. If you log out as customer, your POS session is still active in YOUR browser and you'll see the POS button because of that. So, in order to actually log out of POS (completely), you need to log out from the admin section AND close your browser completely (meaning all tabs and all browser windows).

Hope this helps...

I use Dreamweaver CS5. I can view all and print the code from the page after I load it up in DW. That's also how I create pages, edit, save and transfer files. I've been using DW for several years and I have a pretty good grasp on it. It presents every line, prints every line, complete with numerical reference, including comments etc-everything the author put in, I can manipulate, view, change etc. I use my browsers Webmaster tools just to pinpoint elements etc, and preview possible changes, I never save from them. I have the actual file itself, not a browser rendered version of it. After install it contains 115 lines. No more than that. It's also how I copied the logo/tagline back into the file to make it look right.

I installed a copy in a test folder for the specific purpose of chasing this issue down, it was as basic as you can get, no file merges are necessary according to the docs, and folders merge the way they are expected to.

While anything is possible, I meticulously installed step by step from the documentation (which does not even mention altering the includes/templates/YOUR_TEMPLATE/common/tpl_header.php), renamed the folders as described (which is standard Zen as I understand), perhaps I missed something, but following the docs as written provided in the package, it's not very easy to make a mistake.

As far a the POS showing in the Navbar, yes, all is logged out, browser can even be closed, computers shutdown sleep obtained and if I log in the next day as the customer it still remains, only selecting it will give the not authorized message- This issue I'll be testing in more depth, so until I complete that I can't give a more in-depth comprehensive analysis.

Waiting to be Zenned - Over-thinking makes an easy task complicated.

24 Jan 2021, 11:12 PM
#7
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

Oh yeah, I'll also look at the other files you mentioned to see what I can discover. Sorry I missed that a moment ago.

But as for the actual POS Screen, it's perfect. Nothing from the site mainpages show on it, just the POS itself.

Waiting to be Zenned - Over-thinking makes an easy task complicated.

24 Jan 2021, 11:19 PM
#8
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

Just a thought: Are you saying the POS page is the only page using the tpl_header.php? If so, I have a problem with the main pages picking up that file because it affects the main pages header. Something to ponder............

Waiting to be Zenned - Over-thinking makes an easy task complicated.

24 Jan 2021, 11:24 PM
#9
balihr avatar

balihr

Totally Zenned

Join Date:
Oct 2008
Location:
Croatia
Posts:
1,814
Plugin Contributions:
24

Re: ZX POS [Support Thread]

Yes, the documentation doesn't mention the files related to the template - good point! It only lists the CORE files affected, but not template files that might be affected if included in the template files. And yes, the YOUR_TEMPLATE - that is standard. :)

I just realized that the set of files contains a VERY old version of tpl_header.php so it might be quite hard to merge it on 1.5.7

Here's a copy of the correct file that should be merged with your existing includes/templates/YOUR_TEMPLATE/common/tpl_header.php

<?php
/**
 * Common Template - tpl_header.php
 *
 * this file can be copied to /templates/your_template_dir/pagename<br />
 * example: to override the privacy page<br />
 * make a directory /templates/my_template/privacy<br />
 * copy /templates/templates_defaults/common/tpl_footer.php to /templates/my_template/privacy/tpl_header.php<br />
 * to override the global settings and turn off the footer un-comment the following line:<br />
 * <br />
 * $flag_disable_header = true;<br />
 *
 * @copyright Copyright 2003-2020 Zen Cart Development Team
 * @copyright Portions Copyright 2003 osCommerce
 * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
 * @version $Id: DrByte 2020 May 24 Modified in v1.5.7 $
 */
?>

<?php
  // Display all header alerts via messageStack:
  if ($messageStack->size('header') > 0) {
    echo $messageStack->output('header');
  }
  if (isset($_GET['error_message']) && zen_not_null($_GET['error_message'])) {
    echo zen_output_string_protected(urldecode($_GET['error_message']));
  }
  if (isset($_GET['info_message']) && zen_not_null($_GET['info_message'])) {
   echo zen_output_string_protected($_GET['info_message']);
}
?>


<!--bof-header logo and navigation display-->
<?php
if (!isset($flag_disable_header) || !$flag_disable_header) {
?>

<div id="headerWrapper">

<!--bof navigation display-->
<div id="navMainWrapper" class="group onerow-fluid">
<?php 
 if ( $detect->isMobile() && !$detect->isTablet() || $_SESSION['layoutType'] == 'mobile' ) {
echo '<div class="header Fixed"><a href="#menu" title="Menu"><i class="fa fa-bars"></i></a></div>';
 } else if ( $detect->isTablet() || $_SESSION['layoutType'] == 'tablet' ){
echo '<div class="header Fixed"><a href="#menu" title="Menu"><i class="fa fa-bars"></i></a></div>';
} else { 
//
}
?>

<?php if ( $detect->isMobile() && !$detect->isTablet() || $_SESSION['layoutType'] == 'mobile' ) { ?>
  
<div id="navMain">
  <ul>
    <li><?php echo '<a href="' . HTTP_SERVER . DIR_WS_CATALOG . '">'; ?><i class="fa fa-home" title="Home"></i></a></li>
      <?php
      // BOF ZX POS 1/3
      if(isset($_SESSION['POStoken'])) { ?>
          <li><a href="<?php echo zen_href_link(FILENAME_ZXPOS, '', 'SSL'); ?>">POS</a></li>
      <?php }
      // EOF ZX POS 1/3
      ?>
    <li><a href="#top"><i class="fa fa-arrow-circle-up" title="Back to Top"></i></a></li>
<?php
    if (zen_is_logged_in() && !zen_in_guest_checkout()) {
?>
    <li><a href="<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"><i class="fa fa-sign-out" title="Log Off"></i></a></li>
<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    <li><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><i class="fa fa-user" title="My Account"></i></a></li>
<?php } else { ?>
    <li class="last"><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><i class="fa fa-user" title="My Account"></i></a></li>
<?php } ?>
<?php
      } else {
        if (STORE_STATUS == '0') {
?>
<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    <li><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><i class="fa fa-sign-in" title="Log In"></i></a></li>
<?php } else { ?>
    <li class="last"><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><i class="fa fa-sign-in" title="Log In"></i></a></li>
<?php } ?>
<?php 
  } 
} 
?>

<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    <li><a class="navCartContentsIndicator" href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"><i class="fa fa-shopping-cart" title="Shopping Cart"></i></a></li>
    <li class="last"><a href="<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><i class="fa fa-check-square" title="Checkout"></i></a></li>
<?php }?>
  </ul>
<div id="navMainSearch" class="forward">
  <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?>
</div>
</div>
</div>

<!--eof navigation display-->

<?php  } else if ( $detect->isTablet() || $_SESSION['layoutType'] == 'tablet' ){ ?> 

<div id="navMain">
    <ul>
<li class="hide"><a href="#top"><i class="fa fa-arrow-circle-up" title="Back to Top"></i></a></li>
    <li><?php echo '<a href="' . HTTP_SERVER . DIR_WS_CATALOG . '">'; ?><?php echo HEADER_TITLE_CATALOG; ?></a></li>
        <?php
        // BOF ZX POS 2/3
        if(isset($_SESSION['POStoken'])) { ?>
            <li><a href="<?php echo zen_href_link(FILENAME_ZXPOS, '', 'SSL'); ?>">POS</a></li>
        <?php }
        // EOF ZX POS 2/3
        ?>
<?php
        if (zen_is_logged_in() && !zen_in_guest_checkout()) {
?>
    <li><a href="<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGOFF; ?></a></li>
<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
<li><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li>
	    <?php } else { ?>
<li class="last"><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li>
      
      <?php } ?>
<?php
      } else {
        if (STORE_STATUS == '0') {
?>
<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    <li><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li>
	    <?php } else { ?>
    <li class="last"><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li>

	    <?php } ?>
<?php } } ?>

<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    <li><a class="navCartContentsIndicator" href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"><i class="fa fa-shopping-cart" title="Shopping Cart"></i> 
     <?php 
        echo HEADER_TITLE_CART_CONTENTS;
        // Alternatively, if you want to display cart quantity and value, use the following line instead of the one above. Adapt for multiple languages if relevant.
        // echo $_SESSION['cart']->count_contents().' item(s) '. $currencies->format($_SESSION['cart']->show_total());
     ?>
   </a>
    </li>
    <li class="last"><a href="<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><?php echo HEADER_TITLE_CHECKOUT; ?></a></li>
<?php }?>
</ul>
<div id="navMainSearch" class="forward">
   <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?>
</div>
</div>
</div>
<!--eof navigation display-->

<?php  } else { ?>
<div id="navMain">
  <ul class="back">
    <li><?php echo '<a href="' . HTTP_SERVER . DIR_WS_CATALOG . '">'; ?><?php echo HEADER_TITLE_CATALOG; ?></a></li>
    <?php 
// BOF ZX POS 3/3
if(isset($_SESSION['POStoken'])) { ?>
	<li><a href="<?php echo zen_href_link(FILENAME_ZXPOS, '', 'SSL'); ?>">POS</a></li>
<?php }
// EOF ZX POS 3/3
?>
<?php
    if (zen_is_logged_in() && !zen_in_guest_checkout()) {
?>
    <li><a href="<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGOFF; ?></a></li>
<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    <li><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li>
<?php } else { ?>
    <li class="last"><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li>
<?php } ?>
<?php
      } else {
        if (STORE_STATUS == '0') {
?>
<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    <li><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li>
	    <?php } else { ?>
    <li class="last"><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li>
<?php } ?>
<?php
  }
 }
?>

<?php if ($_SESSION['cart']->count_contents() != 0) { ?>
    <li>
      <a class="navCartContentsIndicator" href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"><i class="fa fa-shopping-cart" title="Shopping Cart"></i>
     <?php 
        echo HEADER_TITLE_CART_CONTENTS;
        // Alternatively, if you want to display cart quantity and value, use the following line instead of the one above. Adapt for multiple languages if relevant.
        // echo $_SESSION['cart']->count_contents().' item(s) '. $currencies->format($_SESSION['cart']->show_total());
     ?>
   </a>
   </li>
    <li class="last"><a href="<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><?php echo HEADER_TITLE_CHECKOUT; ?></a></li>
<?php }?>
  </ul>
<div id="navMainSearch" class="forward">
     <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?>
</div>
</div>
</div>
<!--eof navigation display-->

<?php  } ?>

<!--bof branding display-->
<div id="logoWrapper" class="group onerow-fluid">
    <div id="logo"><?php echo '<a href="' . HTTP_SERVER . DIR_WS_CATALOG . '">' . zen_image($template->get_template_dir(HEADER_LOGO_IMAGE, DIR_WS_TEMPLATE, $current_page_base,'images'). '/' . HEADER_LOGO_IMAGE, HEADER_ALT_TEXT, HEADER_LOGO_WIDTH, HEADER_LOGO_HEIGHT) . '</a>'; ?>
<?php if (HEADER_SALES_TEXT != '' || (SHOW_BANNERS_GROUP_SET2 != '' && $banner = zen_banner_exists('dynamic', SHOW_BANNERS_GROUP_SET2))) { ?>
    <div id="taglineWrapper">
<?php
  if (HEADER_SALES_TEXT != '') {
?>
      <div id="tagline"><?php echo HEADER_SALES_TEXT;?></div>
<?php
  }
?>
<?php
  if (SHOW_BANNERS_GROUP_SET2 != '' && $banner = zen_banner_exists('dynamic', SHOW_BANNERS_GROUP_SET2)) {
    if ($banner->RecordCount() > 0) {
?>
  <div id="bannerTwo" class="banners"><?php echo zen_display_banner('static', $banner);?></div>
<?php
    }
  }
?>
  </div>
<?php } // no HEADER_SALES_TEXT or SHOW_BANNERS_GROUP_SET2 ?>
  </div>
</div>

<!--eof branding display-->
<!--eof header logo and navigation display-->

<?php if ( $detect->isMobile() && !$detect->isTablet() || $_SESSION['layoutType'] == 'mobile' ) { ?>
  <div id="navMainSearch1" class="forward">
     <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?>
  </div>
<?php  } else if ( $detect->isTablet() || $_SESSION['layoutType'] == 'tablet' ) { ?>
  <div id="navMainSearch1" class="forward">
     <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?>
  </div>
<?php  } else if ( $_SESSION['layoutType'] == 'full' ) {
  } else {
//
  }
?>

<!--bof optional categories tabs navigation display-->
<?php require($template->get_template_dir('tpl_modules_categories_tabs.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_categories_tabs.php'); ?>
<!--eof optional categories tabs navigation display-->

<!--bof header ezpage links-->
<?php if (EZPAGES_STATUS_HEADER == '1' or (EZPAGES_STATUS_HEADER == '2' && zen_is_whitelisted_admin_ip())) { ?>
<?php   require($template->get_template_dir('tpl_ezpages_bar_header.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_ezpages_bar_header.php'); ?>
<?php } ?>
<!--eof header ezpage links-->
</div>

<?php } ?>

My site - Pro ZC Help
My portfolio | My plugins

24 Jan 2021, 11:32 PM
#10
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

balihr:

Yes, the documentation doesn't mention the files related to the template - good point! It only lists the CORE files affected, but not template files that might be affected if included in the template files. And yes, the YOUR_TEMPLATE - that is standard. :)

I just realized that the set of files contains a VERY old version of tpl_header.php so it might be quite hard to merge it on 1.5.7

Here's a copy of the correct file that should be merged with your existing includes/templates/YOUR_TEMPLATE/common/tpl_header.php

<?php /** * Common Template - tpl_header.php * * this file can be copied to /templates/your_template_dir/pagename<br /> * example: to override the privacy page<br /> * make a directory /templates/my_template/privacy<br /> * copy /templates/templates_defaults/common/tpl_footer.php to /templates/my_template/privacy/tpl_header.php<br /> * to override the global settings and turn off the footer un-comment the following line:<br /> * <br /> * $flag_disable_header = true;<br /> * * @copyright Copyright 2003-2020 Zen Cart Development Team * @copyright Portions Copyright 2003 osCommerce * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 * @version $Id: DrByte 2020 May 24 Modified in v1.5.7 $ */ ?> <?php // Display all header alerts via messageStack: if ($messageStack->size('header') > 0) { echo $messageStack->output('header'); } if (isset($_GET['error_message']) && zen_not_null($_GET['error_message'])) { echo zen_output_string_protected(urldecode($_GET['error_message'])); } if (isset($_GET['info_message']) && zen_not_null($_GET['info_message'])) { echo zen_output_string_protected($_GET['info_message']); } ?> <!--bof-header logo and navigation display--> <?php if (!isset($flag_disable_header) || !$flag_disable_header) { ?> <div id="headerWrapper"> <!--bof navigation display--> <div id="navMainWrapper" class="group onerow-fluid"> <?php if ( $detect->isMobile() && !$detect->isTablet() || $_SESSION['layoutType'] == 'mobile' ) { echo '<div class="header Fixed"><a href="#menu" title="Menu"><i class="fa fa-bars"></i></a></div>'; } else if ( $detect->isTablet() || $_SESSION['layoutType'] == 'tablet' ){ echo '<div class="header Fixed"><a href="#menu" title="Menu"><i class="fa fa-bars"></i></a></div>'; } else { // } ?> <?php if ( $detect->isMobile() && !$detect->isTablet() || $_SESSION['layoutType'] == 'mobile' ) { ?> <div id="navMain"> <ul> <li><?php echo '<a href="' . HTTP_SERVER . DIR_WS_CATALOG . '">'; ?><i class="fa fa-home" title="Home"></i></a></li> <?php // BOF ZX POS 1/3 if(isset($_SESSION['POStoken'])) { ?> <li><a href="<?php echo zen_href_link(FILENAME_ZXPOS, '', 'SSL'); ?>">POS</a></li> <?php } // EOF ZX POS 1/3 ?> <li><a href="#top"><i class="fa fa-arrow-circle-up" title="Back to Top"></i></a></li> <?php if (zen_is_logged_in() && !zen_in_guest_checkout()) { ?> <li><a href="<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"><i class="fa fa-sign-out" title="Log Off"></i></a></li> <?php if ($_SESSION['cart']->count_contents() != 0) { ?> <li><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><i class="fa fa-user" title="My Account"></i></a></li> <?php } else { ?> <li class="last"><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><i class="fa fa-user" title="My Account"></i></a></li> <?php } ?> <?php } else { if (STORE_STATUS == '0') { ?> <?php if ($_SESSION['cart']->count_contents() != 0) { ?> <li><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><i class="fa fa-sign-in" title="Log In"></i></a></li> <?php } else { ?> <li class="last"><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><i class="fa fa-sign-in" title="Log In"></i></a></li> <?php } ?> <?php } } ?> <?php if ($_SESSION['cart']->count_contents() != 0) { ?>
<li><a class="navCartContentsIndicator" href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"><i class="fa fa-shopping-cart" title="Shopping Cart"></i></a></li>
<li class="last"><a href="<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><i class="fa fa-check-square" title="Checkout"></i></a></li>
<?php }?> </ul> <div id="navMainSearch" class="forward"> <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?> </div> </div> </div> <!--eof navigation display--> <?php } else if ( $detect->isTablet() || $_SESSION['layoutType'] == 'tablet' ){ ?> <div id="navMain"> <ul> <li class="hide"><a href="#top"><i class="fa fa-arrow-circle-up" title="Back to Top"></i></a></li> <li><?php echo '<a href="' . HTTP_SERVER . DIR_WS_CATALOG . '">'; ?><?php echo HEADER_TITLE_CATALOG; ?></a></li> <?php // BOF ZX POS 2/3 if(isset($_SESSION['POStoken'])) { ?> <li><a href="<?php echo zen_href_link(FILENAME_ZXPOS, '', 'SSL'); ?>">POS</a></li> <?php } // EOF ZX POS 2/3 ?> <?php if (zen_is_logged_in() && !zen_in_guest_checkout()) { ?> <li><a href="<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGOFF; ?></a></li> <?php if ($_SESSION['cart']->count_contents() != 0) { ?> <li><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li> <?php } else { ?> <li class="last"><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li>
  <?php } ?>
<?php } else { if (STORE_STATUS == '0') { ?> <?php if ($_SESSION['cart']->count_contents() != 0) { ?>
<li><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li>
    <?php } else { ?>
<li class="last"><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li>

    <?php } ?>
<?php } } ?> <?php if ($_SESSION['cart']->count_contents() != 0) { ?>
<li><a class="navCartContentsIndicator" href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"><i class="fa fa-shopping-cart" title="Shopping Cart"></i> 
 <?php 
    echo HEADER_TITLE_CART_CONTENTS;
    // Alternatively, if you want to display cart quantity and value, use the following line instead of the one above. Adapt for multiple languages if relevant.
    // echo $_SESSION['cart']->count_contents().' item(s) '. $currencies->format($_SESSION['cart']->show_total());
 ?>
</a> </li> <li class="last"><a href="<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><?php echo HEADER_TITLE_CHECKOUT; ?></a></li> <?php }?> </ul> <div id="navMainSearch" class="forward"> <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?> </div> </div> </div> <!--eof navigation display--> <?php } else { ?> <div id="navMain"> <ul class="back"> <li><?php echo '<a href="' . HTTP_SERVER . DIR_WS_CATALOG . '">'; ?><?php echo HEADER_TITLE_CATALOG; ?></a></li> <?php // BOF ZX POS 3/3 if(isset($_SESSION['POStoken'])) { ?> <li><a href="<?php echo zen_href_link(FILENAME_ZXPOS, '', 'SSL'); ?>">POS</a></li> <?php } // EOF ZX POS 3/3 ?> <?php if (zen_is_logged_in() && !zen_in_guest_checkout()) { ?> <li><a href="<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGOFF; ?></a></li> <?php if ($_SESSION['cart']->count_contents() != 0) { ?> <li><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li> <?php } else { ?> <li class="last"><a href="<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a></li> <?php } ?> <?php } else { if (STORE_STATUS == '0') { ?> <?php if ($_SESSION['cart']->count_contents() != 0) { ?> <li><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li> <?php } else { ?> <li class="last"><a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a></li> <?php } ?> <?php } } ?> <?php if ($_SESSION['cart']->count_contents() != 0) { ?>
<li>
  <a class="navCartContentsIndicator" href="<?php echo zen_href_link(FILENAME_SHOPPING_CART, '', 'NONSSL'); ?>"><i class="fa fa-shopping-cart" title="Shopping Cart"></i>
 <?php 
    echo HEADER_TITLE_CART_CONTENTS;
    // Alternatively, if you want to display cart quantity and value, use the following line instead of the one above. Adapt for multiple languages if relevant.
    // echo $_SESSION['cart']->count_contents().' item(s) '. $currencies->format($_SESSION['cart']->show_total());
 ?>
</a> </li> <li class="last"><a href="<?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>"><?php echo HEADER_TITLE_CHECKOUT; ?></a></li> <?php }?> </ul> <div id="navMainSearch" class="forward"> <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?> </div> </div> </div> <!--eof navigation display--> <?php } ?> <!--bof branding display--> <div id="logoWrapper" class="group onerow-fluid"> <div id="logo"><?php echo '<a href="' . HTTP_SERVER . DIR_WS_CATALOG . '">' . zen_image($template->get_template_dir(HEADER_LOGO_IMAGE, DIR_WS_TEMPLATE, $current_page_base,'images'). '/' . HEADER_LOGO_IMAGE, HEADER_ALT_TEXT, HEADER_LOGO_WIDTH, HEADER_LOGO_HEIGHT) . '</a>'; ?> <?php if (HEADER_SALES_TEXT != '' || (SHOW_BANNERS_GROUP_SET2 != '' && $banner = zen_banner_exists('dynamic', SHOW_BANNERS_GROUP_SET2))) { ?> <div id="taglineWrapper"> <?php if (HEADER_SALES_TEXT != '') { ?> <div id="tagline"><?php echo HEADER_SALES_TEXT;?></div> <?php } ?> <?php if (SHOW_BANNERS_GROUP_SET2 != '' && $banner = zen_banner_exists('dynamic', SHOW_BANNERS_GROUP_SET2)) { if ($banner->RecordCount() > 0) { ?> <div id="bannerTwo" class="banners"><?php echo zen_display_banner('static', $banner);?></div> <?php } } ?> </div> <?php } // no HEADER_SALES_TEXT or SHOW_BANNERS_GROUP_SET2 ?> </div> </div> <!--eof branding display--> <!--eof header logo and navigation display--> <?php if ( $detect->isMobile() && !$detect->isTablet() || $_SESSION['layoutType'] == 'mobile' ) { ?> <div id="navMainSearch1" class="forward"> <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?> </div> <?php } else if ( $detect->isTablet() || $_SESSION['layoutType'] == 'tablet' ) { ?> <div id="navMainSearch1" class="forward"> <?php require(DIR_WS_MODULES . zen_get_module_sidebox_directory('search_header.php')); ?> </div> <?php } else if ( $_SESSION['layoutType'] == 'full' ) { } else { // } ?> <!--bof optional categories tabs navigation display--> <?php require($template->get_template_dir('tpl_modules_categories_tabs.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_categories_tabs.php'); ?> <!--eof optional categories tabs navigation display--> <!--bof header ezpage links--> <?php if (EZPAGES_STATUS_HEADER == '1' or (EZPAGES_STATUS_HEADER == '2' && zen_is_whitelisted_admin_ip())) { ?> <?php require($template->get_template_dir('tpl_ezpages_bar_header.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_ezpages_bar_header.php'); ?> <?php } ?> <!--eof header ezpage links--> </div> <?php } ?>

Thank you again balihr, you're still awesome in my book. Without having looked real closely yet, can I just overwrite the existing tpl_header with this code or do I need to actually merge? The reason is if I just merge, some lines might be duplicated or have some other negative effect.

Waiting to be Zenned - Over-thinking makes an easy task complicated.

24 Jan 2021, 11:37 PM
#11
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

Cancel that last stupid question. It overwrote to a perfect display.

Waiting to be Zenned - Over-thinking makes an easy task complicated.

24 Jan 2021, 11:43 PM
#12
balihr avatar

balihr

Totally Zenned

Join Date:
Oct 2008
Location:
Croatia
Posts:
1,814
Plugin Contributions:
24

Re: ZX POS [Support Thread]

TheGrimReaper:

Thank you again balihr, you're still awesome in my book. Without having looked real closely yet, can I just overwrite the existing tpl_header with this code or do I need to actually merge? The reason is if I just merge, some lines might be duplicated or have some other negative effect.

If you didn't modify that file earlier, and are using 1.5.7b with responsive_classic template, then yes, you can just overwrite. Otherwise, there are 3 block of code that need to be added, all 3 commented. It's basically just adding a link back to POS if you navigate away using the home button, and it's not like you MUST apply those changes - if you skip that file and don't apply the changes, you just won't have a link in the header to go back to POS (storefront only, of course).

My site - Pro ZC Help
My portfolio | My plugins

24 Jan 2021, 11:46 PM
#13
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

We're good now! I even overwrote the file in my installation folders for all future installations. I guess that updates the module. Good deal, I'll never have to worry about that again.

Waiting to be Zenned - Over-thinking makes an easy task complicated.

7 Feb 2021, 11:56 AM
#14
asblack avatar

asblack

New Zenner

Join Date:
Feb 2021
Location:
Portland, Oregon
Posts:
1
Plugin Contributions:
0

Re: ZX POS [Support Thread]

Does this ZX POS plugin work with card readers so i don't have to manually enter card data?

7 Feb 2021, 12:34 PM
#15
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

asblack:

Does this ZX POS plugin work with card readers so i don't have to manually enter card data?
Correct me if I'm wrong balihr, but isn't that part of the payment processor? Let's look at the way it's done with online orders: a customer enters the number themselves and Zen Cart gets the approval notice and records the payment. You, then, see that and send out the product. So, if a customer comes in, presents his/her card, you scan it to your payment gateway, get the approval or declined notice and complete the sale in person.

Waiting to be Zenned - Over-thinking makes an easy task complicated.

7 Feb 2021, 5:58 PM
#16
balihr avatar

balihr

Totally Zenned

Join Date:
Oct 2008
Location:
Croatia
Posts:
1,814
Plugin Contributions:
24

Re: ZX POS [Support Thread]

asblack:

Does this ZX POS plugin work with card readers so i don't have to manually enter card data?

Tricky question. First of all, this has nothing to do with the POS plugin - you get to your standard checkout and any of the already installed payment plugins can be used. So, if you have any payment plugins that allow checkout by credit card, you could in theory use a card reader which would populate your ON-SITE payment fields and you would then be able to continue checkout. I'm not sure if it works out of the box or some additional setup would be needed since (again) it's not related to the POS plugin.
However - CAVEAT - if the card is enrolled in the 3DS program, you're making an online purchase, meaning you'll be asked to go through the 3DS process. How will you tell your in-store customer that you need to enter their 3DS password?
The only thing I can think of is using PayPal Here, but this definitely requires a different type of integration to be done.

Of course, this is IF you really need to process the card like that. Otherwise, if you have a POS terminal, you can start the checkout process, separately/independently swipe the card and get the approval on your terminal, and once you get the approval, just finalize the checkout process in Zen Cart using the dedicated "posinstore" payment module.

Summary: The ZX POS plugin doesn't do anything with credit card processing. Use whatever payment handling your store has available.

My site - Pro ZC Help
My portfolio | My plugins

25 Feb 2021, 1:40 AM
#17
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

ZC157-ZX POS
I guess this is the right forum............kinda hard to tell.
I have some items priced by attribute. When entering the product I used a barcode in the barcode field. The issue is, 1 barcode for multiple priced options. When scanning the barcode at checkout, it omits all the prices becasue there isn't a barcode for each particular option. At first, I thought this should be a function of Zen Cart - to add a barcode field to the option values to distinguish between the different options available for a single product.

For example: Product=Lemon - with barcode
options are: 2 gig, 4 gig, 8 gig....etc No Barcodes

So, when you scan the barcode at checkout you only bring up Lemon with no price and you have to go into Lemon thru the storefront, select the option, return to the POS, delete the $0.00 Lemon-and keeping the re-added priced Lemon. Thoughts? Ideas? Work-arounds?

Still up in the air about where this post belongs, since the POS is (so far) the only place we scan barcodes for sales, I think it might belong here.............???

Waiting to be Zenned - Over-thinking makes an easy task complicated.

25 Feb 2021, 10:33 AM
#18
balihr avatar

balihr

Totally Zenned

Join Date:
Oct 2008
Location:
Croatia
Posts:
1,814
Plugin Contributions:
24

Re: ZX POS [Support Thread]

The version here in Plugins doesn't work with the built-in attributes system. If you need to use ZX POS with attributes, you need to install Stock by Attributes plugin (there's a reference zip file included with ZX POS) and then apply the required modifications as per the ZX POS docs. This will allow you to enter a unique barcode per item which will then be usable by ZX POS.

My site - Pro ZC Help
My portfolio | My plugins

25 Feb 2021, 7:59 PM
#19
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

balihr:

The version here in Plugins doesn't work with the built-in attributes system. If you need to use ZX POS with attributes, you need to install Stock by Attributes plugin (there's a reference zip file included with ZX POS) and then apply the required modifications as per the ZX POS docs. This will allow you to enter a unique barcode per item which will then be usable by ZX POS.

Yes sir. I remembered that shortly after the post and have been studying the aforementioned plugin and the issues with 1.5.7. I didn't realize you had the references in the pos docs though. They are helpful. Now if there's still somebody in the SBA forum maybe we'll find out if it will work. Thanks balihr

Waiting to be Zenned - Over-thinking makes an easy task complicated.

26 Feb 2021, 1:00 AM
#20
thegrimreaper avatar

thegrimreaper

Zen Follower

Join Date:
Jan 2021
Location:
Arizona
Posts:
134
Plugin Contributions:
0

Re: ZX POS [Support Thread]

balihr:

The version here in Plugins doesn't work with the built-in attributes system. If you need to use ZX POS with attributes, you need to install Stock by Attributes plugin (there's a reference zip file included with ZX POS) and then apply the required modifications as per the ZX POS docs. This will allow you to enter a unique barcode per item which will then be usable by ZX POS.

balihr, when you say "...which will then be usable by ZX POS", what should I expect? Now I'm trying to pinpoint a problem and not too sure of where to post. Should I expect the Custom Id to act as the Barcode section of the Product entry screen - that is to ask that when I'm using the POS and I scan a barcode it displays the product in the POS for acting on from there? I'm chasing an issue with it not displaying in the POS screen but it IS being added to the storefront cart, but still with a zero cost.

If I come up with a better understanding of what to expect from the ZX POS and the barcode scanner I could better determine who to point my problem at.

Waiting to be Zenned - Over-thinking makes an easy task complicated.