/**
  * Create a new company
  *
  * @param company array. An array containing the company information,
  * example:
  * \code
  * array(
  *    'name'     => 'ACME',
  *    'address1' => '1110 Gateway Drive',
  *    'address2' => '',
  *    'address3' => '',
  *    'zip_code' => 'CA 94404',
  *    'city'     => 'San Mateo',
  *    'country'  => 'US', // ISO 3166-1 alpha-2 country code
  *    'email'    => '*****@*****.**',
  * )
  * \endcode
  *
  * @return company_id int. The ID of the newly created company.
  *
  */
 static function Create(array $company = array())
 {
     CybPHP_Validate::ValidateCompanyName($company['name']);
     CybPHP_Validate::ValidateAddress($company['address1']);
     CybPHP_Validate::ValidateZipCode($company['zip_code']);
     CybPHP_Validate::ValidateCity($company['city']);
     CybPHP_Validate::ValidateCountry($company['country']);
     CybPHP_Validate::ValidateEmail($company['email']);
     WebfinanceUser::ValidateExists($company['email']);
     WebfinanceCompany::ValidateAvailable($company['name']);
     if (empty($company['address2'])) {
         $company['address2'] = '';
     } else {
         CybPHP_Validate::ValidateAddress($company['address2']);
     }
     if (empty($company['address3'])) {
         $company['address3'] = '';
     } else {
         CybPHP_Validate::ValidateAddress($company['address3']);
     }
     foreach (array('name', 'address1', 'address2', 'address3', 'zip_code', 'city', 'country', 'email') as $value) {
         $company[$value] = mysql_escape_string($company[$value]);
     }
     $user_id = WebfinanceUser::GetIdFromEmail($company['email']);
     CybPHP_MySQL::Query('BEGIN');
     CybPHP_MySQL::Query('INSERT INTO webfinance_clients SET ' . "nom          = '{$company['name']}', " . 'date_created = NOW(), ' . "addr1        = '{$company['address1']}', " . "addr2        = '{$company['address2']}', " . "addr3        = '{$company['address3']}', " . "cp           = '{$company['zip_code']}', " . "ville        = '{$company['city']}', " . "pays         = '{$company['country']}', " . "email        = '{$company['email']}'");
     $company_id = mysql_insert_id();
     CybPHP_MySQL::Query('INSERT INTO webfinance_clients2users SET ' . "id_client = {$company_id}, " . "id_user   = {$user_id}");
     CybPHP_MySQL::Query('COMMIT');
     return $company_id;
 }
示例#2
0
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program. If not, see <http://www.gnu.org/licenses/>.
//
require_once '../htdocs/inc/sso.php';
require_once '../htdocs/inc/smarty.php';
try {
    // Create user if he/she does not exist yet
    try {
        WebfinanceUser::ValidateExists($_SESSION['cybsso_user']['email']);
    } catch (Exception $e) {
        WebfinanceUser::Create($_SESSION['cybsso_user']['email']);
    }
    $user = new WebfinanceUser($_SESSION['cybsso_user']['email']);
    // Ask the user to create a company if he/she doesn't own one
    if (count($user->GetCompanies()) == 0) {
        header('Location: /company/new');
        exit;
    }
    /*
    si return_url est définie, alors on redirige (dans le cas de la creation d'un
    compte)
    redirect $return_url
    */
    /*
    
    Si l'utilisateur a >=1 societe, on affiche les devis, factures, coordonnées,
    etc. de la première entreprise
    redirect /company/ID */
 function testGetInfo()
 {
     $email = '*****@*****.**';
     WebfinanceUser::Create($email);
     $new_company = array('name' => 'ACME', 'address1' => '1110 Gateway Drive', 'zip_code' => 'CA 94404', 'city' => 'San Mateo', 'country' => 'US', 'email' => $email);
     $company_id = WebfinanceCompany::Create($new_company);
     $company = new WebfinanceCompany($company_id);
     $company_info = $company->GetInfo();
     $this->assertEquals($new_company['name'], $company_info['name']);
 }
示例#4
0
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program. If not, see <http://www.gnu.org/licenses/>.
//
require_once '../../htdocs/inc/sso.php';
require_once '../../htdocs/inc/smarty.php';
try {
    // Check arguments
    if (empty($_GET['company_id'])) {
        throw new Exception('Missing argument');
    }
    // Check permissions
    $company = new WebfinanceCompany($_GET['company_id']);
    $company->ValidatePermission($_SESSION['cybsso_user']['email']);
    // Display localized amounts and dates
    foreach (array(LC_MESSAGES, LC_TIME, LC_MONETARY, LC_CTYPE) as $locale) {
        setlocale($locale, $_SESSION['cybsso_user']['language'] . ".UTF-8") or die("locale {$locale} language failed {$_SESSION['cybsso_user']}[language]");
    }
    $user = new WebfinanceUser($_SESSION['cybsso_user']['email']);
    $smarty->assign('this_company_id', $_GET['company_id']);
    $smarty->assign('companies', $user->GetCompanies());
    $smarty->assign('company_info', $company->GetInfo());
    $smarty->assign('invoices', $company->InvoicesGet());
} catch (SoapFault $fault) {
    $smarty->assign('error', $fault->getMessage());
} catch (Exception $fault) {
    $smarty->assign('error', $fault->getMessage());
}
$smarty->display('company/index.tpl');
 function testGetIdFromEmailOK()
 {
     $email = '*****@*****.**';
     $user_id = WebfinanceUser::Create($email);
     $this->assertEquals($user_id, WebfinanceUser::GetIdFromEmail($email));
 }