Zen Cart Logo
Forums / All Other Contributions/Addons / Stock by Attribute v4.0 addon for v1.3.5-1.3.9

Stock by Attribute v4.0 addon for v1.3.5-1.3.9

Views: 658,378

Results 2,701 to 2,720 of 3,609
11 Apr 2017, 3:57 AM
#2701
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Stock by Attribute v4.0 addon for v1.3.5-1.3.9

FYI, added the ability to copy product with associated Stock By Attributes attributes being transferred/copied to the new product, or to other product or categories (attributes controller).
Also found two minor bugs:

  1. related to interrelationship with Products Attributes Grid (PAG).
  2. the other a potential javascript error that could affect other parts of the page as well as if a product has read only attributes and the read-only attributes are not at the end of the attribute list, the product is added to the cart, the cart visited, then selected from the cart to return to the product info page, (deep breath) now all of the attributes that were selected to add the product to the cart will be auto selected again like it is in a default install...
    Addressed PHP 7.2 compatibility based on upcoming deprecation of functions.
    A few files had alignment modifications.
    Other minor modifications to support other improvements.

master branch of https://github.com/mc12345678/Stock_By_Attributes_Combined/ has these items applied

14 Apr 2017, 5:42 PM
#2702
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

Minor bug identified reguarding the latest push to github. Issue is that the customid is not found for product variants that are created by combining all attributes into one variant where there is more than one attribute involved.

To correct (update to be pushed to github "soon") go to:
includes/classes/class.products_with_attributes_class_stock.php

Goto line 191:
Change

        if ($this->zen_product_is_sba($product_id)/*$attribute_stock->RecordCount() > 0*/) {

To:

        if ($this->zen_product_is_sba($product[i][b]s[/b][/i]_id)/*$attribute_stock->RecordCount() > 0*/) {

By adding an s after product and before _id so that it reads products_id instead of product_id.

19 Apr 2017, 5:04 PM
#2703
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

I pushed an update to https://github.com/mc12345678/Stock_By_Attributes_Combined to accomplish two things,

  1. Ensure the capture of the customid for all currently supported methods of defining variants and
  2. Support display/retrieval of the customid for all such supported methods of defining variants. (for cases where a products attributes are individually stocked, the customid for the individual attribute is displayed adjacent to the attribute as well as combined with any existing customids for a single customid display.

The only time that a combined customid would be the same as any other is if none of the other attributes have a customid assigned to them. State this because the customid is controlled such that an entered customid is unique for every entry (when one is made), but in the case where individual attributes are tracked (thus limiting the purchase of that product to the smallest quantity available of all of the associated attributes), a combination of customids with a combination of no customid could result in a single customid for all variations of attributes that include that one attribute.

Anyways, looking for some feedback as I move on to updating the instruction that potteryhouse began so that this can be posted to the ZC plugins section. Yes, there are still a few improvements that can be made in various areas, but those can follow.

Also note, that recently I added the ability to copy the sba attributes where product copying was made available (didn't dig into the option names or option values managers for this type feature) but when copying a product (specifically when at the catalog menu and presented with linking or duplicating the product an option was added to omit copying the sba attributes, but such an option has not been made available at say the product's attibutes screen. Could add it there as well, but then the buttons along the top would need to be modified or an additional field or another "screen" made available to choose such an option. Anyways, welcome input. (famous last words)

23 Apr 2017, 7:48 PM
#2704
st_bobo avatar

st_bobo

New Zenner

Join Date:
Mar 2015
Location:
Pennsylvania
Posts:
11
Plugin Contributions:
0

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

I have used this plugin and been happy with it. Today I created a new site, installed zen cart 1.5.4 and then installed latest version of SBA. I am getting a blank page after install. Clean install a second time of Zen Cart, then installed SBA one file at a time. The problem is general.php which is located in admin/includes/functions. Not sure why it is breaking latest version of Zen Desk, but it is.

23 Apr 2017, 9:16 PM
#2705
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

st.bobo:

I have used this plugin and been happy with it. Today I created a new site, installed zen cart 1.5.4 and then installed latest version of SBA. I am getting a blank page after install. Clean install a second time of Zen Cart, then installed SBA one file at a time. The problem is general.php which is located in admin/includes/functions. Not sure why it is breaking latest version of Zen Desk, but it is.

What error(s) were generated in the logs directory?

The only modification documented as being made to that file is related to product removal.

23 Apr 2017, 11:16 PM
#2706
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

st.bobo:

I have used this plugin and been happy with it. Today I created a new site, installed zen cart 1.5.4 and then installed latest version of SBA. I am getting a blank page after install. Clean install a second time of Zen Cart, then installed SBA one file at a time. The problem is general.php which is located in admin/includes/functions. Not sure why it is breaking latest version of Zen Desk, but it is.

Please describe the "method" of install. I just fully installed the files of the current github version of SBA to a ZC 1.5.4 site and have been able to access store and admin side without issue, I have also made an individual purchase of a product tracked by SBA, a product that has attributes (not tracked by SBA), and a product that had no attributes. Then I went back and purchased one of each of those products in the cart. In all cases, no errors reported, no problems encountered. I have also gone through and compared an entire fresh install fileset of ZC 1.5.4 to the files of my temp site and other than incorporating the issues associated with ZC 1.5.4 as identified in the ZC 1.5.4 known issues area and having added in a troubleshooting tool to look at data associated with operation its a blank slate.

Expectation and way that it has been coded is that all files in the original includes and admin directories (no core modifications though a few template files are included which when incorporated here without the remaining install will have zero effect on the remainder of the store) then to install the ZC version specific files. Mind you, installation is to mean merging the very few changes that have been made to the file(s) into the existing file(s) and not to blindly replace the file(s) that exist because those files may have been modified to support some other plugin/operation.

24 Apr 2017, 12:44 AM
#2707
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

I've also just now fully installed a ZC 1.5.5e version on PHP 7.0.14, activated the responsive classic template as the base template, first installed just the "core" files, accessed both the store and the admin without issues, then installed/merged the changes for SBA (primarily to support the use of the customid), (haven't yet run the install code for the database) accessed the store and the admin, no problems.

Ran the install: No problems.

Navigated the store and the admin: No problems.

Added 10 each of products id 2 from the demo product (Matrox G400 32MB) Used the combined attributes such that there are four variants, each variant has two product option names, each option name having one option value. (Ie.:
Model: Premium
Memory: 16 mb)

Navigated to and added a deluxe, 32mb Matrox G400 32MB graphics card to my shopping cart. (Dynamic Dropdowns were active by default so was forced to first select a Model then the Memory option available based on the quantity presented)
Went to the shopping cart, product showed as expected with attributes.
went to checkout shipping: No issues
Payment, no issues
confirmation, no issues
Success page... No issues...

I have verified that the files on github in the master branch match what I am using and that I am using no more than what is in the master branch on github. No errors with ZC 1.5.5e checking out, using the admin or any other default ZC operation.

That doesn't mean that an issue may not pop up on someone else's computer system based on their setup, what they have installed in parallel, etc... In the last 7 hours though, two people have posted on the ZC forum indicating a problem, one using ZC 1.5.4 and another ZC 1.5.5e... I have just installed the same software on two different installs of ZC (although on the same server and each running different PHP versions) without experiencing blank pages as reported. I would like to understand what has caused these blank pages and to do so look forward to hearing from each individual (preferably as much as possible in the forum, but as necessary via PM). Unlike how some don't show interest in continuing to make this community available software better by resolving discovered issues, I would like to see that they be resolved and that at least a functional, minimal featured option be available to those that use ZC. That can only be done through the help of those that discover a problem. That goes for anything that is posted on this site. It's a community because it takes the people that use the software to identify issues (and hopefully solutions) to make improvements.

24 Apr 2017, 1:02 AM
#2708
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

st.bobo:

I have used this plugin and been happy with it. Today I created a new site, installed zen cart 1.5.4 and then installed latest version of SBA. I am getting a blank page after install. Clean install a second time of Zen Cart, then installed SBA one file at a time. The problem is general.php which is located in admin/includes/functions. Not sure why it is breaking latest version of Zen Desk, but it is.

Just also realized... Never said from where the "latest version" was obtained.... The fully functional version that works for ZC 1.5.1, 1.5.3, 1.5.4 and 1.5.5 can be found: https://github.com/mc12345678/Stock_By_Attributes_Combined

18 May 2017, 5:45 PM
#2709
cefyn avatar

cefyn

New Zenner

Join Date:
May 2007
Posts:
87
Plugin Contributions:
1

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

Upgraded to 1.5.5e ok except admin/products_with_attributes_stock.php disappeared. And I just can't get it back in. Latest version of Stock_By_Attributes_Combined-master. Upload it with Filezilla, it disappears again, and again, and ...again. Tried the file upload in cpanel, and I get "The file you uploaded, products_with_attributes_stock.php, contains a virus so the upload was canceled: YARA.eval_post.UNOFFICIAL FOUND" I've done a scan on it, and of course, there's no virus.
I can only think it's a permissions issue, the file uploads at 664, I try to change it to 644 in Filezilla, refresh the file list and it disappears again. Everything else working ok. Ideas anyone ? Thanks.

18 May 2017, 6:48 PM
#2710
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

cefyn:

Upgraded to 1.5.5e ok except admin/products_with_attributes_stock.php disappeared. And I just can't get it back in. Latest version of Stock_By_Attributes_Combined-master. Upload it with Filezilla, it disappears again, and again, and ...again. Tried the file upload in cpanel, and I get "The file you uploaded, products_with_attributes_stock.php, contains a virus so the upload was canceled: YARA.eval_post.UNOFFICIAL FOUND" I've done a scan on it, and of course, there's no virus.
I can only think it's a permissions issue, the file uploads at 664, I try to change it to 644 in Filezilla, refresh the file list and it disappears again. Everything else working ok. Ideas anyone ? Thanks.

There's a few things that look like might cause some sort of response like that, though the things I'm looking at seem to be there to exactly prevent issues/injection.

The first consideration is to remove some additional checks in some of the if statements. For example changing:

in line 54:

    if (isset($_POST['products_id']) && is_numeric((int) $_POST['products_id'])) {
      $products_id = (int) $_POST['products_id'];
    }

to:

    if (isset($_POST['products_id'])) {
      $products_id = (int) $_POST['products_id'];
    }

With similar at lines 114,

changing doubleval(nnn) type statements to type cast the value to float such as in line 184 from:

$products_id = doubleval($_POST['products_id']);

to:

$products_id = (float)$_POST['products_id'];

If those don't resolve the detection of evaluation of the content to appear as if there is an evaluation of the $_POSTed data, then a next possible revision is to remove the direct use of $_POST in some of the operations and first assign a variable to the value of $_POST and then let the function perform the operation on the variable, or in cases where the $db->bindVars or $db->getBindVarValue sanitization is used to instead cast the $_POSTed result to the same type.

For example changing:
line 128 from:

$quantity = $db->getBindVarValue($_POST['quantity'], 'float');

to:

$quantity = (float)$_POST['quantity'];

or beginning on line 428 from:

        $query = 'delete from ' . TABLE_PRODUCTS_WITH_ATTRIBUTES_STOCK . ' where products_id= :products_id:';
        $query = $db->bindVars($query, ':products_id:', $_POST['products_id'], 'integer');
        $db->Execute($query);

to:

        $query = $db->Execute('delete from ' . TABLE_PRODUCTS_WITH_ATTRIBUTES_STOCK . ' where products_id= ' . (int)$_POST['products_id']);
//        $query = $db->bindVars($query, ':products_id:', $_POST['products_id'], 'integer');
//        $db->Execute($query);

Which from recent discussions of PHP 7.1, concatenation of values with strings and type casting probably would have to be rewritten like:

        $query = $db->Execute('delete from ' . TABLE_PRODUCTS_WITH_ATTRIBUTES_STOCK . ' where products_id= ' . (string)(int)$_POST['products_id']);
//        $query = $db->bindVars($query, ':products_id:', $_POST['products_id'], 'integer');
//        $db->Execute($query);

Another example line 444 from:

        $query = 'delete from ' . TABLE_PRODUCTS_WITH_ATTRIBUTES_STOCK . ' where products_id= :products_id: and stock_attributes=:stock_attributes: limit 1';
        $query = $db->bindVars($query, ':products_id:', $_POST['products_id'], 'integer');
        $query = $db->bindVars($query, ':stock_attributes:', $_POST['attributes'], 'string');
        $db->Execute($query);

to:

        $db->Execute('delete from ' . TABLE_PRODUCTS_WITH_ATTRIBUTES_STOCK . ' where products_id= ' . (int)$_POST['products_id'] . ' and stock_attributes=\'' . (string)$_POST['attributes'] . '\' limit 1';
//        $query = $db->bindVars($query, ':products_id:', $_POST['products_id'], 'integer');
//        $query = $db->bindVars($query, ':stock_attributes:', $_POST['attributes'], 'string');
//        $db->Execute($query);

Those are some ideas that might prevent the response that has been identified but maintain the same level of sanitization that has been incorporated to prevent the possible injection of malicious code. I would be very interested to know which of the above either individually or combined resolved the issue.

I do not know how/why the permission level was set to 664 instead of 644 upon upload. I would suggest looking at the permission level of the other files that are/were uploaded to see if they also are 664 or if they were uploaded to the expected 644 and then attempting to understand what it takes to otherwise upload with a permission level of 644.

18 May 2017, 11:14 PM
#2711
cefyn avatar

cefyn

New Zenner

Join Date:
May 2007
Posts:
87
Plugin Contributions:
1

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

Brilliant, mc, thanks. The changes in lines 54,114, and 128 are enough for the server to accept the file upload.

18 May 2017, 11:55 PM
#2712
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

cefyn:

Brilliant, mc, thanks. The changes in lines 54,114, and 128 are enough for the server to accept the file upload.

Thanks for the feedback and identification of the issue, will incorporate those changes to the file.

21 May 2017, 2:35 AM
#2713
frank18 avatar

frank18

Deceased

Join Date:
Nov 2007
Location:
Sunny Coast, Australia
Posts:
3,427
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

mc12345678:

Just also realized... Never said from where the "latest version" was obtained.... The fully functional version that works for ZC 1.5.1, 1.5.3, 1.5.4 and 1.5.5 can be found: https://github.com/mc12345678/Stock_By_Attributes_Combined

A few questions how to install your version (Stock_By_Attributes_Combined-master):

Does it require to first merge / upload the 2 folders admin and includes and then merge the contents of say the folder 1_5_5 for a ZC 1.5.5e store?

Ofc renaming the admin and YOUR_TEMPLATE folders.... and running http://YOUR_DOMAIN/YOUR_ADMIN/stock_by_attr_install.php to install SBA

Is that the correct procedure?

Thanks

21 May 2017, 2:54 AM
#2714
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

frank18:

A few questions how to install your version (Stock_By_Attributes_Combined-master):

Does it require to first merge / upload the 2 folders admin and includes and then merge the contents of say the folder 1_5_5 for a ZC 1.5.5e store?

Ofc renaming the admin and YOUR_TEMPLATE folders.... and running http://YOUR_DOMAIN/YOUR_ADMIN/stock_by_attr_install.php to install SBA

Is that the correct procedure?

Thanks

Yes, that would be the recommended sequence of incorporation. The base includes and admin directories, and then the same for the ones within the specific version.

21 May 2017, 6:05 AM
#2715
frank18 avatar

frank18

Deceased

Join Date:
Nov 2007
Location:
Sunny Coast, Australia
Posts:
3,427
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

mc12345678:

Yes, that would be the recommended sequence of incorporation. The base includes and admin directories, and then the same for the ones within the specific version.

Thanks mc

6 Jun 2017, 2:05 AM
#2716
propcity avatar

propcity

New Zenner

Join Date:
Mar 2017
Location:
Jacksonville, fl
Posts:
11
Plugin Contributions:
0

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

I have tried a few services to no avail to sync my inventory for eBay and Zencart. SBA is needed for the variations on the products I carry, but I don't think there are any sites out there that support the additional database table created by SBA.

Does anyone know of such an integration? I'd be most grateful for your knowledge.

Thanks!

6 Jun 2017, 4:53 AM
#2717
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

propcity:

I have tried a few services to no avail to sync my inventory for eBay and Zencart. SBA is needed for the variations on the products I carry, but I don't think there are any sites out there that support the additional database table created by SBA.

Does anyone know of such an integration? I'd be most grateful for your knowledge.

Thanks!

The generated table is not as important as the data that is maintained/obtained. The customid is added to data collected from the order class when it is known. For example, if the order is pulled by order number or if working through the checkout process and the product has attributes, then product data is updated to include a field called customid. If instead the products_model needs to be used, then it too could be updated as necessary to accept the customid as entered. If the global $order variable is present, then the following would be an example of the data returned:

$order->products[$index]['customid']['value']

It is also possible to "calculate" the customid by providing the attribute information that would be expected as needed to determine the customid through a class function.

Basically in any program related situation, the specific table structure should have no bearing on the operation of an external program provided there is a some sort of interface available to provide the data needed. So the real question is what data is needed and of course based on what available information so that if the function doesn't exist that it can be added.

16 Jun 2017, 6:22 PM
#2718
jeking avatar

jeking

Totally Zenned

Join Date:
Oct 2005
Location:
Chicago, IL USA
Posts:
1,592
Plugin Contributions:
0

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

I'm wondering if this is possible. A client needs to track only some attributes, specifically color and size. They need to mark some combinations as out of stock because they do not exist. Currently size and color are standard Zen Cart drop-downs so a customer can order any combination.

If we install SBA and I set only those combinations to zero, what happens to all other other attributes and combinations? Meaning, do I need to add a stock level for everything or if combination is not set in SBA, will it be allowed to be ordered?

16 Jun 2017, 7:03 PM
#2719
mc12345678 avatar

mc12345678

Totally Zenned

Join Date:
Jul 2012
Posts:
16,908
Plugin Contributions:
2

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

jeking:

I'm wondering if this is possible. A client needs to track only some attributes, specifically color and size. They need to mark some combinations as out of stock because they do not exist. Currently size and color are standard Zen Cart drop-downs so a customer can order any combination.

If we install SBA and I set only those combinations to zero, what happens to all other other attributes and combinations? Meaning, do I need to add a stock level for everything or if combination is not set in SBA, will it be allowed to be ordered?

If I understand correctly:
product has 2 attributes (size and color)
sizes are: 4, 5, 6, and 7 (as an example)
colors are: red, blue, and green (again limited example)
But... Size 7 doesn't come in green and sizes 4 and 5 don't come in red and blue, respectively.
The attributes are added as combinations (4 and blue - quantity 5, 5 and red -quantity 10, 6 and all colors quantity of 4, etc...)

The question becomes what do you want to ultimately display? (ie. out-of-stock for product that do not ever exist, out-of-stock for product that only can exist, or don't show out-of-stock for product regardless of their on-hand quantity or potential existence?)
You could display an out-of-stock for 7-green, by defining 7-green as a stock of 0 and allowing out-of-stock to be displayed, but more than likely if you want to show out-of-stock related quantities, then you would want to only define those quantities as possible/in-stock.

So, with Dynamic Dropdowns enabled, showing out-of-stock product, if you only define the group(s) that exist/are possible and ignore those that do not/can not exist, then the customer (with javascript enabled) will be shown the options that exist (in quantity) or those that could exist (as out-of-stock until replenished).

If the customer disables javascript, then they will "see" all of the options, but upon submission of their request (add-to-cart), should be told that the quantity is out-of-stock/doesn't exist and be requested to choose a different option.

Now... If back at the start of this, you wanted to have 3 selections, only two of which are stock dependent, SBA does not yet directly support such a review, because the add-to-cart feature/function specifically looks to validate that the selection(s) made exist within the SBA table in order to prevent selling an item that is not in stock.

Now... Are there ways to work around that, I think the answer is yes, though I haven't tried to fill the database with data to support other than if a product is entered with combination style attributes AND individual style attributes, if a combination is not found, but a quantity can be generated from the individual attributes then the quantities across each of the individual attributes would be reduced. This doesn't help/automate the overall stock tracking, but until that next feature has been flushed out, it is not possible (without other code modification) to identify a modifiable attribute as non-stock dependent (a read-only attribute is not modifiable but also could be displayed for a given product).

Perhaps overkill, but my plan is to implement the ability to "excuse" an attribute from stock tracking at almost all conceivable "levels" to minimize the effort to generate product attribute quantities and to simplify the database lookup process...

Hope that helps.

16 Jun 2017, 7:23 PM
#2720
jeking avatar

jeking

Totally Zenned

Join Date:
Oct 2005
Location:
Chicago, IL USA
Posts:
1,592
Plugin Contributions:
0

Re: Stock by Attribute v4.0 addon for v1.3.5-1.3.9

mc12345678:

If I understand correctly:
product has 2 attributes (size and color)
sizes are: 4, 5, 6, and 7 (as an example)
colors are: red, blue, and green (again limited example)
But... Size 7 doesn't come in green and sizes 4 and 5 don't come in red and blue, respectively.
The attributes are added as combinations (4 and blue - quantity 5, 5 and red -quantity 10, 6 and all colors quantity of 4, etc...)

The question becomes what do you want to ultimately display? (ie. out-of-stock for product that do not ever exist, out-of-stock for product that only can exist, or don't show out-of-stock for product regardless of their on-hand quantity or potential existence?)
You could display an out-of-stock for 7-green, by defining 7-green as a stock of 0 and allowing out-of-stock to be displayed, but more than likely if you want to show out-of-stock related quantities, then you would want to only define those quantities as possible/in-stock.

So, with Dynamic Dropdowns enabled, showing out-of-stock product, if you only define the group(s) that exist/are possible and ignore those that do not/can not exist, then the customer (with javascript enabled) will be shown the options that exist (in quantity) or those that could exist (as out-of-stock until replenished).

I do think you understood the question correctly.

Ultimately either out of stock or not displaying any unavailable combination does the job. I was hoping to avoid setting up all the available combinations as the unavailable is a shorter list, but ok, it sounds like it will do the job.

One piece I'm not clear on. Let's say a product has a third attribute, say Gift Box which is a yes/no option. Do we need to account for that in SBA somehow?