tessguefen
3/18/2016 - 9:49 PM

II Build // Auto Update Craziness

II Build // Auto Update Craziness

<mvt:if expr="g.update_ctgy_dat EQ 1">
	<mvt:assign name="l.settings:dat_filename" value="'Merchant5/s01/export/powersearch-other_cats.dat'" />
	<mvt:assign name="l.settings:file_exsists" value="fexists(l.settings:dat_filename)"/>
	<mvt:if expr="l.settings:file_exsists">
		<mvt:assign name="l.settings:delete_file" value="fdelete(l.settings:dat_filename)" />
	</mvt:if>
	<mvt:assign name="g.Offset" value="0" />
	<mvt:assign name="g.Search" value="1" />
	<mvt:assign name="g.Fields" value="'active'" />
	<mvt:assign name="g.Max" value="0" />
	<mvt:assign name="g.run" value="0" />
	<mvt:do file="g.module_library_db" name="l.null" value="CategoryList_Load_Offset(g.Offset, g.Search, g.Fields, g.Max, g.NextOffset, l.settings:cats)" /> 
	<mvt:foreach iterator="cat" array="cats">
		<mvt:if expr="l.settings:cat:parent_id EQ 0">
			<mvt:foreachcontinue />
		</mvt:if>

		<mvt:if expr="l.settings:cat:code EQ 'tire-finder' OR l.settings:cat:code EQ 'for-the-bike'">
			<mvt:foreachcontinue />
		</mvt:if>
		<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:cat:parent_id, l.settings:cat2)" />
		<mvt:comment> <!-- check for Brand, do not want to include --> </mvt:comment>
		<mvt:if expr="l.settings:cat2:code EQ 'shop-by-brand' OR l.settings:cat2:code EQ 'year'">
			<mvt:foreachcontinue />
		</mvt:if>
		<mvt:if expr="l.settings:cat2:parent_id GT 0">
			<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:cat2:parent_id, l.settings:parentcategory)" />
			<mvt:comment> <!-- Check for "shop for the bike", want to exclude this --> </mvt:comment>
			<mvt:if expr="tolower(l.settings:parentcategory:code) EQ 'year'">
				<mvt:foreachcontinue />
			</mvt:if>
		</mvt:if>
		<mvt:assign name="l.settings:dat_data" value="l.settings:dat_data $ l.settings:cat:name $ '|' $ l.settings:cat:id $ asciichar(10)" />
	</mvt:foreach>
	<mvt:assign name="l.settings:created_file" value="file_create( l.settings:dat_filename, 'data', l.settings:dat_data)" />
	Complete!
	<mvt:exit />
</mvt:if>
<mvt:if expr="l.settings:all_products:page_links:last_page GT 1">
	<mvt:if expr="ISNULL g.start">
		<a href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&start=1">Start Auto Update for Products.</a><br />
		This will update the following custom fields:<br />
		<ul>
			<li>Brand Code (brandcode)</li>
			<li>Brand Name (brandname)</li>
			<li>Variant Skus (vskus, vcodes, vskus_nd, vskus_nds, vcodes_nd, vcodes_nds)</li>
			<li>Number of Colors Available (num_colors)</li>
			<li>Fitment (fitment)</li>
			<li>Other Category Filters (CTGY only)</li>
			<li>Category names for search </li>
		</ul>
	</mvt:if>

	<div>
		<span class="page-links-title">Page(s):</span>
		<span class="page-links-container">
			<mvt:if expr="l.settings:all_products:page_links:current_page NE 1">
				<a href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&&mvte:all_products:page_links:prev_link_params;&start=&mvt:global:start;&category_updates=&mvt:global:category_updates;" class="page-links-previous">&lt;</a>
			</mvt:if>
			<mvt:if expr="l.settings:all_products:page_links:current_page NE l.settings:all_products:page_links:last_page">
				<a href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&&mvte:all_products:page_links:next_link_params;&start=&mvt:global:start;&category_updates=&mvt:global:category_updates;" class="page-links-next" id="page-links-next">&gt;</a>
			</mvt:if>
		</span>
	</div>
</mvt:if>
<mvt:if expr="g.start">
<mvt:if expr="l.settings:all_products:page_links:current_page EQ l.settings:all_products:page_links:last_page AND g.category_updates">
	COMPLETE<br/><br/>
	<a id="page-links-next" href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&update_ctgy_dat=1">update_categories</a>
<mvt:elseif expr="l.settings:all_products:page_links:current_page EQ l.settings:all_products:page_links:last_page">
		CATEGORY UPDATES...<br/><br/>
		<a id="page-links-next" href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&start=1&category_updates=1">update_categories</a>
l.settings:all_products:page_links:first_link
</mvt:if>
<mvt:eval expr="miva_array_elements( l.settings:all_products:products ) + g.AllOffset" /> out of &mvt:all_products:total_prod_count;<br />
&mvt:all_products:products[1]:code;
<mvt:if expr="ISNULL g.category_updates">
	<mvt:foreach iterator="product" array="all_products:products">
			<mvt:comment>
			|
			| Assignment of Variant Skus
			|
			</mvt:comment>
			<mvt:assign name="l.settings:variantSkus" value="''" />
			<mvt:assign name="l.settings:variantCodes" value="''" />
			<mvt:assign name="l.settings:vskus_nodash" value="''" />
			<mvt:assign name="l.settings:vskus_nodashspace" value="''" />
			<mvt:assign name="l.settings:vcodes_nodash" value="''" />
			<mvt:assign name="l.settings:vcodes_nodashspace" value="''" />
			<mvt:assign name="l.settings:product:sku_without_dashes" value="glosub( l.settings:product:sku, '-', '' )" />
			<mvt:assign name="l.settings:product:sku_with_spaces" value="glosub( l.settings:product:sku, '-', ' ' )" />
			<mvt:assign name="l.settings:product:code_without_dashes" value="glosub( l.settings:product:code, '-', '' )" />
			<mvt:assign name="l.settings:product:code_with_spaces" value="glosub( l.settings:product:code, '-', ' ' )" />
				<mvt:item name="toolkit" param="variantarray|vcount|l.all_settings:product:code" />
				<mvt:if expr="g.vcount GT 0">
					<mvt:assign name="l.settings:variantSkus" value="''" />
					<mvt:assign name="l.vcount" value="1" />
					<mvt:foreach iterator="variant" array="variants">
						<mvt:item name="toolkit" param="vproduct_find|productfound|l.all_settings:variant:variant_code|A" />

						<mvt:item name="customfields" param="Read_Product_ID( l.settings:product:id, 'brandcode', l.settings:product:customfield_values:customfields:brandcode )" />
						<mvt:item name="customfields" param="Read_Product_ID( l.settings:product:id, 'brandname', l.settings:product:customfield_values:customfields:brandname )" />

						<mvt:if expr="NOT ISNULL l.settings:product:new_brandcode AND NOT ISNULL l.settings:product:new_brandname">
							<mvt:item name="customfields" param="Write_Product_Code( l.settings:variant:variant_code, 'brandcode', l.settings:product:new_brandcode )" />
							<mvt:item name="customfields" param="Write_Product_Code( l.settings:variant:variant_code, 'brandName', l.settings:product:new_brandname)" />
						<mvt:elseif expr="NOT ISNULL l.settings:product:customfield_values:customfields:brandcode AND NOT ISNULL l.settings:product:customfield_values:customfields:brandname">
							<mvt:item name="customfields" param="Write_Product_Code( l.settings:variant:variant_code, 'brandcode', l.settings:product:customfield_values:customfields:brandcode )" />
							<mvt:item name="customfields" param="Write_Product_Code( l.settings:variant:variant_code, 'brandName', l.settings:product:customfield_values:customfields:brandname)" />
						</mvt:if>

						<mvt:assign name="l.settings:key_product:code_without_dashes" value="glosub( l.settings:key_product:code, '-', '' )" />
						<mvt:assign name="l.settings:key_product:code_with_spaces" value="glosub( l.settings:key_product:code, '-', ' ' )" />

						<mvt:assign name="l.settings:key_product:sku_without_dashes" value="glosub( l.settings:key_product:sku, '-', '' )" />
						<mvt:assign name="l.settings:key_product:sku_with_spaces" value="glosub( l.settings:key_product:sku, '-', ' ' )" />

						<mvt:if expr="ISNULL l.settings:variantSkus AND l.settings:key_product:sku">
							<mvt:assign name="l.settings:variantSkus" value="'|' $ l.settings:product:sku $ '|' $ l.settings:key_product:sku $ '|'" />
						<mvt:elseif expr="l.settings:variantSkus AND l.settings:key_product:sku">
							<mvt:assign name="l.settings:variantSkus" value="l.settings:variantSkus $ l.settings:key_product:sku $ '|'" />
						</mvt:if>

						<mvt:if expr="ISNULL l.settings:variantCodes AND l.settings:key_product:code">
							<mvt:assign name="l.settings:variantCodes" value="'|' $ l.settings:product:code $ '|' $ l.settings:key_product:code $ '|'" />
						<mvt:elseif expr="l.settings:variantCodes AND l.settings:key_product:code">
							<mvt:assign name="l.settings:variantCodes" value="l.settings:variantCodes $ l.settings:key_product:code $ '|'" />
						</mvt:if>

						<mvt:if expr="ISNULL l.settings:vskus_nodash AND l.settings:key_product:sku_without_dashes">
							<mvt:assign name="l.settings:vskus_nodash" value="'|' $ l.settings:product:sku_without_dashes $ '|' $ l.settings:key_product:sku_without_dashes $ '|'" />
						<mvt:elseif expr="l.settings:vskus_nodash AND l.settings:key_product:sku_without_dashes">
							<mvt:assign name="l.settings:vskus_nodash" value="l.settings:vskus_nodash $ l.settings:key_product:sku_without_dashes $ '|'" />
						</mvt:if>

						<mvt:if expr="ISNULL l.settings:vskus_nodashspace AND l.settings:key_product:sku_with_spaces">
							<mvt:assign name="l.settings:vskus_nodashspace" value="'|' $ l.settings:product:sku_with_spaces $ '|' $ l.settings:key_product:sku_with_spaces $ '|'" />
						<mvt:elseif expr="l.settings:vskus_nodashspace AND l.settings:key_product:sku_with_spaces">
							<mvt:assign name="l.settings:vskus_nodashspace" value="l.settings:vskus_nodashspace $ l.settings:key_product:sku_with_spaces $ '|'" />
						</mvt:if>

						<mvt:if expr="ISNULL l.settings:vcodes_nodash AND l.settings:key_product:code_without_dashes">
							<mvt:assign name="l.settings:vcodes_nodash" value="'|' $ l.settings:product:code_without_dashes $ '|' $ l.settings:key_product:code_without_dashes $ '|'" />
						<mvt:elseif expr="l.settings:vcodes_nodash AND l.settings:key_product:code_without_dashes">
							<mvt:assign name="l.settings:vcodes_nodash" value="l.settings:vcodes_nodash $ l.settings:key_product:code_without_dashes $ '|'" />
						</mvt:if>

						<mvt:if expr="ISNULL l.settings:vcodes_nodashspace AND l.settings:key_product:code_with_spaces">
							<mvt:assign name="l.settings:vcodes_nodashspace" value="'|' $ l.settings:product:code_with_spaces $ '|' $ l.settings:key_product:code_with_spaces $ '|'" />
						<mvt:elseif expr="l.settings:vcodes_nodashspace AND l.settings:key_product:code_with_spaces">
							<mvt:assign name="l.settings:vcodes_nodashspace" value="l.settings:vcodes_nodashspace $ l.settings:key_product:code_with_spaces $ '|'" />
						</mvt:if>

					</mvt:foreach>
					<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vskus', l.settings:variantSkus )" />
					<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vcodes', l.settings:variantCodes )" />
					<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vskus_nd', l.settings:vskus_nodash )" />
					<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vskus_nds', l.settings:vskus_nodashspace )" />
					<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vcodes_nd', l.settings:vcodes_nodash )" />
					<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vcodes_nds', l.settings:vcodes_nodashspace )" />
				</mvt:if>

			<mvt:comment>
			|
			| # of Colors Available
			|
			</mvt:comment>
			<mvt:assign name="l.settings:numberofcolors" value="0" />
			<mvt:assign name="l.settings:loaded_attributes" value="0" />
			<mvt:item name="customfields" param="Read_Product_ID( l.settings:product:id, 'num_colors', l.settings:numberofcolors )" />
			<mvt:if expr="ISNULL l.settings:numberofcolors OR l.settings:numberofcolors EQ 0">
				<mvt:assign name="l.settings:option" value="''" />
				<mvt:do file="g.Module_Library_DB" name="l.success" value="AttributeList_Load_Product(l.settings:product:id, l.settings:loaded_attributes)" />
				<mvt:if expr="miva_array_elements( l.settings:loaded_attributes ) GT 0">
					<mvt:foreach iterator="attribute" array="loaded_attributes">
						<mvt:if expr="'color' CIN tolower(l.settings:attribute:prompt)">
							<mvt:if expr="l.settings:attribute:attmpat_id GT 0">
								<mvt:do file="g.Module_Library_DB" name="l.success" value="AttributeTemplateOptionList_Load_Attribute(l.settings:attribute:attmpat_id, l.settings:option)" />
								<mvt:assign name="l.settings:numberofcolors" value="miva_array_elements(l.settings:option)" />
							<mvt:else>
								<mvt:do file="g.Module_Library_DB" name="l.success" value="OptionList_Load_Attribute(l.settings:attribute:id, l.settings:option)" />
								<mvt:assign name="l.settings:numberofcolors" value="miva_array_elements(l.settings:option)" />
							</mvt:if>
						</mvt:if>
					</mvt:foreach>
				</mvt:if>
				<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'num_colors', l.settings:numberofcolors )" />
			</mvt:if>


			<mvt:comment>
			|
			| On Sale
			|
			</mvt:comment>
			<mvt:if expr="l.settings:product:base_price GT l.settings:product:price">
				<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'on_sale', '|1|' )" />
			<mvt:else>
				<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'on_sale', '|0|' )" />
			</mvt:if>
	</mvt:foreach>
<mvt:else>
	<mvt:comment> <!-- CATEGORIES --> </mvt:comment>
	<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Code( 'shop-by-brand', l.shop_by_brand )" />
	<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Code( 'year', l.year )" />
	<mvt:foreach iterator="product" array="all_products:products">
		<mvt:comment>
		|
		| Assign brandcode/ brandName
		| Only if empty.
		|
		</mvt:comment>
		<mvt:assign name="l.settings:product:new_brandcode" value="''" />
		<mvt:assign name="l.settings:product:new_brandname" value="''" />
		<mvt:assign name="l.settings:incategories" value="''" />
		<mvt:assign name="l.settings:fitment" value="''" />

		<mvt:do file="g.Module_Library_DB" name="l.productincats" value="CategoryList_Load_Offset_Product_Assigned(l.settings:product:id, 0, '', '', 0, l.offsetvar, l.settings:incategories)" />
		<mvt:do file="g.Module_Library_Utilities" name="l.success" value="QuickSortArray(l.settings:incategories, ':name', -1)" />

		<mvt:comment> <!-- NEW CODE --> </mvt:comment>
		<mvt:if expr="l.settings:incategories">
			<mvt:foreach iterator="incategory" array="incategories">
				<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:incategory:id, l.settings:incategory)" />

				<mvt:comment> ---[ Begin: Check for Shop by Brand ] --- </mvt:comment>
				<mvt:if expr="l.settings:incategory:parent_id EQ l.shop_by_brand:id AND ( ISNULL l.settings:product:brandcode ) AND ( ISNULL l.settings:customfield_values:customfields:brandcode )">
					<mvt:assign name="l.settings:product:new_brandcode" value="l.settings:incategory:code" />
					<mvt:assign name="l.settings:product:new_brandname" value="glosub(l.settings:incategory:name, '&', 'and')" />
					<mvt:comment><mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'brandcode', l.settings:product:new_brandcode )" />
					<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'brandName', l.settings:product:new_brandname)" /></mvt:comment>
				</mvt:if>
				<mvt:comment> ---[ End: Check for Shop by Brand ] --- </mvt:comment>
				
				<mvt:comment> ---[ Begin: Fitment ] --- </mvt:comment>
				<mvt:if expr="l.settings:incategory:parent_id GT 0">

					<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:incategory:parent_id, l.settings:incategory:parent_category)" />

					<mvt:if expr="l.settings:incategory:parent_category:parent_id GT 0">

						<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:incategory:parent_category:parent_id, l.settings:incategory:parent_category:parent_category)" />

						<mvt:if expr="tolower( l.settings:incategory:parent_category:parent_category:name) EQ 'year'">
							<mvt:if expr="NOT ISNULL l.settings:fitment">
								<mvt:assign name="l.settings:fitment" value="l.settings:fitment $ ', ' $ l.settings:incategory:name" />
							<mvt:else>
								<mvt:assign name="l.settings:fitment" value="l.settings:incategory:name" />
							</mvt:if>
						</mvt:if>
					</mvt:if>
				</mvt:if>
				<mvt:comment> ---[ End: Fitment ] --- </mvt:comment>

				<mvt:comment> ---[ Begin: Category Search ] --- </mvt:comment>
				<mvt:if expr="ISNULL l.settings:cat_search">
					<mvt:assign name="l.settings:cat_search" value="l.settings:incategory:name" />
				<mvt:else>
					<mvt:assign name="l.settings:cat_search" value="l.settings:cat_search $ ',' $ l.settings:incategory:name" />
				</mvt:if>

				<mvt:if expr="l.settings:incategory:parent_id EQ 0">
					<mvt:foreachcontinue />
				</mvt:if>

				<mvt:if expr="l.settings:incategory:code EQ 'tire-finder' OR l.settings:incategory:code EQ 'for-the-bike'">
					<mvt:foreachcontinue />
				</mvt:if>

				<mvt:if expr="l.settings:incategory:parent_id EQ l.shop_by_brand:id OR l.settings:incategory:parent_id EQ l.year:id">
					<mvt:foreachcontinue />
				</mvt:if>

				<mvt:if expr="l.settings:incategory:parent_category:parent_id GT 0">
					<mvt:if expr="l.settings:incategory:parent_category:parent_category:id EQ l.year:id">
						<mvt:foreachcontinue />
					</mvt:if>
				</mvt:if>

				<mvt:do file="g.Module_Library_DB" name="l.null" value="Runtime_CategoryList_Load_Parent( l.settings:incategory:id, l.settings:incategory:children )" />
				<mvt:if expr="miva_array_elements( l.settings:incategory:children ) GT 0">
					<mvt:foreachcontinue />
				</mvt:if>

				<mvt:if expr="l.settings:other_cats">
					<mvt:assign name="l.settings:other_cats" value="l.settings:other_cats $ trim( l.settings:incategory:id ) $ '|' " />
				<mvt:else>
					<mvt:assign name="l.settings:other_cats" value="'|' $ trim( l.settings:incategory:id ) $ '|' " />
				</mvt:if>
				<mvt:comment> ---[ End: Category Search ] --- </mvt:comment>


			</mvt:foreach>
		</mvt:if>
		<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'fitment', l.settings:fitment )" />
		<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'other_cats', l.settings:other_cats )" />
		<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'cat_search', l.settings:cat_search )" />
		<mvt:comment> <!-- / NEW CODE --> </mvt:comment>

	</mvt:foreach>
<mvt:comment> <!-- CATEGORIES --> </mvt:comment>
</mvt:if>
</table>
</mvt:if>
<mvt:if expr="g.start">
<script>
	document.addEventListener("DOMContentLoaded", function(event) { 
	    var next = document.getElementById('page-links-next').getAttribute('href');
		if (next) {
			window.location.href = next;
		}
	});
</script>
</mvt:if>