Jump to content

1.4.9 OnePageCheckout pro Guesta problémy s tlačítkem Uložit a pokračovat.


Assramm (cz)

Recommended Posts

Zdravím,

 

na verzi 1.4.9 (a 1.4.11 takréž) jsem narazil na chybu které jsem si nikdy předtím nevšiml (upozornil mě až zákazník :().

 

Při použití nastavení (!!! i při čisté instalaci):

OPC (jednostránková objednávka),

Nákup bez registrace,

 

..na pokladně, při použití "nákupu bez registrace", vyplnění adresy a uložení dat zákazníka kliknutím na tlačítko pod adresou, dojde k bezproblémovému načtení dat, vyskočí hláška "Údaje byly změněny" a lze pokračovat v objednávce až do konce.

Ale, v případě, že se vrátím na obchod (nemusím měnit obsah košíku - jen odejdu ze stránky objednávky) a vrátím se zpět na objednávku (chci jí konečně dokončit), opět pod adresou na mě svítí tlačítko "Uložit" (všiml jsem si toho ale nikdy jsem na to tlašítko neklikl, nebyl důvod). Pokud se na tlačítko klikne, zamrzne volba dopravy-výběr není aktivní a je nutný refresh stránky.

 

U poslední verze co jsem měl (1.4.0.17) se po odejetí z procesu objednávky a vrácení se zpět pod adresou oběví již hláška údaje byly změněny.

 

Test možný ne e-shopu na 1.4.11 - www.medene-formy.cz

 

Netušíte prosím, kde by mohla být chybka, popřípadě, jak elegantně toto obejít?

 

 

Díky, J.

 

 

 

VYŘEŠENO: pomůže tento kod v order-opc-new-account.tpl.

        {if isset($guestInformations) && $guestInformations.customer_firstname}
        <p class="submit" style="float: left;margin:25px;">
					<input type="submit" class="grey_button" name="submitAccount" id="submitAccount" value="{l s='Změnit údaje a pokračovat'}" />
				</p>
				<p style="float: left;margin:25px 0;padding: 10px 20px;border:2px solid green; color: green;display:none;" id="opc_account_saved">
					<strong>{l s='Údaje byly změněny a uloženy'}</strong>
				</p>
				{else}
				<p class="submit" style="float: left;margin:25px;">
					<input type="submit" class="exclusive button" name="submitAccount" id="submitAccount" value="{l s='Save'}" />
				</p>
				<p style="float: left;margin:25px 0;padding: 10px 20px;border:2px solid green; color: green;display:none;" id="opc_account_saved">
					<strong>{l s='Account informations saved successfully'}</strong>
				</p>
				{/if}

..

Edited by Assramm (cz) (see edit history)
Link to comment
Share on other sites

Problém bude zřejmě někde zde (v order-opc.js):

// VALIDATION / CREATION AJAX
		$('#submitAccount').click(function() {
			$('#opc_new_account-overlay').fadeIn('slow');
			$('#opc_delivery_methods-overlay').fadeIn('slow');
			$('#opc_payment_methods-overlay').fadeIn('slow');
			
			// RESET ERROR(S) MESSAGE(S)
			$('#opc_account_errors').html('').slideUp('slow');
			
			if ($('input#opc_id_customer').val() == 0)
			{
				var callingFile = authenticationUrl;
				var params = 'submitAccount=true&';
			}
			else
			{
				var callingFile = orderOpcUrl;
				var params = 'method=editCustomer&';
			}
			
			$('#opc_account_form input:visible').each(function() {
				if ($(this).is('input[type=checkbox]'))
				{
					if ($(this).is(':checked'))
						params += encodeURIComponent($(this).attr('name'))+'=1&';
				}
				else if ($(this).is('input[type=radio]'))
				{
					if ($(this).is(':checked'))
						params += encodeURIComponent($(this).attr('name'))+'='+encodeURIComponent($(this).val())+'&';
				}
				else
					params += encodeURIComponent($(this).attr('name'))+'='+encodeURIComponent($(this).val())+'&';
			});
			$('#opc_account_form select:visible').each(function() {
				params += encodeURIComponent($(this).attr('name'))+'='+encodeURIComponent($(this).val())+'&';
			});
			params += 'customer_lastname='+encodeURIComponent($('#customer_lastname').val())+'&';
			params += 'customer_firstname='+encodeURIComponent($('#customer_firstname').val())+'&';
			params += 'alias='+encodeURIComponent($('#alias').val())+'&';
			params += 'other='+encodeURIComponent($('#other').val())+'&';
			params += 'is_new_customer='+encodeURIComponent($('#is_new_customer').val())+'&';
			// Clean the last &
			params = params.substr(0, params.length-1);
			
			$.ajax({
				type: 'POST',
				url: callingFile,
				async: false,
				cache: false,
				dataType : "json",
				data: 'ajax=true&'+params+'&token=' + static_token ,
				success: function(jsonData)
				{
					if (jsonData.hasError)
					{
						var tmp = '';
						var i = 0;
						for(error in jsonData.errors)
							//IE6 bug fix
							if(error != 'indexOf')
							{
								i = i+1;
								tmp += '<li>'+jsonData.errors[error]+'</li>';
							}
						tmp += '</ol>';
						var errors = '<b>'+txtThereis+' '+i+' '+txtErrors+':</b><ol>'+tmp;
						$('#opc_account_errors').html(errors).slideDown('slow');
						$.scrollTo('#opc_account_errors', 800);
					}

					isGuest = ($('#is_new_customer').val() == 1 ? 0 : 1);
					
					if (jsonData.id_customer != undefined && jsonData.id_customer != 0 && jsonData.isSaved)
					{
						// update token
						static_token = jsonData.token;
						
						// update addresses id
						$('input#opc_id_address_delivery').val(jsonData.id_address_delivery);
						$('input#opc_id_address_invoice').val(jsonData.id_address_invoice);
						
						// It's not a new customer
						if ($('input#opc_id_customer').val() != '0')
						{
							if (!saveAddress('delivery'))
								return false;
						}
						
						// update id_customer
						$('input#opc_id_customer').val(jsonData.id_customer);
						
						if ($('#invoice_address:checked').length != 0)
						{
							if (!saveAddress('invoice'))
								return false;
						}
						
						// update id_customer
						$('input#opc_id_customer').val(jsonData.id_customer);
						
						// force to refresh carrier list
						if (isGuest)
						{
							$('#opc_account_saved').fadeIn('slow');
							$('#submitAccount').hide();
							updateAddressSelection();
						}
						else
							updateNewAccountToAddressBlock();
					}
					$('#opc_new_account-overlay').fadeOut('slow');
					$('#opc_payment_methods-overlay').fadeOut('slow');
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {alert("TECHNICAL ERROR: unable to save account \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);}
			});
			return false;
		});
	}

Stačilo by aby se refreshovala stránka, popřípadě jen dopravce (nebo aby se dopravce nerefreshoval ?)..

Po odklepnutí tlačítka "uložit" totiž dojde k refreshi dopravce, ale ten zamrzne..

 

Nevim, fak nevim :huh:

 

Prosím prosím, někdo, netušíte?

 

Link to comment
Share on other sites

Mnoho problému ohledně tohoto se řešilo až v další řadě 1.5+ to co můžete zkusit je se podívat na rozdíly v kódu např. tahle chyba OPC a Guest problém s adresou u v 1.5 opravená před nějakými 3mi měsíci a vydaná v poslední verzi 1.5.6.2. Jinak pokud vám to blbne i pro čistou instalaci bez jakýchkoliv dodatečných modulů pro dopravu a platbu (ty by to mohli způsobit taky ale u vás zřejmě nikoliv) a na origo theme prestashop tak řešení bude složité a možná se vám naopak vyplatí přejít na vyšší řadu tj. 1.5 (1.6 bude mít základní jádro snad podobné takže moduly by fungovat mohly i z 1.5 ale nikdo vám to nezaručí...).

 

Další možnost pokud by mělo stačit pořešit to tlačítko Uložit potom co se podruhé vrátíte do košíka je nějak jinak pojmenovat to tlačítko nebo nejlépe ho schovat pokud už jsou/byli údaje vyplněny-možná to už někde někdo také řešil zkuste se podívat na Aj forum nebo můžete do větve 1.4 na github zadat tuto chybu a třeba vám George Roussac ještě pošle patch.

Edited by XM4N (see edit history)
Link to comment
Share on other sites

Díky za info, hledal jsem všemožně, zatím nic.

 

Nicméně, snažím se o něco takového (teď budu za mamlase ale programátor nikdy nebudu, tak se předem omlouvám :) ).

 

v souboru: order-opc-new-account.tpl

{if ($delivery_address.length == 0) && ($invoice_address.length == 0)}
	<p> ** ZDE BUDE TLAČÍTKO "ULOŽIT A POKRAČOVAT" </p>
{else}
	<p> ** ZDE BUDE TLAČÍTKO "ZMĚNIT ÚDAJE A POKRAČOVAT" </p>
{/if}

Myslel jsem použít:

1. změny popisku tlačítka pod adresou "uložit" použitím {if ($delivery_address.length == 0) && ($invoice_address.length == 0)} ..Ale tento zápis samozřejmě nefunguje (nevím proč :wacko:),

 

2. V případě odkliknutí tlačítka "uložit" refreshovat stránku.

 

Tím by bylo vše OK.

 

Díky

Link to comment
Share on other sites

Díky za info, hledal jsem všemožně, zatím nic.

 

Nicméně, snažím se o něco takového (teď budu za mamlase ale programátor nikdy nebudu, tak se předem omlouvám :) ).

 

v souboru: order-opc-new-account.tpl

{if ($delivery_address.length == 0) && ($invoice_address.length == 0)}
	<p> ** ZDE BUDE TLAČÍTKO "ULOŽIT A POKRAČOVAT" </p>
{else}
	<p> ** ZDE BUDE TLAČÍTKO "ZMĚNIT ÚDAJE A POKRAČOVAT" </p>
{/if}

Myslel jsem použít:

1. změny popisku tlačítka pod adresou "uložit" použitím {if ($delivery_address.length == 0) && ($invoice_address.length == 0)} ..Ale tento zápis samozřejmě nefunguje (nevím proč :wacko:),

 

2. V případě odkliknutí tlačítka "uložit" refreshovat stránku.

 

Tím by bylo vše OK.

 

Díky

 

Prosím, nepomohl by mi někdo s tímto zápisem v order-opc-new-account.tpl?

Moc by mi to pomohlo, Děkuji..

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...