/** * Create thirdparty object * * @param array $request_data Request datas * @return int ID of thirdparty * * @url POST thirdparty/ */ function post($request_data = NULL) { if (!DolibarrApiAccess::$user->rights->societe->creer) { throw new RestException(401); } // Check mandatory fields $result = $this->_validate($request_data); foreach ($request_data as $field => $value) { $this->company->{$field} = $value; } return $this->company->create(DolibarrApiAccess::$user); }
/** * Create a thirdparty * * @param array $authentication Array of authentication information * @param Societe $thirdparty Thirdparty * @return array Array result */ function createThirdParty($authentication, $thirdparty) { global $db, $conf, $langs; $now = dol_now(); dol_syslog("Function: createThirdParty login="******"Name is mandatory."; } if (!$error) { include_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php'; $newobject = new Societe($db); $newobject->ref = $thirdparty['ref']; $newobject->name = $thirdparty['ref']; $newobject->ref_ext = $thirdparty['ref_ext']; $newobject->status = $thirdparty['status']; $newobject->client = $thirdparty['client']; $newobject->fournisseur = $thirdparty['supplier']; $newobject->code_client = $thirdparty['customer_code']; $newobject->code_fournisseur = $thirdparty['supplier_code']; $newobject->code_compta = $thirdparty['customer_code_accountancy']; $newobject->code_compta_fournisseur = $thirdparty['supplier_code_accountancy']; $newobject->date_creation = $now; $newobject->note_private = $thirdparty['note_private']; $newobject->note_public = $thirdparty['note_public']; $newobject->address = $thirdparty['address']; $newobject->zip = $thirdparty['zip']; $newobject->town = $thirdparty['town']; $newobject->country_id = $thirdparty['country_id']; if ($thirdparty['country_code']) { $newobject->country_id = getCountry($thirdparty['country_code'], 3); } $newobject->province_id = $thirdparty['province_id']; //if ($thirdparty['province_code']) $newobject->province_code=getCountry($thirdparty['province_code'],3); $newobject->phone = $thirdparty['phone']; $newobject->fax = $thirdparty['fax']; $newobject->email = $thirdparty['email']; $newobject->url = $thirdparty['url']; $newobject->idprof1 = $thirdparty['profid1']; $newobject->idprof2 = $thirdparty['profid2']; $newobject->idprof3 = $thirdparty['profid3']; $newobject->idprof4 = $thirdparty['profid4']; $newobject->idprof5 = $thirdparty['profid5']; $newobject->idprof6 = $thirdparty['profid6']; $newobject->capital = $thirdparty['capital']; $newobject->barcode = $thirdparty['barcode']; $newobject->tva_assuj = $thirdparty['vat_used']; $newobject->tva_intra = $thirdparty['vat_number']; $newobject->canvas = $thirdparty['canvas']; $newobject->particulier = $thirdparty['individual']; //Retreive all extrafield for thirdsparty // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extralabels = $extrafields->fetch_name_optionals_label('societe', true); foreach ($extrafields->attribute_label as $key => $label) { $key = 'options_' . $key; $newobject->array_options[$key] = $thirdparty[$key]; } $db->begin(); $result = $newobject->create($fuser); if ($newobject->particulier && $result > 0) { $newobject->firstname = $thirdparty['firstname']; $newobject->name_bis = $thirdparty['lastname']; $result = $newobject->create_individual($fuser); } if ($result <= 0) { $error++; } if (!$error) { $db->commit(); // Patch to add capability to associate (one) sale representative if ($thirdparty['commid'] && $thirdparty['commid'] > 0) { $newobject->add_commercial($fuser, $thirdparty["commid"]); } $objectresp = array('result' => array('result_code' => 'OK', 'result_label' => ''), 'id' => $newobject->id, 'ref' => $newobject->ref); } else { $db->rollback(); $error++; $errorcode = 'KO'; $errorlabel = $newobject->error; } } if ($error) { $objectresp = array('result' => array('result_code' => $errorcode, 'result_label' => $errorlabel)); } return $objectresp; }
/** * Create a thirdparty * * @param array $authentication Array of authentication information * @param Societe $thirdparty Thirdparty * @return array Array result */ function createThirdParty($authentication,$thirdparty) { global $db,$conf,$langs; $now=dol_now(); dol_syslog("Function: createThirdParty login="******"Name is mandatory."; } if (! $error) { include_once(DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'); $newobject=new Societe($db); $newobject->ref=$thirdparty['ref']; $newobject->name=$thirdparty['ref']; $newobject->ref_ext=$thirdparty['ref_ext']; $newobject->status=$thirdparty['status']; $newobject->client=$thirdparty['client']; $newobject->fournisseur=$thirdparty['supplier']; $newobject->code_client=$thirdparty['customer_code']; $newobject->code_fournisseur=$thirdparty['supplier_code']; $newobject->code_compta=$thirdparty['customer_code_accountancy']; $newobject->code_compta_fournisseur=$thirdparty['supplier_code_accountancy']; $newobject->date_creation=$now; $newobject->note=$thirdparty['note']; $newobject->address=$thirdparty['address']; $newobject->zip=$thirdparty['zip']; $newobject->town=$thirdparty['town']; $newobject->country_id=$thirdparty['country_id']; if ($thirdparty['country_code']) $newobject->country_id=getCountry($thirdparty['country_code'],3); $newobject->province_id=$thirdparty['province_id']; //if ($thirdparty['province_code']) $newobject->province_code=getCountry($thirdparty['province_code'],3); $newobject->phone=$thirdparty['phone']; $newobject->fax=$thirdparty['fax']; $newobject->email=$thirdparty['email']; $newobject->url=$thirdparty['url']; $newobject->idprof1=$thirdparty['profid1']; $newobject->idprof2=$thirdparty['profid2']; $newobject->idprof3=$thirdparty['profid3']; $newobject->idprof4=$thirdparty['profid4']; $newobject->idprof5=$thirdparty['profid5']; $newobject->idprof6=$thirdparty['profid6']; $newobject->capital=$thirdparty['capital']; $newobject->barcode=$thirdparty['barcode']; $newobject->tva_assuj=$thirdparty['vat_used']; $newobject->tva_intra=$thirdparty['vat_number']; $newobject->canvas=$thirdparty['canvas']; $db->begin(); $result=$newobject->create($fuser); if ($result <= 0) { $error++; } if (! $error) { $db->commit(); $objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>''),'id'=>$newobject->id,'ref'=>$newobject->ref); } else { $db->rollback(); $error++; $errorcode='KO'; $errorlabel=$newobject->error; } } if ($error) { $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); } return $objectresp; }
/** * Create an external user with thirdparty and contact * * @param array $authentication Array of authentication information * @param array $thirdpartywithuser Datas * @return mixed */ function createUserFromThirdparty($authentication, $thirdpartywithuser) { global $db, $conf, $langs; dol_syslog("Function: createUserFromThirdparty login="******" id=" . $id . " ref=" . $ref . " ref_ext=" . $ref_ext); if ($authentication['entity']) { $conf->entity = $authentication['entity']; } $objectresp = array(); $errorcode = ''; $errorlabel = ''; $error = 0; $fuser = check_authentication($authentication, $error, $errorcode, $errorlabel); if ($fuser->societe_id) { $socid = $fuser->societe_id; } if (!$error && !$thirdpartywithuser) { $error++; $errorcode = 'BAD_PARAMETERS'; $errorlabel = "Parameter thirdparty must be provided."; } if (!$error) { $fuser->getrights(); if ($fuser->rights->societe->creer) { $thirdparty = new Societe($db); // If a contact / company already exists with the email, return the corresponding socid $sql = "SELECT s.rowid as societe_id FROM " . MAIN_DB_PREFIX . "societe as s"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "socpeople as sp ON sp.fk_soc = s.rowid"; $sql .= " WHERE s.entity=" . $conf->entity; $sql .= " AND s.email='" . $db->escape($thirdpartywithuser['email']) . "'"; $sql .= " OR sp.email='" . $db->escape($thirdpartywithuser['email']) . "'"; $sql .= $db->plimit(1); $resql = $db->query($sql); if ($resql) { // If a company or contact is found with the same email we return an error $row = $db->fetch_object($resql); if ($row) { $error++; $errorcode = 'ALREADY_EXIST'; $errorlabel = 'Object not create : company or contact exists ' . $thirdpartywithuser['email']; } else { $db->begin(); /* * Company creation */ $thirdparty->name = $thirdpartywithuser['name_thirdparty']; $thirdparty->ref_ext = $thirdpartywithuser['ref_ext']; $thirdparty->address = $thirdpartywithuser['address']; $thirdparty->zip = $thirdpartywithuser['zip']; $thirdparty->town = $thirdpartywithuser['town']; $thirdparty->country_id = $thirdpartywithuser['country_id']; $thirdparty->country_code = $thirdpartywithuser['country_code']; // find the country id by code $langs->load("dict"); $sql = "SELECT rowid"; $sql .= " FROM " . MAIN_DB_PREFIX . "c_pays"; $sql .= " WHERE active = 1"; $sql .= " AND code='" . $thirdparty->country_code . "'"; $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); if ($num) { $obj = $db->fetch_object($resql); $thirdparty->country_id = $obj->rowid; } } $thirdparty->phone = $thirdpartywithuser['phone']; $thirdparty->fax = $thirdpartywithuser['fax']; $thirdparty->email = $thirdpartywithuser['email']; $thirdparty->url = $thirdpartywithuser['url']; $thirdparty->ape = $thirdpartywithuser['ape']; $thirdparty->idprof1 = $thirdpartywithuser['prof1']; $thirdparty->idprof2 = $thirdpartywithuser['prof2']; $thirdparty->idprof3 = $thirdpartywithuser['prof3']; $thirdparty->idprof4 = $thirdpartywithuser['prof4']; $thirdparty->idprof5 = $thirdpartywithuser['prof5']; $thirdparty->idprof6 = $thirdpartywithuser['prof6']; $thirdparty->client = $thirdpartywithuser['client']; $thirdparty->fournisseur = $thirdpartywithuser['fournisseur']; $socid_return = $thirdparty->create($fuser); if ($socid_return > 0) { $thirdparty->fetch($socid_return); /* * Contact creation * */ $contact = new Contact($db); $contact->socid = $thirdparty->id; $contact->lastname = $thirdpartywithuser['name']; $contact->firstname = $thirdpartywithuser['firstname']; $contact->civility_id = $thirdparty->civility_id; $contact->address = $thirdparty->address; $contact->zip = $thirdparty->zip; $contact->town = $thirdparty->town; $contact->email = $thirdparty->email; $contact->phone_pro = $thirdparty->phone; $contact->phone_mobile = $thirdpartywithuser['phone_mobile']; $contact->fax = $thirdparty->fax; $contact->statut = 1; $contact->country_id = $thirdparty->country_id; $contact->country_code = $thirdparty->country_code; //Retreive all extrafield for thirdsparty // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extralabels = $extrafields->fetch_name_optionals_label('socpeople', true); foreach ($extrafields->attribute_label as $key => $label) { $key = 'contact_options_' . $key; $key = substr($key, 8); // Remove 'contact_' prefix $contact->array_options[$key] = $thirdpartywithuser[$key]; } $contact_id = $contact->create($fuser); if ($contact_id > 0) { /* * User creation * */ $edituser = new User($db); $id = $edituser->create_from_contact($contact, $thirdpartywithuser["login"]); if ($id > 0) { $edituser->setPassword($fuser, trim($thirdpartywithuser['password'])); if ($thirdpartywithuser['group_id'] > 0) { $edituser->SetInGroup($thirdpartywithuser['group_id'], $conf->entity); } } else { $error++; $errorcode = 'NOT_CREATE'; $errorlabel = 'Object not create : ' . $edituser->error; } } else { $error++; $errorcode = 'NOT_CREATE'; $errorlabel = 'Object not create : ' . $contact->error; } if (!$error) { $db->commit(); $objectresp = array('result' => array('result_code' => 'OK', 'result_label' => 'SUCCESS'), 'id' => $socid_return); $error = 0; } } else { $error++; $errors = $thirdparty->error ? array($thirdparty->error) : $thirdparty->errors; } } } else { // retour creation KO $error++; $errorcode = 'NOT_CREATE'; $errorlabel = 'Object not create'; } } else { $error++; $errorcode = 'PERMISSION_DENIED'; $errorlabel = 'User does not have permission for this request'; } } if ($error) { $db->rollback(); $objectresp = array('result' => array('result_code' => $errorcode, 'result_label' => $errorlabel)); } return $objectresp; }
/** * Create third party in database * @param user Object of user that ask creation * @return int >= 0 if OK, < 0 if KO */ function create($user='') { $result = parent::create($user); return $result; }
/** * Constructor * We save global variables into local variables * * @return DateLibTest */ function __construct() { //$this->sharedFixture global $conf, $user, $langs, $db; $this->savconf = $conf; $this->savuser = $user; $this->savlangs = $langs; $this->savdb = $db; $WS_DOL_URL = DOL_MAIN_URL_ROOT . '/webservices/server_invoice.php'; // Set the WebService URL print __METHOD__ . " create nusoap_client for URL=" . $WS_DOL_URL . "\n"; $this->soapclient = new nusoap_client($WS_DOL_URL); if ($this->soapclient) { $this->soapclient->soap_defencoding = 'UTF-8'; $this->soapclient->decodeUTF8(false); } // create a third_party, needed to create an invoice $societe = new Societe($db); $societe->ref = ''; $societe->name = 'name'; $societe->ref_ext = '209'; $societe->status = 1; $societe->client = 1; $societe->fournisseur = 0; $societe->date_creation = $now; $societe->tva_assuj = 0; $societe->particulier = 0; $societe->create($user); $this->socid = $societe->id; print __METHOD__ . " societe created id=" . $societe->id . "\n"; print __METHOD__ . " db->type=" . $db->type . " user->id=" . $user->id; //print " - db ".$db->db; print "\n"; }
print "Company $s\n"; $soc = new Societe($db); $soc->nom = "Company num ".time()."$s"; $soc->ville = $villes[rand(0,sizeof($villes)-1)]; $soc->client = rand(1,2); // Une societe sur 2 est prospect, l'autre client $soc->fournisseur = rand(0,1); // Une societe sur 2 est fournisseur $soc->code_client='CU'.time()."$s"; $soc->code_fournisseur='SU'.time()."$s"; $soc->tva_assuj=1; $soc->pays_id=1; $soc->pays_code='FR'; // Un client sur 3 a une remise de 5% $user_remise=rand(1,3); if ($user_remise==3) $soc->remise_client=5; print "> client=".$soc->client.", fournisseur=".$soc->fournisseur.", remise=".$soc->remise_client."\n"; $soc->note='Company created by the script generate-societe.php'; $socid = $soc->create(); if ($socid >= 0) { $rand = rand(1,4); print "> Generates $rand contact(s)\n"; for ($c = 0 ; $c < $rand ; $c++) { $contact = new Contact($db); $contact->socid = $soc->id; $contact->name = "Lastname".$c; $contact->firstname = $prenoms[rand(0,sizeof($prenoms)-1)]; if ( $contact->create($user) ) { }
function import2Dolibarr($object, $typeimport) { global $conf; global $langs; $this->process_msg = ''; $error = 0; $fp = @fopen($this->filename, "r"); if ($fp) { switch ($object) { case 'ImportStock': $doliprod = new Product($this->db); $i = 0; while ($ligne = fgetcsv($fp, 1000, ";")) { $doliprod->id = ''; $i++; if ($this->firstline && $i == 1) { continue; } if ($conf->global->IMPORT_BARCODE) { $ligne[0] = $this->get_product_by_barcode($ligne[0]); } if ($doliprod->fetch('', $ligne[0]) <= 0) { $this->process_msg .= $langs->trans("ErrProdNoExist", $ligne[0], $doliprod->error) . "\n"; } else { $pid = $doliprod->id; $doliprod->ref = $ligne[0]; $entrepot = $ligne[1]; $newstock = $ligne[2]; $price = $ligne[3]; if ($conf->global->IMPORT_TOTAL_STOCK) { $doliprod->load_stock(); dol_syslog("stock produit " . $doliprod->stock_warehouse[$entrepot]->real . " entrepot " . $entrepot . " " . $doliprod->stock_reel, LOG_DEBUG); // correction de stock $delta = 0; if ($newstock > $doliprod->stock_warehouse[$entrepot]->real) { $delta = $newstock - $doliprod->stock_warehouse[$entrepot]->real; $sens = 0; } elseif ($newstock < $doliprod->stock_warehouse[$entrepot]->real) { $delta = $doliprod->stock_warehouse[$entrepot]->real - $newstock; $sens = 1; } if ($delta) { $res = $doliprod->correct_stock($this->user, $entrepot, $delta, $sens, $langs->trans("StockCorrection"), $price); if ($res < 0) { $this->process_msg .= $langs->trans("ErrMovStock", $ligne[0], $doliprod->error) . "\n"; $error++; } } dol_syslog("maj stock delta = " . $delta . " sens " . $sens, LOG_DEBUG); } else { $res = $doliprod->correct_stock($this->user, $entrepot, abs($newstock), $newstock > 0 ? 0 : 1, $langs->trans("StockCorrection"), $price); if ($res < 0) { $this->process_msg .= $langs->trans("ErrMovStock", $ligne[0], $doliprod->error) . "\n"; $error++; } } } } break; case 'ImportProduct': //$doliprod = new Product($this->db); $i = 0; while ($ligne = fgetcsv($fp, 1000, ";")) { $i++; $doliprod = new Product($this->db); $doliprod->id = ''; if ($this->firstline && $i == 1) { continue; } if ($doliprod->fetch('', $ligne[0]) < 0) { $this->process_msg .= $langs->trans("ErrProdNoExist", $ligne[0], $doliprod->error) . "\n"; } else { $pid = $doliprod->id; $doliprod->ref = $ligne[0]; if (!empty($ligne[1])) { $doliprod->libelle = $ligne[1]; } if (!empty($ligne[2])) { $doliprod->status = $ligne[2]; } $doliprod->status_buy = 1; if (!empty($ligne[3])) { $doliprod->description = $ligne[3]; } if (!empty($ligne[4])) { $doliprod->price = $ligne[4]; } if (!empty($ligne[5])) { $doliprod->tva_tx = $ligne[5]; } if (!empty($ligne[6])) { $doliprod->weight = $ligne[6]; } if (!empty($ligne[7])) { $doliprod->volume = $ligne[7]; } if (!empty($ligne[9])) { $doliprod->barcode = $ligne[9]; } if (!empty($ligne[9])) { $doliprod->barcode_type = dol_getIdFromCode($this->db, $ligne[10], 'c_barcode_type', 'libelle', 'rowid'); } if (!empty($ligne[10])) { $doliprod->type = $ligne[11]; } $doliprod->price_base_type = 'HT'; $this->db->begin; switch ($typeimport) { case 'C': if ($pid > 0) { if ($doliprod->update($pid, $this->user) < 0) { $this->process_msg .= $langs->trans("ErrProductUpdate", $ligne[0], $doliprod->error) . "\n"; $error++; } if ($doliprod->updatePrice($doliprod->price, $doliprod->price_base_type, $this->user) < 0) { $this->process_msg .= $langs->trans("ErrProductUpdate", $ligne[0], $doliprod->error) . "\n"; $error++; } } else { if ($doliprod->create($this->user) < 0) { $this->process_msg .= $langs->trans("ErrProductCreate", $ligne[0], $doliprod->error) . "\n"; $error++; } else { // image et code barre if ($ligne[8]) { $this->add_photo_web($conf->produit->dir_output, $ligne[8], $doliprod->id); } /*if ($ligne[9]) { if ($doliprod->setValueFrom('fk_barcode_type', 2) < 0){ $this->process_msg .= $langs->trans("ErrProductCreate", $ligne[0], $doliprod->error)."\n"; // TODO paramétrer $error++; } if ($doliprod->setValueFrom('barcode', $ligne[9]) < 0 ){ $this->process_msg .= $langs->trans("ErrProductCreate", $ligne[0], $doliprod->error)."\n"; $error++; } }*/ } } break; /*case 'M': if ($pid>0) { if ($doliprod->update($pid, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrProductUpdate", $ligne[0], $doliprod->error)."\n"; $error++; } if (version_compare(DOL_VERSION, 3.5) >= 0){ if ($doliprod->updatePrice($doliprod->price, $doliprod->price_base_type, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrProductUpdate", $ligne[0], $doliprod->error)."\n"; $error++; } } else{ if ($doliprod->updatePrice($doliprod->id, $doliprod->price, $doliprod->price_base_type, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrProductUpdate", $ligne[0], $doliprod->error)."\n"; $error++; } } } else $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("ErrProdNoExist", $ligne[0])."\n"; break;*/ /*case 'M': if ($pid>0) { if ($doliprod->update($pid, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrProductUpdate", $ligne[0], $doliprod->error)."\n"; $error++; } if (version_compare(DOL_VERSION, 3.5) >= 0){ if ($doliprod->updatePrice($doliprod->price, $doliprod->price_base_type, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrProductUpdate", $ligne[0], $doliprod->error)."\n"; $error++; } } else{ if ($doliprod->updatePrice($doliprod->id, $doliprod->price, $doliprod->price_base_type, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrProductUpdate", $ligne[0], $doliprod->error)."\n"; $error++; } } } else $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("ErrProdNoExist", $ligne[0])."\n"; break;*/ case 'D': if ($pid > 0) { if ($doliprod->delete($pid) < 0) { $this->process_msg .= $langs->trans("ErrProductDelete", $ligne[0], $doliprod->error) . "\n"; $error++; } } else { $this->process_msg .= $langs->trans("Untreated", $i) . ' ' . $langs->trans("ErrProdNoExist", $ligne[0]) . "\n"; } } if (!$error) { $this->db->commit(); } else { $this->db->rollback(); } } } // while break; case 'ImportThirtdparty': $i = 0; //$societe = new Societe($this->db); while ($ligne = fgetcsv($fp, 1000, ";")) { $i++; $societe = new Societe($this->db); if ($this->firstline && $i == 1) { continue; } if (!$ligne[0]) { $this->process_msg .= $langs->trans("Untreated", $i) . " " . $langs->trans("ErrNameRequired") . "\n"; continue; } // vérifier par code_client if ($ligne[13]) { $sid = $this->get_socbyclientcode($ligne[13]); } else { if ($ligne[14]) { $sid = $this->get_socbysuplliercode($ligne[14]); } } if ($sid > 0) { $societe->fetch($sid); } else { $sid = $societe->fetch('', $ligne[0]); } if ($ligne[12]) { $pid = dol_getIdFromCode($this->db, $ligne[12], "c_pays", "code", "rowid"); } else { $pid = ''; } if ($pid <= 0) { $pid = ''; } $did = ''; $societe->id = $sid; $societe->name = $ligne[0]; $societe->particulier = 0; //Société $societe->address = $ligne[1] . "\n" . $ligne[2] . "\n" . $ligne[3]; $societe->zip = $ligne[4]; $societe->town = $ligne[5]; $societe->state_id = $did; if ($ligne[12]) { $societe->country_code = $ligne[12]; } $societe->country_id = $pid; dol_syslog("codes {$pid} " . $lige[12], LOG_DEBUG); $societe->phone = $ligne[6]; $societe->fax = $ligne[7]; $societe->email = $ligne[8]; $societe->url = $ligne[9]; $societe->idprof1 = $ligne[10]; switch ($ligne[11]) { case '0': $societe->fournisseur = 0; $societe->client = $ligne[11]; break; case '1': $societe->fournisseur = 0; $societe->client = $ligne[11]; break; case '2': $societe->fournisseur = 0; $societe->client = $ligne[11]; break; case '10': $societe->client = 0; $societe->fournisseur = 1; break; default: break; } if ($ligne[13]) { $societe->code_client = $ligne[13]; } if ($ligne[14]) { $societe->code_fournisseur = $ligne[14]; } /*if ($ligne[15]) $societe->array_options["options_zone"]=$ligne[15]; if (!empty($ligne[16])) $societe->array_options["options_CA"]=$ligne[16]; if (!empty($ligne[17])) { if ($ligne[17] <= 5) $societe->effectif_id = 1; elseif ($ligne[17] <= 10) $societe->effectif_id = 2; elseif ($ligne[17] <= 50) $societe->effectif_id = 3; elseif ($ligne[17] <= 100) $societe->effectif_id = 4; elseif ($ligne[17] <= 500) $societe->effectif_id = 5; else $societe->effectif_id = 7; } dol_syslog("effectif " . $lige[17].' '.$societe->effectif_id." ".print_r($societe->array_options, true), LOG_DEBUG);*/ $this->db->begin; switch ($typeimport) { case 'C': if ($sid > 0) { if ($societe->update($sid, $this->user) < 0) { $this->process_msg .= $langs->trans("ErrCompanyUpdate", $ligne[0], $societe->error) . "\n"; $error++; } } elseif ($societe->create($this->user) < 0) { $this->process_msg .= $langs->trans("ErrCompanyCreate", $ligne[0], $societe->error) . "\n"; $error++; } break; /*case 'M': if ($sid>0) { if ($societe->update($sid, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrCompanyUpdate", $ligne[0], $societe->error)."\n"; $error++; } } else $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("CompanyNoExist", $ligne[0])."\n"; break;*/ /*case 'M': if ($sid>0) { if ($societe->update($sid, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrCompanyUpdate", $ligne[0], $societe->error)."\n"; $error++; } } else $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("CompanyNoExist", $ligne[0])."\n"; break;*/ case 'D': if ($sid > 0) { if ($societe->delete($sid) < 0) { $this->process_msg .= $langs->trans("ErrCompanyDelete", $ligne[0], $societe->error) . "\n"; $error++; } } else { $this->process_msg .= $langs->trans("Untreated", $i) . ' ' . $langs->trans("CompanyNoExist", $ligne[0]) . "\n"; } } if (!$error) { $this->db->commit(); } else { $this->db->rollback(); } } break; case 'ImportContact': $i = 0; //$contact=new Contact($this->db); //$societe = new Societe($this->db); while ($ligne = fgetcsv($fp, 1000, ";")) { $i++; $contact = new Contact($this->db); $societe = new Societe($this->db); if ($this->firstline && $i == 1) { continue; } //if ($societe->fetch('',$ligne[0]) < 0 ) $this->process_msg .= "erreur lecture Société "."\n"; if ($ligne[0]) { $socid = $this->get_socbyclientcode($ligne[0]); } else { if ($ligne[1]) { $socid = $this->get_socbysuplliercode($ligne[1]); } } if ($socid < 0) { $this->process_msg .= $i . " " . $langs->trans("ErrCompanyRequired") . "\n"; } else { $societe->fetch($socid); } if (!$societe->id) { $this->process_msg .= $langs->trans("ErrCompanyNoExist", $ligne[0] . " " . $ligne[1]) . "\n"; continue; } if (empty($ligne[2])) { $this->process_msg .= $langs->trans("Untreated", $i) . " " . $langs->trans("ErrNameRequired") . "\n"; continue; } $contactid = $this->get_contact_id($socid, $ligne[2], $ligne[3]); $contact->id = $contactid; $contact->civilite_id = $ligne[4]; $contact->lastname = $ligne[2]; $contact->firstname = $ligne[3]; if ($ligne[5] || $ligne[6] || $ligne[7]) { $contact->address = $ligne[5] . "\n" . $ligne[6] . "\n" . $ligne[7]; } else { $contact->address = $societe->address; } if ($ligne[8]) { $contact->zip = $ligne[8]; } else { $contact->zip = $societe->zip; } if ($ligne[9]) { $contact->town = $ligne[9]; } else { $contact->town = $societe->town; } if ($ligne[10]) { $pid = dol_getIdFromCode($this->db, $ligne[10], "c_pays", "code", "rowid"); if ($pid <= 0) { $pid = ''; } $contact->country_id = $pid; $contact->country_code = $ligne[10]; } else { $contact->country_id = $societe->country_id; $contact->country_code = $societe->country_code; } $contact->socid = $socid; // fk_soc $contact->status = 1; $contact->email = $ligne[11]; $contact->phone_pro = $ligne[12]; $contact->fax = $ligne[13]; $contact->phone_mobile = $ligne[14]; $contact->priv = 0; $this->db - begin; switch ($typeimport) { case 'C': if ($contactid > 0) { if ($contact->update($contactid, $this->user) < 0) { $this->process_msg .= $langs->trans("ErrContactUpdate", $ligne[2], $contact->error) . "\n"; $error++; } } elseif ($contact->create($this->user) < 0) { $this->process_msg .= $langs->trans("ErrContactCreate", $ligne[2], $contact->error) . "\n"; $error++; } break; /*case 'M': if ($contactid>0) { if ($contact->update($contactid, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrContactUpdate", $ligne[2], $contact->error)."\n"; $error++; } } else $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("ContactNoExist", $ligne[2])."\n"; break;*/ /*case 'M': if ($contactid>0) { if ($contact->update($contactid, $this->user) < 0){ $this->process_msg .= $langs->trans("ErrContactUpdate", $ligne[2], $contact->error)."\n"; $error++; } } else $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("ContactNoExist", $ligne[2])."\n"; break;*/ case 'D': if ($contactid > 0) { if ($contact->delete($contactid) < 0) { $this->process_msg .= $langs->trans("ErrContactDelete", $ligne[2], $contact->error) . "\n"; $error++; } } else { $this->process_msg .= $langs->trans("Untreated", $i) . ' ' . $langs->trans("ContactNoExist", $ligne[2]) . "\n"; } } if (!$error) { $this->db->commit(); } else { $this->db->rollback(); } } break; /*case 'ImportActions': $i=0; $contact=new Contact($this->db); $societe = new Societe($this->db); $actioncomm = new ActionComm($this->db); $actuser = new User($this->db); while ($ligne = fgetcsv($fp,1000,";")) { $i++; if ($this->firstline && $i== 1) continue; //if ($societe->fetch('',$ligne[0]) < 0 ) $this->process_msg .= "erreur lecture Société "."\n"; //else $socid = $societe->id; $socid = $this->get_socbyclientcode($ligne[0]); if ($socid < 0 ) $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("ErrCompanyRequired")."\n"; else $societe->fetch($socid); $socid = $societe->id; if (!$socid) { $this->process_msg .= $langs->trans("ErrCompanyNoExist", $ligne[0])."\n"; continue; } //action sur un contact de la soc if ($ligne[1]) { $contactid = $this->get_contact_id($socid, $ligne[1], $ligne[2]) ; if ($contactid < 0) { $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("ContactNoExist", $ligne[1].' '. $ligne[2])."\n"; // réinitialiser ?? continue; } else $contact->fetch($contactid); } $usertodo = ''; if ($ligne[9]) { $usertodo=new User($this->db); if ( $usertodo->fetch('',$ligne[9]) < 0 ) $this->process_msg .= $langs->trans("ErrUserNoExist", $ligne[9])."\n"; } $userdone= '' ; if ($ligne[10]) { $usertodo=new User($this->db); if ( $usertodo->fetch('',$ligne[10]) < 0 ) $this->process_msg .= $langs->trans("ErrUserNoExist", $ligne[10])."\n"; } $datep = ''; if ($ligne[6]) { // voir date $n = sscanf($ligne[6],"%02d/%02d/%04d", $d_day, $d_mon, $d_year); if ($n==3) $datep=dol_mktime(12, 0, 0, $d_mon, $d_day, $d_year); if (!$datep) $this->process_msg .= $langs->trans("ErrDateConversion", $ligne[6])."\n"; } else $datep =''; $datef=''; if ($ligne[7]) { // voir la date $n = sscanf($ligne[7],"%02d/%02d/%04d", $d_day, $d_mon, $d_year); if ($n==3)$datef=dol_mktime(12, 0, 0, $d_mon, $d_day, $d_year); if (!$datef) $this->process_msg .= $langs->trans("ErrDateConversion", $ligne[7])."\n"; } else $datef =''; //$datef=''; $actioncomm->societe = $societe; if ($ligne[1]) $actioncomm->contact = $contact; else $actioncomm->contact = ''; $actioncomm->type_code = $ligne[3]; $actioncomm->priority = $ligne[4]; $actioncomm->location = '' ; $actioncomm->label = $ligne[5]; $actioncomm->datep = $datep; $actioncomm->datef = $datef; $actioncomm->percentage = $ligne[8]; $actioncomm->usertodo = $usertodo; $actioncomm->userdone = $userdone; $actioncomm->note =$ligne[11]; switch ($typeimport) { case 'C': $this->db->begin(); if ($actioncomm->add($this->user) < 0) { $this->process_msg .= $langs->trans("ErrActionCreate", $ligne[5], $actioncomm->error)."\n"; $this->db->rollback(); } else $this->db->commit(); break; case 'M': $this->db->begin(); if($actioncomm->update($user) < 0){ $this->process_msg .= $langs->trans("ErrActionUpdate", $ligne[5], $actioncomm->error)."\n"; $this->db->rollback(); } else $this->db->commit(); break; case 'D': $this->db->begin(); if($actioncomm->delete() < 0){ $this->process_msg .= $langs->trans("ErrActionDelete", $ligne[5], $actioncomm->error)."\n"; $this->db->rollback(); } else $this->db->commit(); break; } } break;*/ /*case 'ImportActions': $i=0; $contact=new Contact($this->db); $societe = new Societe($this->db); $actioncomm = new ActionComm($this->db); $actuser = new User($this->db); while ($ligne = fgetcsv($fp,1000,";")) { $i++; if ($this->firstline && $i== 1) continue; //if ($societe->fetch('',$ligne[0]) < 0 ) $this->process_msg .= "erreur lecture Société "."\n"; //else $socid = $societe->id; $socid = $this->get_socbyclientcode($ligne[0]); if ($socid < 0 ) $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("ErrCompanyRequired")."\n"; else $societe->fetch($socid); $socid = $societe->id; if (!$socid) { $this->process_msg .= $langs->trans("ErrCompanyNoExist", $ligne[0])."\n"; continue; } //action sur un contact de la soc if ($ligne[1]) { $contactid = $this->get_contact_id($socid, $ligne[1], $ligne[2]) ; if ($contactid < 0) { $this->process_msg .= $langs->trans("Untreated", $i).' '.$langs->trans("ContactNoExist", $ligne[1].' '. $ligne[2])."\n"; // réinitialiser ?? continue; } else $contact->fetch($contactid); } $usertodo = ''; if ($ligne[9]) { $usertodo=new User($this->db); if ( $usertodo->fetch('',$ligne[9]) < 0 ) $this->process_msg .= $langs->trans("ErrUserNoExist", $ligne[9])."\n"; } $userdone= '' ; if ($ligne[10]) { $usertodo=new User($this->db); if ( $usertodo->fetch('',$ligne[10]) < 0 ) $this->process_msg .= $langs->trans("ErrUserNoExist", $ligne[10])."\n"; } $datep = ''; if ($ligne[6]) { // voir date $n = sscanf($ligne[6],"%02d/%02d/%04d", $d_day, $d_mon, $d_year); if ($n==3) $datep=dol_mktime(12, 0, 0, $d_mon, $d_day, $d_year); if (!$datep) $this->process_msg .= $langs->trans("ErrDateConversion", $ligne[6])."\n"; } else $datep =''; $datef=''; if ($ligne[7]) { // voir la date $n = sscanf($ligne[7],"%02d/%02d/%04d", $d_day, $d_mon, $d_year); if ($n==3)$datef=dol_mktime(12, 0, 0, $d_mon, $d_day, $d_year); if (!$datef) $this->process_msg .= $langs->trans("ErrDateConversion", $ligne[7])."\n"; } else $datef =''; //$datef=''; $actioncomm->societe = $societe; if ($ligne[1]) $actioncomm->contact = $contact; else $actioncomm->contact = ''; $actioncomm->type_code = $ligne[3]; $actioncomm->priority = $ligne[4]; $actioncomm->location = '' ; $actioncomm->label = $ligne[5]; $actioncomm->datep = $datep; $actioncomm->datef = $datef; $actioncomm->percentage = $ligne[8]; $actioncomm->usertodo = $usertodo; $actioncomm->userdone = $userdone; $actioncomm->note =$ligne[11]; switch ($typeimport) { case 'C': $this->db->begin(); if ($actioncomm->add($this->user) < 0) { $this->process_msg .= $langs->trans("ErrActionCreate", $ligne[5], $actioncomm->error)."\n"; $this->db->rollback(); } else $this->db->commit(); break; case 'M': $this->db->begin(); if($actioncomm->update($user) < 0){ $this->process_msg .= $langs->trans("ErrActionUpdate", $ligne[5], $actioncomm->error)."\n"; $this->db->rollback(); } else $this->db->commit(); break; case 'D': $this->db->begin(); if($actioncomm->delete() < 0){ $this->process_msg .= $langs->trans("ErrActionDelete", $ligne[5], $actioncomm->error)."\n"; $this->db->rollback(); } else $this->db->commit(); break; } } break;*/ case 'Importtarif': // ref four $i = 0; $this->process_msg = ''; $error = 0; /*$doliprod = new Product($this->db); $product = new ProductFournisseur($this->db); $societe = new Societe($this->db);*/ while ($ligne = fgetcsv($fp, 1000, ";")) { $doliprod->id = ''; $i++; $doliprod = new Product($this->db); $product = new ProductFournisseur($this->db); $societe = new Societe($this->db); if ($this->firstline && $i == 1) { continue; } // recherche du fournisseur if ($societe->fetch('', $ligne[2]) > 0) { $sid = $societe->id; } else { $this->process_msg .= $langs->trans("Untreated", $i) . " " . $langs->trans("ErrComppanyNoExist", $ligne[2]) . "\n"; $sid = ''; } if ($doliprod->fetch('', $ligne[0]) > 0) { $pid = $doliprod->id; } else { $this->process_msg .= $langs->trans("Untreated", $i) . " " . $langs->trans("ErrProductNoExist", $ligne[0], $doliprod->error) . "\n"; $pid = ''; } if ($sid > 0 && $pid > 0) { $result = $product->fetch($doliprod->id); if ($result > 0) { $this->db->begin(); switch ($typeimport) { case 'C': $ret = $product->add_fournisseur($this->user, $sid, $ligne[1], $ligne[3]); if ($ret < 0 && $ret != -3) { $this->process_msg .= $langs->trans("Untreated", $i) . " " . $langs->trans("ErrCreatePrice", $product->error) . "\n"; $error++; } $ret = $product->update_buyprice($ligne[3], $ligne[4], $this->user, 'HT', $supplier, '', $ligne[1], $ligne[5]); if ($ret < 0 && $ret != -3) { $this->process_msg .= $langs->trans("Untreated", $i) . " " . $langs->trans("ErrCreatePrice", $product->error) . "\n"; $error++; } break; /*case 'M': { // gestion du prix obligatoire $supplier=new Fournisseur($this->db); $result=$supplier->fetch($sid); $ret=$product->update_buyprice($ligne[3], $ligne[4] , $this->user, 'HT', $supplier, '', $ligne[1], $ligne[5] ); if ($ret < 0) { $this->process_msg .= $langs->trans("Untreated", $i)." ".$langs->trans("Qty").$ligne[3]. ", ".$langs->trans("Price").$ligne[4]." ".$langs->trans("ErrUpdatePrice", $product->error)."\n"; $error ++; } } break;*/ /*case 'M': { // gestion du prix obligatoire $supplier=new Fournisseur($this->db); $result=$supplier->fetch($sid); $ret=$product->update_buyprice($ligne[3], $ligne[4] , $this->user, 'HT', $supplier, '', $ligne[1], $ligne[5] ); if ($ret < 0) { $this->process_msg .= $langs->trans("Untreated", $i)." ".$langs->trans("Qty").$ligne[3]. ", ".$langs->trans("Price").$ligne[4]." ".$langs->trans("ErrUpdatePrice", $product->error)."\n"; $error ++; } } break;*/ case 'D': // suprresion de la ligne avec le même nb d'article et le même prix $sql = "SELECT pfp.rowid FROM " . MAIN_DB_PREFIX . "product_fournisseur_price as pfp"; $sql .= " WHERE pfp.quantity = '" . $ligne[3] . "' AND pfp.ref_fourn = '" . $ligne[1]; $sql .= "' AND pfp.fk_soc = '" . $sid . "' AND pfp.fk_product='" . $pid . "'"; $sql .= " AND pfp.entity = " . $conf->entity; $resql = $this->db->query($sql); if ($resql) { $obj = $this->db->fetch_object($resql); if ($obj->rowid > 0) { $result = $product->remove_product_fournisseur_price($obj->rowid); } else { $this->process_msg .= $langs->trans("Untreated", $i) . ' ' . $langs->trans("ErrDeletePrice", $product->error) . "\n"; $error++; } } else { $this->process_msg .= "Error SQL= " . $sql . "\n"; $error++; } break; } //switch } if (!$error) { $this->db->commit(); } else { $this->db->rollback(); } } // fournisseur trouvé } // traitement ligne // while reffour break; } // fin switch fclose($fp); } else { $this->error = $langs->trans("ErrOpenFile") . $nomfich; $error = -1; } return $error; }
function _createTiers(&$db, &$user, &$ad) { $societe = new Societe($db); $name = trim($ad->firstname . ' ' . $ad->lastname); if (!empty($name)) { $name .= ' / ' . $ad->societe; } else { $name = $ad->societe; } $societe->name = $name; $societe->client = 1; if (!empty($ad->email) && isValidEMail($ad->email)) { $societe->email = $ad->email; } $societe->address = $ad->address; $societe->zip = $ad->zip; $societe->town = $ad->town; $societe->state_id = $ad->state_id; $societe->country_id = $ad->country_id; $societe->phone = $ad->phone; if ($societe->create($user) > 0) { $ad->fk_soc = $societe->id; return $societe; } else { return false; } }
/** * testSocieteCreate * * @return int */ public function testSocieteCreate() { global $conf,$user,$langs,$db; $conf=$this->savconf; $user=$this->savuser; $langs=$this->savlangs; $db=$this->savdb; $localobject=new Societe($this->savdb); $localobject->initAsSpecimen(); $result=$localobject->create($user); print __METHOD__." result=".$result."\n"; $this->assertLessThanOrEqual($result, 0); return $result; }
/** * testAdherentSetThirdPartyId * * @param Adherent $localobject Member instance * @return Adherent * * @depends testAdherentSetUserId * The depends says test is run only if previous is ok */ public function testAdherentSetThirdPartyId(Adherent $localobject) { global $conf, $user, $langs, $db; $conf = $this->savconf; $user = $this->savuser; $langs = $this->savlangs; $db = $this->savdb; //Create a Third Party $thirdparty = new Societe($db); $thirdparty->initAsSpecimen(); $result = $thirdparty->create($user); print __METHOD__ . " id=" . $localobject->id . " third party id=" . $thirdparty->id . " result=" . $result . "\n"; $this->assertTrue($result > 0); //Set Third Party ID $result = $localobject->setThirdPartyId($thirdparty->id); $this->assertEquals($result, 1); print __METHOD__ . " id=" . $localobject->id . " result=" . $result . "\n"; //Adherent is updated with new data $localobject->fetch($localobject->id); $this->assertEquals($localobject->fk_soc, $thirdparty->id); print __METHOD__ . " id=" . $localobject->id . " result=" . $result . "\n"; //We remove the third party association $result = $localobject->setThirdPartyId(0); $this->assertEquals($result, 1); //And check if it has been updated $localobject->fetch($localobject->id); $this->assertNull($localobject->fk_soc); //Now we remove the third party $result = $thirdparty->delete($thirdparty->id, $user); $this->assertEquals($result, 1); return $localobject; }