Show Posts


Messages - renato.aloi

Pages: [1]
1
Support / Re: Country selection box problem
« on: December 18, 2017, 09:35:12 AM »
Thank you for the information!

Best Regards,
Renato

2
Support / Country selection box problem
« on: December 14, 2017, 04:17:56 PM »
Hi guys!

I am facing a strange problem with country select box in account creation form.

The above mentioned select box is appearing for me with only the last option, that is Zimbawe. Check out the image bellow...

ANNEX 1

Digging a little bit of code I found out the problem is with my language extension installation. I have installed brazilian portuguese language.

The problem is in model/localisation/country.php at line 62 through 69. For better understanding, follows the code:

--------------------------------------------------------------------
$query = $this->db->query("SELECT *, COALESCE( cd1.name,cd2.name) as name
                   FROM " . $this->db->table("countries") . " c
                   LEFT JOIN " . $this->db->table("country_descriptions") . " cd1
                      ON (c.country_id = cd1.country_id AND cd1.language_id = '" . (int)$language_id . "')
                   LEFT JOIN " . $this->db->table("country_descriptions") . " cd2
                      ON (c.country_id = cd2.country_id AND cd2.language_id = '" . (int)$default_language_id . "')
                   WHERE c.status = '1'
                   ORDER BY cd1.name,cd2.name ASC");
--------------------------------------------------------------------

In the line 67 we have a LEFT JOIN to include also country descriptions for the default language. The thing is the (int)$default_language_id is becoming 0 (zero).

So, the query results NULL for country_id field, as follows:

ANNEX 2

Any suggestions?

Thanks in advance!
Renato Aloi

3
Thank you for the quick reply, Dmitriy!

Unfortunely that controller in question does not make use of data public member.

I found a way to solve the problem. The hook declaration must be like this in order to work properly:

public function beforeModelCheckoutOrder_update($order_id, $order_status_id, $comment, $notify)
{
  $that = $this->baseObject;
  $method = $this->baseObject_method;

  echo print_r($order_id, true) . "<br/>";
  echo print_r($order_status_id, true) . "<br/>";
  echo print_r($comment, true) . "<br/>";
  echo print_r($notify, true) . "<br/>";
  // ...
}

I realized I was declaring the hook wrong with the first parameter $this. Then I saw this example at docs:

class ExtensionName extends Extension {
               public function afterClassNameMethodName($param1, $param2) {
      // hook $this->performSomeAction()
      $this->hkPerformSomeAction();
   }
   public function performSomeAction() {
      // ...
   }
}

And I realized the parameter $this should be skipped...

Now is working as expected.

Thank you!

4
Hi there!

I am trying to create a Hook for update method of ModelCheckoutOrder class.

$this->extensions->hk_update($this, $order_id, $order_status_id, $comment, $notify);

I have learned I must do as follows:

public function beforeModelCheckoutOrder_update() { }

I need now gain access to $order_id parameter inside my hook function. How can I do it?

Thanks in advance!

5
Development Help Needed / Re: Checkout order update hook
« on: March 31, 2017, 09:03:28 AM »
Hi!

My bad! Now I see! I am using default_pp_pro as guideline for my development, but I missed the confirm function call right after ACK==Success!

It is crystal clear for me now! Thank you!

6
Development Help Needed / Checkout order update hook
« on: March 30, 2017, 04:58:11 PM »
Hi there!

I am developing a payment extension and at the end of payroll process I want to update the order status.

I was calling update function from Checkout order model, but I noticed a strange rule is in place:

$order_query = $this->db->query("SELECT *
                               FROM `" . $this->db->table("orders") . "` o
                               LEFT JOIN " . $this->db->table("languages") . " l ON (o.language_id = l.language_id)
                               WHERE o.order_id = '" . (int)$order_id . "' AND o.order_status_id > '0'");

if ($order_query->num_rows){ ...

Why is that? Why can I only update order statuses greater than '0'?

So I decided to Hook up the function adding the following code to my core extension php:

public function onModelCheckoutOrder_update()
   {
      // ...
   }

But the hook is not triggering! Any ideas?

Thank you!

Best Regards,
Renato

7
Customization help / Re: Missing newly inserted address ID
« on: March 15, 2017, 09:45:32 AM »
Thank you a lot!

Solution #2 worked like a charm!

Best Regards
Renato

8
Customization help / Missing newly inserted address ID
« on: March 14, 2017, 06:03:28 PM »
Hello again!

I am stucked again at another point developing my extension.

Now I need to hook up some new fields to Address Book form.

I've managed to hook up my code in registration form when user is registering the login for 1st time. Like this:

public function onControllerPagesAccountCreate_UpdateData()
{
  $that = $this->baseObject;
  if ($that->request->is_POST())
  {
    ...
    $address_id = $result->rows[0]['address_id'];
    $that->db->query(
      sprintf("INSERT INTO `%s` (`address_id`, `address_complement`, `address_number`, `address_district`) VALUES (%d, '%s', '%s', '%s') ",
        'pse_addresses_attributes',
        $address_id,
        $request_data['complement'],
        $request_data['number'],
        $request_data['district'])
      );
  }
 ...
}

My problem now is how can I determine the $address_id when adding new address from Address Book?

At Address Book edit page there is a button called "New Address" and it triggers the insert method at ControllerPagesAccountAddress class.

For some strange reason I do not understand the method addAddress from ModelAccountAddress class (called by insert method) does not set any address_id global variable.

So how can I get the address id latter in my hook function?

I have tried this with out success:

public function onControllerPagesAccountAddress_ProcessData()
{
  $that = $this->baseObject;
  $method = $this->baseObject_method;
  $request_data = $that->request->post;

  if ($method == 'insert') $address_id = $that->db->getLastId(); // This do not work!!
  ...
}

----
P.S.: Sorry about the code off the tags, but the forum is blocking me from posting code inside apropriate tags.

The forum is gaving me this error when I try to post code inside tags:

Code: newbielink:javascript:void(0); [nonactive]

and this

Sorry, you are not allowed to post external links.
----

Thank you all in advance!

Best Regards
Renato

9
Hi!

Ok, I've got it! The solution was adding following SQL query install.php extension script:

$this->db->query(
   sprintf("DELETE FROM `%s` WHERE block = '%s' OR block = '%s'",
               $this->db->table('language_definitions'),
               'account_create',
               'account_edit')
);

The command above delete entire sections where my extension wish to add new entries.

Then recreate XML files for that sections, including the new entries, as follows:

Example for: myextension\storefront\language\english\account\create.xml

<?xml version="1.0"?>
<definitions>

<!-- NEW ENTRIES -->

  <definition>
    <key>entry_cpf</key>
    <value><![CDATA[CPF:]]></value>
  </definition>
  <definition>
    <key>error_cpf</key>
    <value><![CDATA[CPF field is mandatory, must be numeric and contains 11 digits!]]></value>
  </definition>
  <definition>
    <key>entry_number</key>
    <value><![CDATA[Number:]]></value>
  </definition>
  <definition>
    <key>error_number</key>
    <value><![CDATA[Residence number field is mandatory and must be between 1 and 6 characters!]]></value>
  </definition>
  <definition>
    <key>entry_complement</key>
    <value><![CDATA[Complement:]]></value>
  </definition>
  <definition>
    <key>error_complement</key>
    <value><![CDATA[Complement field must have less than 128 characters!]]></value>
  </definition>
  <definition>
    <key>entry_district</key>
    <value><![CDATA[District:]]></value>
  </definition>
  <definition>
    <key>error_district</key>
    <value><![CDATA[District field is mandatory and must be between 1 and 128 characters!]]></value>
  </definition>

<!-- /NEW ENTRIES -->

   <definition>
      <key>heading_title</key>
      <value><![CDATA[Create Account]]></value>
   </definition>
   <definition>
      <key>text_account</key>
      <value><![CDATA[Account]]></value>
   </definition>
   <definition>
      <key>text_create</key>
      <value><![CDATA[Register]]></value>
   </definition>
   <definition>
      <key>text_account_already</key>
      <value>
         <![CDATA[If you already have an account with us, please login at the <a style="text-decoration: underline" href="%s">login page</a>.]]></value>
   </definition>
   <definition>
      <key>text_your_details</key>
      <value><![CDATA[Your Personal Details]]></value>
   </definition>
   <definition>
      <key>text_your_address</key>
      <value><![CDATA[Your Address]]></value>
   </definition>
   <definition>
      <key>text_newsletter</key>
      <value><![CDATA[Newsletter]]></value>
   </definition>
   <definition>
      <key>text_your_password</key>
      <value><![CDATA[Your Password]]></value>
   </definition>
   <definition>
      <key>text_agree</key>
      <value><![CDATA[I have read and agree to the ]]></value>
   </definition>
   <definition>
      <key>entry_loginname</key>
      <value><![CDATA[Login name:]]></value>
   </definition>
   <definition>
      <key>entry_firstname</key>
      <value><![CDATA[First Name:]]></value>
   </definition>
   <definition>
      <key>entry_lastname</key>
      <value><![CDATA[Last Name:]]></value>
   </definition>
   <definition>
      <key>entry_email</key>
      <value><![CDATA[E-Mail:]]></value>
   </definition>
   <definition>
      <key>entry_telephone</key>
      <value><![CDATA[Telephone:]]></value>
   </definition>
   <definition>
      <key>entry_fax</key>
      <value><![CDATA[Fax:]]></value>
   </definition>
   <definition>
      <key>entry_company</key>
      <value><![CDATA[Company:]]></value>
   </definition>
   <definition>
      <key>entry_address_1</key>
      <value><![CDATA[Address 1:]]></value>
   </definition>
   <definition>
      <key>entry_address_2</key>
      <value><![CDATA[Address 2:]]></value>
   </definition>
   <definition>
      <key>entry_postcode</key>
      <value><![CDATA[ZIP Code:]]></value>
   </definition>
   <definition>
      <key>entry_city</key>
      <value><![CDATA[City:]]></value>
   </definition>
   <definition>
      <key>entry_country</key>
      <value><![CDATA[Country:]]></value>
   </definition>
   <definition>
      <key>entry_zone</key>
      <value><![CDATA[Region / State:]]></value>
   </definition>
   <definition>
      <key>entry_newsletter</key>
      <value><![CDATA[Subscribe:]]></value>
   </definition>
   <definition>
      <key>entry_password</key>
      <value><![CDATA[Password:]]></value>
   </definition>
   <definition>
      <key>entry_confirm</key>
      <value><![CDATA[Password Confirm:]]></value>
   </definition>
   <definition>
      <key>error_exists</key>
      <value><![CDATA[Error: E-Mail Address is already registered!]]></value>
   </definition>
   <definition>
      <key>error_loginname</key>
      <value><![CDATA[Login name must be alphanumeric only and between 5 and 64 characters!]]></value>
   </definition>
   <definition>
      <key>error_loginname_notunique</key>
      <value><![CDATA[This login name is not available. Try different login name!]]></value>
   </definition>
   <definition>
      <key>error_firstname</key>
      <value><![CDATA[First Name must be between 1 and 32 characters!]]></value>
   </definition>
   <definition>
      <key>error_lastname</key>
      <value><![CDATA[Last Name must be between 1 and 32 characters!]]></value>
   </definition>
   <definition>
      <key>error_email</key>
      <value><![CDATA[E-Mail Address does not appear to be valid!]]></value>
   </definition>
   <definition>
      <key>error_email_exists</key>
      <value><![CDATA[EMail Address is Already Exists!]]></value>
   </definition>
   <definition>
      <key>error_password</key>
      <value><![CDATA[Password must be between 4 and 20 characters!]]></value>
   </definition>
   <definition>
      <key>error_confirm</key>
      <value><![CDATA[Password confirmation does not match password!]]></value>
   </definition>
   <definition>
      <key>error_address_1</key>
      <value><![CDATA[Address 1 must be between 3 and 128 characters!]]></value>
   </definition>
   <definition>
      <key>error_city</key>
      <value><![CDATA[City must be between 3 and 128 characters!]]></value>
   </definition>
   <definition>
      <key>error_postcode</key>
      <value><![CDATA[Zip/postal code must be between 3 and 10 characters!]]></value>
   </definition>
   <definition>
      <key>error_country</key>
      <value><![CDATA[Please select a country!]]></value>
   </definition>
   <definition>
      <key>error_zone</key>
      <value><![CDATA[Please select a region / state!]]></value>
   </definition>
   <definition>
      <key>error_telephone</key>
      <value><![CDATA[Telephone must be between 3 and 32 characters!]]></value>
   </definition>
   <definition>
      <key>error_agree</key>
      <value><![CDATA[Error: You must agree to the %s!]]></value>
   </definition>
   <definition>
      <key>text_full_register</key>
      <value><![CDATA[Become a customer and register with your details]]></value>
   </definition>
   <definition>
      <key>text_subscribe_register</key>
      <value><![CDATA[Become a newsletter subscriber]]></value>
   </definition>
   <definition>
      <key>text_success_subscribe_heading</key>
      <value><![CDATA[You have subscribed successfully!]]></value>
   </definition>
   <definition>
      <key>text_success_subscribe</key>
      <value><![CDATA[Success: Your newsletter subscription has been successfully created!]]></value>
   </definition>
   <definition>
      <key>error_subscriber_exists</key>
      <value><![CDATA[Our records indicate that you have an account with us. Please login to your account to manage your newsletter subscription.]]></value>
   </definition>
   <definition>
      <key>text_new_customer</key>
      <value><![CDATA[New customer registration approval is pending]]></value>
   </definition>
   <definition>
      <key>text_pending_customer_approval</key>
      <value><![CDATA[Customer %s has registered with new account. Action of approval is required! Click to view #admin#rt=sale/customer/update&customer_id=%s]]></value>
   </definition>
   <definition>
      <key>text_pending_subscriber_approval</key>
      <value><![CDATA[Subscriber %s has registered with new account. Action of approval is required! Click to view #admin#rt=sale/customer/update&customer_id=%s]]></value>
   </definition>
</definitions>

10
Thank you for your help!

You are right when saying about deleting entire section to force reload from XML language file, provided by my extension.

That is a issue... Because it will only load XML language file for 'account_create' section if (and only if) I delete it before extension installation.

I am thinking a workaround by deleting the language definition section from install.sql file from my extension.

Any thoughts?

Thanks again!


11
Hi there!

I am experiencing a cruel doubt on how add new language definition item...

What I am trying to do is insert new field in account create form.

Sor far I followed these steps bellow:

1) Hook up my code to create a new field into fields array then calling batchAssign, as follows:

public function onControllerPagesAccountCreate_UpdateData()
{
      $that = $this->baseObject;
      $form = new AForm();
      $form->setForm(array ('form_name' => 'AccountFrm'));
      $that->data['form']['fields']['general']['teste'] = $form->getFieldHtml(
               array (
                     'type'     => 'input',
                     'name'     => 'teste',
                     'value'    => $that->request->post['teste'],
                     'required' => true)
                  );
      $that->view->batchAssign($that->data);
      $that->processTemplate('pages/account/create.tpl');
   }

2) So far, so good. When I reloaded the create account page, the 'teste' field showed up... But for my surprise with no caption text!
>>> See image attached

3) Ok, I learned that I need to insert new language definition under System > Localization menu at Admin page, but there is a catch...

The question is: I am developing a new extension and how do I provide that new language definition at my extension's installation?

I tried to create a new xml file under extensions/myextensionname/language/english/account/create.xml as follows, but it did not work.

<?xml version="1.0"?>
<definitions>
  <definition>
    <key>entry_teste</key>
    <value><![CDATA[Teste Field:]]></value>
  </definition>
  <definition>
    <key>error_teste</key>
    <value><![CDATA[O campo Teste é obrigatório!]]></value>
  </definition>
</definitions>


Any ideas?

Thanks,
Renato

Pages: [1]

Powered by SMFPacks Social Login Mod