protected function _mapModelToEricssonModel(array $data)
 {
     if (isset($data['shippingAddressIsCompanyAddress']) && $data['shippingAddressIsCompanyAddress'] && isset($data['shippingAddress'])) {
         unset($data['shippingAddress']);
     }
     if (isset($data['billingAddressIsCompanyAddress']) && $data['billingAddressIsCompanyAddress'] && isset($data['billingAddress'])) {
         unset($data['billingAddress']);
     }
     //Workaround: ericsson must accept orgId as serviceProviderEnablerId on enabler serviceProvider
     if (isset($data['id']) && isset($data['isEnabler']) && $data['isEnabler']) {
         $data['serviceProviderEnablerId'] = $data['id'];
     }
     if (isset($data['serviceProviderEnablerId'])) {
         $data['serviceProviderEnablerId'] = OrganizationMapper::cleanOrgId($data['serviceProviderEnablerId']);
     }
     return parent::_mapModelToEricssonModel($data);
 }
 protected function _mapModelToEricssonModel(array $data)
 {
     $contactFields = array('otherContact_1', 'otherContact_2', 'otherContact_3');
     foreach ($contactFields as $field) {
         if (isset($data[$field])) {
             \App_Util_Array::cleanEmptyItems($data[$field], false);
             if (empty($data[$field])) {
                 $data[$field] = array('firstName' => '', 'lastName' => '', 'phone' => '', 'email' => '', 'mobile' => '', 'fax' => '');
             }
         }
     }
     $data = parent::_mapModelToEricssonModel($data);
     //WORKAROUND Ericsson has a problem on protos. "defaultLanguage" must be in undescore.
     if (isset($data['default_language'])) {
         $data['defaultLanguage'] = $data['default_language'];
     }
     return $data;
 }
 protected function _mapModelToEricssonModel(array $data)
 {
     if (isset($data['shippingAddressIsCompanyAddress']) && $data['shippingAddressIsCompanyAddress'] && isset($data['shippingAddress'])) {
         unset($data['shippingAddress']);
     }
     if (isset($data['billingContactIsPrimaryContact']) && $data['billingContactIsPrimaryContact'] && isset($data['billingContact'])) {
         unset($data['billingContact']);
     }
     if (isset($data['primaryContactAddressIsCompanyAddress']) && $data['primaryContactAddressIsCompanyAddress'] && isset($data['primaryContactAddress'])) {
         unset($data['primaryContactAddress']);
     }
     if (isset($data['billingContactAddressIsCompanyAddress']) && $data['billingContactAddressIsCompanyAddress'] && isset($data['billingContactAddress'])) {
         unset($data['billingContactAddress']);
     }
     if (!empty($data['billingAccounts'])) {
         // Ericsson issue
         foreach ($data['billingAccounts'] as &$billing) {
             if (isset($billing['regionId']) && $billing['regionId'] == -1) {
                 unset($billing['regionId']);
             }
             if (isset($data['id']) || isset($billing['billingCycleStartDay']) && !$billing['billingCycleStartDay']) {
                 unset($billing['billingCycleStartDay']);
             }
             if (empty($billing['taxes']['tax'])) {
                 $billing['taxes'] = array();
             }
             if (empty($billing['discounts']['discount'])) {
                 $billing['discounts'] = array();
             }
             if (!isset($billing['paymentMethod'])) {
                 $billing['paymentMethod'] = '';
             }
             if (!isset($billing['paymentRelatedData'])) {
                 $billing['paymentRelatedData'] = '';
             }
         }
         // Phantom field: 'billingAccount'
         $data['billingAccounts'] = array('billingAccount' => $data['billingAccounts']);
     } else {
         $data['billingAccounts'] = array();
     }
     if (!empty($data['defaultBillingAccount'])) {
         // Ericsson issue
         if (isset($data['defaultBillingAccount']['regionId']) && $data['defaultBillingAccount']['regionId'] == -1) {
             unset($data['defaultBillingAccount']['regionId']);
         }
         if (isset($data['id']) || isset($data['defaultBillingAccount']['billingCycleStartDay']) && !$data['defaultBillingAccount']['billingCycleStartDay']) {
             unset($data['defaultBillingAccount']['billingCycleStartDay']);
         }
         if (empty($data['defaultBillingAccount']['taxes']['tax'])) {
             $data['defaultBillingAccount']['taxes'] = array();
         }
         if (empty($data['defaultBillingAccount']['discounts']['discount'])) {
             $data['defaultBillingAccount']['discounts'] = array();
         }
         if (!isset($data['defaultBillingAccount']['paymentMethod'])) {
             $data['defaultBillingAccount']['paymentMethod'] = '';
         }
         if (!isset($data['defaultBillingAccount']['paymentRelatedData'])) {
             $data['defaultBillingAccount']['paymentRelatedData'] = '';
         }
     }
     if (empty($data['taxes']['tax'])) {
         $data['taxes'] = array();
     }
     if (empty($data['vpns']['vpn'])) {
         $data['vpns'] = array();
     } else {
         if (isset($data['vpns'])) {
             foreach ($data['vpns']['vpn'] as &$vpn) {
                 if ($vpn['ipType'] == Vpn::IP_TYPE_IPV4) {
                     $vpn['ipType'] = \Application\Proto\Org\VpnList\Vpn\ProtocolType::IPV4;
                 } else {
                     if ($vpn['ipType'] == Vpn::IP_TYPE_IPV6) {
                         $vpn['ipType'] = \Application\Proto\Org\VpnList\Vpn\ProtocolType::IPV6;
                     }
                 }
             }
         }
     }
     if (empty($data['discounts']['general'])) {
         $data['discounts'] = array();
     }
     $this->_cleanBillingAccounts($data);
     //add discount ghost level
     if (isset($data['discounts']) && isset($data['discounts']['general'])) {
         $data['discounts']['general']['discount'] = $data['discounts']['general'];
     }
     return parent::_mapModelToEricssonModel($data);
 }