44require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/class/commonincoterm.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/class/commonsocialnetworks.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/class/commonpeople.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/multicurrency/class/multicurrency.class.php';
63 public $module =
'societe';
68 public $element =
'societe';
73 public $table_element =
'societe';
78 public $fk_element =
'fk_soc';
83 public $fieldsforcombobox =
'nom,name_alias';
88 protected $childtables = array(
89 'supplier_proposal' => array(
'name' =>
'SupplierProposal'),
90 'propal' => array(
'name' =>
'Proposal'),
91 'commande' => array(
'name' =>
'Order'),
92 'facture' => array(
'name' =>
'Invoice'),
93 'facture_rec' => array(
'name' =>
'RecurringInvoiceTemplate'),
94 'contrat' => array(
'name' =>
'Contract'),
95 'fichinter' => array(
'name' =>
'Fichinter'),
96 'facture_fourn' => array(
'name' =>
'SupplierInvoice'),
97 'commande_fournisseur' => array(
'name' =>
'SupplierOrder'),
98 'projet' => array(
'name' =>
'Project'),
99 'expedition' => array(
'name' =>
'Shipment'),
100 'prelevement_lignes' => array(
'name' =>
'DirectDebitRecord'),
107 protected $childtablesoncascade = array(
109 'product_fournisseur_price',
110 'product_customer_price_log',
111 'product_customer_price',
112 '@Contact:/contact/class/contact.class.php:fk_soc',
117 'societe_remise_except',
118 'societe_commerciaux',
128 public $picto =
'company';
134 public $restrictiononfksoc = 1;
140 public $SupplierCategories = array();
146 public $prefixCustomerIsRequired;
177 public $fields = array(
178 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'visible' => -2,
'noteditable' => 1,
'notnull' => 1,
'index' => 1,
'position' => 1,
'comment' =>
'Id',
'css' =>
'left'),
179 'parent' => array(
'type' =>
'integer',
'label' =>
'Parent',
'enabled' => 1,
'visible' => -1,
'position' => 20),
180 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'visible' => -1,
'notnull' => 1,
'position' => 25),
181 'datec' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'visible' => -1,
'position' => 30),
182 'nom' => array(
'type' =>
'varchar(128)',
'length' => 128,
'label' =>
'Nom',
'enabled' => 1,
'visible' => -1,
'position' => 35,
'showoncombobox' => 1,
'csslist' =>
'tdoverflowmax150'),
183 'name_alias' => array(
'type' =>
'varchar(128)',
'label' =>
'Name alias',
'enabled' => 1,
'visible' => -1,
'position' => 36,
'showoncombobox' => 2),
184 'entity' => array(
'type' =>
'integer',
'label' =>
'Entity',
'default' =>
'1',
'enabled' => 1,
'visible' => -2,
'notnull' => 1,
'position' => 40,
'index' => 1),
185 'ref_ext' => array(
'type' =>
'varchar(255)',
'label' =>
'RefExt',
'enabled' => 1,
'visible' => 0,
'position' => 45),
186 'code_client' => array(
'type' =>
'varchar(24)',
'label' =>
'CustomerCode',
'enabled' => 1,
'visible' => -1,
'position' => 55),
187 'code_fournisseur' => array(
'type' =>
'varchar(24)',
'label' =>
'SupplierCode',
'enabled' => 1,
'visible' => -1,
'position' => 60),
188 'code_compta' => array(
'type' =>
'varchar(24)',
'label' =>
'CustomerAccountancyCode',
'enabled' => 1,
'visible' => -1,
'position' => 65),
189 'code_compta_fournisseur' => array(
'type' =>
'varchar(24)',
'label' =>
'SupplierAccountancyCode',
'enabled' => 1,
'visible' => -1,
'position' => 70),
190 'address' => array(
'type' =>
'varchar(255)',
'label' =>
'Address',
'enabled' => 1,
'visible' => -1,
'position' => 75),
191 'zip' => array(
'type' =>
'varchar(25)',
'label' =>
'Zip',
'enabled' => 1,
'visible' => -1,
'position' => 80),
192 'town' => array(
'type' =>
'varchar(50)',
'label' =>
'Town',
'enabled' => 1,
'visible' => -1,
'position' => 85),
193 'fk_departement' => array(
'type' =>
'integer',
'label' =>
'State',
'enabled' => 1,
'visible' => -1,
'position' => 90),
194 'fk_pays' => array(
'type' =>
'integer:Ccountry:core/class/ccountry.class.php',
'label' =>
'Country',
'enabled' => 1,
'visible' => -1,
'position' => 95),
195 'phone' => array(
'type' =>
'varchar(20)',
'label' =>
'Phone',
'enabled' => 1,
'visible' => -1,
'position' => 100),
196 'phone_mobile' => array(
'type' =>
'varchar(20)',
'label' =>
'PhoneMobile',
'enabled' => 1,
'visible' => -1,
'position' => 102),
197 'fax' => array(
'type' =>
'varchar(20)',
'label' =>
'Fax',
'enabled' => 1,
'visible' => -1,
'position' => 105),
198 'url' => array(
'type' =>
'varchar(255)',
'label' =>
'Url',
'enabled' => 1,
'visible' => -1,
'position' => 110),
199 'email' => array(
'type' =>
'varchar(128)',
'label' =>
'Email',
'enabled' => 1,
'visible' => -1,
'position' => 115),
200 'socialnetworks' => array(
'type' =>
'text',
'label' =>
'Socialnetworks',
'enabled' => 1,
'visible' => -1,
'position' => 120),
201 'fk_effectif' => array(
'type' =>
'integer',
'label' =>
'Workforce',
'enabled' => 1,
'visible' => -1,
'position' => 170),
202 'fk_typent' => array(
'type' =>
'integer',
'label' =>
'TypeOfCompany',
'enabled' => 1,
'visible' => -1,
'position' => 175,
'csslist' =>
'minwidth200'),
203 'fk_forme_juridique' => array(
'type' =>
'integer',
'label' =>
'JuridicalStatus',
'enabled' => 1,
'visible' => -1,
'position' => 180),
204 'fk_currency' => array(
'type' =>
'varchar(3)',
'label' =>
'Currency',
'enabled' => 1,
'visible' => -1,
'position' => 185),
205 'siren' => array(
'type' =>
'varchar(128)',
'label' =>
'Idprof1',
'enabled' => 1,
'visible' => -1,
'position' => 190),
206 'siret' => array(
'type' =>
'varchar(128)',
'label' =>
'Idprof2',
'enabled' => 1,
'visible' => -1,
'position' => 195),
207 'ape' => array(
'type' =>
'varchar(128)',
'label' =>
'Idprof3',
'enabled' => 1,
'visible' => -1,
'position' => 200),
208 'idprof4' => array(
'type' =>
'varchar(128)',
'label' =>
'Idprof4',
'enabled' => 1,
'visible' => -1,
'position' => 205),
209 'idprof5' => array(
'type' =>
'varchar(128)',
'label' =>
'Idprof5',
'enabled' => 1,
'visible' => -1,
'position' => 206),
210 'idprof6' => array(
'type' =>
'varchar(128)',
'label' =>
'Idprof6',
'enabled' => 1,
'visible' => -1,
'position' => 207),
211 'tva_intra' => array(
'type' =>
'varchar(20)',
'label' =>
'Tva intra',
'enabled' => 1,
'visible' => -1,
'position' => 210),
212 'capital' => array(
'type' =>
'double(24,8)',
'label' =>
'Capital',
'enabled' => 1,
'visible' => -1,
'position' => 215),
213 'fk_stcomm' => array(
'type' =>
'integer',
'label' =>
'CommercialStatus',
'enabled' => 1,
'visible' => -1,
'notnull' => 1,
'position' => 220),
214 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'visible' => 0,
'position' => 225),
215 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'visible' => 0,
'position' => 230),
216 'prefix_comm' => array(
'type' =>
'varchar(5)',
'label' =>
'Prefix comm',
'enabled' =>
"getDolGlobalInt('SOCIETE_USEPREFIX')",
'visible' => -1,
'position' => 235),
217 'client' => array(
'type' =>
'tinyint(4)',
'label' =>
'Client',
'enabled' => 1,
'visible' => -1,
'position' => 240),
218 'fournisseur' => array(
'type' =>
'tinyint(4)',
'label' =>
'Fournisseur',
'enabled' => 1,
'visible' => -1,
'position' => 245),
219 'supplier_account' => array(
'type' =>
'varchar(32)',
'label' =>
'Supplier account',
'enabled' => 1,
'visible' => -1,
'position' => 250),
220 'fk_prospectlevel' => array(
'type' =>
'varchar(12)',
'label' =>
'ProspectLevel',
'enabled' => 1,
'visible' => -1,
'position' => 255),
221 'customer_bad' => array(
'type' =>
'tinyint(4)',
'label' =>
'Customer bad',
'enabled' => 1,
'visible' => -1,
'position' => 260),
222 'customer_rate' => array(
'type' =>
'double',
'label' =>
'Customer rate',
'enabled' => 1,
'visible' => -1,
'position' => 265),
223 'supplier_rate' => array(
'type' =>
'double',
'label' =>
'Supplier rate',
'enabled' => 1,
'visible' => -1,
'position' => 270),
224 'fk_user_creat' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserAuthor',
'enabled' => 1,
'visible' => -2,
'position' => 275),
225 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'enabled' => 1,
'visible' => -2,
'notnull' => -1,
'position' => 280),
228 'mode_reglement' => array(
'type' =>
'tinyint(4)',
'label' =>
'Mode reglement',
'enabled' => 1,
'visible' => -1,
'position' => 295),
229 'cond_reglement' => array(
'type' =>
'tinyint(4)',
'label' =>
'Cond reglement',
'enabled' => 1,
'visible' => -1,
'position' => 300),
230 'deposit_percent' => array(
'type' =>
'varchar(63)',
'label' =>
'DepositPercent',
'enabled' => 1,
'visible' => -1,
'position' => 301),
231 'mode_reglement_supplier' => array(
'type' =>
'integer',
'label' =>
'Mode reglement supplier',
'enabled' => 1,
'visible' => -1,
'position' => 305),
232 'cond_reglement_supplier' => array(
'type' =>
'integer',
'label' =>
'Cond reglement supplier',
'enabled' => 1,
'visible' => -1,
'position' => 308),
233 'outstanding_limit' => array(
'type' =>
'double(24,8)',
'label' =>
'OutstandingBill',
'enabled' => 1,
'visible' => -1,
'position' => 310,
'isameasure' => 1),
234 'order_min_amount' => array(
'type' =>
'double(24,8)',
'label' =>
'Order min amount',
'enabled' =>
'isModEnabled("order") && !empty($conf->global->ORDER_MANAGE_MIN_AMOUNT)',
'visible' => -1,
'position' => 315,
'isameasure' => 1),
235 'supplier_order_min_amount' => array(
'type' =>
'double(24,8)',
'label' =>
'Supplier order min amount',
'enabled' =>
'isModEnabled("order") && !empty($conf->global->ORDER_MANAGE_MIN_AMOUNT)',
'visible' => -1,
'position' => 320,
'isameasure' => 1),
236 'fk_shipping_method' => array(
'type' =>
'integer',
'label' =>
'Fk shipping method',
'enabled' => 1,
'visible' => -1,
'position' => 330),
237 'tva_assuj' => array(
'type' =>
'tinyint(4)',
'label' =>
'Tva assuj',
'enabled' => 1,
'visible' => -1,
'position' => 335),
238 'localtax1_assuj' => array(
'type' =>
'tinyint(4)',
'label' =>
'Localtax1 assuj',
'enabled' => 1,
'visible' => -1,
'position' => 340),
239 'localtax1_value' => array(
'type' =>
'double(6,3)',
'label' =>
'Localtax1 value',
'enabled' => 1,
'visible' => -1,
'position' => 345),
240 'localtax2_assuj' => array(
'type' =>
'tinyint(4)',
'label' =>
'Localtax2 assuj',
'enabled' => 1,
'visible' => -1,
'position' => 350),
241 'localtax2_value' => array(
'type' =>
'double(6,3)',
'label' =>
'Localtax2 value',
'enabled' => 1,
'visible' => -1,
'position' => 355),
242 'vat_reverse_charge' => array(
'type' =>
'tinyint(4)',
'label' =>
'Vat reverse charge',
'enabled' => 1,
'visible' => -1,
'position' => 335),
243 'barcode' => array(
'type' =>
'varchar(255)',
'label' =>
'Barcode',
'enabled' => 1,
'visible' => -1,
'position' => 360),
244 'price_level' => array(
'type' =>
'integer',
'label' =>
'Price level',
'enabled' =>
'$conf->global->PRODUIT_MULTIPRICES || getDolGlobalString("PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES") || getDolGlobalString("PRODUIT_CUSTOMER_PRICES_AND_MULTIPRICES")',
'visible' => -1,
'position' => 365),
245 'default_lang' => array(
'type' =>
'varchar(6)',
'label' =>
'Default lang',
'enabled' => 1,
'visible' => -1,
'position' => 370),
246 'canvas' => array(
'type' =>
'varchar(32)',
'label' =>
'Canvas',
'enabled' => 1,
'visible' => -1,
'position' => 375),
247 'fk_barcode_type' => array(
'type' =>
'integer',
'label' =>
'Fk barcode type',
'enabled' => 1,
'visible' => -1,
'position' => 405),
248 'webservices_url' => array(
'type' =>
'varchar(255)',
'label' =>
'Webservices url',
'enabled' => 1,
'visible' => -1,
'position' => 410),
249 'webservices_key' => array(
'type' =>
'varchar(128)',
'label' =>
'Webservices key',
'enabled' => 1,
'visible' => -1,
'position' => 415),
250 'fk_incoterms' => array(
'type' =>
'integer',
'label' =>
'Fk incoterms',
'enabled' => 1,
'visible' => -1,
'position' => 425),
251 'location_incoterms' => array(
'type' =>
'varchar(255)',
'label' =>
'Location incoterms',
'enabled' => 1,
'visible' => -1,
'position' => 430),
252 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'visible' => 0,
'position' => 435),
253 'last_main_doc' => array(
'type' =>
'varchar(255)',
'label' =>
'LastMainDoc',
'enabled' => 1,
'visible' => -1,
'position' => 270),
254 'fk_multicurrency' => array(
'type' =>
'integer',
'label' =>
'Fk multicurrency',
'enabled' => 1,
'visible' => -1,
'position' => 440),
255 'multicurrency_code' => array(
'type' =>
'varchar(255)',
'label' =>
'Multicurrency code',
'enabled' => 1,
'visible' => -1,
'position' => 445),
256 'fk_account' => array(
'type' =>
'integer',
'label' =>
'PaymentBankAccount',
'enabled' => 1,
'visible' => -1,
'position' => 450),
257 'fk_warehouse' => array(
'type' =>
'integer',
'label' =>
'Warehouse',
'enabled' => 1,
'visible' => -1,
'position' => 455),
258 'logo' => array(
'type' =>
'varchar(255)',
'label' =>
'Logo',
'enabled' => 1,
'visible' => -1,
'position' => 400),
259 'logo_squarred' => array(
'type' =>
'varchar(255)',
'label' =>
'Logo squarred',
'enabled' => 1,
'visible' => -1,
'position' => 401),
260 'status' => array(
'type' =>
'tinyint(4)',
'label' =>
'Status',
'enabled' => 1,
'visible' => -1,
'position' => 500),
261 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'visible' => -2,
'position' => 1000),
319 public $departement_code;
344 public $phone_mobile;
491 public $socialobject;
501 public $tva_assuj = 1;
511 public $vat_reverse_charge = 0;
517 public $localtax1_assuj;
521 public $localtax1_value;
525 public $localtax2_assuj;
529 public $localtax2_value;
544 public $typent_id = 0;
556 public $effectif_id = 0;
560 public $forme_juridique_code = 0;
565 public $forme_juridique;
570 public $remise_percent;
574 public $remise_supplier_percent;
579 public $mode_reglement_id;
583 public $cond_reglement_id;
587 public $deposit_percent;
591 public $mode_reglement_supplier_id;
595 public $cond_reglement_supplier_id;
599 public $transport_mode_supplier_id;
604 public $fk_prospectlevel;
616 public $user_modification;
623 public $user_creation;
635 public $prospect = 0;
653 public $code_fournisseur;
659 public $code_compta_client;
665 public $accountancy_code_customer_general;
671 public $accountancy_code_customer;
677 public $code_compta_fournisseur;
683 public $accountancy_code_supplier_general;
689 public $accountancy_code_supplier;
695 public $code_compta_product;
708 public $note_private;
726 public $stcomm_picto;
732 public $status_prospect_label;
743 public $outstanding_limit;
748 public $order_min_amount;
753 public $supplier_order_min_amount;
759 public $commercial_id;
771 public $default_lang;
802 public $webservices_url;
808 public $webservices_key;
828 public $logo_squarred;
833 public $logo_squarred_small;
838 public $logo_squarred_mini;
843 public $accountancy_code_sell;
848 public $accountancy_code_buy;
854 public $fk_multicurrency;
859 public $multicurrency_code;
865 public $fk_warehouse;
878 public $partnerships = array();
884 public $bank_account;
887 const STATUS_CEASED = 0;
888 const STATUS_INACTIVITY = 1;
929 'code_compta' =>
'code_compta_client',
931 + parent::deprecatedProperties();
945 $this->ismultientitymanaged = 1;
946 $this->isextrafieldmanaged = 1;
949 $this->fournisseur = 0;
950 $this->typent_id = 0;
951 $this->effectif_id = 0;
952 $this->forme_juridique_code = 0;
953 $this->tva_assuj = 1;
954 $this->vat_reverse_charge = 0;
958 $this->fields[
'address'][
'showoncombobox'] =
getDolGlobalString(
'COMPANY_SHOW_ADDRESS_SELECTLIST');
959 $this->fields[
'zip'][
'showoncombobox'] =
getDolGlobalString(
'COMPANY_SHOW_ADDRESS_SELECTLIST');
960 $this->fields[
'town'][
'showoncombobox'] =
getDolGlobalString(
'COMPANY_SHOW_ADDRESS_SELECTLIST');
976 global $langs,
$conf;
981 if (empty($this->
status)) {
984 $this->
name = $this->
name ? trim($this->
name) : trim((
string) $this->nom);
986 $this->nom = $this->name;
988 if (empty($this->client)) {
991 if (empty($this->fournisseur)) {
992 $this->fournisseur = 0;
994 $this->import_key = trim((
string) $this->import_key);
996 $this->code_compta_client = trim($this->code_compta_client);
998 $this->accountancy_code_customer_general = trim($this->accountancy_code_customer_general);
999 $this->accountancy_code_customer = trim((
string) $this->code_compta_client);
1000 $this->accountancy_code_supplier_general = trim($this->accountancy_code_supplier_general);
1001 $this->accountancy_code_supplier = trim((
string) $this->code_compta_fournisseur);
1002 $this->accountancy_code_buy = trim((
string) $this->accountancy_code_buy);
1003 $this->accountancy_code_sell = trim((
string) $this->accountancy_code_sell);
1005 if (!empty($this->multicurrency_code)) {
1008 if (empty($this->fk_multicurrency)) {
1009 $this->multicurrency_code =
'';
1010 $this->fk_multicurrency = 0;
1017 if (empty($this->date_creation)) {
1018 $this->date_creation = $now;
1024 if ($this->code_client == -1 || $this->code_client ===
'auto') {
1025 $this->get_codeclient($this, 0);
1027 if ($this->code_fournisseur ==
'-1' || $this->code_fournisseur ===
'auto') {
1028 $this->get_codefournisseur($this, 1);
1033 $result = $this->
verify();
1038 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe (";
1040 $sql .=
", name_alias";
1043 $sql .=
", fk_user_creat";
1044 $sql .=
", fk_typent";
1047 $sql .=
", ref_ext";
1048 $sql .=
", fk_stcomm";
1049 $sql .=
", fk_incoterms";
1050 $sql .=
", location_incoterms";
1051 $sql .=
", import_key";
1052 $sql .=
", fk_multicurrency";
1053 $sql .=
", multicurrency_code";
1056 $sql .=
", vat_reverse_charge";
1057 $sql .=
", accountancy_code_buy";
1058 $sql .=
", accountancy_code_sell";
1060 $sql .=
") VALUES ('".$this->db->escape($this->name).
"',";
1061 $sql .=
" '".$this->db->escape($this->name_alias).
"',";
1062 $sql .=
" ".((int) $this->entity).
",";
1063 $sql .=
" '".$this->db->idate($this->date_creation).
"'";
1064 $sql .=
", ".(!empty($user->id) ? ((int) $user->id) :
"null");
1065 $sql .=
", ".(!empty($this->typent_id) ? ((int) $this->typent_id) :
"null");
1066 $sql .=
", ".(!empty($this->canvas) ?
"'".$this->db->escape($this->canvas).
"'" :
"null");
1067 $sql .=
", ".((int) $this->
status);
1068 $sql .=
", ".(!empty($this->ref_ext) ?
"'".$this->db->escape($this->ref_ext).
"'" :
"null");
1070 $sql .=
", ".(int) $this->fk_incoterms;
1071 $sql .=
", '".$this->db->escape($this->location_incoterms).
"'";
1072 $sql .=
", ".(!empty($this->import_key) ?
"'".$this->db->escape($this->import_key).
"'" :
"null");
1073 $sql .=
", ".(int) $this->fk_multicurrency;
1074 $sql .=
", '".$this->db->escape($this->multicurrency_code).
"'";
1075 $sql .=
", '".$this->db->escape($this->ip).
"'";
1077 $sql .=
", ".(empty($this->vat_reverse_charge) ?
'0' :
'1');
1078 $sql .=
", '" . $this->db->escape($this->accountancy_code_buy) .
"'";
1079 $sql .=
", '" . $this->db->escape($this->accountancy_code_sell) .
"'";
1083 dol_syslog(get_class($this).
"::create", LOG_DEBUG);
1085 $result = $this->db->query($sql);
1087 $this->
id = $this->db->last_insert_id(MAIN_DB_PREFIX.
"societe");
1089 $ret = $this->
update($this->
id, $user, 0, 1, 1,
'add');
1093 $this->db->query(
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_perentity WHERE fk_soc = ".((
int) $this->id).
" AND entity = ".((
int)
$conf->entity));
1095 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_perentity (";
1098 $sql .=
", vat_reverse_charge";
1099 $sql .=
", accountancy_code_customer_general";
1100 $sql .=
", accountancy_code_customer";
1101 $sql .=
", accountancy_code_supplier_general";
1102 $sql .=
", accountancy_code_supplier";
1103 $sql .=
", accountancy_code_buy";
1104 $sql .=
", accountancy_code_sell";
1105 $sql .=
") VALUES (";
1107 $sql .=
", ".((int)
$conf->entity);
1108 $sql .=
", ".(empty($this->vat_reverse_charge) ?
'0' :
'1');
1109 $sql .=
", '".$this->db->escape($this->accountancy_code_customer_general).
"'";
1110 $sql .=
", '".$this->db->escape($this->accountancy_code_customer).
"'";
1111 $sql .=
", '".$this->db->escape($this->accountancy_code_supplier_general).
"'";
1112 $sql .=
", '".$this->db->escape($this->accountancy_code_supplier).
"'";
1113 $sql .=
", '".$this->db->escape($this->accountancy_code_buy).
"'";
1114 $sql .=
", '".$this->db->escape($this->accountancy_code_sell).
"'";
1116 $result = $this->db->query($sql);
1119 $this->error =
'ErrorFailedToUpdateAccountancyForEntity';
1124 if ($this->commercial_id !=
'' && $this->commercial_id != -1) {
1126 } elseif (!$user->hasRight(
'societe',
'client',
'voir')) {
1134 $result = $this->
call_trigger(
'COMPANY_CREATE', $user);
1145 dol_syslog(get_class($this).
"::Create success id=".$this->
id);
1146 $this->db->commit();
1149 dol_syslog(get_class($this).
"::Create echec update ".$this->error.(empty($this->errors) ?
'' :
' '.implode(
',', $this->errors)), LOG_ERR);
1150 $this->db->rollback();
1154 if ($this->db->lasterrno() ==
'DB_ERROR_RECORD_ALREADY_EXISTS') {
1155 $this->error = $langs->trans(
"ErrorCompanyNameAlreadyExists", $this->name);
1158 $this->error = $this->db->lasterror();
1161 $this->db->rollback();
1165 $this->db->rollback();
1166 dol_syslog(get_class($this).
"::Create fails verify ".implode(
',', $this->errors), LOG_WARNING);
1191 require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
1192 $contact =
new Contact($this->db);
1194 $contact->name = $this->name_bis;
1195 $contact->firstname = $this->firstname;
1196 $contact->civility_id = $this->civility_id;
1197 $contact->socid = $this->id;
1198 $contact->statut = 1;
1199 $contact->status = 1;
1201 $contact->country_id = $this->country_id;
1202 $contact->state_id = $this->state_id;
1203 $contact->address = $this->address;
1204 $contact->email = $this->email;
1205 $contact->zip = $this->zip;
1206 $contact->town = $this->town;
1208 $contact->phone_pro = $this->phone;
1213 $contactId = $contact->create($user, $notrigger);
1214 if ($contactId < 0) {
1217 dol_syslog(get_class($this).
"::create_individual ERROR:".$this->error, LOG_ERR);
1220 if (empty($error) && is_array($tags) && !empty($tags)) {
1221 $result = $contact->setCategories($tags);
1225 dol_syslog(get_class($this).
"::create_individual Affect Tag ERROR:".$this->error, LOG_ERR);
1226 $contactId = $result;
1230 if (empty($error) && isModEnabled(
'mailing') && !empty($contact->email) && isset($no_email)) {
1231 $result = $contact->setNoEmail($no_email);
1234 dol_syslog(get_class($this).
"::create_individual set mailing status ERROR:".$this->error, LOG_ERR);
1235 $contactId = $result;
1239 if (empty($error)) {
1240 dol_syslog(get_class($this).
"::create_individual success");
1241 $this->db->commit();
1243 $this->db->rollback();
1257 global
$conf, $langs, $mysoc;
1260 $this->errors = array();
1264 $this->nom = $this->name;
1267 $this->errors[] =
'ErrorBadThirdPartyName';
1271 if ($this->client) {
1273 if ($rescode != 0 && $rescode != -5) {
1274 if ($rescode == -1) {
1275 $this->errors[] =
'ErrorBadCustomerCodeSyntax';
1276 } elseif ($rescode == -2) {
1277 $this->errors[] =
'ErrorCustomerCodeRequired';
1278 } elseif ($rescode == -3) {
1279 $this->errors[] =
'ErrorCustomerCodeAlreadyUsed';
1280 } elseif ($rescode == -4) {
1281 $this->errors[] =
'ErrorPrefixRequired';
1283 $this->errors[] =
'ErrorUnknownOnCustomerCodeCheck';
1290 if ($this->fournisseur) {
1292 if ($rescode != 0 && $rescode != -5) {
1293 if ($rescode == -1) {
1294 $this->errors[] =
'ErrorBadSupplierCodeSyntax';
1295 } elseif ($rescode == -2) {
1296 $this->errors[] =
'ErrorSupplierCodeRequired';
1297 } elseif ($rescode == -3) {
1298 $this->errors[] =
'ErrorSupplierCodeAlreadyUsed';
1299 } elseif ($rescode == -4) {
1300 $this->errors[] =
'ErrorPrefixRequired';
1302 $this->errors[] =
'ErrorUnknownOnSupplierCodeCheck';
1309 $array_to_check = array(
'IDPROF1',
'IDPROF2',
'IDPROF3',
'IDPROF4',
'IDPROF5',
'IDPROF6',
'EMAIL',
'TVA_INTRA',
'ACCOUNTANCY_CODE_CUSTOMER',
'ACCOUNTANCY_CODE_SUPPLIER');
1310 foreach ($array_to_check as $key) {
1311 $keymin = strtolower($key);
1312 if ($key ==
'ACCOUNTANCY_CODE_CUSTOMER') {
1313 $keymin =
'code_compta_client';
1314 } elseif ($key ==
'ACCOUNTANCY_CODE_SUPPLIER') {
1315 $keymin =
'code_compta_fournisseur';
1317 $i = (int) preg_replace(
'/[^0-9]/',
'', $key);
1318 $vallabel = $this->$keymin;
1323 if ($mysoc->country_id > 0 && $this->country_id == $mysoc->country_id) {
1324 $idprof_mandatory =
'SOCIETE_'.$key.
'_MANDATORY';
1326 $langs->load(
"errors");
1328 $this->errors[] = $langs->trans(
"ErrorProdIdIsMandatory", $langs->transcountry(
'ProfId'.$i, $this->country_code)).
' ('.$langs->trans(
"ForbiddenBySetupRules").
')';
1335 if ($this->
id_prof_exists($keymin, $vallabel, ($this->
id > 0 ? $this->
id : 0))) {
1336 $langs->load(
"errors");
1338 $this->errors[] = $langs->transcountry(
'ProfId'.$i, $this->country_code).
" ".$langs->trans(
"ErrorProdIdAlreadyExist", $vallabel).
' ('.$langs->trans(
"ForbiddenBySetupRules").
')';
1344 if ($key ==
'EMAIL') {
1347 $langs->load(
"errors");
1349 $this->errors[] = $langs->trans(
"ErrorBadEMail", $this->
email).
' ('.$langs->trans(
"ForbiddenBySetupRules").
')';
1354 if ($this->
id_prof_exists($keymin, $vallabel, ($this->
id > 0 ? $this->
id : 0))) {
1355 $langs->load(
"errors");
1357 $this->errors[] = $langs->trans(
'Email').
" ".$langs->trans(
"ErrorProdIdAlreadyExist", $vallabel).
' ('.$langs->trans(
"ForbiddenBySetupRules").
')';
1360 } elseif ($key ==
'TVA_INTRA') {
1363 if ($this->
id_prof_exists($keymin, $vallabel, ($this->
id > 0 ? $this->
id : 0))) {
1364 $langs->load(
"errors");
1366 $this->errors[] = $langs->trans(
'VATIntra').
" ".$langs->trans(
"ErrorProdIdAlreadyExist", $vallabel).
' ('.$langs->trans(
"ForbiddenBySetupRules").
')';
1369 if ($this->tva_assuj && !$vallabel &&
getDolGlobalString(
'SOCIETE_VAT_INTRA_MANDATORY')) {
1370 $langs->load(
"errors");
1372 $this->errors[] = $langs->trans(
"ErrorProdIdIsMandatory", $langs->trans(
'VATIntra')).
' ('.$langs->trans(
"ForbiddenBySetupRules").
')';
1374 } elseif ($key ==
'ACCOUNTANCY_CODE_CUSTOMER' && !empty($this->client)) {
1377 if ($this->
id_prof_exists($keymin, $vallabel, ($this->
id > 0 ? $this->
id : 0))) {
1378 $langs->loadLangs(array(
"errors",
'compta'));
1380 $this->errors[] = $langs->trans(
'CustomerAccountancyCodeShort') .
" " . $langs->trans(
"ErrorProdIdAlreadyExist", $vallabel) .
' (' . $langs->trans(
"ForbiddenBySetupRules") .
')';
1385 if (
getDolGlobalString(
'SOCIETE_ACCOUNTANCY_CODE_CUSTOMER_MANDATORY') && (!isset($vallabel) || trim($vallabel) ===
'')) {
1386 $langs->loadLangs(array(
"errors",
'compta'));
1388 $this->errors[] = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
'CustomerAccountancyCodeShort')) .
' (' . $langs->trans(
"ForbiddenBySetupRules") .
')';
1390 } elseif ($key ==
'ACCOUNTANCY_CODE_SUPPLIER' && !empty($this->fournisseur)) {
1393 if ($this->
id_prof_exists($keymin, $vallabel, ($this->
id > 0 ? $this->
id : 0))) {
1394 $langs->loadLangs(array(
"errors",
'compta'));
1396 $this->errors[] = $langs->trans(
'SupplierAccountancyCodeShort') .
" " . $langs->trans(
"ErrorProdIdAlreadyExist", $vallabel) .
' (' . $langs->trans(
"ForbiddenBySetupRules") .
')';
1401 if (
getDolGlobalString(
'SOCIETE_ACCOUNTANCY_CODE_SUPPLIER_MANDATORY') && (!isset($vallabel) || trim($vallabel) ===
'')) {
1402 $langs->loadLangs(array(
"errors",
'compta'));
1404 $this->errors[] = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
'SupplierAccountancyCodeShort')) .
' (' . $langs->trans(
"ForbiddenBySetupRules") .
')';
1429 public function update($id,
User $user, $call_trigger = 1, $allowmodcodeclient = 0, $allowmodcodefournisseur = 0, $action =
'update', $nosyncmember = 1)
1431 global $langs,
$conf, $hookmanager;
1433 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
1441 dol_syslog(get_class($this).
"::Update id=".$id.
" call_trigger=".$call_trigger.
" allowmodcodeclient=".$allowmodcodeclient.
" allowmodcodefournisseur=".$allowmodcodefournisseur);
1447 $this->entity = ((isset($this->entity) && is_numeric($this->entity)) ? $this->entity :
$conf->entity);
1448 $this->
name = $this->
name ? trim($this->
name) : trim((
string) $this->nom);
1449 $this->nom = $this->name;
1450 $this->name_alias = trim((
string) $this->name_alias);
1451 $this->ref_ext = (empty($this->ref_ext) ?
'' : trim($this->ref_ext));
1453 $this->zip = trim((
string) $this->zip);
1454 $this->town = trim((
string) $this->town);
1455 $this->state_id = (is_numeric($this->state_id)) ? (
int) $this->state_id : 0;
1456 $this->country_id = ($this->country_id > 0) ? $this->country_id : 0;
1457 $this->phone = trim((
string) $this->phone);
1458 $this->phone = preg_replace(
"/\s/",
"", $this->phone);
1459 $this->phone = preg_replace(
"/\./",
"", $this->phone);
1460 $this->phone_mobile = trim((
string) $this->phone_mobile);
1461 $this->phone_mobile = preg_replace(
"/\s/",
"", $this->phone_mobile);
1462 $this->phone_mobile = preg_replace(
"/\./",
"", $this->phone_mobile);
1463 $this->fax = trim((
string) $this->fax);
1464 $this->fax = preg_replace(
"/\s/",
"", $this->fax);
1465 $this->fax = preg_replace(
"/\./",
"", $this->fax);
1467 $this->url = $this->url ?
clean_url($this->url, 0) :
'';
1468 $this->note_private = (empty($this->note_private) ?
'' : trim($this->note_private));
1469 $this->note_public = (empty($this->note_public) ?
'' : trim($this->note_public));
1470 $this->idprof1 = trim((
string) $this->idprof1);
1471 $this->idprof2 = trim((
string) $this->idprof2);
1472 $this->idprof3 = trim((
string) $this->idprof3);
1473 $this->idprof4 = trim((
string) $this->idprof4);
1474 $this->idprof5 = (!empty($this->idprof5) ? trim($this->idprof5) :
'');
1475 $this->idprof6 = (!empty($this->idprof6) ? trim($this->idprof6) :
'');
1476 $this->prefix_comm = trim((
string) $this->prefix_comm);
1477 $this->outstanding_limit =
price2num($this->outstanding_limit);
1478 $this->order_min_amount =
price2num($this->order_min_amount);
1479 $this->supplier_order_min_amount =
price2num($this->supplier_order_min_amount);
1481 $this->tva_assuj = (is_numeric($this->tva_assuj)) ? (
int) trim((
string) $this->tva_assuj) : 0;
1483 $this->vat_reverse_charge = empty($this->vat_reverse_charge) ? 0 : 1;
1484 if (empty($this->
status)) {
1488 if (!empty($this->multicurrency_code)) {
1491 if (empty($this->fk_multicurrency)) {
1492 $this->multicurrency_code =
'';
1493 $this->fk_multicurrency = 0;
1497 $this->localtax1_assuj = (int) trim((
string) $this->localtax1_assuj);
1498 $this->localtax2_assuj = (int) trim((
string) $this->localtax2_assuj);
1500 $this->localtax1_value = trim($this->localtax1_value);
1501 $this->localtax2_value = trim($this->localtax2_value);
1503 $this->capital = ($this->capital !=
'') ? (
float)
price2num(trim((
string) $this->capital)) :
null;
1505 $this->effectif_id = (int) trim((
string) $this->effectif_id);
1506 $this->forme_juridique_code = (int) trim((
string) $this->forme_juridique_code);
1509 $this->barcode = trim($this->barcode);
1512 if ($this->code_client == -1 || $this->code_client ===
'auto') {
1513 $this->get_codeclient($this, 0);
1515 if ($this->code_fournisseur ==
'-1' || $this->code_fournisseur ===
'auto') {
1516 $this->get_codefournisseur($this, 1);
1519 $this->accountancy_code_customer_general = trim($this->accountancy_code_customer_general);
1520 $this->code_compta_client = trim($this->code_compta_client);
1521 $this->accountancy_code_supplier_general = trim($this->accountancy_code_supplier_general);
1522 $this->code_compta_fournisseur = trim($this->code_compta_fournisseur);
1525 if (!is_numeric($this->client) && !is_numeric($this->fournisseur)) {
1526 $langs->load(
"errors");
1527 $this->error = $langs->trans(
"BadValueForParameterClientOrSupplier");
1532 if (!empty($allowmodcodeclient) && !empty($this->client)) {
1534 if (empty($this->code_compta_client)) {
1545 if (!empty($allowmodcodefournisseur) && !empty($this->fournisseur)) {
1547 if (empty($this->code_compta_fournisseur)) {
1558 $this->webservices_url = $this->webservices_url ?
clean_url($this->webservices_url, 0) :
'';
1559 $this->webservices_key = trim($this->webservices_key);
1561 $this->accountancy_code_buy = (empty($this->accountancy_code_buy) ?
'' : trim($this->accountancy_code_buy));
1562 $this->accountancy_code_sell = (empty($this->accountancy_code_sell) ?
'' : trim($this->accountancy_code_sell));
1565 $this->fk_incoterms = (int) $this->fk_incoterms;
1566 $this->location_incoterms = trim($this->location_incoterms);
1573 if ($action !=
'add' && $action !=
'merge') {
1576 $result = $this->
verify();
1580 if (is_array($this->errors)) {
1581 if (in_array(
'ErrorBadCustomerCodeSyntax', $this->errors) && is_object($this->oldcopy) && $this->oldcopy->code_client == $this->code_client) {
1582 if (($key = array_search(
'ErrorBadCustomerCodeSyntax', $this->errors)) !==
false) {
1583 unset($this->errors[$key]);
1586 if (in_array(
'ErrorBadSupplierCodeSyntax', $this->errors) && is_object($this->oldcopy) && $this->oldcopy->code_fournisseur == $this->code_fournisseur) {
1587 if (($key = array_search(
'ErrorBadSupplierCodeSyntax', $this->errors)) !==
false) {
1588 unset($this->errors[$key]);
1591 if (empty($this->errors)) {
1598 dol_syslog(get_class($this).
"::update verify ok or not done");
1600 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"societe SET ";
1601 $sql .=
"entity = ".((int) $this->entity);
1602 $sql .=
",nom = '".$this->db->escape($this->
name).
"'";
1603 $sql .=
",name_alias = '".$this->db->escape($this->name_alias).
"'";
1604 $sql .=
",ref_ext = ".(!empty($this->ref_ext) ?
"'".$this->db->escape($this->ref_ext).
"'" :
"null");
1605 $sql .=
",address = '".$this->db->escape($this->address).
"'";
1607 $sql .=
",zip = ".(!empty($this->zip) ?
"'".$this->db->escape($this->zip).
"'" :
"null");
1608 $sql .=
",town = ".(!empty($this->town) ?
"'".$this->db->escape($this->town).
"'" :
"null");
1610 $sql .=
",fk_departement = ".((!empty($this->state_id) && $this->state_id > 0) ? ((
int) $this->state_id) :
'null');
1611 $sql .=
",fk_pays = ".((!empty($this->country_id) && $this->country_id > 0) ? ((
int) $this->country_id) :
'null');
1613 $sql .=
",phone = ".(!empty($this->phone) ?
"'".$this->db->escape($this->phone).
"'" :
"null");
1614 $sql .=
",phone_mobile = ".(!empty($this->phone_mobile) ?
"'".$this->db->escape($this->phone_mobile).
"'" :
"null");
1615 $sql .=
",fax = ".(!empty($this->fax) ?
"'".$this->db->escape($this->fax).
"'" :
"null");
1616 $sql .=
",email = ".(!empty($this->email) ?
"'".$this->db->escape($this->email).
"'" :
"null");
1617 $sql .=
",socialnetworks = '".$this->db->escape(json_encode($this->socialnetworks)).
"'";
1618 $sql .=
",url = ".(!empty($this->url) ?
"'".$this->db->escape($this->url).
"'" :
"null");
1620 $sql .=
",parent = ".($this->parent > 0 ? $this->parent :
"null");
1622 $sql .=
",note_private = ".(!empty($this->note_private) ?
"'".$this->db->escape($this->note_private).
"'" :
"null");
1623 $sql .=
",note_public = ".(!empty($this->note_public) ?
"'".$this->db->escape($this->note_public).
"'" :
"null");
1625 $sql .=
",siren = '".$this->db->escape($this->idprof1).
"'";
1626 $sql .=
",siret = '".$this->db->escape($this->idprof2).
"'";
1627 $sql .=
",ape = '".$this->db->escape($this->idprof3).
"'";
1628 $sql .=
",idprof4 = '".$this->db->escape($this->idprof4).
"'";
1629 $sql .=
",idprof5 = '".$this->db->escape($this->idprof5).
"'";
1630 $sql .=
",idprof6 = '".$this->db->escape($this->idprof6).
"'";
1632 $sql .=
",tva_assuj = ".($this->tva_assuj !=
'' ?
"'".$this->db->escape($this->tva_assuj).
"'" :
"null");
1633 $sql .=
",tva_intra = '".$this->db->escape($this->tva_intra).
"'";
1635 $sql .=
",vat_reverse_charge = " . ($this->vat_reverse_charge !=
'' ?
"'" . $this->db->escape($this->vat_reverse_charge) .
"'" : 0);
1637 $sql .=
",status = ".((int) $this->
status);
1640 $sql .=
",localtax1_assuj = ".($this->localtax1_assuj !=
'' ?
"'".$this->db->escape($this->localtax1_assuj).
"'" :
"null");
1641 $sql .=
",localtax2_assuj = ".($this->localtax2_assuj !=
'' ?
"'".$this->db->escape($this->localtax2_assuj).
"'" :
"null");
1642 if ($this->localtax1_assuj == 1) {
1643 if ($this->localtax1_value !=
'') {
1644 $sql .=
",localtax1_value =".$this->localtax1_value;
1646 $sql .=
",localtax1_value =0.000";
1649 $sql .=
",localtax1_value =0.000";
1652 if ($this->localtax2_assuj == 1) {
1653 if ($this->localtax2_value !=
'') {
1654 $sql .=
",localtax2_value =".$this->localtax2_value;
1656 $sql .=
",localtax2_value =0.000";
1659 $sql .=
",localtax2_value =0.000";
1662 $sql .=
",capital = ".($this->capital ===
null ?
"null" : $this->capital);
1664 $sql .=
",prefix_comm = ".(!empty($this->prefix_comm) ?
"'".$this->db->escape($this->prefix_comm).
"'" :
"null");
1666 $sql .=
",fk_effectif = ".($this->effectif_id > 0 ? ((int) $this->effectif_id) :
"null");
1667 if (isset($this->stcomm_id)) {
1668 $sql .=
",fk_stcomm=".(int) $this->stcomm_id;
1670 if (isset($this->typent_id)) {
1671 $sql .=
",fk_typent = ".($this->typent_id > 0 ? ((int) $this->typent_id) :
"0");
1674 $sql .=
",fk_forme_juridique = ".(!empty($this->forme_juridique_code) ?
"'".$this->db->escape($this->forme_juridique_code).
"'" :
"null");
1676 $sql .=
",mode_reglement = ".(!empty($this->mode_reglement_id) ?
"'".$this->db->escape($this->mode_reglement_id).
"'" :
"null");
1677 $sql .=
",cond_reglement = ".(!empty($this->cond_reglement_id) ?
"'".$this->db->escape($this->cond_reglement_id).
"'" :
"null");
1678 $sql .=
",deposit_percent = ".(!empty($this->deposit_percent) ?
"'".$this->db->escape($this->deposit_percent).
"'" :
"null");
1679 $sql .=
",transport_mode = ".(!empty($this->transport_mode_id) ?
"'".$this->db->escape($this->transport_mode_id).
"'" :
"null");
1680 $sql .=
",mode_reglement_supplier = ".(!empty($this->mode_reglement_supplier_id) ?
"'".$this->db->escape($this->mode_reglement_supplier_id).
"'" :
"null");
1681 $sql .=
",cond_reglement_supplier = ".(!empty($this->cond_reglement_supplier_id) ?
"'".$this->db->escape($this->cond_reglement_supplier_id).
"'" :
"null");
1682 $sql .=
",transport_mode_supplier = ".(!empty($this->transport_mode_supplier_id) ?
"'".$this->db->escape($this->transport_mode_supplier_id).
"'" :
"null");
1683 $sql .=
",fk_shipping_method = ".(!empty($this->shipping_method_id) ?
"'".$this->db->escape($this->shipping_method_id).
"'" :
"null");
1685 $sql .=
",client = ".(!empty($this->client) ? $this->client : 0);
1686 $sql .=
",fournisseur = ".(!empty($this->fournisseur) ? $this->fournisseur : 0);
1687 $sql .=
",barcode = ".(!empty($this->barcode) ?
"'".$this->db->escape($this->barcode).
"'" :
"null");
1688 $sql .=
",default_lang = ".(!empty($this->default_lang) ?
"'".$this->db->escape($this->default_lang).
"'" :
"null");
1689 $sql .=
",logo = ".(!empty($this->logo) ?
"'".$this->db->escape($this->logo).
"'" :
"null");
1690 $sql .=
",logo_squarred = ".(!empty($this->logo_squarred) ?
"'".$this->db->escape($this->logo_squarred).
"'" :
"null");
1691 $sql .=
",outstanding_limit= ".($this->outstanding_limit !=
'' ? $this->outstanding_limit :
'null');
1692 $sql .=
",order_min_amount= ".($this->order_min_amount !=
'' ? $this->order_min_amount :
'null');
1693 $sql .=
",supplier_order_min_amount= ".($this->supplier_order_min_amount !=
'' ? $this->supplier_order_min_amount :
'null');
1694 $sql .=
",fk_prospectlevel='".$this->db->escape($this->fk_prospectlevel).
"'";
1696 $sql .=
", accountancy_code_buy = '" . $this->db->escape($this->accountancy_code_buy) .
"'";
1697 $sql .=
", accountancy_code_sell= '" . $this->db->escape($this->accountancy_code_sell) .
"'";
1699 $sql .=
", accountancy_code_customer_general = ".(!empty($this->accountancy_code_customer_general) ?
"'".$this->db->escape($this->accountancy_code_customer_general).
"'" :
"null");
1700 $sql .=
", code_compta = ".(!empty($this->code_compta_client) ?
"'".$this->db->escape($this->code_compta_client).
"'" :
"null");
1704 $sql .=
", accountancy_code_supplier_general = ".(!empty($this->accountancy_code_supplier_general) ?
"'".$this->db->escape($this->accountancy_code_supplier_general).
"'" :
"null");
1705 $sql .=
", code_compta_fournisseur = ".(($this->code_compta_fournisseur !=
"") ?
"'".$this->db->escape($this->code_compta_fournisseur).
"'" :
"null");
1708 $sql .=
",webservices_url = ".(!empty($this->webservices_url) ?
"'".$this->db->escape($this->webservices_url).
"'" :
"null");
1709 $sql .=
",webservices_key = ".(!empty($this->webservices_key) ?
"'".$this->db->escape($this->webservices_key).
"'" :
"null");
1712 $sql .=
", fk_incoterms = ".((int) $this->fk_incoterms);
1713 $sql .=
", location_incoterms = ".(!empty($this->location_incoterms) ?
"'".$this->db->escape($this->location_incoterms).
"'" :
"null");
1716 $sql .=
", code_client = ".(!empty($this->code_client) ?
"'".$this->db->escape($this->code_client).
"'" :
"null");
1720 $sql .=
", code_fournisseur = ".(!empty($this->code_fournisseur) ?
"'".$this->db->escape($this->code_fournisseur).
"'" :
"null");
1722 $sql .=
", fk_user_modif = ".($user->id > 0 ? $user->id :
"null");
1723 $sql .=
", fk_multicurrency = ".(int) $this->fk_multicurrency;
1724 $sql .=
", multicurrency_code = '".$this->db->escape($this->multicurrency_code).
"'";
1725 $sql .=
", model_pdf = '".$this->db->escape($this->model_pdf).
"'";
1726 $sql .=
" WHERE rowid = ".(int) $id;
1728 $resql = $this->db->query($sql);
1730 if (is_object($this->oldcopy)) {
1731 if ($this->oldcopy->country_id != $this->country_id) {
1732 unset($this->country_code);
1733 unset($this->country);
1735 if ($this->oldcopy->state_id != $this->state_id) {
1736 unset($this->state_code);
1737 unset($this->state);
1740 unset($this->country_code);
1741 unset($this->country);
1742 unset($this->state_code);
1743 unset($this->state);
1746 $nbrowsaffected = $this->db->affected_rows($resql);
1748 if (!$error && $nbrowsaffected) {
1750 if (!$nosyncmember && isModEnabled(
'member')) {
1751 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
1753 dol_syslog(get_class($this).
"::update update linked member");
1755 $lmember =
new Adherent($this->db);
1756 $result = $lmember->fetch(0, 0, $this->
id);
1759 $lmember->company = $this->name;
1762 $lmember->address = $this->address;
1763 $lmember->zip = $this->zip;
1764 $lmember->town = $this->town;
1765 $lmember->email = $this->email;
1766 $lmember->socialnetworks = $this->socialnetworks;
1767 $lmember->phone = $this->phone;
1768 $lmember->state_id = $this->state_id;
1769 $lmember->country_id = $this->country_id;
1770 $lmember->default_lang = $this->default_lang;
1772 $result = $lmember->update($user, 0, 1, 1, 1);
1774 $this->error = $lmember->error;
1775 $this->errors = array_merge($this->errors, $lmember->errors);
1776 dol_syslog(get_class($this).
"::update ".$this->error, LOG_ERR);
1779 } elseif ($result < 0) {
1780 $this->error = $lmember->error;
1790 $this->db->query(
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_perentity WHERE fk_soc = ".((
int) $this->id).
" AND entity = ".((
int)
$conf->entity));
1792 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_perentity (";
1795 $sql .=
", vat_reverse_charge";
1796 $sql .=
", accountancy_code_customer_general";
1797 $sql .=
", accountancy_code_customer";
1798 $sql .=
", accountancy_code_supplier_general";
1799 $sql .=
", accountancy_code_supplier";
1800 $sql .=
", accountancy_code_buy";
1801 $sql .=
", accountancy_code_sell";
1802 $sql .=
") VALUES (";
1804 $sql .=
", ".$conf->entity;
1805 $sql .=
", ".(empty($this->vat_reverse_charge) ?
'0' :
'1');
1806 $sql .=
", '".$this->db->escape($this->accountancy_code_customer_general).
"'";
1807 $sql .=
", '".$this->db->escape($this->code_compta_client).
"'";
1808 $sql .=
", '".$this->db->escape($this->accountancy_code_supplier_general).
"'";
1809 $sql .=
", '".$this->db->escape($this->code_compta_fournisseur).
"'";
1810 $sql .=
", '".$this->db->escape($this->accountancy_code_buy).
"'";
1811 $sql .=
", '".$this->db->escape($this->accountancy_code_sell).
"'";
1813 $result = $this->db->query($sql);
1816 $this->error =
'ErrorFailedToUpdateAccountancyForEntity';
1835 if (!$error && $call_trigger) {
1837 $result = $this->
call_trigger(
'COMPANY_MODIFY', $user);
1845 dol_syslog(get_class($this).
"::Update success");
1846 $this->db->commit();
1849 $this->db->rollback();
1853 if ($this->db->errno() ==
'DB_ERROR_RECORD_ALREADY_EXISTS') {
1855 $this->error = $langs->trans(
"ErrorDuplicateField");
1858 $this->error = $this->db->lasterror();
1861 $this->db->rollback();
1865 $this->db->rollback();
1866 dol_syslog(get_class($this).
"::Update fails verify ".implode(
',', $this->errors), LOG_WARNING);
1890 public function fetch($rowid, $ref =
'', $ref_ext =
'', $barcode =
'', $idprof1 =
'', $idprof2 =
'', $idprof3 =
'', $idprof4 =
'', $idprof5 =
'', $idprof6 =
'', $email =
'', $ref_alias =
'', $is_client = 0, $is_supplier = 0)
1895 if (empty($rowid) && empty($ref) && empty($ref_ext) && empty($barcode) && empty($idprof1) && empty($idprof2) && empty($idprof3) && empty($idprof4) && empty($idprof5) && empty($idprof6) && empty($email) && empty($ref_alias)) {
1899 $sql =
'SELECT s.rowid, s.nom as name, s.name_alias, s.entity, s.ref_ext, s.address, s.datec as date_creation, s.prefix_comm';
1900 $sql .=
', s.status, s.fk_warehouse';
1901 $sql .=
', s.price_level';
1902 $sql .=
', s.tms as date_modification, s.fk_user_creat, s.fk_user_modif';
1903 $sql .=
', s.phone, s.phone_mobile, s.fax, s.email';
1904 $sql .=
', s.socialnetworks';
1905 $sql .=
', s.url, s.zip, s.town, s.note_private, s.note_public, s.client, s.fournisseur';
1906 $sql .=
', s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6';
1907 $sql .=
', s.capital, s.tva_intra';
1908 $sql .=
', s.fk_typent as typent_id';
1909 $sql .=
', s.fk_effectif as effectif_id';
1910 $sql .=
', s.fk_forme_juridique as forme_juridique_code';
1911 $sql .=
', s.webservices_url, s.webservices_key, s.model_pdf, s.last_main_doc';
1913 $sql .=
', s.accountancy_code_customer_general, s.code_compta';
1914 $sql .=
', s.accountancy_code_supplier_general, s.code_compta_fournisseur';
1915 $sql .=
', s.accountancy_code_buy, s.accountancy_code_sell';
1916 $sql .=
', s.vat_reverse_charge as soc_vat_reverse_charge';
1918 $sql .=
', spe.accountancy_code_customer_general, spe.accountancy_code_customer as code_compta';
1919 $sql .=
', spe.accountancy_code_supplier_general, spe.accountancy_code_supplier as code_compta_fournisseur';
1920 $sql .=
', spe.accountancy_code_buy, spe.accountancy_code_sell';
1921 $sql .=
', spe.vat_reverse_charge as spe_vat_reverse_charge';
1923 $sql .=
', s.code_client, s.code_fournisseur, s.parent, s.barcode';
1924 $sql .=
', s.fk_departement as state_id, s.fk_pays as country_id, s.fk_stcomm, s.mode_reglement, s.cond_reglement, s.deposit_percent, s.transport_mode';
1925 $sql .=
', s.fk_account, s.tva_assuj';
1926 $sql .=
', s.mode_reglement_supplier, s.cond_reglement_supplier, s.transport_mode_supplier';
1927 $sql .=
', s.localtax1_assuj, s.localtax1_value, s.localtax2_assuj, s.localtax2_value, s.fk_prospectlevel, s.default_lang, s.logo, s.logo_squarred';
1928 $sql .=
', s.fk_shipping_method';
1929 $sql .=
', s.outstanding_limit, s.import_key, s.canvas, s.fk_incoterms, s.location_incoterms';
1930 $sql .=
', s.order_min_amount, s.supplier_order_min_amount';
1931 $sql .=
', s.fk_multicurrency, s.multicurrency_code';
1932 $sql .=
', fj.libelle as forme_juridique';
1933 $sql .=
', e.libelle as effectif';
1934 $sql .=
', c.code as country_code, c.label as country';
1935 $sql .=
', d.code_departement as state_code, d.nom as state';
1936 $sql .=
', r.rowid as region_id, r.code_region as region_code';
1937 $sql .=
', st.libelle as stcomm, st.picto as stcomm_picto';
1938 $sql .=
', te.code as typent_code';
1939 $sql .=
', i.libelle as label_incoterms';
1940 if (!isModEnabled(
'multicompany')) {
1941 $sql .=
', s.remise_client, s.remise_supplier';
1943 $sql .=
', sr.remise_client, sr2.remise_supplier';
1945 $sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
1947 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = ".((int)
$conf->entity);
1949 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_effectif as e ON s.fk_effectif = e.id';
1950 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_country as c ON s.fk_pays = c.rowid';
1951 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_stcomm as st ON s.fk_stcomm = st.id';
1952 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_forme_juridique as fj ON s.fk_forme_juridique = fj.code';
1953 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_departements as d ON s.fk_departement = d.rowid';
1954 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_regions as r ON d.fk_region = r.code_region ';
1955 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_typent as te ON s.fk_typent = te.id';
1956 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_incoterms as i ON s.fk_incoterms = i.rowid';
1959 if (isModEnabled(
'multicompany')) {
1960 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'societe_remise as sr ON sr.rowid = (SELECT MAX(rowid) FROM '.MAIN_DB_PREFIX.
'societe_remise WHERE fk_soc = s.rowid AND entity IN ('.
getEntity(
'discount').
'))';
1961 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'societe_remise_supplier as sr2 ON sr2.rowid = (SELECT MAX(rowid) FROM '.MAIN_DB_PREFIX.
'societe_remise_supplier WHERE fk_soc = s.rowid AND entity IN ('.
getEntity(
'discount').
'))';
1963 $sql .=
' WHERE s.entity IN ('.getEntity($this->element).
')';
1967 $sql .=
' AND s.client > 0';
1970 $sql .=
' AND s.fournisseur > 0';
1974 $sql .=
' AND s.rowid = '.((int) $rowid);
1977 $sql .=
" AND s.nom = '".$this->db->escape($ref).
"'";
1980 $sql .=
" AND s.name_alias = '".$this->db->escape($ref_alias).
"'";
1983 $sql .=
" AND s.ref_ext = '".$this->db->escape($ref_ext).
"'";
1986 $sql .=
" AND s.barcode = '".$this->db->escape($barcode).
"'";
1989 $sql .=
" AND s.siren = '".$this->db->escape($idprof1).
"'";
1992 $sql .=
" AND s.siret = '".$this->db->escape($idprof2).
"'";
1995 $sql .=
" AND s.ape = '".$this->db->escape($idprof3).
"'";
1998 $sql .=
" AND s.idprof4 = '".$this->db->escape($idprof4).
"'";
2001 $sql .=
" AND s.idprof5 = '".$this->db->escape($idprof5).
"'";
2004 $sql .=
" AND s.idprof6 = '".$this->db->escape($idprof6).
"'";
2007 $sql .=
" AND s.email = '".$this->db->escape($email).
"'";
2010 $resql = $this->db->query($sql);
2012 $num = $this->db->num_rows($resql);
2014 $this->error =
'Fetch found several records. Rename one of thirdparties to avoid duplicate.';
2018 $obj = $this->db->fetch_object($resql);
2020 $this->
id = $obj->rowid;
2021 $this->entity = $obj->entity;
2022 $this->canvas = $obj->canvas;
2024 $this->
ref = $obj->rowid;
2025 $this->
name = $obj->name;
2026 $this->nom = $obj->name;
2027 $this->name_alias = $obj->name_alias;
2028 $this->ref_ext = $obj->ref_ext;
2030 $this->date_creation = $this->db->jdate($obj->date_creation);
2031 $this->date_modification = $this->db->jdate($obj->date_modification);
2032 $this->user_creation_id = $obj->fk_user_creat;
2033 $this->user_modification_id = $obj->fk_user_modif;
2035 $this->
address = $obj->address;
2036 $this->zip = $obj->zip;
2037 $this->town = $obj->town;
2039 $this->country_id = $obj->country_id;
2040 $this->country_code = $obj->country_id ? $obj->country_code :
'';
2041 $this->country = $obj->country_id ? (($langs->transnoentities(
'Country'.$obj->country_code) !=
'Country'.$obj->country_code) ? $langs->transnoentities(
'Country'.$obj->country_code) : $obj->country) :
'';
2043 $this->state_id = $obj->state_id;
2044 $this->state_code = $obj->state_code;
2045 $this->region_id = $obj->region_id;
2046 $this->region_code = $obj->region_code;
2047 $this->state = ($obj->state !=
'-' ? $obj->state :
'');
2049 $transcode = $langs->trans(
'StatusProspect'.$obj->fk_stcomm);
2050 $label = ($transcode !=
'StatusProspect'.$obj->fk_stcomm ? $transcode : $obj->stcomm);
2051 $this->stcomm_id = $obj->fk_stcomm;
2052 $this->status_prospect_label = $label;
2053 $this->stcomm_picto = $obj->stcomm_picto;
2055 $this->
email = $obj->email;
2056 $this->socialnetworks = ($obj->socialnetworks ? (array) json_decode($obj->socialnetworks,
true) : array());
2058 $this->url = $obj->url;
2059 $this->phone = $obj->phone;
2060 $this->phone_mobile = $obj->phone_mobile;
2061 $this->fax = $obj->fax;
2063 $this->parent = $obj->parent;
2065 $this->idprof1 = $obj->idprof1;
2066 $this->idprof2 = $obj->idprof2;
2067 $this->idprof3 = $obj->idprof3;
2068 $this->idprof4 = $obj->idprof4;
2069 $this->idprof5 = $obj->idprof5;
2070 $this->idprof6 = $obj->idprof6;
2072 $this->capital = $obj->capital;
2074 $this->code_client = $obj->code_client;
2075 $this->code_fournisseur = $obj->code_fournisseur;
2077 $this->accountancy_code_customer_general = $obj->accountancy_code_customer_general;
2078 $this->code_compta_client = $obj->code_compta;
2079 $this->accountancy_code_supplier_general = $obj->accountancy_code_supplier_general;
2080 $this->code_compta_fournisseur = $obj->code_compta_fournisseur;
2082 $this->barcode = $obj->barcode;
2084 $this->tva_assuj = $obj->tva_assuj;
2085 $this->tva_intra = $obj->tva_intra;
2087 if (!empty($obj->spe_vat_reverse_charge)) {
2088 $this->vat_reverse_charge = $obj->spe_vat_reverse_charge;
2089 } elseif (!empty($obj->soc_vat_reverse_charge)) {
2090 $this->vat_reverse_charge = $obj->soc_vat_reverse_charge;
2092 $this->vat_reverse_charge = 0;
2095 $this->
status = $obj->status;
2098 $this->localtax1_assuj = $obj->localtax1_assuj;
2099 $this->localtax2_assuj = $obj->localtax2_assuj;
2101 $this->localtax1_value = $obj->localtax1_value;
2102 $this->localtax2_value = $obj->localtax2_value;
2104 $this->typent_id = $obj->typent_id;
2105 $this->typent_code = $obj->typent_code;
2107 $this->effectif_id = $obj->effectif_id;
2108 $this->effectif = $obj->effectif_id ? $obj->effectif :
'';
2110 $this->forme_juridique_code = $obj->forme_juridique_code;
2111 $this->forme_juridique = $obj->forme_juridique_code ? $obj->forme_juridique :
'';
2113 $this->fk_prospectlevel = $obj->fk_prospectlevel;
2115 $this->prefix_comm = $obj->prefix_comm;
2117 $this->remise_percent = $obj->remise_client ?
price2num($obj->remise_client) : 0;
2118 $this->remise_supplier_percent = $obj->remise_supplier;
2120 $this->mode_reglement_id = $obj->mode_reglement;
2121 $this->cond_reglement_id = $obj->cond_reglement;
2122 $this->deposit_percent = $obj->deposit_percent;
2123 $this->transport_mode_id = $obj->transport_mode;
2124 $this->mode_reglement_supplier_id = $obj->mode_reglement_supplier;
2125 $this->cond_reglement_supplier_id = $obj->cond_reglement_supplier;
2126 $this->transport_mode_supplier_id = $obj->transport_mode_supplier;
2127 $this->shipping_method_id = ($obj->fk_shipping_method > 0) ? $obj->fk_shipping_method :
null;
2128 $this->fk_account = $obj->fk_account;
2130 $this->client = $obj->client;
2131 $this->fournisseur = $obj->fournisseur;
2133 $this->note = $obj->note_private;
2134 $this->note_private = $obj->note_private;
2135 $this->note_public = $obj->note_public;
2136 $this->model_pdf = $obj->model_pdf;
2137 $this->default_lang = $obj->default_lang;
2138 $this->logo = $obj->logo;
2139 $this->logo_squarred = $obj->logo_squarred;
2141 $this->webservices_url = $obj->webservices_url;
2142 $this->webservices_key = $obj->webservices_key;
2144 $this->accountancy_code_buy = $obj->accountancy_code_buy;
2145 $this->accountancy_code_sell = $obj->accountancy_code_sell;
2147 $this->outstanding_limit = $obj->outstanding_limit;
2148 $this->order_min_amount = $obj->order_min_amount;
2149 $this->supplier_order_min_amount = $obj->supplier_order_min_amount;
2152 $this->price_level = $obj->price_level;
2155 $this->fk_warehouse = $obj->fk_warehouse;
2157 $this->import_key = $obj->import_key;
2160 $this->fk_incoterms = $obj->fk_incoterms;
2161 $this->location_incoterms = $obj->location_incoterms;
2162 $this->label_incoterms = $obj->label_incoterms;
2165 $this->fk_multicurrency = $obj->fk_multicurrency;
2166 $this->multicurrency_code = $obj->multicurrency_code;
2169 $this->model_pdf = $obj->model_pdf;
2170 $this->last_main_doc = $obj->last_main_doc;
2172 $result = $this->id;
2180 $this->db->free($resql);
2182 $this->error = $this->db->lasterror();
2183 $this->errors[] = $this->db->lasterror();
2189 $this->price_level = 1;
2215 public function findNearest($rowid = 0, $ref =
'', $ref_ext =
'', $barcode =
'', $idprof1 =
'', $idprof2 =
'', $idprof3 =
'', $idprof4 =
'', $idprof5 =
'', $idprof6 =
'', $email =
'', $ref_alias =
'', $is_client = 0, $is_supplier = 0)
2228 $tmpthirdparty =
new Societe($this->db);
2229 $result = $tmpthirdparty->fetch($rowid, $ref, $ref_ext, $barcode, $idprof1, $idprof2, $idprof3, $idprof4, $idprof5, $idprof6, $email, $ref_alias, $is_client, $is_supplier);
2242 public function delete($id, $fuser =
null, $call_trigger = 1)
2244 global
$conf, $user;
2246 if (empty($fuser)) {
2250 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
2252 $entity = isset($this->entity) ? $this->entity :
$conf->entity;
2254 dol_syslog(get_class($this).
"::delete", LOG_DEBUG);
2259 if (empty($objectisused)) {
2263 if (!$error && $call_trigger) {
2265 $result = $this->
call_trigger(
'COMPANY_DELETE', $fuser);
2273 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
2275 $toute_categs = array();
2278 $toute_categs[
'customer'] = $static_cat->containing($this->
id, Categorie::TYPE_CUSTOMER);
2279 $toute_categs[
'supplier'] = $static_cat->containing($this->
id, Categorie::TYPE_SUPPLIER);
2282 foreach ($toute_categs as $type => $categs_type) {
2283 foreach ($categs_type as $cat) {
2284 $cat->del_type($this, $type);
2290 foreach ($this->childtablesoncascade as $tabletodelete) {
2291 $deleteFromObject = explode(
':', $tabletodelete, 4);
2292 if (count($deleteFromObject) >= 2) {
2293 $className = str_replace(
'@',
'', $deleteFromObject[0]);
2294 $filepath = $deleteFromObject[1];
2295 $columnName = $deleteFromObject[2];
2297 $child_object =
new $className($this->db);
2298 '@phan-var-force CommonObject $child_object';
2299 $result = $child_object->deleteByParentField($id, $columnName);
2302 $this->errors[] = $child_object->error;
2307 $this->errors[] =
'Cannot include child class file '.$filepath;
2311 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.$tabletodelete;
2312 $sql .=
" WHERE fk_soc = ".((int) $id);
2313 if (!$this->db->query($sql)) {
2315 $this->errors[] = $this->db->lasterror();
2327 dol_syslog(get_class($this).
"::delete error -3 ".$this->error, LOG_ERR);
2333 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"societe";
2334 $sql .=
" SET parent = NULL";
2335 $sql .=
" WHERE parent = ".((int) $id);
2336 if (!$this->db->query($sql)) {
2338 $this->errors[] = $this->db->lasterror();
2345 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_perentity";
2346 $sql .=
" WHERE fk_soc = ".((int) $id);
2347 if (!$this->db->query($sql)) {
2349 $this->errors[] = $this->db->lasterror();
2353 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe";
2354 $sql .=
" WHERE rowid = ".((int) $id);
2355 if (!$this->db->query($sql)) {
2357 $this->errors[] = $this->db->lasterror();
2362 $this->db->commit();
2365 if (!empty(
$conf->societe->multidir_output[$entity])) {
2366 $docdir =
$conf->societe->multidir_output[$entity].
"/".$id;
2375 $this->db->rollback();
2379 dol_syslog(
"Can't remove thirdparty with id ".$id.
". There are ".$objectisused.
" children", LOG_WARNING);
2395 dol_syslog(get_class($this).
"::set_as_client is deprecated use setAsCustomer instead", LOG_NOTICE);
2409 if (($this->client == 2 || $this->client == 3) && !
getDolGlobalInt(
'SOCIETE_DISABLE_PROSPECTSCUSTOMERS')) {
2412 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
2413 $sql .=
" SET client = ".((int) $newclient);
2414 $sql .=
" WHERE rowid = ".((int) $this->
id);
2416 $resql = $this->db->query($sql);
2418 $this->client = $newclient;
2439 global
$conf, $langs;
2442 $note = trim($note);
2444 $this->error = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"NoteReason"));
2448 dol_syslog(get_class($this).
"::set_remise_client ".$remise.
", ".$note.
", ".$user->id);
2456 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"societe ";
2457 $sql .=
" SET remise_client = '".$this->db->escape($remise).
"'";
2458 $sql .=
" WHERE rowid = ".((int) $this->
id);
2459 $resql = $this->db->query($sql);
2461 $this->db->rollback();
2462 $this->error = $this->db->error();
2467 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_remise";
2468 $sql .=
" (entity, datec, fk_soc, remise_client, note, fk_user_author)";
2469 $sql .=
" VALUES (".((int)
$conf->entity).
", '".$this->db->idate($now).
"', ".((int) $this->
id).
", '".$this->db->escape($remise).
"',";
2470 $sql .=
" '".$this->db->escape($note).
"',";
2471 $sql .=
" ".((int) $user->id);
2474 $resql = $this->db->query($sql);
2476 $this->db->rollback();
2477 $this->error = $this->db->lasterror();
2481 $this->db->commit();
2500 global
$conf, $langs;
2503 $note = trim($note);
2505 $this->error = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"NoteReason"));
2509 dol_syslog(get_class($this).
"::set_remise_supplier ".$remise.
", ".$note.
", ".$user->id);
2517 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"societe ";
2518 $sql .=
" SET remise_supplier = '".$this->db->escape($remise).
"'";
2519 $sql .=
" WHERE rowid = ".((int) $this->
id);
2520 $resql = $this->db->query($sql);
2522 $this->db->rollback();
2523 $this->error = $this->db->error();
2528 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_remise_supplier";
2529 $sql .=
" (entity, datec, fk_soc, remise_supplier, note, fk_user_author)";
2530 $sql .=
" VALUES (".((int)
$conf->entity).
", '".$this->db->idate($now).
"', ".((int) $this->
id).
", '".$this->db->escape($remise).
"',";
2531 $sql .=
" '".$this->db->escape($note).
"',";
2532 $sql .=
" ".((int) $user->id);
2535 $resql = $this->db->query($sql);
2537 $this->db->rollback();
2538 $this->error = $this->db->lasterror();
2542 $this->db->commit();
2561 public function set_remise_except($remise,
User $user, $desc, $vatrate =
'', $discount_type = 0, $price_base_type =
'HT')
2568 $desc = trim($desc);
2571 if (!($remise > 0)) {
2572 $this->error = $langs->trans(
"ErrorWrongValueForParameter",
"1");
2576 $this->error = $langs->trans(
"ErrorWrongValueForParameter",
"3");
2580 if ($this->
id > 0) {
2584 if (preg_match(
'/\((.*)\)/', $vatrate, $reg)) {
2585 $vat_src_code = $reg[1];
2586 $vatrate = preg_replace(
'/\s*\(.*\)/',
'', $vatrate);
2589 require_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
2592 $discount->fk_soc = $this->id;
2593 $discount->socid = $this->id;
2595 $discount->discount_type = $discount_type;
2597 if ($price_base_type ==
'TTC') {
2598 $discount->amount_ttc = $discount->multicurrency_amount_ttc =
price2num($remise,
'MT');
2599 $discount->amount_ht = $discount->multicurrency_amount_ht =
price2num((
float) $remise / (1 + (
float) $vatrate / 100),
'MT');
2600 $discount->amount_tva = $discount->multicurrency_amount_tva =
price2num((
float) $discount->amount_ttc - (
float) $discount->amount_ht,
'MT');
2602 $discount->amount_ht = $discount->multicurrency_amount_ht =
price2num($remise,
'MT');
2603 $discount->amount_tva = $discount->multicurrency_amount_tva =
price2num((
float) $remise * (
float) $vatrate / 100,
'MT');
2604 $discount->amount_ttc = $discount->multicurrency_amount_ttc =
price2num((
float) $discount->amount_ht + (
float) $discount->amount_tva,
'MT');
2607 $discount->tva_tx = (float)
price2num($vatrate);
2608 $discount->vat_src_code = $vat_src_code;
2610 $discount->description = $desc;
2612 $result = $discount->create($user);
2616 $this->error = $discount->error;
2635 require_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
2638 $result = $discountstatic->getAvailableDiscounts($this, $user, $filter, $maxvalue, $discount_type);
2642 $this->error = $discountstatic->error;
2660 $reparray = array();
2662 $sql =
"SELECT u.rowid, u.login, u.lastname, u.firstname, u.office_phone, u.job, u.email, u.statut as status, u.entity, u.photo, u.gender";
2663 $sql .=
", u.office_fax, u.user_mobile, u.personal_mobile";
2664 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc, ".MAIN_DB_PREFIX.
"user as u";
2666 if (isModEnabled(
'multicompany') &&
getDolGlobalString(
'MULTICOMPANY_TRANSVERSE_MODE')) {
2667 $sql .=
" WHERE u.rowid IN (SELECT ug.fk_user FROM ".$this->db->prefix().
"usergroup_user as ug WHERE ug.entity IN (".
getEntity(
'usergroup').
"))";
2669 $sql .=
" WHERE entity IN (0, ".$this->db->sanitize(
$conf->entity).
")";
2672 $sql .=
" AND u.rowid = sc.fk_user AND sc.fk_soc = ".((int) $this->
id);
2673 if (empty($sortfield) && empty($sortorder)) {
2674 $sortfield =
'u.lastname,u.firstname';
2675 $sortorder =
'ASC,ASC';
2677 $sql .= $this->db->order($sortfield, $sortorder);
2679 $resql = $this->db->query($sql);
2681 $num = $this->db->num_rows($resql);
2684 $obj = $this->db->fetch_object($resql);
2687 $reparray[$i][
'id'] = $obj->rowid;
2688 $reparray[$i][
'lastname'] = $obj->lastname;
2689 $reparray[$i][
'firstname'] = $obj->firstname;
2690 $reparray[$i][
'email'] = $obj->email;
2691 $reparray[$i][
'phone'] = $obj->office_phone;
2692 $reparray[$i][
'office_phone'] = $obj->office_phone;
2693 $reparray[$i][
'office_fax'] = $obj->office_fax;
2694 $reparray[$i][
'user_mobile'] = $obj->user_mobile;
2695 $reparray[$i][
'personal_mobile'] = $obj->personal_mobile;
2696 $reparray[$i][
'job'] = $obj->job;
2697 $reparray[$i][
'statut'] = $obj->status;
2698 $reparray[$i][
'status'] = $obj->status;
2699 $reparray[$i][
'entity'] = $obj->entity;
2700 $reparray[$i][
'login'] = $obj->login;
2701 $reparray[$i][
'photo'] = $obj->photo;
2702 $reparray[$i][
'gender'] = $obj->gender;
2704 $reparray[] = $obj->rowid;
2727 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"societe";
2728 $sql .=
" SET price_level = ".((int) $price_level);
2729 $sql .=
" WHERE rowid = ".((int) $this->
id);
2731 if (!$this->db->query($sql)) {
2736 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_prices";
2737 $sql .=
" (datec, fk_soc, price_level, fk_user_author)";
2738 $sql .=
" VALUES ('".$this->db->idate($now).
"', ".((int) $this->
id).
", ".((int) $price_level).
", ".((int) $user->id).
")";
2740 if (!$this->db->query($sql)) {
2762 if ($this->
id > 0 && $commid > 0) {
2766 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_commerciaux";
2767 $sql .=
" WHERE fk_soc = ".((int) $this->
id).
" AND fk_user = ".((int) $commid);
2769 $resql = $this->db->query($sql);
2771 dol_syslog(get_class($this).
"::add_commercial Error ".$this->db->lasterror());
2777 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_commerciaux";
2778 $sql .=
" (fk_soc, fk_user)";
2779 $sql .=
" VALUES (".((int) $this->
id).
", ".((int) $commid).
")";
2781 $resql = $this->db->query($sql);
2783 dol_syslog(get_class($this).
"::add_commercial Error ".$this->db->lasterror());
2789 $this->context = array(
'commercial_modified' => $commid);
2791 $result = $this->
call_trigger(
'COMPANY_LINK_SALE_REPRESENTATIVE', $user);
2798 $this->db->commit();
2801 $this->db->rollback();
2821 $this->context = array(
'commercial_modified' => $commid);
2823 $result = $this->
call_trigger(
'COMPANY_UNLINK_SALE_REPRESENTATIVE', $user);
2828 if ($this->
id > 0 && $commid > 0) {
2829 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_commerciaux ";
2830 $sql .=
" WHERE fk_soc = ".((int) $this->
id).
" AND fk_user = ".((int) $commid);
2832 if (!$this->db->query($sql)) {
2834 dol_syslog(get_class($this).
"::del_commercial Erreur");
2854 global
$conf, $langs, $user;
2856 $langs->loadLangs([
'companies',
'commercial']);
2860 $option = $params[
'option'] ??
'';
2861 $nofetch = !empty($params[
'nofetch']);
2863 $noaliasinname = (empty($params[
'noaliasinname']) ? 0 : $params[
'noaliasinname']);
2866 return [
'optimize' => $langs->trans(
"ShowCompany")];
2869 if (!empty($this->logo) && class_exists(
'Form')) {
2870 $photo =
'<div class="photointooltip floatright">';
2871 $photo .=
Form::showphoto(
'societe', $this, 0, 40, 0,
'photoref',
'mini', 0);
2873 $datas[
'photo'] = $photo;
2880 $datas[
'divopen'] =
'<div class="centpercent">';
2882 if ($option ==
'customer' || $option ==
'compta' || $option ==
'category') {
2883 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"Customer").
'</u>';
2884 } elseif ($option ==
'prospect' && !
getDolGlobalString(
'SOCIETE_DISABLE_PROSPECTS')) {
2885 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"Prospect").
'</u>';
2886 } elseif ($option ==
'supplier' || $option ==
'category_supplier') {
2887 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"Supplier").
'</u>';
2888 } elseif ($option ==
'agenda') {
2889 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"ThirdParty").
'</u>';
2890 } elseif ($option ==
'project') {
2891 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"ThirdParty").
'</u>';
2892 } elseif ($option ==
'margin') {
2893 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"ThirdParty").
'</u>';
2894 } elseif ($option ==
'contact') {
2895 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"ThirdParty").
'</u>';
2896 } elseif ($option ==
'ban') {
2897 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"ThirdParty").
'</u>';
2901 if (empty($datas[
'picto'])) {
2902 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"ThirdParty").
'</u>';
2904 if (isset($this->
status)) {
2905 $datas[
'status'] =
' '.$this->getLibStatut(5);
2907 if (isset($this->client) && isset($this->fournisseur)) {
2908 $datas[
'type'] =
' ' . $this->
getTypeUrl(1);
2911 if (!empty($this->name_alias) && empty($noaliasinname)) {
2914 if (!empty($this->
email)) {
2915 $datas[
'email'] =
'<br>'.img_picto(
'',
'email',
'class="pictofixedwidth"').$this->email;
2917 if (!empty($this->url)) {
2918 $datas[
'url'] =
'<br>'.img_picto(
'',
'globe',
'class="pictofixedwidth"').$this->url;
2920 if (!empty($this->phone) || !empty($this->phone_mobile) || !empty($this->fax)) {
2921 $phonelist = array();
2923 $phonelist[] =
dol_print_phone($this->phone, $this->country_code, $this->
id, 0,
'',
' ',
'phone');
2926 if ($this->phone_mobile) {
2927 $phonelist[] =
dol_print_phone($this->phone_mobile, $this->country_code, $this->
id, 0,
'',
' ',
'phone_mobile');
2930 $phonelist[] =
dol_print_phone($this->fax, $this->country_code, $this->
id, 0,
'',
' ',
'fax');
2932 $datas[
'phonelist'] =
'<br>'.implode(
' ', $phonelist);
2936 $datas[
'address'] =
'<br><b>'.$langs->trans(
"Address").
':</b> '.
dol_format_address($this, 1,
' ', $langs);
2937 } elseif (!empty($this->country_code)) {
2938 $datas[
'address'] =
'<br><b>'.$langs->trans(
'Country').
':</b> '.$this->country_code;
2940 if (!empty($this->tva_intra) || (
getDolGlobalString(
'SOCIETE_SHOW_FIELD_IN_TOOLTIP') && strpos(
$conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP,
'vatnumber') !==
false)) {
2941 $datas[
'vatintra'] =
'<br><b>'.$langs->trans(
'VATIntra').
':</b> '.
dol_escape_htmltag($this->tva_intra);
2945 if (strpos(
$conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP,
'profid1') !==
false && $langs->trans(
'ProfId1'.$this->country_code) !=
'-') {
2946 $datas[
'profid1'] =
'<br><b>'.$langs->trans(
'ProfId1'.$this->country_code).
':</b> '.$this->idprof1;
2948 if (strpos(
$conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP,
'profid2') !==
false && $langs->trans(
'ProfId2'.$this->country_code) !=
'-') {
2949 $datas[
'profid2'] =
'<br><b>'.$langs->trans(
'ProfId2'.$this->country_code).
':</b> '.$this->idprof2;
2951 if (strpos(
$conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP,
'profid3') !==
false && $langs->trans(
'ProfId3'.$this->country_code) !=
'-') {
2952 $datas[
'profid3'] =
'<br><b>'.$langs->trans(
'ProfId3'.$this->country_code).
':</b> '.$this->idprof3;
2954 if (strpos(
$conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP,
'profid4') !==
false && $langs->trans(
'ProfId4'.$this->country_code) !=
'-') {
2955 $datas[
'profid4'] =
'<br><b>'.$langs->trans(
'ProfId4'.$this->country_code).
':</b> '.$this->idprof4;
2957 if (strpos(
$conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP,
'profid5') !==
false && $langs->trans(
'ProfId5'.$this->country_code) !=
'-') {
2958 $datas[
'profid5'] =
'<br><b>'.$langs->trans(
'ProfId5'.$this->country_code).
':</b> '.$this->idprof5;
2960 if (strpos(
$conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP,
'profid6') !==
false && $langs->trans(
'ProfId6'.$this->country_code) !=
'-') {
2961 $datas[
'profid6'] =
'<br><b>'.$langs->trans(
'ProfId6'.$this->country_code).
':</b> '.$this->idprof6;
2965 $datas[
'separator'] =
'<br>';
2967 if (!empty($this->code_client) && ($this->client == 1 || $this->client == 3)) {
2968 $datas[
'customercode'] =
'<br><b>'.$langs->trans(
'CustomerCode').
':</b> '.$this->code_client;
2970 if (isModEnabled(
'accounting') && ($this->client == 1 || $this->client == 3)) {
2971 $langs->load(
'compta');
2972 $datas[
'accountancycustomercode'] =
'<br><b>'.$langs->trans(
'CustomerAccountancyCode').
':</b> '.$this->code_compta_client;
2975 if (!$nofetch && isModEnabled(
'category') && $this->client) {
2976 require_once DOL_DOCUMENT_ROOT .
'/categories/class/categorie.class.php';
2977 $form =
new Form($this->db);
2978 $datas[
'categories_customer'] =
'<br>' . $form->showCategories($this->
id, Categorie::TYPE_CUSTOMER, 1, 1);
2980 if (!empty($this->code_fournisseur) && $this->fournisseur) {
2981 $datas[
'suppliercode'] =
'<br><b>'.$langs->trans(
'SupplierCode').
':</b> '.$this->code_fournisseur;
2983 if (isModEnabled(
'accounting') && $this->fournisseur) {
2984 $langs->load(
'compta');
2985 $datas[
'accountancysuppliercode'] =
'<br><b>'.$langs->trans(
'SupplierAccountancyCode').
':</b> '.$this->code_compta_fournisseur;
2988 if (!$nofetch && isModEnabled(
'category') && $this->fournisseur) {
2989 require_once DOL_DOCUMENT_ROOT .
'/categories/class/categorie.class.php';
2990 $form =
new Form($this->db);
2991 $datas[
'categories_supplier'] =
'<br>' . $form->showCategories($this->
id, Categorie::TYPE_SUPPLIER, 1, 1);
2994 $datas[
'divclose'] =
'</div>';
3012 public function getNomUrl($withpicto = 0, $option =
'', $maxlen = 0, $notooltip = 0, $save_lastsearch_value = -1, $noaliasinname = 0, $target =
'', $morecss =
'')
3014 global
$conf, $langs, $hookmanager, $user;
3016 if (!empty(
$conf->dol_no_mouse_hover)) {
3020 $name = $this->
name ? $this->
name : $this->nom;
3022 if (
getDolGlobalString(
'SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD')) {
3023 if (empty($option) && $this->client > 0) {
3024 $option =
'customer';
3026 if (empty($option) && $this->fournisseur > 0) {
3027 $option =
'supplier';
3033 if (($this->client) && (!empty($this->code_client)) && (
getDolGlobalInt(
'SOCIETE_ADD_REF_IN_LIST') == 1 ||
getDolGlobalInt(
'SOCIETE_ADD_REF_IN_LIST') == 2)) {
3034 $code = $this->code_client.
' - ';
3037 if (($this->fournisseur) && (!empty($this->code_fournisseur)) && (
getDolGlobalInt(
'SOCIETE_ADD_REF_IN_LIST') == 1 ||
getDolGlobalInt(
'SOCIETE_ADD_REF_IN_LIST') == 3)) {
3038 $code .= $this->code_fournisseur.
' - ';
3043 $name = $code.
' '.$name;
3050 if (!empty($this->name_alias) && empty($noaliasinname)) {
3051 $name .=
' ('.$this->name_alias.
')';
3057 'objecttype' => $this->element,
3058 'option' => $option,
3061 $classfortooltip =
'classfortooltip';
3064 $classfortooltip =
'classforajaxtooltip';
3065 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
3074 if ($option ==
'customer' || $option ==
'compta' || $option ==
'category') {
3075 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/comm/card.php?socid='.$this->id;
3076 } elseif ($option ==
'prospect' && !
getDolGlobalString(
'SOCIETE_DISABLE_PROSPECTS')) {
3077 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/comm/card.php?socid='.$this->id;
3078 } elseif ($option ==
'supplier' || $option ==
'category_supplier') {
3079 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/fourn/card.php?socid='.$this->id;
3080 } elseif ($option ==
'agenda') {
3081 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/societe/agenda.php?socid='.$this->id;
3082 } elseif ($option ==
'project') {
3083 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/societe/project.php?socid='.$this->id;
3084 } elseif ($option ==
'margin') {
3085 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/margin/tabs/thirdpartyMargins.php?socid='.$this->
id.
'&type=1';
3086 } elseif ($option ==
'contact') {
3087 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/societe/contact.php?socid='.$this->id;
3088 } elseif ($option ==
'ban') {
3089 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/societe/paymentmodes.php?socid='.$this->id;
3093 if (empty($linkstart)) {
3094 $linkstart =
'<a href="'.DOL_URL_ROOT.
'/societe/card.php?socid='.$this->id;
3098 $linkstart .= (!empty($this->canvas) ?
'&canvas='.$this->canvas :
'');
3100 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
3101 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
3102 $add_save_lastsearch_values = 1;
3104 if ($add_save_lastsearch_values) {
3105 $linkstart .=
'&save_lastsearch_values=1';
3110 if (empty($notooltip)) {
3112 $label = $langs->trans(
"ShowCompany");
3113 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
3115 $linkclose .= ($label ?
' title="'.dol_escape_htmltag($label, 1).
'"' :
' title="tocomplete"');
3116 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
' refurl valignmiddle"';
3117 $target_value = array(
'_self',
'_blank',
'_parent',
'_top');
3118 if (in_array($target, $target_value)) {
3119 $linkclose .=
' target="'.dol_escape_htmltag($target).
'"';
3122 $linkclose .=
' class="valignmiddle'.($morecss ?
' '.$morecss :
'').
'"';
3124 $linkstart .= $linkclose.
'>';
3127 if (!$user->hasRight(
'societe',
'client',
'voir') && $user->socid > 0 && $this->id != $user->socid) {
3132 $result .= $linkstart;
3134 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), (
' class="'.(($withpicto != 2) ?
'paddingright' :
'').
'"'), 0, 0, $notooltip ? 0 : 1);
3136 if ($withpicto != 2) {
3139 $result .= $linkend;
3142 $hookmanager->initHooks(array(
'thirdpartydao'));
3143 $parameters = array(
3145 'getnomurl' => &$result,
3146 'withpicto ' => $withpicto,
3147 'option' => $option,
3148 'maxlen' => $maxlen,
3149 'notooltip' => $notooltip,
3150 'save_lastsearch_value' => $save_lastsearch_value
3152 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
3154 $result = $hookmanager->resPrint;
3156 $result .= $hookmanager->resPrint;
3171 public function getTypeUrl($withpicto = 0, $option =
'', $notooltip = 0, $tag =
'a')
3176 if (empty($option) || preg_match(
'/prospect/', $option)) {
3177 if (($this->client == 2 || $this->client == 3) && !
getDolGlobalString(
'SOCIETE_DISABLE_PROSPECTS')) {
3178 $s .=
'<'.$tag.
' class="customer-back opacitymedium" title="'.$langs->trans(
"Prospect").
'" href="'.DOL_URL_ROOT.
'/comm/card.php?socid='.$this->
id.
'">'.
dol_substr($langs->trans(
"Prospect"), 0, 1).
'</'.$tag.
'>';
3181 if (empty($option) || preg_match(
'/customer/', $option)) {
3182 if (($this->client == 1 || $this->client == 3) && !
getDolGlobalString(
'SOCIETE_DISABLE_CUSTOMERS')) {
3183 $s .=
'<'.$tag.
' class="customer-back" title="'.$langs->trans(
"Customer").
'" href="'.DOL_URL_ROOT.
'/comm/card.php?socid='.$this->
id.
'">'.
dol_substr($langs->trans(
"Customer"), 0, 1).
'</'.$tag.
'>';
3186 if (empty($option) || preg_match(
'/supplier/', $option)) {
3187 if ((isModEnabled(
"supplier_order") || isModEnabled(
"supplier_invoice")) && $this->fournisseur) {
3188 $s .=
'<'.$tag.
' class="vendor-back" title="'.$langs->trans(
"Supplier").
'" href="'.DOL_URL_ROOT.
'/fourn/card.php?socid='.$this->
id.
'">'.
dol_substr($langs->trans(
"Supplier"), 0, 1).
'</'.$tag.
'>';
3218 $langs->load(
'companies');
3220 $statusType =
'status4';
3222 $statusType =
'status6';
3225 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
3226 $this->labelStatus[0] = $langs->transnoentitiesnoconv(
"ActivityCeased");
3227 $this->labelStatus[1] = $langs->transnoentitiesnoconv(
"InActivity");
3228 $this->labelStatusShort[0] = $langs->transnoentitiesnoconv(
"ActivityCeased");
3229 $this->labelStatusShort[1] = $langs->transnoentitiesnoconv(
"InActivity");
3232 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
3249 if ($this->
email && $addthirdparty) {
3250 if (empty($this->
name)) {
3251 $this->
name = $this->nom;
3253 $contact_emails[
'thirdparty'] = ($addthirdparty == 2 ?
'<span class="opacitymedium">' :
'').$langs->transnoentitiesnoconv(
"ThirdParty").($addthirdparty == 2 ?
'</span>' :
'').
': '.
dol_trunc($this->
name, 16).
" <".$this->
email.
">";
3257 return $contact_emails;
3273 if (!empty($this->phone)) {
3274 if (empty($this->
name)) {
3275 $this->
name = $this->nom;
3278 $contact_phone[
'thirdparty'] = $langs->transnoentitiesnoconv(
"ThirdParty").
': '.
dol_trunc($this->
name, 16).
" <".$this->phone.
">";
3280 return $contact_phone;
3296 $contact_property = array();
3299 $sql =
"SELECT rowid, email, statut as status, phone_mobile, lastname, poste, firstname";
3300 $sql .=
" FROM ".MAIN_DB_PREFIX.
"socpeople";
3301 $sql .=
" WHERE fk_soc = ".((int) $this->
id);
3302 $sql .=
" AND entity IN (".getEntity($this->element).
")";
3303 $sql .=
" ORDER BY lastname, firstname";
3305 $resql = $this->db->query($sql);
3307 $nump = $this->db->num_rows($resql);
3311 if ($mode ==
'email') {
3317 while ($i < $nump) {
3318 $obj = $this->db->fetch_object($resql);
3319 if ($mode ==
'email') {
3320 $property = $obj->email;
3321 } elseif ($mode ==
'mobile') {
3322 $property = $obj->phone_mobile;
3324 $property = $obj->$mode;
3328 if ($obj->status == 1 || empty($hidedisabled)) {
3329 if (empty($property)) {
3330 if ($mode ==
'email') {
3331 $property = $langs->transnoentitiesnoconv(
"NoEMail");
3332 } elseif ($mode ==
'mobile') {
3333 $property = $langs->transnoentitiesnoconv(
"NoMobilePhone");
3337 if (!empty($obj->poste)) {
3338 $contact_property[$obj->rowid] = trim(
dolGetFirstLastname($obj->firstname, $obj->lastname)).($obj->poste ?
" - ".$obj->poste :
"").(($mode !=
'poste' && $property) ?
" ".$sepa.$property.$sepb :
'');
3340 $contact_property[$obj->rowid] = trim(
dolGetFirstLastname($obj->firstname, $obj->lastname)).(($mode !=
'poste' && $property) ?
" ".$sepa.$property.$sepb :
'');
3349 return $contact_property;
3362 $contacts = array();
3364 $sql =
"SELECT rowid, lastname, firstname FROM ".MAIN_DB_PREFIX.
"socpeople WHERE fk_soc = ".((int) $this->
id);
3365 $resql = $this->db->query($sql);
3367 $nump = $this->db->num_rows($resql);
3370 while ($i < $nump) {
3371 $obj = $this->db->fetch_object($resql);
3391 require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
3392 $contacts = array();
3394 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"socpeople WHERE fk_soc = ".((int) $this->
id);
3395 $resql = $this->db->query($sql);
3397 $nump = $this->db->num_rows($resql);
3400 while ($i < $nump) {
3401 $obj = $this->db->fetch_object($resql);
3402 $contact =
new Contact($this->db);
3403 $contact->fetch($obj->rowid);
3404 $contacts[] = $contact;
3425 $contact_property =
'';
3427 if (empty($rowid)) {
3431 $sql =
"SELECT rowid, email, phone_mobile, lastname, firstname";
3432 $sql .=
" FROM ".MAIN_DB_PREFIX.
"socpeople";
3433 $sql .=
" WHERE rowid = ".((int) $rowid);
3435 $resql = $this->db->query($sql);
3437 $nump = $this->db->num_rows($resql);
3440 $obj = $this->db->fetch_object($resql);
3442 if ($mode ==
'email') {
3444 } elseif ($mode ==
'mobile') {
3445 $contact_property = $obj->phone_mobile;
3448 return $contact_property;
3467 require_once DOL_DOCUMENT_ROOT.
'/societe/class/companybankaccount.class.php';
3471 $bac->fetch(0,
'', $this->
id);
3474 if ($mode ==
'label') {
3475 return $bac->getRibLabel(
true);
3476 } elseif ($mode ==
'rum') {
3477 if (empty($bac->rum)) {
3478 require_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
3480 $bac->fetch_thirdparty();
3481 $bac->rum = $prelevement->buildRumNumber($bac->thirdparty->code_client, $bac->datec, $bac->id);
3484 } elseif ($mode ==
'format') {
3485 return $bac->frstrecur;
3487 return 'BadParameterToFunctionDisplayRib';
3503 require_once DOL_DOCUMENT_ROOT.
'/societe/class/companybankaccount.class.php';
3504 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"societe_rib WHERE type = 'ban' AND fk_soc = ".((int) $this->
id);
3505 $result = $this->db->query($sql);
3507 $this->error = $this->db->lasterror();
3508 $this->errors[] = $this->db->lasterror();
3511 $num_rows = $this->db->num_rows($result);
3512 $rib_array = array();
3514 while ($obj = $this->db->fetch_object($result)) {
3516 $rib->fetch($obj->rowid);
3517 $rib_array[] = $rib;
3530 require_once DOL_DOCUMENT_ROOT.
'/societe/class/companybankaccount.class.php';
3531 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"societe_rib WHERE type = 'ban' AND default_rib = 1 AND fk_soc = ". (int) $this->
id;
3532 $resql = $this->db->query($sql);
3534 $this->error = $this->db->lasterror();
3535 $this->errors[] = $this->db->lasterror();
3538 $num_rows = $this->db->num_rows($resql);
3539 $rib_array = array();
3541 while ($obj = $this->db->fetch_object($resql)) {
3559 public function get_codeclient($objsoc =
null, $type = 0)
3566 $dirsociete = array_merge(array(
'/core/modules/societe/'),
$conf->modules_parts[
'societe']);
3567 foreach ($dirsociete as $dirroot) {
3574 $mod =
new $module($this->db);
3575 '@phan-var-force ModeleThirdPartyCode $mod';
3577 $this->code_client = $mod->getNextValue($objsoc, $type);
3578 $this->prefixCustomerIsRequired = $mod->prefixIsRequired;
3580 dol_syslog(get_class($this).
"::get_codeclient code_client=".$this->code_client.
" module=".$module);
3593 public function get_codefournisseur($objsoc =
null, $type = 1)
3600 $dirsociete = array_merge(array(
'/core/modules/societe/'),
$conf->modules_parts[
'societe']);
3601 foreach ($dirsociete as $dirroot) {
3608 $mod =
new $module($this->db);
3609 '@phan-var-force ModeleThirdPartyCode $mod';
3611 $this->code_fournisseur = $mod->getNextValue($objsoc, $type);
3613 dol_syslog(get_class($this).
"::get_codefournisseur code_fournisseur=".$this->code_fournisseur.
" module=".$module);
3631 $dirsociete = array_merge(array(
'/core/modules/societe/'),
$conf->modules_parts[
'societe']);
3632 foreach ($dirsociete as $dirroot) {
3639 $mod =
new $module($this->db);
3640 '@phan-var-force ModeleThirdPartyCode $mod';
3642 dol_syslog(get_class($this).
"::codeclient_modifiable code_client=".$this->code_client.
" module=".$module);
3643 if ($mod->code_modifiable_null && !$this->code_client) {
3646 if ($mod->code_modifiable_invalide && $this->check_codeclient() < 0) {
3649 if ($mod->code_modifiable) {
3672 $dirsociete = array_merge(array(
'/core/modules/societe/'),
$conf->modules_parts[
'societe']);
3673 foreach ($dirsociete as $dirroot) {
3680 $mod =
new $module($this->db);
3681 '@phan-var-force ModeleThirdPartyCode $mod';
3683 dol_syslog(get_class($this).
"::codefournisseur_modifiable code_founisseur=".$this->code_fournisseur.
" module=".$module);
3684 if ($mod->code_modifiable_null && !$this->code_fournisseur) {
3687 if ($mod->code_modifiable_invalide && $this->check_codefournisseur() < 0) {
3690 if ($mod->code_modifiable) {
3719 $dirsociete = array_merge(array(
'/core/modules/societe/'),
$conf->modules_parts[
'societe']);
3720 foreach ($dirsociete as $dirroot) {
3727 $mod =
new $module($this->db);
3728 '@phan-var-force ModeleThirdPartyCode $mod';
3730 dol_syslog(get_class($this).
"::check_codeclient code_client=".$this->code_client.
" module=".$module);
3731 $result = $mod->verif($this->db, $this->code_client, $this, 0);
3733 $this->error = $mod->error;
3734 $this->errors = $mod->errors;
3761 $dirsociete = array_merge(array(
'/core/modules/societe/'),
$conf->modules_parts[
'societe']);
3762 foreach ($dirsociete as $dirroot) {
3769 $mod =
new $module($this->db);
3770 '@phan-var-force ModeleThirdPartyCode $mod';
3772 dol_syslog(get_class($this).
"::check_codefournisseur code_fournisseur=".$this->code_fournisseur.
" module=".$module);
3773 $result = $mod->verif($this->db, $this->code_fournisseur, $this, 1);
3775 $this->error = $mod->error;
3776 $this->errors = $mod->errors;
3801 $dirsociete = array_merge(array(
'/core/modules/societe/'),
$conf->modules_parts[
'societe']);
3802 foreach ($dirsociete as $dirroot) {
3810 $mod =
new $module();
3811 '@phan-var-force ModeleAccountancyCode $mod';
3814 $result = $mod->get_code($this->db, $this, $type);
3816 if ($type ==
'customer') {
3817 $this->code_compta_client = $mod->code;
3818 } elseif ($type ==
'supplier') {
3819 $this->code_compta_fournisseur = $mod->code;
3824 $this->error =
'ErrorAccountancyCodeNotDefined';
3828 if ($type ==
'customer') {
3829 $this->code_compta_client =
'';
3830 } elseif ($type ==
'supplier') {
3831 $this->code_compta_fournisseur =
'';
3846 dol_syslog(get_class($this).
'::setParent', LOG_DEBUG);
3852 if ($sameparent < 0) {
3855 if ($sameparent == 1) {
3856 setEventMessages(
'ParentCompanyToAddIsAlreadyAChildOfModifiedCompany',
null,
'warnings');
3861 $sql =
'UPDATE '.MAIN_DB_PREFIX.
'societe SET parent = '.($id > 0 ? $id :
'null').
' WHERE rowid = '.((
int) $this->id);
3863 $resql = $this->db->query($sql);
3865 $this->parent = $id;
3885 if ($counter > 100) {
3886 dol_syslog(
"Too high level of parent - child for company. May be an infinite loop ?", LOG_WARNING);
3889 $sql =
'SELECT s.parent';
3890 $sql .=
' FROM '.MAIN_DB_PREFIX.
'societe as s';
3891 $sql .=
' WHERE rowid = '.((int) $idparent);
3892 $resql = $this->db->query($sql);
3894 $obj = $this->db->fetch_object($resql);
3896 if ($obj->parent ==
'') {
3898 } elseif ($obj->parent == $idchild) {
3920 if ($company_id > 0) {
3921 $sql =
"SELECT parent FROM " . MAIN_DB_PREFIX .
"societe WHERE rowid = ".((int) $company_id);
3922 $resql = $this->db->query($sql);
3924 if ($obj = $this->db->fetch_object($resql)) {
3925 $parent = $obj->parent;
3926 if ($parent > 0 && !in_array($parent, $parents)) {
3927 $parents[] = $parent;
3933 $this->db->free($resql);
3935 setEventMessage($langs->trans(
'GetCompanyParentsError', $this->db->lasterror()),
'errors');
4020 $sql =
"SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX.
"societe WHERE ".$field.
" = '".$this->db->escape($value).
"' AND entity IN (".
getEntity(
'societe').
")";
4022 $sql .=
" AND rowid <> ".$socid;
4024 $resql = $this->db->query($sql);
4026 $obj = $this->db->fetch_object($resql);
4030 print $this->db->error();
4032 $this->db->free($resql);
4056 require_once DOL_DOCUMENT_ROOT.
'/core/lib/profid.lib.php';
4065 if ($idprof == 1 && $soc->country_code ==
'FR' && !
isValidSiren($this->idprof1)) {
4070 if ($idprof == 2 && $soc->country_code ==
'FR' && !
isValidSiret($this->idprof2)) {
4075 if ($idprof == 1 && $soc->country_code ==
'ES') {
4080 if ($idprof == 1 && $soc->country_code ==
'PT' && !
isValidTinForPT($this->idprof1)) {
4085 if ($idprof == 1 && $soc->country_code ==
'DZ' && !
isValidTinForDZ($this->idprof1)) {
4090 if ($idprof == 1 && $soc->country_code ==
'BE' && !
isValidTinForBE($this->idprof1)) {
4109 global
$conf, $langs, $hookmanager;
4114 $hookmanager->initHooks(array(
'idprofurl'));
4115 $parameters = array(
'idprof' => $idprof,
'company' => $thirdparty);
4116 $reshook = $hookmanager->executeHooks(
'getIdProfUrl', $parameters, $this, $action);
4117 if (empty($reshook)) {
4123 $strippedIdProf1 = str_replace(
' ',
'', $thirdparty->idprof1);
4124 if ($idprof == 1 && $thirdparty->country_code ==
'FR') {
4125 $url =
'https://annuaire-entreprises.data.gouv.fr/entreprise/'.$strippedIdProf1;
4127 if ($idprof == 1 && ($thirdparty->country_code ==
'GB' || $thirdparty->country_code ==
'UK')) {
4128 $url =
'https://beta.companieshouse.gov.uk/company/'.$strippedIdProf1;
4130 if ($idprof == 1 && $thirdparty->country_code ==
'ES') {
4131 $url =
'http://www.e-informa.es/servlet/app/portal/ENTP/screen/SProducto/prod/ETIQUETA_EMPRESA/nif/'.$strippedIdProf1;
4133 if ($idprof == 1 && $thirdparty->country_code ==
'IN') {
4134 $url =
'http://www.tinxsys.com/TinxsysInternetWeb/dealerControllerServlet?tinNumber='.$strippedIdProf1.
';&searchBy=TIN&backPage=searchByTin_Inter.jsp';
4136 if ($idprof == 1 && $thirdparty->country_code ==
'DZ') {
4137 $url =
'http://nif.mfdgi.gov.dz/nif.asp?Nif='.$strippedIdProf1;
4139 if ($idprof == 1 && $thirdparty->country_code ==
'PT') {
4140 $url =
'http://www.nif.pt/'.$strippedIdProf1;
4144 return '<a target="_blank" rel="noopener noreferrer" href="'.$url.
'">'.$langs->trans(
"Check").
'</a>';
4147 return $hookmanager->resPrint;
4162 $sql =
"SELECT COUNT(*) as numproj FROM ".MAIN_DB_PREFIX.
"projet WHERE fk_soc = ".((int) $this->
id);
4163 $resql = $this->db->query($sql);
4165 $obj = $this->db->fetch_object($resql);
4166 $count = $obj->numproj;
4169 print $this->db->error();
4171 $this->db->free($resql);
4172 return ($count > 0);
4184 $sql =
"SELECT s.rowid, s.nom as name, s.datec, tms as datem,";
4185 $sql .=
" fk_user_creat, fk_user_modif";
4186 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe as s";
4187 $sql .=
" WHERE s.rowid = ".((int) $id);
4189 $result = $this->db->query($sql);
4191 if ($this->db->num_rows($result)) {
4192 $obj = $this->db->fetch_object($result);
4194 $this->
id = $obj->rowid;
4196 $this->user_creation_id = $obj->fk_user_creat;
4197 $this->user_modification_id = $obj->fk_user_modif;
4198 $this->date_creation = $this->db->jdate($obj->datec);
4199 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
4201 $this->
ref = $obj->name;
4204 $this->db->free($result);
4218 $isACompany =
getDolGlobalInt(
'MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES');
4221 if (!empty($this->tva_intra)) {
4223 } elseif (!empty($this->idprof1) || !empty($this->idprof2) || !empty($this->idprof3) || !empty($this->idprof4) || !empty($this->idprof5) || !empty($this->idprof6)) {
4228 if (preg_match(
'/^TE_PRIVATE/', $this->typent_code)) {
4238 return (
bool) $isACompany;
4248 require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
4261 $this->SupplierCategories = array();
4262 $sql =
"SELECT rowid, label";
4263 $sql .=
" FROM ".MAIN_DB_PREFIX.
"categorie";
4264 $sql .=
" WHERE type = ".Categorie::TYPE_SUPPLIER;
4266 $resql = $this->db->query($sql);
4268 while ($obj = $this->db->fetch_object($resql)) {
4269 $this->SupplierCategories[$obj->rowid] = $obj->label;
4287 if ($categorie_id > 0 && $this->
id > 0) {
4288 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"categorie_fournisseur (fk_categorie, fk_soc) ";
4289 $sql .=
" VALUES (".((int) $categorie_id).
", ".((int) $this->
id).
")";
4291 if ($resql = $this->db->query($sql)) {
4307 $sql =
"SELECT count(mc.email) as nb";
4308 $sql .=
" FROM ".MAIN_DB_PREFIX.
"mailing_cibles as mc, ".MAIN_DB_PREFIX.
"mailing as m";
4309 $sql .=
" WHERE mc.fk_mailing=m.rowid AND mc.email = '".$this->db->escape($this->
email).
"' ";
4310 $sql .=
" AND m.entity IN (".getEntity($this->element).
") AND mc.statut NOT IN (-1,0)";
4312 $resql = $this->db->query($sql);
4314 $obj = $this->db->fetch_object($resql);
4317 $this->db->free($resql);
4320 $this->error = $this->db->error();
4340 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"mailing_unsubscribe WHERE entity IN (".
getEntity(
'mailing', 0).
") AND email = '".$this->db->escape($this->
email).
"'";
4341 $resql = $this->db->query($sql);
4343 $obj = $this->db->fetch_object($resql);
4344 $noemail = $obj->nb;
4345 if (empty($noemail)) {
4346 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"mailing_unsubscribe(email, entity, date_creat) VALUES ('".$this->db->escape($this->
email).
"', ".
getEntity(
'mailing', 0).
", '".$this->db->idate(
dol_now()).
"')";
4347 $resql = $this->db->query($sql);
4350 $this->error = $this->db->lasterror();
4351 $this->errors[] = $this->error;
4356 $this->error = $this->db->lasterror();
4357 $this->errors[] = $this->error;
4360 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"mailing_unsubscribe WHERE email = '".$this->db->escape($this->
email).
"' AND entity IN (".
getEntity(
'mailing', 0).
")";
4361 $resql = $this->db->query($sql);
4364 $this->error = $this->db->lasterror();
4365 $this->errors[] = $this->error;
4369 if (empty($error)) {
4370 $this->no_email = $no_email;
4371 $this->db->commit();
4374 $this->db->rollback();
4391 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"mailing_unsubscribe WHERE entity IN (".
getEntity(
'mailing').
") AND email = '".$this->db->escape($this->
email).
"'";
4392 $resql = $this->db->query($sql);
4394 $obj = $this->db->fetch_object($resql);
4395 $this->no_email = $obj->nb;
4398 $this->error = $this->db->lasterror();
4399 $this->errors[] = $this->error;
4419 global
$conf, $user, $langs;
4421 dol_syslog(get_class($this).
"::create_from_member", LOG_DEBUG);
4422 $fullname = $member->getFullName($langs);
4424 if ($member->morphy ==
'mor') {
4425 if (empty($socname)) {
4426 $socname = $member->company ? $member->company : $member->societe;
4428 if (!empty($fullname) && empty($socalias)) {
4429 $socalias = $fullname;
4431 } elseif (empty($socname) && $member->morphy ==
'phy') {
4432 if (empty($socname)) {
4433 $socname = $fullname;
4435 if (!empty($member->company) && empty($socalias)) {
4436 $socalias = $member->company;
4441 $alias = $socalias ? $socalias :
'';
4445 $this->
name = $name;
4446 $this->name_alias = $alias;
4447 $this->
address = $member->address;
4448 $this->zip = $member->zip;
4449 $this->town = $member->town;
4450 $this->country_code = $member->country_code;
4451 $this->country_id = $member->country_id;
4452 $this->phone = $member->phone;
4453 $this->
email = $member->email;
4454 $this->socialnetworks = $member->socialnetworks;
4455 $this->entity = $member->entity;
4458 $this->code_client = ($customercode ? $customercode : -1);
4459 $this->code_fournisseur =
'-1';
4460 $this->typent_code = ($member->morphy ==
'phy' ?
'TE_PRIVATE' : 0);
4461 $this->typent_id = $this->typent_code ?
dol_getIdFromCode($this->db, $this->typent_code,
'c_typent',
'id',
'code') : 0;
4466 $result = $this->
create($user);
4472 $this->name_bis = $member->lastname;
4473 $this->firstname = $member->firstname;
4474 $this->civility_id = $member->civility_id;
4476 dol_syslog(
"We ask to create a contact/address too", LOG_DEBUG);
4481 $this->db->rollback();
4486 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"adherent";
4487 $sql .=
" SET fk_soc = ".((int) $this->
id);
4488 $sql .=
" WHERE rowid = ".((int) $member->id);
4490 $resql = $this->db->query($sql);
4492 $this->db->commit();
4495 $this->error = $this->db->error();
4497 $this->db->rollback();
4502 dol_syslog(get_class($this).
"::create_from_member - 2 - ".$this->error.
" - ".implode(
',', $this->errors), LOG_ERR);
4504 $this->db->rollback();
4520 $this->entity =
$conf->entity;
4522 $this->nom = $this->name;
4534 $country_code = $country_label =
'';
4537 $country_id = (is_numeric($tmp[0])) ? (
int) $tmp[0] : 0;
4538 if (!empty($tmp[1])) {
4539 $country_code = $tmp[1];
4540 $country_label = $tmp[2];
4543 dol_syslog(
"Your country setup use an old syntax. Reedit it using setup area.", LOG_WARNING);
4544 include_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
4545 $country_code =
getCountry($country_id,
'2', $this->db);
4546 $country_label =
getCountry($country_id,
'', $this->db);
4549 $this->country_id = $country_id;
4550 $this->country_code = $country_code;
4551 $this->country = $country_label;
4552 if (is_object($langs)) {
4553 $this->country = ($langs->trans(
'Country'.$country_code) !=
'Country'.$country_code) ? $langs->trans(
'Country'.$country_code) : $country_label;
4563 $state_id = (int) $tmp[0];
4564 if (!empty($tmp[1])) {
4565 $state_code = $tmp[1];
4566 $state_label = $tmp[2];
4568 dol_syslog(
"Your setup of State has an old syntax (entity=".
$conf->entity.
"). Go in Home - Setup - Organization then Save should remove this error.", LOG_ERR);
4569 include_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
4570 $state_code =
getState($state_id,
'2', $this->db);
4571 $state_label =
getState($state_id,
'0', $this->db);
4574 $this->state_id = $state_id;
4575 $this->state_code = $state_code;
4576 $this->state = $state_label;
4577 if (is_object($langs)) {
4578 $this->state = ($langs->trans(
'State'.$state_code) !=
'State'.$state_code) ? $langs->trans(
'State'.$state_code) : $state_label;
4593 $this->socialnetworks = array();
4594 if (!empty($facebook_url)) {
4595 $this->socialnetworks[
'facebook'] = $facebook_url;
4597 if (!empty($twitter_url)) {
4598 $this->socialnetworks[
'twitter'] = $twitter_url;
4600 if (!empty($linkedin_url)) {
4601 $this->socialnetworks[
'linkedin'] = $linkedin_url;
4603 if (!empty($instagram_url)) {
4604 $this->socialnetworks[
'instagram'] = $instagram_url;
4606 if (!empty($youtube_url)) {
4607 $this->socialnetworks[
'youtube'] = $youtube_url;
4609 if (!empty($github_url)) {
4610 $this->socialnetworks[
'github'] = $github_url;
4623 $this->forme_juridique_code =
getDolGlobalInt(
'MAIN_INFO_SOCIETE_FORME_JURIDIQUE');
4630 $this->logo_squarred_small =
getDolGlobalString(
'MAIN_INFO_SOCIETE_LOGO_SQUARRED_SMALL');
4631 $this->logo_squarred_mini =
getDolGlobalString(
'MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI');
4637 $this->localtax1_assuj = ((isset(
$conf->global->FACTURE_LOCAL_TAX1_OPTION) && (
getDolGlobalString(
'FACTURE_LOCAL_TAX1_OPTION') ==
'1' ||
getDolGlobalString(
'FACTURE_LOCAL_TAX1_OPTION') ==
'localtax1on')) ? 1 : 0);
4638 $this->localtax2_assuj = ((isset(
$conf->global->FACTURE_LOCAL_TAX2_OPTION) && (
getDolGlobalString(
'FACTURE_LOCAL_TAX2_OPTION') ==
'1' ||
getDolGlobalString(
'FACTURE_LOCAL_TAX2_OPTION') ==
'localtax2on')) ? 1 : 0);
4655 $this->
name =
'THIRDPARTY SPECIMEN '.dol_print_date($now,
'dayhourlog');
4656 $this->nom = $this->name;
4657 $this->ref_ext =
'Ref ext';
4658 $this->specimen = 1;
4659 $this->
address =
'21 jump street';
4660 $this->zip =
'99999';
4661 $this->town =
'MyTown';
4662 $this->state_id = 1;
4663 $this->state_code =
'AA';
4664 $this->state =
'MyState';
4665 $this->country_id = 1;
4666 $this->country_code =
'FR';
4667 $this->
email =
'specimen@specimen.com';
4668 $this->socialnetworks = array(
4669 'skype' =>
'skypepseudo',
4670 'twitter' =>
'twitterpseudo',
4671 'facebook' =>
'facebookpseudo',
4672 'linkedin' =>
'linkedinpseudo',
4674 $this->url =
'http://www.specimen.com';
4676 $this->phone =
'0909090901';
4677 $this->phone_mobile =
'0909090901';
4678 $this->fax =
'0909090909';
4680 $this->code_client =
'CC-'.dol_print_date($now,
'dayhourlog');
4681 $this->code_fournisseur =
'SC-'.dol_print_date($now,
'dayhourlog');
4682 $this->typent_code =
'TE_OTHER';
4683 $this->capital = 10000;
4685 $this->prospect = 1;
4686 $this->fournisseur = 1;
4687 $this->tva_assuj = 1;
4688 $this->tva_intra =
'EU1234567';
4689 $this->note_public =
'This is a comment (public)';
4690 $this->note_private =
'This is a comment (private)';
4692 $this->idprof1 =
'idprof1';
4693 $this->idprof2 =
'idprof2';
4694 $this->idprof3 =
'idprof3';
4695 $this->idprof4 =
'idprof4';
4696 $this->idprof5 =
'idprof5';
4697 $this->idprof6 =
'idprof6';
4710 $sql =
"SELECT t.localtax1, t.localtax2";
4711 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_tva as t, ".MAIN_DB_PREFIX.
"c_country as c";
4712 $sql .=
" WHERE t.fk_pays = c.rowid AND c.code = '".$this->db->escape($this->country_code).
"'";
4713 $sql .=
" AND t.active = 1";
4714 $sql .=
" AND t.entity IN (".getEntity(
'c_tva').
")";
4715 if (empty($localTaxNum)) {
4716 $sql .=
" AND (t.localtax1_type <> '0' OR t.localtax2_type <> '0')";
4717 } elseif ($localTaxNum == 1) {
4718 $sql .=
" AND t.localtax1_type <> '0'";
4719 } elseif ($localTaxNum == 2) {
4720 $sql .=
" AND t.localtax2_type <> '0'";
4723 $resql = $this->db->query($sql);
4725 return ($this->db->num_rows($resql) > 0);
4738 $sql =
"SELECT t.rowid";
4739 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_tva as t, ".MAIN_DB_PREFIX.
"c_country as c";
4740 $sql .=
" WHERE t.fk_pays = c.rowid AND c.code = '".$this->db->escape($this->country_code).
"'";
4741 $sql .=
" AND t.active = 1 AND t.recuperableonly = 1";
4742 $sql .=
" AND t.entity IN (".getEntity(
'c_tva').
")";
4745 $resql = $this->db->query($sql);
4747 return ($this->db->num_rows($resql) > 0);
4761 $sql =
"SELECT COUNT(*) as nb";
4762 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_revenuestamp as r, ".MAIN_DB_PREFIX.
"c_country as c";
4763 $sql .=
" WHERE r.fk_pays = c.rowid AND c.code = '".$this->db->escape($this->country_code).
"'";
4764 $sql .=
" AND r.active = 1";
4767 $resql = $this->db->query($sql);
4769 $obj = $this->db->fetch_object($resql);
4770 return ($obj->nb > 0);
4772 $this->error = $this->db->lasterror();
4800 if ($fk_prospectlevel !=
'') {
4801 $label = $langs->trans(
"ProspectLevel".$fk_prospectlevel);
4803 if ($label ==
"ProspectLevel".$fk_prospectlevel) {
4804 $label = $langs->getLabelFromKey($this->db, $fk_prospectlevel,
'c_prospectlevel',
'code',
'label');
4820 return $this->
LibProspCommStatut($this->stcomm_id, $mode, $label, $this->stcomm_picto);
4842 $langs->load(
'customers');
4845 if ($status ==
'-1' || $status ==
'ST_NO') {
4846 return img_action($langs->trans(
"StatusProspect-1"),
'-1', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect-1");
4847 } elseif ($status ==
'0' || $status ==
'ST_NEVER') {
4848 return img_action($langs->trans(
"StatusProspect0"),
'0', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect0");
4849 } elseif ($status ==
'1' || $status ==
'ST_TODO') {
4850 return img_action($langs->trans(
"StatusProspect1"),
'1', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect1");
4851 } elseif ($status ==
'2' || $status ==
'ST_PEND') {
4852 return img_action($langs->trans(
"StatusProspect2"),
'2', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect2");
4853 } elseif ($status ==
'3' || $status ==
'ST_DONE') {
4854 return img_action($langs->trans(
"StatusProspect3"),
'3', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect3");
4856 return img_action(($langs->trans(
"StatusProspect".$status) !=
"StatusProspect".$status) ? $langs->trans(
"StatusProspect".$status) : $label,
'0', $picto,
'class="inline-block valignmiddle"').
' '.(($langs->trans(
"StatusProspect".$status) !=
"StatusProspect".$status) ? $langs->trans(
"StatusProspect".$status) : $label);
4858 } elseif ($mode == 3) {
4859 if ($status ==
'-1' || $status ==
'ST_NO') {
4860 return img_action($langs->trans(
"StatusProspect-1"),
'-1', $picto,
'class="inline-block valignmiddle"');
4861 } elseif ($status ==
'0' || $status ==
'ST_NEVER') {
4862 return img_action($langs->trans(
"StatusProspect0"),
'0', $picto,
'class="inline-block valignmiddle"');
4863 } elseif ($status ==
'1' || $status ==
'ST_TODO') {
4864 return img_action($langs->trans(
"StatusProspect1"),
'1', $picto,
'class="inline-block valignmiddle"');
4865 } elseif ($status ==
'2' || $status ==
'ST_PEND') {
4866 return img_action($langs->trans(
"StatusProspect2"),
'2', $picto,
'class="inline-block valignmiddle"');
4867 } elseif ($status ==
'3' || $status ==
'ST_DONE') {
4868 return img_action($langs->trans(
"StatusProspect3"),
'3', $picto,
'class="inline-block valignmiddle"');
4870 return img_action(($langs->trans(
"StatusProspect".$status) !=
"StatusProspect".$status) ? $langs->trans(
"StatusProspect".$status) : $label,
'0', $picto,
'class="inline-block valignmiddle"');
4872 } elseif ($mode == 4) {
4873 if ($status ==
'-1' || $status ==
'ST_NO') {
4874 return img_action($langs->trans(
"StatusProspect-1"),
'-1', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect-1");
4875 } elseif ($status ==
'0' || $status ==
'ST_NEVER') {
4876 return img_action($langs->trans(
"StatusProspect0"),
'0', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect0");
4877 } elseif ($status ==
'1' || $status ==
'ST_TODO') {
4878 return img_action($langs->trans(
"StatusProspect1"),
'1', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect1");
4879 } elseif ($status ==
'2' || $status ==
'ST_PEND') {
4880 return img_action($langs->trans(
"StatusProspect2"),
'2', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect2");
4881 } elseif ($status ==
'3' || $status ==
'ST_DONE') {
4882 return img_action($langs->trans(
"StatusProspect3"),
'3', $picto,
'class="inline-block valignmiddle"').
' '.$langs->trans(
"StatusProspect3");
4884 return img_action(($langs->trans(
"StatusProspect".$status) !=
"StatusProspect".$status) ? $langs->trans(
"StatusProspect".$status) : $label,
'0', $picto,
'class="inline-block valignmiddle"').
' '.(($langs->trans(
"StatusProspect".$status) !=
"StatusProspect".$status) ? $langs->trans(
"StatusProspect".$status) : $label);
4888 return "Error, mode/status not found";
4900 if ($mode ==
'supplier') {
4901 $table =
'supplier_proposal';
4904 $sql =
"SELECT rowid, ref, total_ht, total_ttc, fk_statut as status FROM ".MAIN_DB_PREFIX.$table.
" as f";
4905 $sql .=
" WHERE fk_soc = ".((int) $this->
id);
4906 if ($mode ==
'supplier') {
4907 $sql .=
" AND entity IN (".getEntity(
'supplier_proposal').
")";
4909 $sql .=
" AND entity IN (".getEntity(
'propal').
")";
4912 dol_syslog(
"getOutstandingProposals for fk_soc = ".((
int) $this->
id), LOG_DEBUG);
4914 $resql = $this->db->query($sql);
4916 $outstandingOpened = 0;
4917 $outstandingTotal = 0;
4918 $outstandingTotalIncTax = 0;
4919 $arrayofref = array();
4920 while ($obj = $this->db->fetch_object($resql)) {
4921 $arrayofref[$obj->rowid] = $obj->ref;
4922 $outstandingTotal += $obj->total_ht;
4923 $outstandingTotalIncTax += $obj->total_ttc;
4924 if ($obj->status != 0) {
4926 $outstandingOpened += $obj->total_ttc;
4929 return array(
'opened' => $outstandingOpened,
'total_ht' => $outstandingTotal,
'total_ttc' => $outstandingTotalIncTax,
'refs' => $arrayofref);
4943 $table =
'commande';
4944 if ($mode ==
'supplier') {
4945 $table =
'commande_fournisseur';
4948 $sql =
"SELECT rowid, ref, total_ht, total_ttc, fk_statut as status FROM ".MAIN_DB_PREFIX.$table.
" as f";
4949 $sql .=
" WHERE fk_soc = ".((int) $this->
id);
4950 if ($mode ==
'supplier') {
4951 $sql .=
" AND entity IN (".getEntity(
'supplier_order').
")";
4953 $sql .=
" AND entity IN (".getEntity(
'commande').
")";
4956 dol_syslog(
"getOutstandingOrders", LOG_DEBUG);
4957 $resql = $this->db->query($sql);
4959 $outstandingOpened = 0;
4960 $outstandingTotal = 0;
4961 $outstandingTotalIncTax = 0;
4962 $arrayofref = array();
4963 while ($obj = $this->db->fetch_object($resql)) {
4964 $arrayofref[$obj->rowid] = $obj->ref;
4965 $outstandingTotal += $obj->total_ht;
4966 $outstandingTotalIncTax += $obj->total_ttc;
4967 if ($obj->status != 0) {
4969 $outstandingOpened += $obj->total_ttc;
4972 return array(
'opened' => $outstandingOpened,
'total_ht' => $outstandingTotal,
'total_ttc' => $outstandingTotalIncTax,
'refs' => $arrayofref);
4988 if ($mode ==
'supplier') {
4989 $table =
'facture_fourn';
4999 $sql =
"SELECT rowid, ref, total_ht, total_ttc, paye, type, fk_statut as status, close_code FROM ".MAIN_DB_PREFIX.$table.
" as f";
5000 $sql .=
" WHERE fk_soc = ".((int) $this->
id);
5001 if (!empty($late)) {
5002 $sql .=
" AND date_lim_reglement < '".$this->db->idate(
dol_now()).
"'";
5004 if ($mode ==
'supplier') {
5005 $sql .=
" AND entity IN (".getEntity(
'facture_fourn').
")";
5007 $sql .=
" AND entity IN (".getEntity(
'invoice').
")";
5010 dol_syslog(
"getOutstandingBills", LOG_DEBUG);
5011 $resql = $this->db->query($sql);
5013 $outstandingOpened = 0;
5014 $outstandingTotal = 0;
5015 $outstandingTotalIncTax = 0;
5016 $arrayofref = array();
5017 $arrayofrefopened = array();
5018 if ($mode ==
'supplier') {
5019 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
5022 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
5023 $tmpobject =
new Facture($this->db);
5025 while ($obj = $this->db->fetch_object($resql)) {
5026 $arrayofref[$obj->rowid] = $obj->ref;
5027 $tmpobject->id = $obj->rowid;
5029 if ($obj->status != $tmpobject::STATUS_DRAFT
5030 && !($obj->status == $tmpobject::STATUS_ABANDONED && $obj->close_code ==
'replaced')
5032 $outstandingTotal += $obj->total_ht;
5033 $outstandingTotalIncTax += $obj->total_ttc;
5039 && $obj->status != $tmpobject::STATUS_DRAFT
5040 && $obj->status != $tmpobject::STATUS_ABANDONED
5041 && $obj->status != $tmpobject::STATUS_CLOSED) {
5043 $paiement = $tmpobject->getSommePaiement();
5044 $creditnotes = $tmpobject->getSumCreditNotesUsed();
5045 $deposits = $tmpobject->getSumDepositsUsed();
5047 $remaintopay = ($obj->total_ttc - $paiement - $creditnotes - $deposits);
5048 $outstandingOpened += $remaintopay;
5054 $remainingcreditnote = $tmpobject->getSumFromThisCreditNotesNotUsed();
5055 $remaintopay -= $remainingcreditnote;
5056 $outstandingOpened -= $remainingcreditnote;
5060 $arrayofrefopened[$obj->rowid] = $obj->ref;
5063 return array(
'opened' => $outstandingOpened,
'total_ht' => $outstandingTotal,
'total_ttc' => $outstandingTotalIncTax,
'refs' => $arrayofref,
'refsopened' => $arrayofrefopened);
5065 dol_syslog(
"Sql error ".$this->db->lasterror, LOG_ERR);
5092 $langs->load(
'companies');
5095 return $langs->trans(
"NorProspectNorCustomer");
5096 } elseif ($status == 1) {
5097 return $langs->trans(
"Customer");
5098 } elseif ($status == 2) {
5099 return $langs->trans(
"Prospect");
5100 } elseif ($status == 3) {
5101 return $langs->trans(
"ProspectCustomer");
5119 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
5123 if (!empty($moreparams) && !empty($moreparams[
'use_companybankid'])) {
5124 $modelpath =
"core/modules/bank/doc/";
5126 include_once DOL_DOCUMENT_ROOT.
'/societe/class/companybankaccount.class.php';
5128 $result = $companybankaccount->fetch($moreparams[
'use_companybankid']);
5130 dol_print_error($this->db, $companybankaccount->error, $companybankaccount->errors);
5132 $result = $companybankaccount->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
5133 $this->last_main_doc = $companybankaccount->last_main_doc;
5140 print $langs->trans(
"Error").
" ".$langs->trans(
"Error_COMPANY_ADDON_PDF_NotDefined");
5145 if (!isset($this->bank_account)) {
5146 require_once DOL_DOCUMENT_ROOT.
'/societe/class/companybankaccount.class.php';
5149 $result = $bac->fetch(0,
'', $this->
id);
5151 $this->bank_account = $bac;
5153 $this->bank_account =
'';
5157 $modelpath =
"core/modules/societe/doc/";
5159 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
5179 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
5182 if (!in_array($type_categ, array(Categorie::TYPE_CUSTOMER, Categorie::TYPE_SUPPLIER))) {
5183 dol_syslog(__METHOD__.
': Type '.$type_categ.
'is an unknown company category type. Done nothing.', LOG_ERR);
5187 return parent::setCategoriesCommon($categories, $type_categ);
5202 if (!is_array($salesrep)) {
5203 $salesrep = array($salesrep);
5207 $to_add = $salesrep;
5208 if ($onlyAdd ===
false) {
5213 if (is_array($existing)) {
5214 $to_del = array_diff($existing, $salesrep);
5215 $to_add = array_diff($salesrep, $existing);
5222 foreach ($to_del as $del) {
5225 foreach ($to_add as $add) {
5233 return $error ? -1 : 1;
5249 $result = $this->
setValueFrom(
'fk_typent', $typent_id,
'',
null,
'',
'', $user,
'COMPANY_MODIFY');
5252 $this->typent_id = $typent_id;
5253 $this->typent_code =
dol_getIdFromCode($this->db, $this->typent_id,
'c_typent',
'id',
'code');
5274 if ($origin_id == $dest_id) {
5275 dol_syslog(
'Error: Try to merge a thirdparty into itself');
5281 $sql =
'SELECT rowid FROM '.MAIN_DB_PREFIX.
'societe_commerciaux ';
5282 $sql .=
' WHERE fk_soc = '.(int) $dest_id.
' AND fk_user IN ( ';
5283 $sql .=
' SELECT fk_user ';
5284 $sql .=
' FROM '.MAIN_DB_PREFIX.
'societe_commerciaux ';
5285 $sql .=
' WHERE fk_soc = '.(int) $origin_id.
') ';
5287 $resql = $dbs->
query($sql);
5289 $dbs->
query(
'DELETE FROM '.MAIN_DB_PREFIX.
'societe_commerciaux WHERE rowid = '.((
int) $obj->rowid));
5296 'societe_commerciaux',
5299 'societe_remise_except',
5318 global $user, $langs,
$conf;
5322 if ($type ==
'buy') {
5323 $field =
'accountancy_code_buy';
5324 } elseif ($type ==
'sell') {
5325 $field =
'accountancy_code_sell';
5330 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element.
" SET ";
5331 $sql .= $field.
" = '".$this->db->escape($value).
"'";
5332 $sql .=
" WHERE rowid = ".((int) $this->
id);
5334 dol_syslog(get_class($this).
"::".__FUNCTION__, LOG_DEBUG);
5335 $resql = $this->db->query($sql);
5339 include_once DOL_DOCUMENT_ROOT.
'/core/class/interfaces.class.php';
5341 $result = $interface->run_triggers(
'COMPANY_MODIFY', $this, $user, $langs,
$conf);
5343 $this->errors = $interface->errors;
5344 $this->db->rollback();
5349 $this->$field = $value;
5351 $this->db->commit();
5354 $this->error = $this->db->lasterror();
5355 $this->db->rollback();
5368 require_once DOL_DOCUMENT_ROOT.
'/partnership/class/partnership.class.php';
5370 $this->partnerships[] = array();
5384 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
5386 $return =
'<div class="box-flex-item box-flex-grow-zero">';
5387 $return .=
'<div class="info-box info-box-sm">';
5388 $return .=
'<span class="info-box-icon bg-infobox-action">';
5390 $return .=
'</span>';
5391 $return .=
'<div class="info-box-content">';
5392 $return .=
'<div class="info-box-ref inline-block tdoverflowmax125 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(1) : $this->ref);
5393 $return .=
'</div>';
5394 if (!empty($this->phone)) {
5395 $return .=
'<div class="inline-block valignmiddle">';
5397 $return .=
dol_print_phone($this->phone, $this->country_code, 0, $this->
id,
'tel',
'hidenum',
'phone', $this->phone, 0,
'paddingleft paddingright');
5398 $return .=
'</div>';
5400 if (!empty($this->
email)) {
5401 $return .=
'<div class="inline-block valignmiddle">';
5402 $return .=
dol_print_email($this->
email, 0, $this->
id,
'thirdparty', -1, 1, 2,
'paddingleft paddingright');
5403 $return .=
'</div>';
5405 if ($selected >= 0) {
5406 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
5408 if (property_exists($this,
'code_client')) {
5409 $return .=
'<br><span class="info-box-label opacitymedium">'.$this->code_client.
'</span>';
5411 if (method_exists($this,
'getLibStatut')) {
5412 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
5414 $return .=
'</div>';
5415 $return .=
'</div>';
5416 $return .=
'</div>';
5437 $sql =
"SELECT sc.rowid, sc.fk_socpeople as id, sc.fk_c_type_contact";
5438 $sql .=
", t.fk_soc as socid, t.statut as statuscontact";
5439 $sql .=
", t.civility as civility, t.lastname as lastname, t.firstname, t.email";
5440 $sql .=
", tc.source, tc.element, tc.code, tc.libelle as type_label";
5441 $sql .=
" FROM ".$this->db->prefix().
"c_type_contact tc";
5442 $sql .=
", ".$this->db->prefix().
"societe_contacts sc";
5443 $sql .=
" LEFT JOIN ".$this->db->prefix().
"socpeople t on sc.fk_socpeople = t.rowid";
5444 $sql .=
" WHERE sc.fk_soc = ".((int) $this->
id);
5445 $sql .=
" AND sc.fk_c_type_contact = tc.rowid";
5446 if (!empty($element)) {
5447 $sql .=
" AND tc.element = '".$this->db->escape($element).
"'";
5450 $sql .=
" AND tc.code = '".$this->db->escape($code).
"'";
5452 $sql .=
" AND sc.entity IN (".getEntity($this->element).
")";
5453 $sql .=
" AND tc.source = 'external'";
5454 $sql .=
" AND tc.active = 1";
5456 $sql .=
" ORDER BY t.lastname ASC";
5458 dol_syslog(get_class($this).
"::getContacts", LOG_DEBUG);
5459 $resql = $this->db->query($sql);
5461 $num = $this->db->num_rows($resql);
5464 $obj = $this->db->fetch_object($resql);
5467 $transkey =
"TypeContact_".$obj->element.
"_".$obj->source.
"_".$obj->code;
5468 $libelle_type = ($langs->trans($transkey) != $transkey ? $langs->trans($transkey) : $obj->type_label);
5470 'source' => $obj->source,
5471 'socid' => $obj->socid,
5473 'nom' => $obj->lastname,
5474 'civility' => $obj->civility,
5475 'lastname' => $obj->lastname,
5476 'firstname' => $obj->firstname,
5477 'email' => $obj->email,
5478 'login' => (empty($obj->login) ?
'' : $obj->login),
5479 'photo' => (empty($obj->photo) ?
'' : $obj->photo),
5480 'statuscontact' => $obj->statuscontact,
5481 'rowid' => $obj->rowid,
5482 'code' => $obj->code,
5483 'element' => $obj->element,
5484 'libelle' => $libelle_type,
5485 'status' => $obj->statuslink,
5486 'fk_c_type_contact' => $obj->fk_c_type_contact
5489 $tab[$i] = $obj->id;
5497 $this->error = $this->db->lasterror();
5515 global
$conf, $langs, $hookmanager, $user, $action;
5518 $soc_origin =
new Societe($this->db);
5520 dol_syslog(
"mergeCompany merge thirdparty id=".$soc_origin_id.
" (will be deleted) into the thirdparty id=".$this->id);
5522 if (!$error && $soc_origin->fetch($soc_origin_id) < 1) {
5523 $this->error = $langs->trans(
'ErrorRecordNotFound');
5531 $this->client |= $soc_origin->client;
5532 $this->fournisseur |= $soc_origin->fournisseur;
5533 $listofproperties = array(
5534 'address',
'zip',
'town',
'state_id',
'country_id',
'phone',
'phone_mobile',
'fax',
'email',
'socialnetworks',
'url',
'barcode',
5535 'idprof1',
'idprof2',
'idprof3',
'idprof4',
'idprof5',
'idprof6',
5536 'tva_intra',
'effectif_id',
'forme_juridique',
'remise_percent',
'remise_supplier_percent',
'mode_reglement_supplier_id',
'cond_reglement_supplier_id',
'name_bis',
5537 'stcomm_id',
'outstanding_limit',
'order_min_amount',
'supplier_order_min_amount',
'price_level',
'parent',
'default_lang',
'ref',
'ref_ext',
'import_key',
'fk_incoterms',
'fk_multicurrency',
5538 'code_client',
'code_fournisseur',
'code_compta',
'code_compta_fournisseur',
5539 'model_pdf',
'webservices_url',
'webservices_key',
'accountancy_code_sell',
'accountancy_code_buy',
'typent_id'
5541 foreach ($listofproperties as $property) {
5542 if (empty($this->$property)) {
5543 $this->$property = $soc_origin->$property;
5547 if ($this->typent_id == -1) {
5548 $this->typent_id = $soc_origin->typent_id;
5552 $listofproperties = array(
5553 'note_public',
'note_private'
5555 foreach ($listofproperties as $property) {
5556 $this->$property =
dol_concatdesc($this->$property, $soc_origin->$property);
5560 if (is_array($soc_origin->array_options)) {
5561 foreach ($soc_origin->array_options as $key => $val) {
5562 if (empty($this->array_options[$key])) {
5563 $this->array_options[$key] = $val;
5569 if (empty($this->name_bis) && $this->
name != $soc_origin->name) {
5570 $this->name_bis = $this->name;
5574 include_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
5577 $custcats_ori = $static_cat->containing($soc_origin->id,
'customer',
'id');
5578 $custcats = $static_cat->containing($this->
id,
'customer',
'id');
5579 $custcats = array_merge($custcats, $custcats_ori);
5582 $suppcats_ori = $static_cat->containing($soc_origin->id,
'supplier',
'id');
5583 $suppcats = $static_cat->containing($this->
id,
'supplier',
'id');
5584 $suppcats = array_merge($suppcats, $suppcats_ori);
5588 if ($soc_origin->code_client == $this->code_client
5589 || $soc_origin->code_fournisseur == $this->code_fournisseur
5590 || $soc_origin->barcode == $this->barcode) {
5591 dol_syslog(
"We clean customer and supplier code so we will be able to make the update of target");
5592 $soc_origin->code_client =
'';
5593 $soc_origin->code_fournisseur =
'';
5594 $soc_origin->barcode =
'';
5595 $soc_origin->update($soc_origin->id, $user, 0, 1, 1,
'merge');
5599 $result = $this->
update($this->
id, $user, 0, 1, 1,
'merge');
5608 'Adherent' =>
'/adherents/class/adherent.class.php',
5610 'ActionComm' =>
'/comm/action/class/actioncomm.class.php',
5611 'Propal' =>
'/comm/propal/class/propal.class.php',
5612 'Commande' =>
'/commande/class/commande.class.php',
5613 'Facture' =>
'/compta/facture/class/facture.class.php',
5614 'FactureRec' =>
'/compta/facture/class/facture-rec.class.php',
5615 'LignePrelevement' =>
'/compta/prelevement/class/ligneprelevement.class.php',
5616 'Contact' =>
'/contact/class/contact.class.php',
5617 'Contrat' =>
'/contrat/class/contrat.class.php',
5618 'Expedition' =>
'/expedition/class/expedition.class.php',
5619 'CommandeFournisseur' =>
'/fourn/class/fournisseur.commande.class.php',
5620 'FactureFournisseur' =>
'/fourn/class/fournisseur.facture.class.php',
5621 'FactureFournisseurRec' =>
'/fourn/class/fournisseur.facture-rec.class.php',
5622 'Reception' =>
'/reception/class/reception.class.php',
5623 'SupplierProposal' =>
'/supplier_proposal/class/supplier_proposal.class.php',
5624 'ProductFournisseur' =>
'/fourn/class/fournisseur.product.class.php',
5625 'Product' =>
'/product/class/product.class.php',
5627 'Project' =>
'/projet/class/project.class.php',
5628 'User' =>
'/user/class/user.class.php',
5629 'Account' =>
'/compta/bank/class/account.class.php',
5630 'ConferenceOrBoothAttendee' =>
'/eventorganization/class/conferenceorboothattendee.class.php',
5631 'Societe' =>
'/societe/class/societe.class.php',
5634 if ($this->db->DDLListTables(
$conf->db->name, $this->db->prefix().
'delivery')) {
5635 $objects[
'Delivery'] =
'/delivery/class/delivery.class.php';
5637 if ($this->db->DDLListTables(
$conf->db->name, $this->db->prefix().
'mrp_mo')) {
5638 $objects[
'Mo'] =
'/mrp/class/mo.class.php';
5640 if ($this->db->DDLListTables(
$conf->db->name, $this->db->prefix().
'don')) {
5641 $objects[
'Don'] =
'/don/class/don.class.php';
5643 if ($this->db->DDLListTables(
$conf->db->name, $this->db->prefix().
'partnership')) {
5644 $objects[
'PartnerShip'] =
'/partnership/class/partnership.class.php';
5646 if ($this->db->DDLListTables(
$conf->db->name, $this->db->prefix().
'fichinter')) {
5647 $objects[
'Fichinter'] =
'/fichinter/class/fichinter.class.php';
5649 if ($this->db->DDLListTables(
$conf->db->name, $this->db->prefix().
'ticket')) {
5650 $objects[
'Ticket'] =
'/ticket/class/ticket.class.php';
5654 foreach ($objects as $object_name => $object_file) {
5664 require_once DOL_DOCUMENT_ROOT.$object_file;
5666 if (!$error && !$object_name::replaceThirdparty($this->db, $soc_origin->id, $this->id)) {
5668 $this->error = $this->db->lasterror();
5676 $parameters = array(
'soc_origin' => $soc_origin->id,
'soc_dest' => $this->id);
5677 $reshook = $hookmanager->executeHooks(
'replaceThirdparty', $parameters, $this, $action);
5680 $this->error = $hookmanager->error;
5681 $this->errors = $hookmanager->errors;
5688 $this->context = array(
'merge' => 1,
'mergefromid' => $soc_origin->id,
'mergefromname' => $soc_origin->name);
5691 $result = $this->
call_trigger(
'COMPANY_MODIFY', $user);
5700 if (!empty(
$conf->societe->multidir_output[$this->entity])) {
5701 $srcdir =
$conf->societe->multidir_output[$this->entity].
"/".$soc_origin->id;
5702 $destdir =
$conf->societe->multidir_output[$this->entity].
"/".$this->id;
5706 foreach ($dirlist as $filetomove) {
5707 $destfile = $destdir.
'/'.$filetomove[
'relativename'];
5709 dol_move($filetomove[
'fullname'], $destfile,
'0', 0, 0, 1);
5719 if ($soc_origin->delete($soc_origin->id, $user) < 1) {
5720 $this->error = $soc_origin->error;
5721 $this->errors = $soc_origin->errors;
5727 $this->db->commit();
5730 $langs->load(
"errors");
5731 $this->error = $langs->trans(
'ErrorsThirdpartyMerge');
5732 $this->db->rollback();
Class to manage members of a foundation.
Class to manage withdrawal receipts.
Class to manage categories.
Parent class of all other business classes (invoices, contracts, proposals, orders,...
fetch_optionals($rowid=null, $optionsArray=null)
Function to get extra fields of an object into $this->array_options This method is in most cases call...
commonGenerateDocument($modelspath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams=null)
Common function for all objects extending CommonObject for generating documents.
setErrorsFromObject($object)
setErrorsFromObject
isObjectUsed($id=0, $entity=0)
Function to check if an object is used by others (by children).
deleteExtraFields()
Delete all extra fields values for the current object.
insertExtraLanguages($trigger='', $userused=null)
Add/Update all extra fields values for the current object.
static commonReplaceThirdparty(DoliDB $dbs, $origin_id, $dest_id, array $tables, $ignoreerrors=0)
Function used to replace a thirdparty id with another one.
setValueFrom($field, $value, $table='', $id=null, $format='', $id_field='', $fuser=null, $trigkey='', $fk_user_field='fk_user_modif')
Setter generic.
insertExtraFields($trigger='', $userused=null)
Add/Update all extra fields values for the current object.
call_trigger($triggerName, $user)
Call trigger based on this instance.
Class to manage bank accounts description of third parties.
Class to stock current configuration.
Class to manage absolute discounts.
Class to manage Dolibarr database access.
Class to manage suppliers invoices.
const TYPE_CREDIT_NOTE
Credit note invoice.
Class to manage invoices.
Class to manage triggers.
static getIdFromCode($dbs, $code)
Get id of currency from code.
Class to manage third parties objects (customers, suppliers, prospects...)
setParent($id)
Define parent company of current company.
getLibProspLevel()
Return prostect level.
thirdparty_and_contact_email_array($addthirdparty=0)
Return list of contacts emails existing for third party.
setAsCustomer()
Define third party as a customer.
findNearest($rowid=0, $ref='', $ref_ext='', $barcode='', $idprof1='', $idprof2='', $idprof3='', $idprof4='', $idprof5='', $idprof6='', $email='', $ref_alias='', $is_client=0, $is_supplier=0)
Search the thirdparty that match the most the provided parameters.
codefournisseur_modifiable()
Check if a vendor code is editable in the code control module configuration.
contact_get_property($rowid, $mode)
Return property of contact from its id.
check_codeclient()
Check customer code.
verify()
Check properties of third party are ok (like name, third party codes, ...) Used before an add or upda...
getContacts($list=0, $code='', $element='')
Get array of all contacts for a society (stored in societe_contacts instead of element_contacts for a...
LibProspCommStatut($status, $mode=0, $label='', $picto='')
Return label of a given status.
static replaceThirdparty(DoliDB $dbs, $origin_id, $dest_id)
Function used to replace a thirdparty id with another one.
get_all_rib()
Return Array of RIB.
get_codecompta($type)
Assigns a accounting code from the accounting code module.
__construct($db)
Constructor.
del_commercial(User $user, $commid)
Add link to sales representative.
info($id)
Load information for tab info.
has_projects()
Indicates if the company has projects.
setThirdpartyType($typent_id)
Define third-party type of current company.
isACompany()
Check if third party is a company (Business) or an end user (Consumer)
getOutstandingBills($mode='customer', $late=0)
Return amount of bill not yet paid and total of all invoices.
add_commercial(User $user, $commid)
Add link to sales representative.
LibStatut($status, $mode=0)
Return the label of a given status.
update($id, User $user, $call_trigger=1, $allowmodcodeclient=0, $allowmodcodefournisseur=0, $action='update', $nosyncmember=1)
Update parameters of third party.
const PROSPECT
Third party type is a prospect.
create(User $user, $notrigger=0)
Create third party in database.
set_as_client()
Define third party as a customer.
getOutstandingOrders($mode='customer')
Return amount of order not yet paid and total and list of all orders.
id_prof_exists($idprof, $value, $socid=0)
Verify if a profid exists into database for others thirds.
setCategories($categories, $type_categ)
Sets object to supplied categories.
useRevenueStamp()
Check if we must use revenue stamps feature or not according to country (country of $mysocin most cas...
setNoEmail($no_email)
Set "blacklist" mailing status.
id_prof_verifiable($idprof)
Returns if a profid should be verified to be unique.
create_from_member(Adherent $member, $socname='', $socalias='', $customercode='')
Create a third party into database from a member object.
getParentsForCompany($company_id, $parents=array())
Get parents for company.
set_remise_except($remise, User $user, $desc, $vatrate='', $discount_type=0, $price_base_type='HT')
Add a discount for third party.
const CUSTOMER_AND_PROSPECT
Third party type is a customer and a prospect.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
set_remise_client($remise, $note, User $user)
Defines the company as a customer.
getOutstandingProposals($mode='customer')
Return amount of proposal not yet paid and total an dlist of all proposals.
const CUSTOMER
Third party type is a customer.
fetch($rowid, $ref='', $ref_ext='', $barcode='', $idprof1='', $idprof2='', $idprof3='', $idprof4='', $idprof5='', $idprof6='', $email='', $ref_alias='', $is_client=0, $is_supplier=0)
Load a third party from database into memory.
getSalesRepresentatives(User $user, $mode=0, $sortfield=null, $sortorder=null)
Return array of sales representatives.
LoadSupplierCateg()
Load the list of provider categories.
getAvailableDiscounts($user=null, $filter='', $maxvalue=0, $discount_type=0)
Returns amount of included taxes of the current discounts/credits available from the company.
display_rib($mode='label')
Return bank number property of thirdparty (label or rum)
contact_array_objects()
Return the contact list of this company.
isInEEC()
Return if a company is inside the EEC (European Economic Community)
codeclient_modifiable()
Check if a client code is editable based on the parameters of the code control module.
fetchPartnerships($mode)
Function to get partnerships array.
validateFamilyTree($idparent, $idchild, $counter=0)
Check if a thirdparty $idchild is or not inside the parents (or grand parents) of another thirdparty ...
mergeCompany($soc_origin_id)
Merge a company with current one, deleting the given company $soc_origin_id.
const NO_SUPPLIER
Third party supplier flag is not supplier.
getNbOfEMailings()
Return number of mass Emailing received by this contacts with its email.
setAccountancyCode($type, $value)
Sets an accountancy code for a thirdparty.
getLibCustProspStatut()
Return label of status customer is prospect/customer.
getNomUrl($withpicto=0, $option='', $maxlen=0, $notooltip=0, $save_lastsearch_value=-1, $noaliasinname=0, $target='', $morecss='')
Return a link on thirdparty (with picto)
getLibStatut($mode=0)
Return label of status (activity, closed)
const NO_CUSTOMER
Third party type is no customer.
LibProspLevel($fk_prospectlevel)
Return label of prospect level.
set_remise_supplier($remise, $note, User $user)
Defines the company as a customer.
useLocalTax($localTaxNum=0)
Check if we must use localtax feature or not according to country (country of $mysoc in most cases).
create_individual(User $user, $no_email=0, $tags=array(), $notrigger=0)
Create a contact/address from thirdparty.
getNoEmail()
get "blacklist" mailing status set no_email attribute to 1 or 0
getLibProspCommStatut($mode=0, $label='')
Return status of prospect.
AddFournisseurInCategory($categorie_id)
Insert link supplier - category.
contact_property_array($mode='email', $hidedisabled=0)
Return list of contacts emails or mobile existing for third party.
LibCustProspStatut($status)
Return the label of the customer/prospect status.
id_prof_check($idprof, $soc)
Check the validity of a professional identifier according to the country of the company (siren,...
getTypeUrl($withpicto=0, $option='', $notooltip=0, $tag='a')
Return link(s) on type of thirdparty (with picto)
setPriceLevel($price_level, User $user)
Set the price level.
thirdparty_and_contact_phone_array()
Return list of contacts mobile phone existing for third party.
deprecatedProperties()
Provide list of deprecated properties and replacements.
getTooltipContentArray($params)
getTooltipContentArray
useNPR()
Check if we must use NPR Vat (french stupid rule) or not according to country (country of $mysoc in m...
setSalesRep($salesrep, $onlyAdd=false)
Sets sales representatives of the thirdparty.
getKanbanView($option='', $arraydata=array())
Return clickable link of object (with optional picto)
const SUPPLIER
Third party supplier flag is a supplier.
check_codefournisseur()
Check supplier code.
contact_array()
Return the contact list of this company.
initAsSpecimen()
Initialise an instance with random values.
id_prof_url($idprof, $thirdparty)
Return an url to check online a professional id or empty string.
setMysoc(Conf $conf)
Set properties with value into $conf.
Class to manage Dolibarr users.
print $langs trans("Ref").' m titre as m m statut as status
Or an array listing all the potential status of the object: array: int of the status => translated la...
setUpperOrLowerCase()
Set to upper or ucwords/lower if needed.
trait CommonSocialNetworks
Superclass for social networks.
getCountry($searchkey, $withcode='', $dbtouse=null, $outputlangs=null, $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
getState($id, $withcode='0', $dbtouse=null, $withregion=0, $outputlangs=null, $entconv=1)
Return state translated from an id.
print $script_file $mode $langs defaultlang(is_numeric($duration_value) ? " delay=". $duration_value :"").(is_numeric($duration_value2) ? " after cd cd cd description as p label as s rowid as s nom as s email
Sender: Who sends the email ("Sender" has sent emails on behalf of "From").
dol_delete_dir_recursive($dir, $count=0, $nophperrors=0, $onlysub=0, &$countdeleted=0, $indexdatabase=1, $nolog=0)
Remove a directory $dir and its subdirectories (or only files and subdirectories)
dol_move($srcfile, $destfile, $newmask='0', $overwriteifexists=1, $testvirus=0, $indexdatabase=1, $moreinfo=array())
Move a file into another name.
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
dol_is_dir($folder)
Test if filename is a directory.
clean_url($url, $http=1)
Clean an url string.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
setEntity($currentobject)
Set entity id to use when to create an object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_format_address($object, $withcountry=0, $sep="\n", $outputlangs=null, $mode=0, $extralangcode='')
Return a formatted address (part address/zip/town/state) according to country rules.
dol_print_phone($phone, $countrycode='', $cid=0, $socid=0, $addlink='', $separ=" ", $withpicto='', $titlealt='', $adddivfloat=0, $morecss='paddingright')
Format phone numbers according to country.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_string_nospecial($str, $newstr='_', $badcharstoreplace='', $badcharstoremove='', $keepspaces=0)
Clean a string from all punctuation characters to use it as a ref or login.
img_action($titlealt, $numaction, $picto='', $moreatt='')
Show logo action.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0, $attop=0)
Set event message in dol_events session object.
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_getIdFromCode($db, $key, $tablename, $fieldkey='code', $fieldid='id', $entityfilter=0, $filters='')
Return an id or code from a code or id.
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
dolGetFirstLastname($firstname, $lastname, $nameorder=-1)
Return firstname and lastname in correct order.
dol_concatdesc($text1, $text2, $forxml=false, $invert=false)
Concat 2 descriptions with a new line between them (second operand after first one with appropriate n...
dol_print_email($email, $cid=0, $socid=0, $addlink=0, $max=64, $showinvalid=1, $withpicto=0, $morecss='paddingrightonly')
Show EMail link formatted for HTML output.
dolGetStatus($statusLabel='', $statusLabelShort='', $html='', $statusType='status0', $displayMode=0, $url='', $params=array())
Output the badge of a status.
dol_substr($string, $start, $length=null, $stringencoding='', $trunconbytes=0)
Make a substring.
getDolGlobalBool($key, $default=false)
Return a Dolibarr global constant boolean value.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
isValidEmail($address, $acceptsupervisorkey=0, $acceptuserkey=0)
Return true if email syntax is ok.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
getEntity($element, $shared=1, $currentobject=null)
Get list of entity id to use.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
div refaddress div address
query($query, $usesavepoint=0, $type='auto', $result_mode=0)
Execute a SQL request and return the resultset.
fetch_object($resultset)
Returns the current line (as an object) for the resultset cursor.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
isValidSiren($siren)
Check the syntax validity of a SIREN.
isValidTinForPT($str)
Check the syntax validity of a Portuguese (PT) Tax Identification Number (TIN).
isValidSiret($siret)
Check the syntax validity of a SIRET.
isValidTinForES($str)
Check the syntax validity of a Spanish (ES) Tax Identification Number (TIN), where:
isValidTinForBE($str)
Check the syntax validity of a Belgium (BE) Tax Identification Number (TIN).
isValidTinForDZ($str)
Check the syntax validity of an Algerian (DZ) Tax Identification Number (TIN).
$conf db name
Only used if Module[ID]Name translation string is not found.