protected function populateFrom($data)
 {
     $data = $this->convertToArray($data);
     // Convert from "summary" format to normal format
     if (isset($data['Name'])) {
         $data['Title'] = $data['Name'];
         unset($data['Name']);
     }
     parent::populateFrom($data);
 }
 protected function populateFrom($data)
 {
     $data = $this->convertToArray($data);
     // Check billing data
     if (isset($data['BillingDetails'])) {
         $this->setBillingFields($data['BillingDetails']);
         unset($data['BillingDetails']);
     }
     // Extract only basic details
     if (isset($data['BasicDetails'])) {
         $data = $data['BasicDetails'];
     }
     // check format of client name
     if (isset($data['Name'])) {
         $data['CompanyName'] = $data['Name'];
         unset($data['Name']);
     }
     parent::populateFrom($data);
 }
 public function serializeData()
 {
     $data = parent::serializeData();
     $customFields = array();
     foreach ($this->customFields as $key => $value) {
         // Treat null or empty options as clearing the field
         if ($value === null || $value === array()) {
             $customFields[] = array('Key' => $key, 'Value' => '', 'Clear' => true);
         } elseif (is_array($value)) {
             // for multi-select values duplicate each key for set values
             foreach ($value as $nextValue) {
                 $customFields[] = array('Key' => $key, 'Value' => $nextValue);
             }
         } else {
             // Simple field assignment
             $customFields[] = array('Key' => $key, 'Value' => $value);
         }
     }
     $data['CustomFields'] = $customFields;
     return $data;
 }
 protected function populateFrom($data)
 {
     $data = $this->convertToArray($data);
     parent::populateFrom($data);
 }