Merge branch 'develop' of github.com:Dolibarr/dolibarr into NEW_stockstransfers
This commit is contained in:
commit
60defe4108
@ -27,6 +27,8 @@ NEW: A lot of addition of hooks.
|
|||||||
|
|
||||||
|
|
||||||
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
||||||
|
* There is a new specific permission to be allowed to enter timesheets. If you use timesheet, don't forget to give the new permission (disable and
|
||||||
|
enable the module project if it is not visible).
|
||||||
* The default value for MAIN_SECURITY_CSRF_WITH_TOKEN has been set to 2. It means any POST and any GET request that contains the "action" or "massaction"
|
* The default value for MAIN_SECURITY_CSRF_WITH_TOKEN has been set to 2. It means any POST and any GET request that contains the "action" or "massaction"
|
||||||
with a value of a sensitive action must also a valid token parameter (With previous value 1, only POST was concerned). Note: With value 3, any URL
|
with a value of a sensitive action must also a valid token parameter (With previous value 1, only POST was concerned). Note: With value 3, any URL
|
||||||
with parameter "action" or "massaction" need the token, whatever is the value of the action.
|
with parameter "action" or "massaction" need the token, whatever is the value of the action.
|
||||||
|
|||||||
@ -242,7 +242,7 @@ Follow Dolibarr project on:
|
|||||||
- [Facebook](https://www.facebook.com/dolibarr)
|
- [Facebook](https://www.facebook.com/dolibarr)
|
||||||
- [Twitter](https://www.twitter.com/dolibarr)
|
- [Twitter](https://www.twitter.com/dolibarr)
|
||||||
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
|
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
|
||||||
- [Reddit](https://www.reddit.com/r/Dolibarr/)
|
- [Reddit](https://www.reddit.com/r/Dolibarr_ERP_CRM/)
|
||||||
- [YouTube](https://www.youtube.com/user/DolibarrERPCRM)
|
- [YouTube](https://www.youtube.com/user/DolibarrERPCRM)
|
||||||
- [GitHub](https://github.com/Dolibarr/dolibarr)
|
- [GitHub](https://github.com/Dolibarr/dolibarr)
|
||||||
|
|
||||||
|
|||||||
@ -300,7 +300,7 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// Edit mode
|
// Edit mode
|
||||||
if ($action == 'update') {
|
if ($action == 'update') {
|
||||||
print dol_get_fiche_head($head, 'card', $langs->trans('AccountAccounting'), 0, 'billr');
|
print dol_get_fiche_head($head, 'card', $langs->trans('AccountAccounting'), 0, 'accounting_account');
|
||||||
|
|
||||||
print '<form name="update" action="'.$_SERVER["PHP_SELF"].'" method="POST">'."\n";
|
print '<form name="update" action="'.$_SERVER["PHP_SELF"].'" method="POST">'."\n";
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
@ -368,7 +368,7 @@ if ($action == 'create') {
|
|||||||
// View mode
|
// View mode
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/accountancy/admin/account.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/accountancy/admin/account.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
|
||||||
|
|
||||||
print dol_get_fiche_head($head, 'card', $langs->trans('AccountAccounting'), -1, 'billr');
|
print dol_get_fiche_head($head, 'card', $langs->trans('AccountAccounting'), -1, 'accounting_account');
|
||||||
|
|
||||||
dol_banner_tab($object, 'ref', $linkback, 1, 'account_number', 'ref');
|
dol_banner_tab($object, 'ref', $linkback, 1, 'account_number', 'ref');
|
||||||
|
|
||||||
|
|||||||
@ -384,6 +384,7 @@ if ($search_onpurchase != '' && $search_onpurchase != '-1') {
|
|||||||
$sql .= " GROUP BY p.rowid, p.ref, p.label, p.description, p.tosell, p.tobuy, p.tva_tx,";
|
$sql .= " GROUP BY p.rowid, p.ref, p.label, p.description, p.tosell, p.tobuy, p.tva_tx,";
|
||||||
$sql .= " p.fk_product_type,";
|
$sql .= " p.fk_product_type,";
|
||||||
$sql .= ' p.tms,';
|
$sql .= ' p.tms,';
|
||||||
|
$sql .= ' aa.rowid,';
|
||||||
if (empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED)) {
|
if (empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED)) {
|
||||||
$sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export, p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export";
|
$sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export, p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export";
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -304,7 +304,7 @@ if (empty($reshook)) {
|
|||||||
$search_lettering_code = '';
|
$search_lettering_code = '';
|
||||||
$search_not_reconciled = '';
|
$search_not_reconciled = '';
|
||||||
$search_import_key = '';
|
$search_import_key = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must be after the remove filter action, before the export.
|
// Must be after the remove filter action, before the export.
|
||||||
|
|||||||
@ -259,7 +259,7 @@ if (empty($reshook)) {
|
|||||||
$search_lettering_code = '';
|
$search_lettering_code = '';
|
||||||
$search_not_reconciled = '';
|
$search_not_reconciled = '';
|
||||||
$search_import_key = '';
|
$search_import_key = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must be after the remove filter action, before the export.
|
// Must be after the remove filter action, before the export.
|
||||||
|
|||||||
@ -215,7 +215,7 @@ if (empty($reshook)) {
|
|||||||
$search_status = "";
|
$search_status = "";
|
||||||
$catid = "";
|
$catid = "";
|
||||||
$sall = "";
|
$sall = "";
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -135,7 +135,7 @@ if (empty($reshook)) {
|
|||||||
$search_note = "";
|
$search_note = "";
|
||||||
$search_amount = "";
|
$search_amount = "";
|
||||||
$search_account = "";
|
$search_account = "";
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -101,7 +101,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$defaulturl = '';
|
$defaulturl = '';
|
||||||
$defaultkey = '';
|
$defaultkey = '';
|
||||||
$defaultvalue = '';
|
$defaultvalue = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -104,50 +104,50 @@ $taborder = array(9, 15, 30, 0, 4, 3, 2, 0, 1, 8, 19, 16, 39, 27, 40, 38, 0, 5,
|
|||||||
|
|
||||||
// Name of SQL tables of dictionaries
|
// Name of SQL tables of dictionaries
|
||||||
$tabname = array();
|
$tabname = array();
|
||||||
$tabname[1] = MAIN_DB_PREFIX."c_forme_juridique";
|
$tabname[1] = "c_forme_juridique";
|
||||||
$tabname[2] = MAIN_DB_PREFIX."c_departements";
|
$tabname[2] = "c_departements";
|
||||||
$tabname[3] = MAIN_DB_PREFIX."c_regions";
|
$tabname[3] = "c_regions";
|
||||||
$tabname[4] = MAIN_DB_PREFIX."c_country";
|
$tabname[4] = "c_country";
|
||||||
$tabname[5] = MAIN_DB_PREFIX."c_civility";
|
$tabname[5] = "c_civility";
|
||||||
$tabname[6] = MAIN_DB_PREFIX."c_actioncomm";
|
$tabname[6] = "c_actioncomm";
|
||||||
$tabname[7] = MAIN_DB_PREFIX."c_chargesociales";
|
$tabname[7] = "c_chargesociales";
|
||||||
$tabname[8] = MAIN_DB_PREFIX."c_typent";
|
$tabname[8] = "c_typent";
|
||||||
$tabname[9] = MAIN_DB_PREFIX."c_currencies";
|
$tabname[9] = "c_currencies";
|
||||||
$tabname[10] = MAIN_DB_PREFIX."c_tva";
|
$tabname[10] = "c_tva";
|
||||||
$tabname[11] = MAIN_DB_PREFIX."c_type_contact";
|
$tabname[11] = "c_type_contact";
|
||||||
$tabname[12] = MAIN_DB_PREFIX."c_payment_term";
|
$tabname[12] = "c_payment_term";
|
||||||
$tabname[13] = MAIN_DB_PREFIX."c_paiement";
|
$tabname[13] = "c_paiement";
|
||||||
$tabname[14] = MAIN_DB_PREFIX."c_ecotaxe";
|
$tabname[14] = "c_ecotaxe";
|
||||||
$tabname[15] = MAIN_DB_PREFIX."c_paper_format";
|
$tabname[15] = "c_paper_format";
|
||||||
$tabname[16] = MAIN_DB_PREFIX."c_prospectlevel";
|
$tabname[16] = "c_prospectlevel";
|
||||||
$tabname[17] = MAIN_DB_PREFIX."c_type_fees";
|
$tabname[17] = "c_type_fees";
|
||||||
$tabname[18] = MAIN_DB_PREFIX."c_shipment_mode";
|
$tabname[18] = "c_shipment_mode";
|
||||||
$tabname[19] = MAIN_DB_PREFIX."c_effectif";
|
$tabname[19] = "c_effectif";
|
||||||
$tabname[20] = MAIN_DB_PREFIX."c_input_method";
|
$tabname[20] = "c_input_method";
|
||||||
$tabname[21] = MAIN_DB_PREFIX."c_availability";
|
$tabname[21] = "c_availability";
|
||||||
$tabname[22] = MAIN_DB_PREFIX."c_input_reason";
|
$tabname[22] = "c_input_reason";
|
||||||
$tabname[23] = MAIN_DB_PREFIX."c_revenuestamp";
|
$tabname[23] = "c_revenuestamp";
|
||||||
$tabname[24] = MAIN_DB_PREFIX."c_type_resource";
|
$tabname[24] = "c_type_resource";
|
||||||
$tabname[25] = MAIN_DB_PREFIX."c_type_container";
|
$tabname[25] = "c_type_container";
|
||||||
//$tabname[26]= MAIN_DB_PREFIX."c_units";
|
//$tabname[26]= "c_units";
|
||||||
$tabname[27] = MAIN_DB_PREFIX."c_stcomm";
|
$tabname[27] = "c_stcomm";
|
||||||
$tabname[28] = MAIN_DB_PREFIX."c_holiday_types";
|
$tabname[28] = "c_holiday_types";
|
||||||
$tabname[29] = MAIN_DB_PREFIX."c_lead_status";
|
$tabname[29] = "c_lead_status";
|
||||||
$tabname[30] = MAIN_DB_PREFIX."c_format_cards";
|
$tabname[30] = "c_format_cards";
|
||||||
//$tabname[31]= MAIN_DB_PREFIX."accounting_system";
|
//$tabname[31]= "accounting_system";
|
||||||
$tabname[32] = MAIN_DB_PREFIX."c_hrm_public_holiday";
|
$tabname[32] = "c_hrm_public_holiday";
|
||||||
$tabname[33] = MAIN_DB_PREFIX."c_hrm_department";
|
$tabname[33] = "c_hrm_department";
|
||||||
$tabname[34] = MAIN_DB_PREFIX."c_hrm_function";
|
$tabname[34] = "c_hrm_function";
|
||||||
$tabname[35] = MAIN_DB_PREFIX."c_exp_tax_cat";
|
$tabname[35] = "c_exp_tax_cat";
|
||||||
$tabname[36] = MAIN_DB_PREFIX."c_exp_tax_range";
|
$tabname[36] = "c_exp_tax_range";
|
||||||
$tabname[37] = MAIN_DB_PREFIX."c_units";
|
$tabname[37] = "c_units";
|
||||||
$tabname[38] = MAIN_DB_PREFIX."c_socialnetworks";
|
$tabname[38] = "c_socialnetworks";
|
||||||
$tabname[39] = MAIN_DB_PREFIX."c_prospectcontactlevel";
|
$tabname[39] = "c_prospectcontactlevel";
|
||||||
$tabname[40] = MAIN_DB_PREFIX."c_stcommcontact";
|
$tabname[40] = "c_stcommcontact";
|
||||||
$tabname[41] = MAIN_DB_PREFIX."c_transport_mode";
|
$tabname[41] = "c_transport_mode";
|
||||||
$tabname[42] = MAIN_DB_PREFIX."c_product_nature";
|
$tabname[42] = "c_product_nature";
|
||||||
$tabname[43] = MAIN_DB_PREFIX."c_productbatch_qcstatus";
|
$tabname[43] = "c_productbatch_qcstatus";
|
||||||
$tabname[44] = MAIN_DB_PREFIX."c_asset_disposal_type";
|
$tabname[44] = "c_asset_disposal_type";
|
||||||
|
|
||||||
// Dictionary labels
|
// Dictionary labels
|
||||||
$tablib = array();
|
$tablib = array();
|
||||||
@ -209,7 +209,7 @@ $tabsql[8] = "SELECT t.id as rowid, t.code as code, t.libelle, t.fk_country as
|
|||||||
$tabsql[9] = "SELECT c.code_iso as code, c.label, c.unicode, c.active FROM ".MAIN_DB_PREFIX."c_currencies AS c";
|
$tabsql[9] = "SELECT c.code_iso as code, c.label, c.unicode, c.active FROM ".MAIN_DB_PREFIX."c_currencies AS c";
|
||||||
$tabsql[10] = "SELECT t.rowid, t.code, t.taux, t.localtax1_type, t.localtax1, t.localtax2_type, t.localtax2, c.label as country, c.code as country_code, t.fk_pays as country_id, t.recuperableonly, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c WHERE t.fk_pays=c.rowid";
|
$tabsql[10] = "SELECT t.rowid, t.code, t.taux, t.localtax1_type, t.localtax1, t.localtax2_type, t.localtax2, c.label as country, c.code as country_code, t.fk_pays as country_id, t.recuperableonly, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c WHERE t.fk_pays=c.rowid";
|
||||||
$tabsql[11] = "SELECT t.rowid as rowid, t.element, t.source, t.code, t.libelle, t.position, t.active FROM ".MAIN_DB_PREFIX."c_type_contact AS t";
|
$tabsql[11] = "SELECT t.rowid as rowid, t.element, t.source, t.code, t.libelle, t.position, t.active FROM ".MAIN_DB_PREFIX."c_type_contact AS t";
|
||||||
$tabsql[12] = "SELECT c.rowid as rowid, c.code, c.libelle, c.libelle_facture, c.nbjour, c.type_cdr, c.decalage, c.active, c.sortorder, c.entity FROM ".MAIN_DB_PREFIX."c_payment_term AS c WHERE c.entity = ".getEntity($tabname[12]);
|
$tabsql[12] = "SELECT c.rowid as rowid, c.code, c.libelle, c.libelle_facture, c.deposit_percent, c.nbjour, c.type_cdr, c.decalage, c.active, c.sortorder, c.entity FROM ".MAIN_DB_PREFIX."c_payment_term AS c WHERE c.entity = ".getEntity($tabname[12]);
|
||||||
$tabsql[13] = "SELECT c.id as rowid, c.code, c.libelle, c.type, c.active, c.entity FROM ".MAIN_DB_PREFIX."c_paiement AS c WHERE c.entity = ".getEntity($tabname[13]);
|
$tabsql[13] = "SELECT c.id as rowid, c.code, c.libelle, c.type, c.active, c.entity FROM ".MAIN_DB_PREFIX."c_paiement AS c WHERE c.entity = ".getEntity($tabname[13]);
|
||||||
$tabsql[14] = "SELECT e.rowid as rowid, e.code as code, e.label, e.price, e.organization, e.fk_pays as country_id, c.code as country_code, c.label as country, e.active FROM ".MAIN_DB_PREFIX."c_ecotaxe AS e, ".MAIN_DB_PREFIX."c_country as c WHERE e.fk_pays=c.rowid and c.active=1";
|
$tabsql[14] = "SELECT e.rowid as rowid, e.code as code, e.label, e.price, e.organization, e.fk_pays as country_id, c.code as country_code, c.label as country, e.active FROM ".MAIN_DB_PREFIX."c_ecotaxe AS e, ".MAIN_DB_PREFIX."c_country as c WHERE e.fk_pays=c.rowid and c.active=1";
|
||||||
$tabsql[15] = "SELECT rowid as rowid, code, label as libelle, width, height, unit, active FROM ".MAIN_DB_PREFIX."c_paper_format";
|
$tabsql[15] = "SELECT rowid as rowid, code, label as libelle, width, height, unit, active FROM ".MAIN_DB_PREFIX."c_paper_format";
|
||||||
@ -265,7 +265,7 @@ $tabsqlsort[17] = "code ASC";
|
|||||||
$tabsqlsort[18] = "code ASC, libelle ASC";
|
$tabsqlsort[18] = "code ASC, libelle ASC";
|
||||||
$tabsqlsort[19] = "id ASC";
|
$tabsqlsort[19] = "id ASC";
|
||||||
$tabsqlsort[20] = "code ASC, libelle ASC";
|
$tabsqlsort[20] = "code ASC, libelle ASC";
|
||||||
$tabsqlsort[21] = "code ASC, label ASC, position ASC, type_duration ASC, qty ASC";
|
$tabsqlsort[21] = "position ASC, type_duration ASC, qty ASC";
|
||||||
$tabsqlsort[22] = "code ASC, label ASC";
|
$tabsqlsort[22] = "code ASC, label ASC";
|
||||||
$tabsqlsort[23] = "country ASC, taux ASC";
|
$tabsqlsort[23] = "country ASC, taux ASC";
|
||||||
$tabsqlsort[24] = "code ASC, label ASC";
|
$tabsqlsort[24] = "code ASC, label ASC";
|
||||||
@ -303,7 +303,7 @@ $tabfield[8] = "code,libelle,country_id,country".(!empty($conf->global->SOCIETE_
|
|||||||
$tabfield[9] = "code,label,unicode";
|
$tabfield[9] = "code,label,unicode";
|
||||||
$tabfield[10] = "country_id,country,code,taux,localtax1_type,localtax1,localtax2_type,localtax2,recuperableonly,accountancy_code_sell,accountancy_code_buy,note";
|
$tabfield[10] = "country_id,country,code,taux,localtax1_type,localtax1,localtax2_type,localtax2,recuperableonly,accountancy_code_sell,accountancy_code_buy,note";
|
||||||
$tabfield[11] = "element,source,code,libelle,position";
|
$tabfield[11] = "element,source,code,libelle,position";
|
||||||
$tabfield[12] = "code,libelle,libelle_facture,nbjour,type_cdr,decalage,sortorder,entity";
|
$tabfield[12] = "code,libelle,libelle_facture,deposit_percent,nbjour,type_cdr,decalage,sortorder,entity";
|
||||||
$tabfield[13] = "code,libelle,type,entity";
|
$tabfield[13] = "code,libelle,type,entity";
|
||||||
$tabfield[14] = "code,label,price,organization,country";
|
$tabfield[14] = "code,label,price,organization,country";
|
||||||
$tabfield[15] = "code,libelle,width,height,unit";
|
$tabfield[15] = "code,libelle,width,height,unit";
|
||||||
@ -350,7 +350,7 @@ $tabfieldvalue[8] = "code,libelle,country".(!empty($conf->global->SOCIETE_SORT_O
|
|||||||
$tabfieldvalue[9] = "code,label,unicode";
|
$tabfieldvalue[9] = "code,label,unicode";
|
||||||
$tabfieldvalue[10] = "country,code,taux,localtax1_type,localtax1,localtax2_type,localtax2,recuperableonly,accountancy_code_sell,accountancy_code_buy,note";
|
$tabfieldvalue[10] = "country,code,taux,localtax1_type,localtax1,localtax2_type,localtax2,recuperableonly,accountancy_code_sell,accountancy_code_buy,note";
|
||||||
$tabfieldvalue[11] = "element,source,code,libelle,position";
|
$tabfieldvalue[11] = "element,source,code,libelle,position";
|
||||||
$tabfieldvalue[12] = "code,libelle,libelle_facture,nbjour,type_cdr,decalage,sortorder";
|
$tabfieldvalue[12] = "code,libelle,libelle_facture,deposit_percent,nbjour,type_cdr,decalage,sortorder";
|
||||||
$tabfieldvalue[13] = "code,libelle,type";
|
$tabfieldvalue[13] = "code,libelle,type";
|
||||||
$tabfieldvalue[14] = "code,label,price,organization,country";
|
$tabfieldvalue[14] = "code,label,price,organization,country";
|
||||||
$tabfieldvalue[15] = "code,libelle,width,height,unit";
|
$tabfieldvalue[15] = "code,libelle,width,height,unit";
|
||||||
@ -397,7 +397,7 @@ $tabfieldinsert[8] = "code,libelle,fk_country".(!empty($conf->global->SOCIETE_SO
|
|||||||
$tabfieldinsert[9] = "code_iso,label,unicode";
|
$tabfieldinsert[9] = "code_iso,label,unicode";
|
||||||
$tabfieldinsert[10] = "fk_pays,code,taux,localtax1_type,localtax1,localtax2_type,localtax2,recuperableonly,accountancy_code_sell,accountancy_code_buy,note";
|
$tabfieldinsert[10] = "fk_pays,code,taux,localtax1_type,localtax1,localtax2_type,localtax2,recuperableonly,accountancy_code_sell,accountancy_code_buy,note";
|
||||||
$tabfieldinsert[11] = "element,source,code,libelle,position";
|
$tabfieldinsert[11] = "element,source,code,libelle,position";
|
||||||
$tabfieldinsert[12] = "code,libelle,libelle_facture,nbjour,type_cdr,decalage,sortorder,entity";
|
$tabfieldinsert[12] = "code,libelle,libelle_facture,deposit_percent,nbjour,type_cdr,decalage,sortorder,entity";
|
||||||
$tabfieldinsert[13] = "code,libelle,type,entity";
|
$tabfieldinsert[13] = "code,libelle,type,entity";
|
||||||
$tabfieldinsert[14] = "code,label,price,organization,fk_pays";
|
$tabfieldinsert[14] = "code,label,price,organization,fk_pays";
|
||||||
$tabfieldinsert[15] = "code,label,width,height,unit";
|
$tabfieldinsert[15] = "code,label,width,height,unit";
|
||||||
@ -528,112 +528,90 @@ $tabcond[42] = !empty($conf->product->enabled);
|
|||||||
$tabcond[43] = !empty($conf->product->enabled) && !empty($conf->productbatch->enabled) && $conf->global->MAIN_FEATURES_LEVEL >= 2;
|
$tabcond[43] = !empty($conf->product->enabled) && !empty($conf->productbatch->enabled) && $conf->global->MAIN_FEATURES_LEVEL >= 2;
|
||||||
$tabcond[44] = !empty($conf->asset->enabled);
|
$tabcond[44] = !empty($conf->asset->enabled);
|
||||||
|
|
||||||
// List of help for fields
|
// List of help for fields (no more used, help is defined into tabcomplete)
|
||||||
$tabhelp = array();
|
$tabhelp = array();
|
||||||
$tabhelp[1] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[2] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[3] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[4] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[5] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[6] = array('code'=>$langs->trans("EnterAnyCode"), 'color'=>$langs->trans("ColorFormat"), 'position'=>$langs->trans("PositionIntoComboList"));
|
|
||||||
$tabhelp[7] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[8] = array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->trans("PositionIntoComboList"));
|
|
||||||
$tabhelp[9] = array('code'=>$langs->trans("EnterAnyCode"), 'unicode'=>$langs->trans("UnicodeCurrency"));
|
|
||||||
$tabhelp[10] = array('code'=>$langs->trans("EnterAnyCode"), 'taux'=>$langs->trans("SellTaxRate"), 'recuperableonly'=>$langs->trans("RecuperableOnly"), 'localtax1_type'=>$langs->trans("LocalTaxDesc"), 'localtax2_type'=>$langs->trans("LocalTaxDesc"));
|
|
||||||
$tabhelp[11] = array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->trans("PositionIntoComboList"));
|
|
||||||
$tabhelp[12] = array('code'=>$langs->trans("EnterAnyCode"), 'type_cdr'=>$langs->trans("TypeCdr", $langs->transnoentitiesnoconv("NbOfDays"), $langs->transnoentitiesnoconv("Offset"), $langs->transnoentitiesnoconv("NbOfDays"), $langs->transnoentitiesnoconv("Offset")));
|
|
||||||
$tabhelp[13] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[14] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[15] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[16] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[17] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[18] = array('code'=>$langs->trans("EnterAnyCode"), 'tracking'=>$langs->trans("UrlTrackingDesc"));
|
|
||||||
$tabhelp[19] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[20] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[21] = array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->trans("PositionIntoComboList"));
|
|
||||||
$tabhelp[22] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[23] = array('revenuestamp_type'=>'FixedOrPercent');
|
|
||||||
$tabhelp[24] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[25] = array('code'=>$langs->trans('EnterAnyCode'));
|
|
||||||
//$tabhelp[26] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[27] = array('code'=>$langs->trans("EnterAnyCode"), 'picto'=>$langs->trans("PictoHelp"));
|
|
||||||
$tabhelp[28] = array('affect'=>$langs->trans("FollowedByACounter"), 'delay'=>$langs->trans("MinimumNoticePeriod"), 'newbymonth'=>$langs->trans("NbAddedAutomatically"));
|
|
||||||
$tabhelp[29] = array('code'=>$langs->trans("EnterAnyCode"), 'percent'=>$langs->trans("OpportunityPercent"), 'position'=>$langs->trans("PositionIntoComboList"));
|
|
||||||
$tabhelp[30] = array('code'=>$langs->trans("EnterAnyCode"), 'name'=>$langs->trans("LabelName"), 'paper_size'=>$langs->trans("LabelPaperSize"));
|
|
||||||
//$tabhelp[31] = array('pcg_version'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[32] = array('code'=>$langs->trans("EnterAnyCode"), 'dayrule'=>"Keep empty for a date defined with month and day (most common case).<br>Use a keyword like 'easter', 'eastermonday', ... for a date predefined by complex rules.", 'country'=>$langs->trans("CountryIfSpecificToOneCountry"), 'year'=>$langs->trans("ZeroMeansEveryYear"));
|
|
||||||
$tabhelp[33] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[34] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[35] = array();
|
|
||||||
$tabhelp[36] = array('range_ik'=>$langs->trans('PrevRangeToThisRange'));
|
|
||||||
$tabhelp[37] = array('code'=>$langs->trans("EnterAnyCode"), 'unit_type' => $langs->trans('Measuringtype_durationDesc'), 'scale' => $langs->trans('MeasuringScaleDesc'));
|
|
||||||
$tabhelp[38] = array('code'=>$langs->trans("EnterAnyCode"), 'url' => $langs->trans('UrlSocialNetworksDesc'), 'icon' => $langs->trans('FafaIconSocialNetworksDesc'));
|
|
||||||
$tabhelp[39] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[40] = array('code'=>$langs->trans("EnterAnyCode"), 'picto'=>$langs->trans("PictoHelp"));
|
|
||||||
$tabhelp[41] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[42] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[43] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
$tabhelp[44] = array('code'=>$langs->trans("EnterAnyCode"));
|
|
||||||
|
|
||||||
// Table to store complete informations (will replace all other table). Key is table name.
|
// Table to store complete informations (will replace all other table). Key is table name.
|
||||||
$tabcomplete = array(
|
$tabcomplete = array(
|
||||||
'c_forme_juridique'=>array('picto'=>'company'),
|
'c_forme_juridique'=>array('picto'=>'company', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_departements'=>array('picto'=>'state'),
|
'c_departements'=>array('picto'=>'state', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_regions'=>array('picto'=>'region'),
|
'c_regions'=>array('picto'=>'region', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_country'=>array('picto'=>'country'),
|
'c_country'=>array('picto'=>'country', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_civility'=>array('picto'=>'contact'),
|
'c_civility'=>array('picto'=>'contact', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_actioncomm'=>array('picto'=>'action'),
|
'c_actioncomm'=>array('picto'=>'action', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'color'=>$langs->trans("ColorFormat"), 'position'=>$langs->trans("PositionIntoComboList"))),
|
||||||
'c_chargesociales'=>array('picto'=>'bill'),
|
'c_chargesociales'=>array('picto'=>'bill', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_typent'=>array('picto'=>'company'),
|
'c_typent'=>array('picto'=>'company', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->trans("PositionIntoComboList"))),
|
||||||
'c_currencies'=>array('picto'=>'multicurrency'),
|
'c_currencies'=>array('picto'=>'multicurrency', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'unicode'=>$langs->trans("UnicodeCurrency"))),
|
||||||
'c_tva'=>array('picto'=>'bill'),
|
'c_tva'=>array('picto'=>'bill', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'taux'=>$langs->trans("SellTaxRate"), 'recuperableonly'=>$langs->trans("RecuperableOnly"), 'localtax1_type'=>$langs->trans("LocalTaxDesc"), 'localtax2_type'=>$langs->trans("LocalTaxDesc"))),
|
||||||
'c_type_contact'=>array('picto'=>'contact'),
|
'c_type_contact'=>array('picto'=>'contact', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->trans("PositionIntoComboList"))),
|
||||||
'c_payment_term'=>array('picto'=>'bill'),
|
'c_payment_term'=>array('picto'=>'bill', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'type_cdr'=>$langs->trans("TypeCdr", $langs->transnoentitiesnoconv("NbOfDays"), $langs->transnoentitiesnoconv("Offset"), $langs->transnoentitiesnoconv("NbOfDays"), $langs->transnoentitiesnoconv("Offset")))),
|
||||||
'c_paiement'=>array('picto'=>'bill'),
|
'c_paiement'=>array('picto'=>'bill', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_ecotaxe'=>array('picto'=>'bill'),
|
'c_ecotaxe'=>array('picto'=>'bill', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_paper_format'=>array('picto'=>'generic'),
|
'c_paper_format'=>array('picto'=>'generic', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_prospectlevel'=>array('picto'=>'company'),
|
'c_prospectlevel'=>array('picto'=>'company', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_type_fees'=>array('picto'=>'trip'),
|
'c_type_fees'=>array('picto'=>'trip', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_effectif'=>array('picto'=>'company'),
|
'c_shipment_mode'=>array('picto'=>'shipment', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'tracking'=>$langs->trans("UrlTrackingDesc"))),
|
||||||
'c_input_method'=>array('picto'=>'order'),
|
'c_effectif'=>array('picto'=>'company', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_input_reason'=>array('picto'=>'order'),
|
'c_input_method'=>array('picto'=>'order', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_availability'=>array('picto'=>'shipment'),
|
'c_input_reason'=>array('picto'=>'order', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->trans("PositionIntoComboList"))),
|
||||||
'c_shipment_mode'=>array('picto'=>'shipment'),
|
'c_availability'=>array('picto'=>'shipment', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_revenuestamp'=>array('picto'=>'bill'),
|
'c_revenuestamp'=>array('picto'=>'bill', 'help'=>array('revenuestamp_type'=>$langs->trans('FixedOrPercent'))),
|
||||||
'c_type_resource'=>array('picto'=>'resource'),
|
'c_type_resource'=>array('picto'=>'resource', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_type_container'=>array('picto'=>'website'),
|
'c_type_container'=>array('picto'=>'website', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_stcomm'=>array('picto'=>'company'),
|
'c_stcomm'=>array('picto'=>'company', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'picto'=>$langs->trans("PictoHelp"))),
|
||||||
'c_holiday_types'=>array('picto'=>'holiday'),
|
'c_holiday_types'=>array('picto'=>'holiday', 'help'=>array('affect'=>$langs->trans("FollowedByACounter"), 'delay'=>$langs->trans("MinimumNoticePeriod"), 'newbymonth'=>$langs->trans("NbAddedAutomatically"))),
|
||||||
'c_lead_status'=>array('picto'=>'project'),
|
'c_lead_status'=>array('picto'=>'project', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'percent'=>$langs->trans("OpportunityPercent"), 'position'=>$langs->trans("PositionIntoComboList"))),
|
||||||
'c_format_cards'=>array('picto'=>'generic'),
|
'c_format_cards'=>array('picto'=>'generic', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'name'=>$langs->trans("LabelName"), 'paper_size'=>$langs->trans("LabelPaperSize"))),
|
||||||
'c_hrm_public_holiday'=>array('picto'=>'holiday'),
|
'c_hrm_public_holiday'=>array('picto'=>'holiday', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'dayrule'=>"Keep empty for a date defined with month and day (most common case).<br>Use a keyword like 'easter', 'eastermonday', ... for a date predefined by complex rules.", 'country'=>$langs->trans("CountryIfSpecificToOneCountry"), 'year'=>$langs->trans("ZeroMeansEveryYear"))),
|
||||||
'c_hrm_department'=>array('picto'=>'hrm'),
|
'c_hrm_department'=>array('picto'=>'hrm', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_hrm_function'=>array('picto'=>'hrm'),
|
'c_hrm_function'=>array('picto'=>'hrm', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_exp_tax_cat'=>array('picto'=>'expensereport'),
|
'c_exp_tax_cat'=>array('picto'=>'expensereport', 'help'=>array()),
|
||||||
'c_exp_tax_range'=>array('picto'=>'expensereport'),
|
'c_exp_tax_range'=>array('picto'=>'expensereport', 'help'=>array('range_ik'=>$langs->trans('PrevRangeToThisRange'))),
|
||||||
'c_units'=>array('picto'=>'product'),
|
'c_units'=>array('picto'=>'product', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'unit_type' => $langs->trans('Measuringtype_durationDesc'), 'scale' => $langs->trans('MeasuringScaleDesc'))),
|
||||||
'c_socialnetworks'=>array('picto'=>'share-alt'),
|
'c_socialnetworks'=>array('picto'=>'share-alt', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'url' => $langs->trans('UrlSocialNetworksDesc'), 'icon' => $langs->trans('FafaIconSocialNetworksDesc'))),
|
||||||
'c_product_nature'=>array('picto'=>'product'),
|
'c_prospectcontactlevel'=>array('picto'=>'company', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_transport_mode'=>array('picto'=>'incoterm'),
|
'c_stcommcontact'=>array('picto'=>'company', 'help'=>array('code'=>$langs->trans("EnterAnyCode"), 'picto'=>$langs->trans("PictoHelp"))),
|
||||||
'c_prospectcontactlevel'=>array('picto'=>'company'),
|
'c_transport_mode'=>array('picto'=>'incoterm', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_stcommcontact'=>array('picto'=>'company'),
|
'c_product_nature'=>array('picto'=>'product', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_product_nature'=>array('picto'=>'product'),
|
'c_productbatch_qcstatus'=>array('picto'=>'lot', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_productbatch_qcstatus'=>array('picto'=>'lot'),
|
'c_asset_disposal_type'=>array('picto'=>'asset', 'help'=>array('code'=>$langs->trans("EnterAnyCode"))),
|
||||||
'c_asset_disposal_type'=>array('picto'=>'asset'),
|
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Complete all arrays with entries found into modules
|
// Complete all arrays with entries found into modules
|
||||||
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabcomplete);
|
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabcomplete);
|
||||||
|
|
||||||
|
// Complete the table $tabcomplete
|
||||||
|
$i = 0;
|
||||||
|
foreach ($tabcomplete as $key => $value) {
|
||||||
|
$i++;
|
||||||
|
$tabcomplete[$key]['id'] = $i;
|
||||||
|
$tabcomplete[$key]['cond'] = $tabcond[$i];
|
||||||
|
$tabcomplete[$key]['rowid'] = $tabrowid[$i];
|
||||||
|
$tabcomplete[$key]['fieldinsert'] = $tabfieldinsert[$i];
|
||||||
|
$tabcomplete[$key]['fieldvalue'] = $tabfieldvalue[$i];
|
||||||
|
$tabcomplete[$key]['lib'] = $tablib[$i];
|
||||||
|
$tabcomplete[$key]['sql'] = $tabsql[$i];
|
||||||
|
$tabcomplete[$key]['sqlsort'] = $tabsqlsort[$i];
|
||||||
|
$tabcomplete[$key]['field'] = $tabfield[$i];
|
||||||
|
}
|
||||||
|
|
||||||
|
$keytable = '';
|
||||||
|
if ($id > 0) {
|
||||||
|
$arrayofkeys = array_keys($tabcomplete);
|
||||||
|
$keytable = $arrayofkeys[$id - 1];
|
||||||
|
}
|
||||||
|
|
||||||
// Defaut sortorder
|
// Defaut sortorder
|
||||||
if (empty($sortfield)) {
|
if (empty($sortfield)) {
|
||||||
$tmp1 = explode(',', empty($tabsqlsort[$id]) ? '' : $tabsqlsort[$id]);
|
$tmp1 = explode(',', empty($tabcomplete[$keytable]['sqlsort']) ? '' : $tabcomplete[$keytable]['sqlsort']);
|
||||||
$tmp2 = explode(' ', $tmp1[0]);
|
$tmp2 = explode(' ', $tmp1[0]);
|
||||||
$sortfield = preg_replace('/^.*\./', '', $tmp2[0]);
|
$sortfield = preg_replace('/^.*\./', '', $tmp2[0]);
|
||||||
|
$sortorder = $tmp2[1];
|
||||||
|
//var_dump($sortfield);var_dump($sortorder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Define elementList and sourceList (used for dictionary type of contacts "llx_c_type_contact")
|
// Define elementList and sourceList (used for dictionary type of contacts "llx_c_type_contact")
|
||||||
$elementList = array();
|
$elementList = array();
|
||||||
$sourceList = array();
|
$sourceList = array();
|
||||||
@ -675,25 +653,22 @@ if ($id == 11) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Define localtax_typeList (used for dictionary "llx_c_tva")
|
// Define localtax_typeList (used for dictionary "llx_c_tva")
|
||||||
$localtax_typeList = array();
|
$localtax_typeList = array(
|
||||||
if ($id == 10) {
|
"0" => $langs->trans("No"),
|
||||||
$localtax_typeList = array(
|
"1" => $langs->trans("Yes").' ('.$langs->trans("Type")." 1)", //$langs->trans("%ageOnAllWithoutVAT"),
|
||||||
"0" => $langs->trans("No"),
|
"2" => $langs->trans("Yes").' ('.$langs->trans("Type")." 2)", //$langs->trans("%ageOnAllBeforeVAT"),
|
||||||
"1" => $langs->trans("Yes").' ('.$langs->trans("Type")." 1)", //$langs->trans("%ageOnAllWithoutVAT"),
|
"3" => $langs->trans("Yes").' ('.$langs->trans("Type")." 3)", //$langs->trans("%ageOnProductsWithoutVAT"),
|
||||||
"2" => $langs->trans("Yes").' ('.$langs->trans("Type")." 2)", //$langs->trans("%ageOnAllBeforeVAT"),
|
"4" => $langs->trans("Yes").' ('.$langs->trans("Type")." 4)", //$langs->trans("%ageOnProductsBeforeVAT"),
|
||||||
"3" => $langs->trans("Yes").' ('.$langs->trans("Type")." 3)", //$langs->trans("%ageOnProductsWithoutVAT"),
|
"5" => $langs->trans("Yes").' ('.$langs->trans("Type")." 5)", //$langs->trans("%ageOnServiceWithoutVAT"),
|
||||||
"4" => $langs->trans("Yes").' ('.$langs->trans("Type")." 4)", //$langs->trans("%ageOnProductsBeforeVAT"),
|
"6" => $langs->trans("Yes").' ('.$langs->trans("Type")." 6)" //$langs->trans("%ageOnServiceBeforeVAT"),
|
||||||
"5" => $langs->trans("Yes").' ('.$langs->trans("Type")." 5)", //$langs->trans("%ageOnServiceWithoutVAT"),
|
);
|
||||||
"6" => $langs->trans("Yes").' ('.$langs->trans("Type")." 6)" //$langs->trans("%ageOnServiceBeforeVAT"),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$object = new stdClass();
|
||||||
$parameters = array(
|
$parameters = array(
|
||||||
'id' =>$id,
|
'id' =>$id,
|
||||||
'rowid' =>$rowid,
|
'rowid' =>$rowid,
|
||||||
@ -761,7 +736,7 @@ if (empty($reshook)) {
|
|||||||
continue; // For a column name 'sortorder', we use the field name 'position'
|
continue; // For a column name 'sortorder', we use the field name 'position'
|
||||||
}
|
}
|
||||||
if ((!GETPOSTISSET($value) || GETPOST($value) == '')
|
if ((!GETPOSTISSET($value) || GETPOST($value) == '')
|
||||||
&& (!in_array($value, array('decalage', 'module', 'accountancy_code', 'accountancy_code_sell', 'accountancy_code_buy', 'tracking', 'picto')) // Fields that are not mandatory
|
&& (!in_array($value, array('decalage', 'module', 'accountancy_code', 'accountancy_code_sell', 'accountancy_code_buy', 'tracking', 'picto', 'deposit_percent')) // Fields that are not mandatory
|
||||||
&& ($id != 10 || ($value != 'code' && $value != 'note')) // Field code and note is not mandatory for dictionary table 10
|
&& ($id != 10 || ($value != 'code' && $value != 'note')) // Field code and note is not mandatory for dictionary table 10
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@ -774,6 +749,9 @@ if (empty($reshook)) {
|
|||||||
if ($fieldnamekey == 'libelle_facture') {
|
if ($fieldnamekey == 'libelle_facture') {
|
||||||
$fieldnamekey = 'LabelOnDocuments';
|
$fieldnamekey = 'LabelOnDocuments';
|
||||||
}
|
}
|
||||||
|
if ($fieldnamekey == 'deposit_percent') {
|
||||||
|
$fieldnamekey = 'DepositPercent';
|
||||||
|
}
|
||||||
if ($fieldnamekey == 'nbjour') {
|
if ($fieldnamekey == 'nbjour') {
|
||||||
$fieldnamekey = 'NbOfDays';
|
$fieldnamekey = 'NbOfDays';
|
||||||
}
|
}
|
||||||
@ -817,11 +795,11 @@ if (empty($reshook)) {
|
|||||||
$fieldnamekey = 'UseByDefault';
|
$fieldnamekey = 'UseByDefault';
|
||||||
}
|
}
|
||||||
|
|
||||||
setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->transnoentities($fieldnamekey)), null, 'errors');
|
setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->transnoentities($fieldnamekey)), null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Other checks
|
// Other checks
|
||||||
if (GETPOST('actionadd') && $tabname[$id] == MAIN_DB_PREFIX."c_actioncomm" && GETPOSTISSET("type") && in_array(GETPOST("type"), array('system', 'systemauto'))) {
|
if (GETPOST('actionadd') && $tabname[$id] == "c_actioncomm" && GETPOSTISSET("type") && in_array(GETPOST("type"), array('system', 'systemauto'))) {
|
||||||
$ok = 0;
|
$ok = 0;
|
||||||
setEventMessages($langs->transnoentities('ErrorReservedTypeSystemSystemAuto'), null, 'errors');
|
setEventMessages($langs->transnoentities('ErrorReservedTypeSystemSystemAuto'), null, 'errors');
|
||||||
}
|
}
|
||||||
@ -869,7 +847,7 @@ if (empty($reshook)) {
|
|||||||
if ($tabrowid[$id]) {
|
if ($tabrowid[$id]) {
|
||||||
// Get free id for insert
|
// Get free id for insert
|
||||||
$newid = 0;
|
$newid = 0;
|
||||||
$sql = "SELECT max(".$tabrowid[$id].") newid from ".$tabname[$id];
|
$sql = "SELECT MAX(".$tabrowid[$id].") as newid FROM ".MAIN_DB_PREFIX.$tabname[$id];
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
@ -880,7 +858,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add new entry
|
// Add new entry
|
||||||
$sql = "INSERT INTO ".$tabname[$id]." (";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX.$tabname[$id]." (";
|
||||||
// List of fields
|
// List of fields
|
||||||
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldinsert)) {
|
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldinsert)) {
|
||||||
$sql .= $tabrowid[$id].",";
|
$sql .= $tabrowid[$id].",";
|
||||||
@ -956,7 +934,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Modify entry
|
// Modify entry
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET ";
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET ";
|
||||||
// Modifie valeur des champs
|
// Modifie valeur des champs
|
||||||
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldmodify)) {
|
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldmodify)) {
|
||||||
$sql .= $tabrowid[$id]."=";
|
$sql .= $tabrowid[$id]."=";
|
||||||
@ -1011,11 +989,6 @@ if (empty($reshook)) {
|
|||||||
setEventMessages($db->error(), null, 'errors');
|
setEventMessages($db->error(), null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
|
||||||
}
|
|
||||||
|
|
||||||
if (GETPOST('actioncancel')) {
|
|
||||||
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'confirm_delete' && $confirm == 'yes') { // delete
|
if ($action == 'confirm_delete' && $confirm == 'yes') { // delete
|
||||||
@ -1025,7 +998,7 @@ if (empty($reshook)) {
|
|||||||
$rowidcol = "rowid";
|
$rowidcol = "rowid";
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "DELETE FROM ".$tabname[$id]." WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$tabname[$id]." WHERE ".$rowidcol." = '".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
|
|
||||||
dol_syslog("delete", LOG_DEBUG);
|
dol_syslog("delete", LOG_DEBUG);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -1047,9 +1020,9 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($rowid) {
|
if ($rowid) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET active = 1 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET active = 1 WHERE ".$rowidcol." = '".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
} elseif ($code) {
|
} elseif ($code) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET active = 1 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET active = 1 WHERE code = '".$db->escape(dol_escape_htmltag($code))."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -1067,9 +1040,9 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($rowid) {
|
if ($rowid) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET active = 0 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET active = 0 WHERE ".$rowidcol." = '".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
} elseif ($code) {
|
} elseif ($code) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET active = 0 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET active = 0 WHERE code = '".$db->escape(dol_escape_htmltag($code))."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -1087,9 +1060,9 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($rowid) {
|
if ($rowid) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET favorite = 1 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET favorite = 1 WHERE ".$rowidcol." = '".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
} elseif ($code) {
|
} elseif ($code) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET favorite = 1 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET favorite = 1 WHERE code = '".$db->escape(dol_escape_htmltag($code))."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -1107,9 +1080,9 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($rowid) {
|
if ($rowid) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET favorite = 0 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET favorite = 0 WHERE ".$rowidcol." = '".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
} elseif ($code) {
|
} elseif ($code) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET favorite = 0 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET favorite = 0 WHERE code = '".$db->escape(dol_escape_htmltag($code))."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -1127,9 +1100,9 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($rowid) {
|
if ($rowid) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET eec = 1 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET eec = 1 WHERE ".$rowidcol." = '".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
} elseif ($code) {
|
} elseif ($code) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET eec = 1 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET eec = 1 WHERE code = '".$db->escape(dol_escape_htmltag($code))."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -1147,9 +1120,9 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($rowid) {
|
if ($rowid) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET eec = 0 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET eec = 0 WHERE ".$rowidcol." = '".$db->escape($rowid)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
} elseif ($code) {
|
} elseif ($code) {
|
||||||
$sql = "UPDATE ".$tabname[$id]." SET eec = 0 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$tabname[$id]." SET eec = 0 WHERE code = '".$db->escape(dol_escape_htmltag($code))."'".($entity != '' ? " AND entity = ".(int) $entity : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -1225,7 +1198,7 @@ if ($action == 'delete') {
|
|||||||
/*
|
/*
|
||||||
* Show a dictionary
|
* Show a dictionary
|
||||||
*/
|
*/
|
||||||
if ($id) {
|
if ($id > 0) {
|
||||||
// Complete search values request with sort criteria
|
// Complete search values request with sort criteria
|
||||||
$sql = $tabsql[$id];
|
$sql = $tabsql[$id];
|
||||||
|
|
||||||
@ -1293,6 +1266,7 @@ if ($id) {
|
|||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
|
|
||||||
// Line for title
|
// Line for title
|
||||||
|
print '<!-- line title to add new entry -->';
|
||||||
$tdsoffields = '<tr class="liste_titre">';
|
$tdsoffields = '<tr class="liste_titre">';
|
||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
if ($value == 'entity') {
|
if ($value == 'entity') {
|
||||||
@ -1315,7 +1289,7 @@ if ($id) {
|
|||||||
$valuetoshow = $langs->trans("PriceUHT");
|
$valuetoshow = $langs->trans("PriceUHT");
|
||||||
}
|
}
|
||||||
if ($value == 'taux') {
|
if ($value == 'taux') {
|
||||||
if ($tabname[$id] != MAIN_DB_PREFIX."c_revenuestamp") {
|
if ($tabname[$id] != "c_revenuestamp") {
|
||||||
$valuetoshow = $langs->trans("Rate");
|
$valuetoshow = $langs->trans("Rate");
|
||||||
} else {
|
} else {
|
||||||
$valuetoshow = $langs->trans("Amount");
|
$valuetoshow = $langs->trans("Amount");
|
||||||
@ -1341,7 +1315,7 @@ if ($id) {
|
|||||||
$valuetoshow = $langs->trans("Language");
|
$valuetoshow = $langs->trans("Language");
|
||||||
}
|
}
|
||||||
if ($value == 'type') {
|
if ($value == 'type') {
|
||||||
if ($tabname[$id] == MAIN_DB_PREFIX."c_paiement") {
|
if ($tabname[$id] == "c_paiement") {
|
||||||
$valuetoshow = $form->textwithtooltip($langs->trans("Type"), $langs->trans("TypePaymentDesc"), 2, 1, img_help(1, ''));
|
$valuetoshow = $form->textwithtooltip($langs->trans("Type"), $langs->trans("TypePaymentDesc"), 2, 1, img_help(1, ''));
|
||||||
} else {
|
} else {
|
||||||
$valuetoshow = $langs->trans("Type");
|
$valuetoshow = $langs->trans("Type");
|
||||||
@ -1356,6 +1330,10 @@ if ($id) {
|
|||||||
if ($value == 'libelle_facture') {
|
if ($value == 'libelle_facture') {
|
||||||
$valuetoshow = $form->textwithtooltip($langs->trans("LabelOnDocuments"), $langs->trans("LabelUsedByDefault"), 2, 1, img_help(1, ''));
|
$valuetoshow = $form->textwithtooltip($langs->trans("LabelOnDocuments"), $langs->trans("LabelUsedByDefault"), 2, 1, img_help(1, ''));
|
||||||
}
|
}
|
||||||
|
if ($value == 'deposit_percent') {
|
||||||
|
$valuetoshow = $langs->trans('DepositPercent');
|
||||||
|
$class = 'right';
|
||||||
|
}
|
||||||
if ($value == 'country') {
|
if ($value == 'country') {
|
||||||
if (in_array('region_id', $fieldlist)) {
|
if (in_array('region_id', $fieldlist)) {
|
||||||
print '<td> </td>'; continue;
|
print '<td> </td>'; continue;
|
||||||
@ -1367,12 +1345,14 @@ if ($id) {
|
|||||||
}
|
}
|
||||||
if ($value == 'nbjour') {
|
if ($value == 'nbjour') {
|
||||||
$valuetoshow = $langs->trans("NbOfDays");
|
$valuetoshow = $langs->trans("NbOfDays");
|
||||||
|
$class = 'right';
|
||||||
}
|
}
|
||||||
if ($value == 'type_cdr') {
|
if ($value == 'type_cdr') {
|
||||||
$valuetoshow = $langs->trans("AtEndOfMonth"); $class = "center";
|
$valuetoshow = $langs->trans("AtEndOfMonth"); $class = "center";
|
||||||
}
|
}
|
||||||
if ($value == 'decalage') {
|
if ($value == 'decalage') {
|
||||||
$valuetoshow = $langs->trans("Offset");
|
$valuetoshow = $langs->trans("Offset");
|
||||||
|
$class = 'right';
|
||||||
}
|
}
|
||||||
if ($value == 'width' || $value == 'nx') {
|
if ($value == 'width' || $value == 'nx') {
|
||||||
$valuetoshow = $langs->trans("Width");
|
$valuetoshow = $langs->trans("Width");
|
||||||
@ -1409,6 +1389,7 @@ if ($id) {
|
|||||||
}
|
}
|
||||||
if ($value == 'sortorder') {
|
if ($value == 'sortorder') {
|
||||||
$valuetoshow = $langs->trans("SortOrder");
|
$valuetoshow = $langs->trans("SortOrder");
|
||||||
|
$class = 'center';
|
||||||
}
|
}
|
||||||
if ($value == 'short_label') {
|
if ($value == 'short_label') {
|
||||||
$valuetoshow = $langs->trans("ShortLabel");
|
$valuetoshow = $langs->trans("ShortLabel");
|
||||||
@ -1505,7 +1486,7 @@ if ($id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($valuetoshow != '') {
|
if ($valuetoshow != '') {
|
||||||
$tdsoffields .= '<td'.($class ? ' class="'.$class.'"' : '').'>';
|
$tdsoffields .= '<th'.($class ? ' class="'.$class.'"' : '').'>';
|
||||||
if (!empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
|
if (!empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
|
||||||
$tdsoffields .= '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
$tdsoffields .= '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
||||||
} elseif (!empty($tabhelp[$id][$value])) {
|
} elseif (!empty($tabhelp[$id][$value])) {
|
||||||
@ -1513,29 +1494,29 @@ if ($id) {
|
|||||||
} else {
|
} else {
|
||||||
$tdsoffields .= $valuetoshow;
|
$tdsoffields .= $valuetoshow;
|
||||||
}
|
}
|
||||||
$tdsoffields .= '</td>';
|
$tdsoffields .= '</th>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($id == 4) {
|
if ($id == 4) {
|
||||||
$tdsoffields .= '<td></td>';
|
$tdsoffields .= '<th></th>';
|
||||||
$tdsoffields .= '<td></td>';
|
$tdsoffields .= '<th></th>';
|
||||||
}
|
}
|
||||||
$tdsoffields .= '<td>';
|
$tdsoffields .= '<th>';
|
||||||
$tdsoffields .= '<input type="hidden" name="id" value="'.$id.'">';
|
$tdsoffields .= '<input type="hidden" name="id" value="'.$id.'">';
|
||||||
if (!is_null($withentity)) {
|
if (!is_null($withentity)) {
|
||||||
$tdsoffields .= '<input type="hidden" name="entity" value="'.$withentity.'">';
|
$tdsoffields .= '<input type="hidden" name="entity" value="'.$withentity.'">';
|
||||||
}
|
}
|
||||||
$tdsoffields .= '</td>';
|
$tdsoffields .= '</th>';
|
||||||
$tdsoffields .= '<td style="min-width: 26px;"></td>';
|
$tdsoffields .= '<th style="min-width: 26px;"></th>';
|
||||||
$tdsoffields .= '<td style="min-width: 26px;"></td>';
|
$tdsoffields .= '<th style="min-width: 26px;"></th>';
|
||||||
$tdsoffields .= '</tr>';
|
$tdsoffields .= '</tr>';
|
||||||
|
|
||||||
print $tdsoffields;
|
print $tdsoffields;
|
||||||
|
|
||||||
|
|
||||||
// Line to enter new values
|
// Line to enter new values
|
||||||
print '<!-- line to add new entry -->';
|
print '<!-- line input to add new entry -->';
|
||||||
print '<tr class="oddeven nodrag nodrop nohover">';
|
print '<tr class="oddeven nodrag nodrop nohover">';
|
||||||
|
|
||||||
$obj = new stdClass();
|
$obj = new stdClass();
|
||||||
@ -1606,6 +1587,7 @@ if ($id) {
|
|||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
|
|
||||||
// Title line with search input fields
|
// Title line with search input fields
|
||||||
|
print '<!-- line title to search record -->'."\n";
|
||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
$filterfound = 0;
|
$filterfound = 0;
|
||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
@ -1650,6 +1632,7 @@ if ($id) {
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Title of lines
|
// Title of lines
|
||||||
|
print '<!-- line title of record -->'."\n";
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
if ($value == 'entity') {
|
if ($value == 'entity') {
|
||||||
@ -1676,7 +1659,7 @@ if ($id) {
|
|||||||
$valuetoshow = $langs->trans("PriceUHT");
|
$valuetoshow = $langs->trans("PriceUHT");
|
||||||
}
|
}
|
||||||
if ($value == 'taux') {
|
if ($value == 'taux') {
|
||||||
if ($tabname[$id] != MAIN_DB_PREFIX."c_revenuestamp") {
|
if ($tabname[$id] != "c_revenuestamp") {
|
||||||
$valuetoshow = $langs->trans("Rate");
|
$valuetoshow = $langs->trans("Rate");
|
||||||
} else {
|
} else {
|
||||||
$valuetoshow = $langs->trans("Amount");
|
$valuetoshow = $langs->trans("Amount");
|
||||||
@ -1717,6 +1700,10 @@ if ($id) {
|
|||||||
if ($value == 'libelle_facture') {
|
if ($value == 'libelle_facture') {
|
||||||
$valuetoshow = $langs->trans("LabelOnDocuments");
|
$valuetoshow = $langs->trans("LabelOnDocuments");
|
||||||
}
|
}
|
||||||
|
if ($value == 'deposit_percent') {
|
||||||
|
$valuetoshow = $langs->trans('DepositPercent');
|
||||||
|
$cssprefix = 'right ';
|
||||||
|
}
|
||||||
if ($value == 'country') {
|
if ($value == 'country') {
|
||||||
$valuetoshow = $langs->trans("Country");
|
$valuetoshow = $langs->trans("Country");
|
||||||
}
|
}
|
||||||
@ -1725,12 +1712,14 @@ if ($id) {
|
|||||||
}
|
}
|
||||||
if ($value == 'nbjour') {
|
if ($value == 'nbjour') {
|
||||||
$valuetoshow = $langs->trans("NbOfDays");
|
$valuetoshow = $langs->trans("NbOfDays");
|
||||||
|
$cssprefix = 'right ';
|
||||||
}
|
}
|
||||||
if ($value == 'type_cdr') {
|
if ($value == 'type_cdr') {
|
||||||
$valuetoshow = $langs->trans("AtEndOfMonth"); $cssprefix = "center ";
|
$valuetoshow = $langs->trans("AtEndOfMonth"); $cssprefix = "center ";
|
||||||
}
|
}
|
||||||
if ($value == 'decalage') {
|
if ($value == 'decalage') {
|
||||||
$valuetoshow = $langs->trans("Offset");
|
$valuetoshow = $langs->trans("Offset");
|
||||||
|
$cssprefix = 'right ';
|
||||||
}
|
}
|
||||||
if ($value == 'width' || $value == 'nx') {
|
if ($value == 'width' || $value == 'nx') {
|
||||||
$valuetoshow = $langs->trans("Width");
|
$valuetoshow = $langs->trans("Width");
|
||||||
@ -1764,6 +1753,7 @@ if ($id) {
|
|||||||
}
|
}
|
||||||
if ($value == 'sortorder') {
|
if ($value == 'sortorder') {
|
||||||
$valuetoshow = $langs->trans("SortOrder");
|
$valuetoshow = $langs->trans("SortOrder");
|
||||||
|
$cssprefix = 'center ';
|
||||||
}
|
}
|
||||||
if ($value == 'short_label') {
|
if ($value == 'short_label') {
|
||||||
$valuetoshow = $langs->trans("ShortLabel");
|
$valuetoshow = $langs->trans("ShortLabel");
|
||||||
@ -1962,58 +1952,58 @@ if ($id) {
|
|||||||
$key = $langs->trans("PaymentCondition".strtoupper($obj->code));
|
$key = $langs->trans("PaymentCondition".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "PaymentCondition".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "PaymentCondition".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
$valuetoshow = nl2br($valuetoshow);
|
$valuetoshow = nl2br($valuetoshow);
|
||||||
} elseif ($value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_country') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_country') {
|
||||||
$key = $langs->trans("Country".strtoupper($obj->code));
|
$key = $langs->trans("Country".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "Country".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "Country".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_availability') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_availability') {
|
||||||
$langs->load("propal");
|
$langs->load("propal");
|
||||||
$key = $langs->trans("AvailabilityType".strtoupper($obj->code));
|
$key = $langs->trans("AvailabilityType".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "AvailabilityType".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "AvailabilityType".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_actioncomm') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_actioncomm') {
|
||||||
$key = $langs->trans("Action".strtoupper($obj->code));
|
$key = $langs->trans("Action".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "Action".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "Action".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif (!empty($obj->code_iso) && $value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_currencies') {
|
} elseif (!empty($obj->code_iso) && $value == 'label' && $tabname[$id] == 'c_currencies') {
|
||||||
$key = $langs->trans("Currency".strtoupper($obj->code_iso));
|
$key = $langs->trans("Currency".strtoupper($obj->code_iso));
|
||||||
$valuetoshow = ($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_typent') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_typent') {
|
||||||
$key = $langs->trans(strtoupper($obj->code));
|
$key = $langs->trans(strtoupper($obj->code));
|
||||||
$valuetoshow = ($key != strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($key != strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_prospectlevel') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_prospectlevel') {
|
||||||
$key = $langs->trans(strtoupper($obj->code));
|
$key = $langs->trans(strtoupper($obj->code));
|
||||||
$valuetoshow = ($key != strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($key != strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_civility') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_civility') {
|
||||||
$key = $langs->trans("Civility".strtoupper($obj->code));
|
$key = $langs->trans("Civility".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "Civility".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "Civility".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_type_contact') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_type_contact') {
|
||||||
$langs->load('agenda');
|
$langs->load('agenda');
|
||||||
$key = $langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code));
|
$key = $langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_payment_term') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_payment_term') {
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$key = $langs->trans("PaymentConditionShort".strtoupper($obj->code));
|
$key = $langs->trans("PaymentConditionShort".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_paiement') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_paiement') {
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$key = $langs->trans("PaymentType".strtoupper($obj->code));
|
$key = $langs->trans("PaymentType".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "PaymentType".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "PaymentType".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'type' && $tabname[$id] == MAIN_DB_PREFIX.'c_paiement') {
|
} elseif ($value == 'type' && $tabname[$id] == 'c_paiement') {
|
||||||
$payment_type_list = array(0=>$langs->trans('PaymentTypeCustomer'), 1=>$langs->trans('PaymentTypeSupplier'), 2=>$langs->trans('PaymentTypeBoth'));
|
$payment_type_list = array(0=>$langs->trans('PaymentTypeCustomer'), 1=>$langs->trans('PaymentTypeSupplier'), 2=>$langs->trans('PaymentTypeBoth'));
|
||||||
$valuetoshow = $payment_type_list[$valuetoshow];
|
$valuetoshow = $payment_type_list[$valuetoshow];
|
||||||
} elseif ($value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_input_reason') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_input_reason') {
|
||||||
$key = $langs->trans("DemandReasonType".strtoupper($obj->code));
|
$key = $langs->trans("DemandReasonType".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "DemandReasonType".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "DemandReasonType".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_input_method') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_input_method') {
|
||||||
$langs->load("orders");
|
$langs->load("orders");
|
||||||
$key = $langs->trans($obj->code);
|
$key = $langs->trans($obj->code);
|
||||||
$valuetoshow = ($obj->code && $key != $obj->code) ? $key : $obj->{$value};
|
$valuetoshow = ($obj->code && $key != $obj->code) ? $key : $obj->{$value};
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_shipment_mode') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_shipment_mode') {
|
||||||
$langs->load("sendings");
|
$langs->load("sendings");
|
||||||
$key = $langs->trans("SendingMethod".strtoupper($obj->code));
|
$key = $langs->trans("SendingMethod".strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != "SendingMethod".strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != "SendingMethod".strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_paper_format') {
|
} elseif ($value == 'libelle' && $tabname[$id] == 'c_paper_format') {
|
||||||
$key = $langs->trans('PaperFormat'.strtoupper($obj->code));
|
$key = $langs->trans('PaperFormat'.strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != 'PaperFormat'.strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != 'PaperFormat'.strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_type_fees') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_type_fees') {
|
||||||
$langs->load('trips');
|
$langs->load('trips');
|
||||||
$key = $langs->trans(strtoupper($obj->code));
|
$key = $langs->trans(strtoupper($obj->code));
|
||||||
$valuetoshow = ($obj->code && $key != strtoupper($obj->code) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != strtoupper($obj->code) ? $key : $obj->{$value});
|
||||||
@ -2021,13 +2011,13 @@ if ($id) {
|
|||||||
$showfield = 0;
|
$showfield = 0;
|
||||||
} elseif ($value == 'unicode') {
|
} elseif ($value == 'unicode') {
|
||||||
$valuetoshow = $langs->getCurrencySymbol($obj->code, 1);
|
$valuetoshow = $langs->getCurrencySymbol($obj->code, 1);
|
||||||
} elseif ($value == 'label' && $tabname[GETPOST("id", 'int')] == MAIN_DB_PREFIX.'c_units') {
|
} elseif ($value == 'label' && $tabname[GETPOST("id", 'int')] == 'c_units') {
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$valuetoshow = $langs->trans($obj->{$value});
|
$valuetoshow = $langs->trans($obj->{$value});
|
||||||
} elseif ($value == 'short_label' && $tabname[GETPOST("id", 'int')] == MAIN_DB_PREFIX.'c_units') {
|
} elseif ($value == 'short_label' && $tabname[GETPOST("id", 'int')] == 'c_units') {
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$valuetoshow = $langs->trans($obj->{$value});
|
$valuetoshow = $langs->trans($obj->{$value});
|
||||||
} elseif (($value == 'unit') && ($tabname[$id] == MAIN_DB_PREFIX.'c_paper_format')) {
|
} elseif (($value == 'unit') && ($tabname[$id] == 'c_paper_format')) {
|
||||||
$key = $langs->trans('SizeUnit'.strtolower($obj->unit));
|
$key = $langs->trans('SizeUnit'.strtolower($obj->unit));
|
||||||
$valuetoshow = ($obj->code && $key != 'SizeUnit'.strtolower($obj->unit) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->code && $key != 'SizeUnit'.strtolower($obj->unit) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'localtax1' || $value == 'localtax2') {
|
} elseif ($value == 'localtax1' || $value == 'localtax2') {
|
||||||
@ -2068,20 +2058,20 @@ if ($id) {
|
|||||||
}
|
}
|
||||||
} elseif ($value == 'fk_c_exp_tax_cat') {
|
} elseif ($value == 'fk_c_exp_tax_cat') {
|
||||||
$tmpid = $valuetoshow;
|
$tmpid = $valuetoshow;
|
||||||
$valuetoshow = getDictionaryValue(MAIN_DB_PREFIX.'c_exp_tax_cat', 'label', $tmpid);
|
$valuetoshow = getDictionaryValue('c_exp_tax_cat', 'label', $tmpid);
|
||||||
$valuetoshow = $langs->trans($valuetoshow ? $valuetoshow : $tmpid);
|
$valuetoshow = $langs->trans($valuetoshow ? $valuetoshow : $tmpid);
|
||||||
} elseif ($tabname[$id] == MAIN_DB_PREFIX.'c_exp_tax_cat') {
|
} elseif ($tabname[$id] == 'c_exp_tax_cat') {
|
||||||
$valuetoshow = $langs->trans($valuetoshow);
|
$valuetoshow = $langs->trans($valuetoshow);
|
||||||
} elseif ($value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_units') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_units') {
|
||||||
$langs->load('other');
|
$langs->load('other');
|
||||||
$key = $langs->trans($obj->label);
|
$key = $langs->trans($obj->label);
|
||||||
$valuetoshow = ($obj->label && $key != strtoupper($obj->label) ? $key : $obj->{$value});
|
$valuetoshow = ($obj->label && $key != strtoupper($obj->label) ? $key : $obj->{$value});
|
||||||
} elseif ($value == 'code' && $id == 3) {
|
} elseif ($value == 'code' && $id == 3) {
|
||||||
$valuetoshow = $obj->state_code;
|
$valuetoshow = $obj->state_code;
|
||||||
} elseif ($value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_product_nature') {
|
} elseif ($value == 'label' && $tabname[$id] == 'c_product_nature') {
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$valuetoshow = $langs->trans($obj->{$value});
|
$valuetoshow = $langs->trans($obj->{$value});
|
||||||
} elseif ($fieldlist[$field] == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_productbatch_qcstatus') {
|
} elseif ($fieldlist[$field] == 'label' && $tabname[$id] == 'c_productbatch_qcstatus') {
|
||||||
$langs->load("productbatch");
|
$langs->load("productbatch");
|
||||||
$valuetoshow = $langs->trans($obj->{$value});
|
$valuetoshow = $langs->trans($obj->{$value});
|
||||||
} elseif ($value == 'block_if_negative') {
|
} elseif ($value == 'block_if_negative') {
|
||||||
@ -2097,13 +2087,13 @@ if ($id) {
|
|||||||
if ($value == 'tracking') {
|
if ($value == 'tracking') {
|
||||||
$class .= ' tdoverflowauto';
|
$class .= ' tdoverflowauto';
|
||||||
}
|
}
|
||||||
if (in_array($value, array('pos', 'position'))) {
|
if (in_array($value, array('nbjour', 'decalage', 'pos', 'position', 'deposit_percent'))) {
|
||||||
$class .= ' right';
|
$class .= ' right';
|
||||||
}
|
}
|
||||||
if (in_array($value, array('localtax1_type', 'localtax2_type'))) {
|
if (in_array($value, array('localtax1_type', 'localtax2_type'))) {
|
||||||
$class .= ' nowrap';
|
$class .= ' nowrap';
|
||||||
}
|
}
|
||||||
if (in_array($value, array('use_default', 'fk_parent'))) {
|
if (in_array($value, array('use_default', 'fk_parent', 'sortorder'))) {
|
||||||
$class .= ' center';
|
$class .= ' center';
|
||||||
}
|
}
|
||||||
if ($value == 'public') {
|
if ($value == 'public') {
|
||||||
@ -2147,7 +2137,7 @@ if ($id) {
|
|||||||
if (!empty($obj->code) && $obj->code == 'RECEP') {
|
if (!empty($obj->code) && $obj->code == 'RECEP') {
|
||||||
$canbemodified = 1;
|
$canbemodified = 1;
|
||||||
}
|
}
|
||||||
if ($tabname[$id] == MAIN_DB_PREFIX."c_actioncomm") {
|
if ($tabname[$id] == "c_actioncomm") {
|
||||||
$canbemodified = 1;
|
$canbemodified = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2174,7 +2164,7 @@ if ($id) {
|
|||||||
if ($iserasable) {
|
if ($iserasable) {
|
||||||
print '<a class="reposition" href="'.$url.'action='.$acts[$obj->eec].'_eec&token='.newToken().'">'.$actl[$obj->eec].'</a>';
|
print '<a class="reposition" href="'.$url.'action='.$acts[$obj->eec].'_eec&token='.newToken().'">'.$actl[$obj->eec].'</a>';
|
||||||
} else {
|
} else {
|
||||||
print $langs->trans("AlwaysActive");
|
print '<span class="opacitymedium">'.$langs->trans("AlwaysActive").'</span>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="nowrap center">';
|
print '<td class="nowrap center">';
|
||||||
@ -2182,7 +2172,7 @@ if ($id) {
|
|||||||
if ($iserasable) {
|
if ($iserasable) {
|
||||||
print '<a class="reposition" href="'.$url.'action='.$acts[$obj->favorite].'_favorite&token='.newToken().'">'.$actl[$obj->favorite].'</a>';
|
print '<a class="reposition" href="'.$url.'action='.$acts[$obj->favorite].'_favorite&token='.newToken().'">'.$actl[$obj->favorite].'</a>';
|
||||||
} else {
|
} else {
|
||||||
print $langs->trans("AlwaysActive");
|
print '<span class="opacitymedium">'.$langs->trans("AlwaysActive").'</span>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
@ -2199,7 +2189,7 @@ if ($id) {
|
|||||||
} elseif (isset($obj->type) && in_array($obj->type, array('system')) && !empty($obj->active) && $obj->code != 'AC_OTH') {
|
} elseif (isset($obj->type) && in_array($obj->type, array('system')) && !empty($obj->active) && $obj->code != 'AC_OTH') {
|
||||||
print $langs->trans("UsedOnlyWithTypeOption");
|
print $langs->trans("UsedOnlyWithTypeOption");
|
||||||
} else {
|
} else {
|
||||||
print $langs->trans("AlwaysActive");
|
print '<span class="opacitymedium">'.$langs->trans("AlwaysActive").'</span>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print "</td>";
|
print "</td>";
|
||||||
@ -2283,7 +2273,7 @@ if ($id) {
|
|||||||
print '</a>';
|
print '</a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
print $form->textwithpicto('', $langs->trans("Table").': '.$tabname[$i]);
|
print $form->textwithpicto('', $langs->trans("Table").': '.MAIN_DB_PREFIX.$tabname[$i]);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
$lastlineisempty = false;
|
$lastlineisempty = false;
|
||||||
@ -2333,7 +2323,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($value, array('code', 'libelle', 'type')) && $tabname == MAIN_DB_PREFIX."c_actioncomm" && in_array($obj->type, array('system', 'systemauto'))) {
|
if (in_array($value, array('code', 'libelle', 'type')) && $tabname == "c_actioncomm" && in_array($obj->type, array('system', 'systemauto'))) {
|
||||||
$hidden = (!empty($obj->{$value}) ? $obj->{$value}:'');
|
$hidden = (!empty($obj->{$value}) ? $obj->{$value}:'');
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="hidden" name="'. $value .'" value="'.$hidden.'">';
|
print '<input type="hidden" name="'. $value .'" value="'.$hidden.'">';
|
||||||
@ -2369,15 +2359,9 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT, 'lang');
|
print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT, 'lang');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($value == 'element') {
|
} elseif (in_array($value, array('element', 'source'))) { //Example: the type and source of the element (for contact types)
|
||||||
// The type of the element (for contact types)
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->selectarray('element', $elementList, (!empty($obj->{$value}) ? $obj->{$value}:''));
|
print $form->selectarray($value, $elementList, (!empty($obj->{$value}) ? $obj->{$value}:''));
|
||||||
print '</td>';
|
|
||||||
} elseif ($value == 'source') {
|
|
||||||
// The source of the element (for contact types)
|
|
||||||
print '<td>';
|
|
||||||
print $form->selectarray('source', $sourceList, (!empty($obj->{$value}) ? $obj->{$value}:''));
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif (in_array($value, array('public', 'use_default'))) {
|
} elseif (in_array($value, array('public', 'use_default'))) {
|
||||||
// Fields 0/1 with a combo select Yes/No
|
// Fields 0/1 with a combo select Yes/No
|
||||||
@ -2389,12 +2373,12 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->selectyesno("private", (!empty($obj->{$value}) ? $obj->{$value}:''));
|
print $form->selectyesno("private", (!empty($obj->{$value}) ? $obj->{$value}:''));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($value == 'type' && $tabname == MAIN_DB_PREFIX."c_actioncomm") {
|
} elseif ($value == 'type' && $tabname == "c_actioncomm") {
|
||||||
$type = (!empty($obj->type) ? $obj->type : 'user'); // Check if type is different of 'user' (external module)
|
$type = (!empty($obj->type) ? $obj->type : 'user'); // Check if type is different of 'user' (external module)
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $type.'<input type="hidden" name="type" value="'.$type.'">';
|
print $type.'<input type="hidden" name="type" value="'.$type.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($value == 'type' && $tabname == MAIN_DB_PREFIX.'c_paiement') {
|
} elseif ($value == 'type' && $tabname == 'c_paiement') {
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$select_list = array(0=>$langs->trans('PaymentTypeCustomer'), 1=>$langs->trans('PaymentTypeSupplier'), 2=>$langs->trans('PaymentTypeBoth'));
|
$select_list = array(0=>$langs->trans('PaymentTypeCustomer'), 1=>$langs->trans('PaymentTypeSupplier'), 2=>$langs->trans('PaymentTypeBoth'));
|
||||||
print $form->selectarray($value, $select_list, (!empty($obj->{$value}) ? $obj->{$value}:'2'));
|
print $form->selectarray($value, $select_list, (!empty($obj->{$value}) ? $obj->{$value}:'2'));
|
||||||
@ -2412,7 +2396,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif (in_array($value, array('nbjour', 'decalage', 'taux', 'localtax1', 'localtax2'))) {
|
} elseif (in_array($value, array('nbjour', 'decalage', 'taux', 'localtax1', 'localtax2'))) {
|
||||||
$class = "left";
|
$class = "right";
|
||||||
if (in_array($value, array('taux', 'localtax1', 'localtax2'))) {
|
if (in_array($value, array('taux', 'localtax1', 'localtax2'))) {
|
||||||
$class = "center"; // Fields aligned on right
|
$class = "center"; // Fields aligned on right
|
||||||
}
|
}
|
||||||
@ -2424,7 +2408,7 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
$transfound = 0;
|
$transfound = 0;
|
||||||
$transkey = '';
|
$transkey = '';
|
||||||
// Special case for labels
|
// Special case for labels
|
||||||
if ($tabname == MAIN_DB_PREFIX.'c_payment_term') {
|
if ($tabname == 'c_payment_term') {
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$transkey = "PaymentCondition".strtoupper($obj->code);
|
$transkey = "PaymentCondition".strtoupper($obj->code);
|
||||||
if ($langs->trans($transkey) != $transkey) {
|
if ($langs->trans($transkey) != $transkey) {
|
||||||
@ -2490,18 +2474,21 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
} else {
|
} else {
|
||||||
$fieldValue = isset($obj->{$value}) ? $obj->{$value}: '';
|
$fieldValue = isset($obj->{$value}) ? $obj->{$value}: '';
|
||||||
|
$classtd = ''; $class = '';
|
||||||
|
|
||||||
if ($value == 'sortorder') {
|
if ($value == 'sortorder') {
|
||||||
$fieldlist[$field] = 'position';
|
$fieldlist[$field] = 'position';
|
||||||
}
|
}
|
||||||
|
|
||||||
$classtd = ''; $class = '';
|
|
||||||
if ($fieldlist[$field] == 'code') {
|
if ($fieldlist[$field] == 'code') {
|
||||||
$class = 'maxwidth100';
|
$class = 'maxwidth100';
|
||||||
}
|
}
|
||||||
if (in_array($fieldlist[$field], array('pos', 'position'))) {
|
if (in_array($fieldlist[$field], array('deposit_percent'))) {
|
||||||
$classtd = 'right'; $class = 'maxwidth50 right';
|
$classtd = 'right'; $class = 'maxwidth50 right';
|
||||||
}
|
}
|
||||||
|
if (in_array($fieldlist[$field], array('pos', 'position'))) {
|
||||||
|
$classtd = 'center'; $class = 'maxwidth50 center';
|
||||||
|
}
|
||||||
if (in_array($fieldlist[$field], array('dayrule', 'day', 'month', 'year', 'use_default', 'affect', 'delay', 'public', 'sortorder', 'sens', 'category_type', 'fk_parent'))) {
|
if (in_array($fieldlist[$field], array('dayrule', 'day', 'month', 'year', 'use_default', 'affect', 'delay', 'public', 'sortorder', 'sens', 'category_type', 'fk_parent'))) {
|
||||||
$class = 'maxwidth50 center';
|
$class = 'maxwidth50 center';
|
||||||
}
|
}
|
||||||
@ -2522,19 +2509,19 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
$maxlength = '';
|
$maxlength = '';
|
||||||
if (in_array($fieldlist[$field], array('libelle', 'label'))) {
|
if (in_array($fieldlist[$field], array('libelle', 'label'))) {
|
||||||
switch ($tabname) {
|
switch ($tabname) {
|
||||||
case MAIN_DB_PREFIX . 'c_accounting_category':
|
case 'c_accounting_category':
|
||||||
case MAIN_DB_PREFIX . 'c_ecotaxe':
|
case 'c_ecotaxe':
|
||||||
case MAIN_DB_PREFIX . 'c_email_senderprofile':
|
case 'c_email_senderprofile':
|
||||||
case MAIN_DB_PREFIX . 'c_forme_juridique':
|
case 'c_forme_juridique':
|
||||||
case MAIN_DB_PREFIX . 'c_holiday_types':
|
case 'c_holiday_types':
|
||||||
case MAIN_DB_PREFIX . 'c_payment_term':
|
case 'c_payment_term':
|
||||||
case MAIN_DB_PREFIX . 'c_transport_mode':
|
case 'c_transport_mode':
|
||||||
$maxlength = ' maxlength="255"';
|
$maxlength = ' maxlength="255"';
|
||||||
break;
|
break;
|
||||||
case MAIN_DB_PREFIX . 'c_email_templates':
|
case 'c_email_templates':
|
||||||
$maxlength = ' maxlength="180"';
|
$maxlength = ' maxlength="180"';
|
||||||
break;
|
break;
|
||||||
case MAIN_DB_PREFIX . 'c_socialnetworks':
|
case 'c_socialnetworks':
|
||||||
$maxlength = ' maxlength="150"';
|
$maxlength = ' maxlength="150"';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -2547,10 +2534,10 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '')
|
|||||||
$transkey = '';
|
$transkey = '';
|
||||||
if (in_array($fieldlist[$field], array('label', 'libelle'))) { // For label
|
if (in_array($fieldlist[$field], array('label', 'libelle'))) { // For label
|
||||||
// Special case for labels
|
// Special case for labels
|
||||||
if ($tabname == MAIN_DB_PREFIX.'c_civility' && !empty($obj->code)) {
|
if ($tabname == 'c_civility' && !empty($obj->code)) {
|
||||||
$transkey = "Civility".strtoupper($obj->code);
|
$transkey = "Civility".strtoupper($obj->code);
|
||||||
}
|
}
|
||||||
if ($tabname == MAIN_DB_PREFIX.'c_payment_term' && !empty($obj->code)) {
|
if ($tabname == 'c_payment_term' && !empty($obj->code)) {
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$transkey = "PaymentConditionShort".strtoupper($obj->code);
|
$transkey = "PaymentConditionShort".strtoupper($obj->code);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -232,6 +232,9 @@ class PrestaShopWebservice
|
|||||||
if ($response != '') {
|
if ($response != '') {
|
||||||
libxml_clear_errors();
|
libxml_clear_errors();
|
||||||
libxml_use_internal_errors(true);
|
libxml_use_internal_errors(true);
|
||||||
|
if (!function_exists('simplexml_load_string')) {
|
||||||
|
throw new PrestaShopWebserviceException('Method simplexml_load_string not available. Your PHP does not support xml.');
|
||||||
|
}
|
||||||
$xml = simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOCDATA|LIBXML_NONET);
|
$xml = simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOCDATA|LIBXML_NONET);
|
||||||
if (libxml_get_errors()) {
|
if (libxml_get_errors()) {
|
||||||
$msg = var_export(libxml_get_errors(), true);
|
$msg = var_export(libxml_get_errors(), true);
|
||||||
|
|||||||
@ -457,7 +457,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
|
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'EVENTORGANIZATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'EVENTORGANIZATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $file) {
|
if (getDolGlobalString($constforvar) == $file) {
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
} else {
|
} else {
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
||||||
@ -597,7 +597,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
// Default
|
// Default
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'EVENTORGANIZATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'EVENTORGANIZATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $name) {
|
if (getDolGlobalString($constforvar) == $name) {
|
||||||
//print img_picto($langs->trans("Default"), 'on');
|
//print img_picto($langs->trans("Default"), 'on');
|
||||||
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
||||||
|
|||||||
@ -279,7 +279,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
|
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'HRMTEST_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'HRMTEST_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $file) {
|
if (getDolGlobalString($constforvar) == $file) {
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
} else {
|
} else {
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
||||||
@ -421,7 +421,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
// Default
|
// Default
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'HRMTEST_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'HRMTEST_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $name) {
|
if (getDolGlobalString($constforvar) == $name) {
|
||||||
//print img_picto($langs->trans("Default"), 'on');
|
//print img_picto($langs->trans("Default"), 'on');
|
||||||
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
||||||
|
|||||||
@ -323,130 +323,6 @@ print '<br>';
|
|||||||
|
|
||||||
clearstatcache();
|
clearstatcache();
|
||||||
|
|
||||||
if ($mode == 'template') {
|
|
||||||
// Themes and themes options
|
|
||||||
showSkins(null, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($mode == 'dashboard') {
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
|
||||||
print '<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
|
|
||||||
|
|
||||||
// Message of the day on home page
|
|
||||||
$substitutionarray = getCommonSubstitutionArray($langs, 0, array('object', 'objectamount'));
|
|
||||||
complete_substitutions_array($substitutionarray, $langs);
|
|
||||||
|
|
||||||
print '<tr class="oddeven width25p"><td>';
|
|
||||||
$texthelp = $langs->trans("FollowingConstantsWillBeSubstituted") . '<br>';
|
|
||||||
foreach ($substitutionarray as $key => $val) {
|
|
||||||
$texthelp .= $key . '<br>';
|
|
||||||
}
|
|
||||||
print $form->textwithpicto($langs->trans("MessageOfDay"), $texthelp, 1, 'help', '', 0, 2, 'tooltipmessageofday');
|
|
||||||
|
|
||||||
print '</td><td>';
|
|
||||||
|
|
||||||
$doleditor = new DolEditor('main_motd', (isset($conf->global->MAIN_MOTD) ? $conf->global->MAIN_MOTD : ''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
|
|
||||||
$doleditor->Create();
|
|
||||||
|
|
||||||
print '</td></tr>' . "\n";
|
|
||||||
|
|
||||||
/* no more need for this option. It is now a widget already controlled by end user
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('BoxstatsDisableGlobal') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_GLOBAL_BOXSTATS", array(), $conf->entity, 0, 0, 1, 0);
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
*/
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
|
||||||
print '<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
|
|
||||||
|
|
||||||
print '<tr class="liste_titre"><td class="titlefieldmiddle">';
|
|
||||||
print $langs->trans("DashboardDisableBlocks");
|
|
||||||
print '</td><td class="titlefieldmiddle">';
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableGlobal') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_GLOBAL_WORKBOARD", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
|
|
||||||
// Block meteo
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('MAIN_DISABLE_METEO') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_METEO", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block agenda
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockAgenda') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_AGENDA", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block agenda
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockProject') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_PROJECT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block customer
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockCustomer') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_CUSTOMER", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block supplier
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockSupplier') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_SUPPLIER", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block contract
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockContract') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_CONTRACT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block ticket
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockTicket') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_TICKET", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block bank
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockBank') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_BANK", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block adherent
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockAdherent') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_ADHERENT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block expense report
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockExpenseReport') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_EXPENSEREPORT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Block holiday
|
|
||||||
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockHoliday') . '</td><td>';
|
|
||||||
print ajax_constantonoff("MAIN_DISABLE_BLOCK_HOLIDAY", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</table>' . "\n";
|
|
||||||
print '</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($mode == 'other') {
|
if ($mode == 'other') {
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table summary="edit" class="noborder centpercent editmode tableforfield">';
|
print '<table summary="edit" class="noborder centpercent editmode tableforfield">';
|
||||||
@ -587,6 +463,133 @@ if ($mode == 'other') {
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($mode == 'template') {
|
||||||
|
// Themes and themes options
|
||||||
|
showSkins(null, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($mode == 'dashboard') {
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
print '<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
|
||||||
|
|
||||||
|
// Message of the day on home page
|
||||||
|
$substitutionarray = getCommonSubstitutionArray($langs, 0, array('object', 'objectamount'));
|
||||||
|
complete_substitutions_array($substitutionarray, $langs);
|
||||||
|
|
||||||
|
print '<tr class="oddeven width25p"><td>';
|
||||||
|
$texthelp = $langs->trans("FollowingConstantsWillBeSubstituted") . '<br>';
|
||||||
|
foreach ($substitutionarray as $key => $val) {
|
||||||
|
$texthelp .= $key . '<br>';
|
||||||
|
}
|
||||||
|
print $form->textwithpicto($langs->trans("MessageOfDay"), $texthelp, 1, 'help', '', 0, 2, 'tooltipmessageofday');
|
||||||
|
|
||||||
|
print '</td><td>';
|
||||||
|
|
||||||
|
$doleditor = new DolEditor('main_motd', (isset($conf->global->MAIN_MOTD) ? $conf->global->MAIN_MOTD : ''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
|
||||||
|
$doleditor->Create();
|
||||||
|
|
||||||
|
print '</td></tr>' . "\n";
|
||||||
|
|
||||||
|
/* no more need for this option. It is now a widget already controlled by end user
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('BoxstatsDisableGlobal') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_GLOBAL_BOXSTATS", array(), $conf->entity, 0, 0, 1, 0);
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
print '<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
|
||||||
|
|
||||||
|
print '<tr class="liste_titre"><td class="titlefieldmiddle">';
|
||||||
|
print $langs->trans("DashboardDisableBlocks");
|
||||||
|
print '</td><td class="titlefieldmiddle">';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableGlobal') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_GLOBAL_WORKBOARD", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
|
||||||
|
// Block meteo
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('MAIN_DISABLE_METEO') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_METEO", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block agenda
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockAgenda') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_AGENDA", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block agenda
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockProject') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_PROJECT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block customer
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockCustomer') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_CUSTOMER", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block supplier
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockSupplier') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_SUPPLIER", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block contract
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockContract') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_CONTRACT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block ticket
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockTicket') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_TICKET", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block bank
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockBank') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_BANK", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block adherent
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockAdherent') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_ADHERENT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block expense report
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockExpenseReport') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_EXPENSEREPORT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Block holiday
|
||||||
|
print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockHoliday') . '</td><td>';
|
||||||
|
print ajax_constantonoff("MAIN_DISABLE_BLOCK_HOLIDAY", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</table>' . "\n";
|
||||||
|
print '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($mode == 'login') {
|
if ($mode == 'login') {
|
||||||
// Other
|
// Other
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
|||||||
@ -403,7 +403,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
|
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'KNOWLEDGEMANAGEMENT_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'KNOWLEDGEMANAGEMENT_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $file) {
|
if (getDolGlobalString($constforvar) == $file) {
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
} else {
|
} else {
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
||||||
@ -545,7 +545,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
// Default
|
// Default
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'KNOWLEDGEMANAGEMENT_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'KNOWLEDGEMANAGEMENT_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $name) {
|
if (getDolGlobalString($constforvar) == $name) {
|
||||||
//print img_picto($langs->trans("Default"), 'on');
|
//print img_picto($langs->trans("Default"), 'on');
|
||||||
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
||||||
|
|||||||
@ -169,7 +169,7 @@ if (empty($reshook)) {
|
|||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
$search[$key] = '';
|
$search[$key] = '';
|
||||||
}
|
}
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|
|||||||
@ -66,10 +66,6 @@ $search_lang = GETPOST('search_lang', 'alpha');
|
|||||||
$search_fk_user = GETPOST('search_fk_user', 'intcomma');
|
$search_fk_user = GETPOST('search_fk_user', 'intcomma');
|
||||||
$search_topic = GETPOST('search_topic', 'alpha');
|
$search_topic = GETPOST('search_topic', 'alpha');
|
||||||
|
|
||||||
if (!empty($user->socid)) {
|
|
||||||
accessforbidden();
|
|
||||||
}
|
|
||||||
|
|
||||||
$acts = array();
|
$acts = array();
|
||||||
$actl = array();
|
$actl = array();
|
||||||
$acts[0] = "activate";
|
$acts[0] = "activate";
|
||||||
@ -100,6 +96,7 @@ if (empty($sortorder)) {
|
|||||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||||
$hookmanager->initHooks(array('emailtemplates'));
|
$hookmanager->initHooks(array('emailtemplates'));
|
||||||
|
|
||||||
|
|
||||||
// Name of SQL tables of dictionaries
|
// Name of SQL tables of dictionaries
|
||||||
$tabname = array();
|
$tabname = array();
|
||||||
$tabname[25] = MAIN_DB_PREFIX."c_email_templates";
|
$tabname[25] = MAIN_DB_PREFIX."c_email_templates";
|
||||||
@ -246,6 +243,12 @@ if ($reshook == 0) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (!empty($user->socid)) {
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
|
||||||
$permissiontoadd = 1;
|
$permissiontoadd = 1;
|
||||||
|
|
||||||
//asort($elementList);
|
//asort($elementList);
|
||||||
@ -273,6 +276,9 @@ if ($reshook < 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (empty($reshook)) {
|
if (empty($reshook)) {
|
||||||
|
// Selection of new fields
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
||||||
|
|
||||||
// Purge search criteria
|
// Purge search criteria
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) {
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) {
|
||||||
// All tests are required to be compatible with all browsers
|
// All tests are required to be compatible with all browsers
|
||||||
@ -281,7 +287,7 @@ if (empty($reshook)) {
|
|||||||
$search_lang = '';
|
$search_lang = '';
|
||||||
$search_fk_user = '';
|
$search_fk_user = '';
|
||||||
$search_topic = '';
|
$search_topic = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -395,7 +401,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
} elseif ($keycode == 'content') {
|
} elseif ($keycode == 'content') {
|
||||||
$sql .= "'".$db->escape(GETPOST($keycode, 'restricthtml'))."'";
|
$sql .= "'".$db->escape(GETPOST($keycode, 'restricthtml'))."'";
|
||||||
} elseif (in_array($keycode, array('joinfiles', 'private', 'position'))) {
|
} elseif (in_array($keycode, array('joinfiles', 'private', 'position', 'entity'))) {
|
||||||
$sql .= (int) GETPOST($keycode, 'int');
|
$sql .= (int) GETPOST($keycode, 'int');
|
||||||
} else {
|
} else {
|
||||||
$sql .= "'".$db->escape(GETPOST($keycode, 'nohtml'))."'";
|
$sql .= "'".$db->escape(GETPOST($keycode, 'nohtml'))."'";
|
||||||
@ -502,9 +508,9 @@ if (empty($reshook)) {
|
|||||||
if ($action == 'confirm_delete' && $confirm == 'yes') { // delete
|
if ($action == 'confirm_delete' && $confirm == 'yes') { // delete
|
||||||
$rowidcol = "rowid";
|
$rowidcol = "rowid";
|
||||||
|
|
||||||
$sql = "DELETE from ".$tabname[$id]." WHERE ".$rowidcol."=".((int) $rowid);
|
$sql = "DELETE from ".$tabname[$id]." WHERE ".$rowidcol." = ".((int) $rowid);
|
||||||
if (!$user->admin) { // A non admin user can only edit its own template
|
if (!$user->admin) { // A non admin user can only edit its own template
|
||||||
$sql .= " AND fk_user = ".((int) $user->id);
|
$sql .= " AND fk_user = ".((int) $user->id);
|
||||||
}
|
}
|
||||||
dol_syslog("delete", LOG_DEBUG);
|
dol_syslog("delete", LOG_DEBUG);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -548,47 +554,20 @@ if (empty($reshook)) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
|
$now = dol_now();
|
||||||
|
|
||||||
$formadmin = new FormAdmin($db);
|
$formadmin = new FormAdmin($db);
|
||||||
|
|
||||||
|
//$help_url = "EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject";
|
||||||
$help_url = '';
|
$help_url = '';
|
||||||
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
|
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
|
||||||
$title = $langs->trans("EMailsSetup");
|
$title = $langs->trans("EMailsSetup");
|
||||||
} else {
|
} else {
|
||||||
$title = $langs->trans("EMailsTemplates");
|
$title = $langs->trans("EMailTemplates");
|
||||||
}
|
}
|
||||||
|
$morejs = array();
|
||||||
llxHeader('', $title, $help_url);
|
$morecss = array();
|
||||||
|
|
||||||
$linkback = '';
|
|
||||||
$titlepicto = 'title_setup';
|
|
||||||
|
|
||||||
|
|
||||||
$url = DOL_URL_ROOT.'/admin/mails_templates.php?action=add';
|
|
||||||
$newcardbutton = dolGetButtonTitle($langs->trans('NewEMailTemplate'), '', 'fa fa-plus-circle', $url, '', $permissiontoadd);
|
|
||||||
|
|
||||||
|
|
||||||
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
|
|
||||||
print load_fiche_titre($title, '', $titlepicto);
|
|
||||||
} else {
|
|
||||||
print load_fiche_titre($title, $newcardbutton, $titlepicto);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
|
|
||||||
$head = email_admin_prepare_head();
|
|
||||||
|
|
||||||
print dol_get_fiche_head($head, 'templates', '', -1);
|
|
||||||
|
|
||||||
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
|
|
||||||
print load_fiche_titre('', $newcardbutton, '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Confirmation de la suppression de la ligne
|
|
||||||
if ($action == 'delete') {
|
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$rowid.'&code='.$code.'&id='.$id, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$sql = "SELECT rowid as rowid, module, label, type_template, lang, fk_user, private, position, topic, joinfiles, content_lines, content, enabled, active";
|
$sql = "SELECT rowid as rowid, module, label, type_template, lang, fk_user, private, position, topic, joinfiles, content_lines, content, enabled, active";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_email_templates";
|
$sql .= " FROM ".MAIN_DB_PREFIX."c_email_templates";
|
||||||
@ -623,6 +602,78 @@ $sql .= $db->order($sortfield, $sortorder);
|
|||||||
$sql .= $db->plimit($listlimit + 1, $offset);
|
$sql .= $db->plimit($listlimit + 1, $offset);
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
|
// Output page
|
||||||
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
|
llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', '');
|
||||||
|
|
||||||
|
$arrayofselected = is_array($toselect) ? $toselect : array();
|
||||||
|
|
||||||
|
$param = '';
|
||||||
|
if (!empty($mode)) {
|
||||||
|
$param .= '&mode='.urlencode($mode);
|
||||||
|
}
|
||||||
|
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
|
$param .= '&contextpage='.urlencode($contextpage);
|
||||||
|
}
|
||||||
|
if ($limit > 0 && $limit != $conf->liste_limit) {
|
||||||
|
$param .= '&limit='.urlencode($limit);
|
||||||
|
}
|
||||||
|
foreach ($search as $key => $val) {
|
||||||
|
if (is_array($search[$key]) && count($search[$key])) {
|
||||||
|
foreach ($search[$key] as $skey) {
|
||||||
|
if ($skey != '') {
|
||||||
|
$param .= '&search_'.$key.'[]='.urlencode($skey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif ($search[$key] != '') {
|
||||||
|
$param .= '&search_'.$key.'='.urlencode($search[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($optioncss != '') {
|
||||||
|
$param .= '&optioncss='.urlencode($optioncss);
|
||||||
|
}
|
||||||
|
// Add $param from extra fields
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||||
|
// Add $param from hooks
|
||||||
|
$parameters = array();
|
||||||
|
$reshook = $hookmanager->executeHooks('printFieldListSearchParam', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||||
|
$param .= $hookmanager->resPrint;
|
||||||
|
|
||||||
|
|
||||||
|
$linkback = '';
|
||||||
|
$titlepicto = 'title_setup';
|
||||||
|
|
||||||
|
|
||||||
|
$url = DOL_URL_ROOT.'/admin/mails_templates.php?action=add&token='.newToken();
|
||||||
|
$newcardbutton = dolGetButtonTitle($langs->trans('NewEMailTemplate'), '', 'fa fa-plus-circle', $url, '', $permissiontoadd);
|
||||||
|
|
||||||
|
|
||||||
|
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
|
||||||
|
print load_fiche_titre($title, '', $titlepicto);
|
||||||
|
} else {
|
||||||
|
print load_fiche_titre($title, $newcardbutton, $titlepicto);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
|
||||||
|
$head = email_admin_prepare_head();
|
||||||
|
|
||||||
|
print dol_get_fiche_head($head, 'templates', '', -1);
|
||||||
|
|
||||||
|
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
|
||||||
|
print load_fiche_titre('', $newcardbutton, '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Confirmation de la suppression de la ligne
|
||||||
|
if ($action == 'delete') {
|
||||||
|
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$rowid.'&code='.$code.'&id='.$id, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$fieldlist = explode(',', $tabfield[$id]);
|
$fieldlist = explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
if ($action == 'add') {
|
if ($action == 'add') {
|
||||||
@ -681,7 +732,7 @@ if ($action == 'add') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($valuetoshow != '') {
|
if ($valuetoshow != '') {
|
||||||
print '<td class="'.$align.'">';
|
print '<th class="'.$align.'">';
|
||||||
if (!empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
|
if (!empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
|
||||||
print '<a href="'.$tabhelp[$id][$value].'" target="_blank" rel="noopener noreferrer">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
print '<a href="'.$tabhelp[$id][$value].'" target="_blank" rel="noopener noreferrer">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
||||||
} elseif (!empty($tabhelp[$id][$value])) {
|
} elseif (!empty($tabhelp[$id][$value])) {
|
||||||
@ -693,12 +744,12 @@ if ($action == 'add') {
|
|||||||
} else {
|
} else {
|
||||||
print $valuetoshow;
|
print $valuetoshow;
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</th>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '<td>';
|
print '<th>';
|
||||||
print '<input type="hidden" name="id" value="'.$id.'">';
|
print '<input type="hidden" name="id" value="'.$id.'">';
|
||||||
print '</td>';
|
print '</th>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$obj = new stdClass();
|
$obj = new stdClass();
|
||||||
@ -742,7 +793,7 @@ if ($action == 'add') {
|
|||||||
$fieldsforcontent = array('topic', 'joinfiles', 'content', 'content_lines');
|
$fieldsforcontent = array('topic', 'joinfiles', 'content', 'content_lines');
|
||||||
}
|
}
|
||||||
foreach ($fieldsforcontent as $tmpfieldlist) {
|
foreach ($fieldsforcontent as $tmpfieldlist) {
|
||||||
print '<tr class="impair nodrag nodrop nohover"><td colspan="6" class="nobottom">';
|
print '<tr class="impair nodrag nodrop nohover"><td colspan="7" class="nobottom">';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
if ($tmpfieldlist == 'topic') {
|
if ($tmpfieldlist == 'topic') {
|
||||||
@ -773,24 +824,33 @@ if ($action == 'add') {
|
|||||||
print $doleditor->Create(1);
|
print $doleditor->Create(1);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if ($tmpfieldlist == 'topic') {
|
|
||||||
print '<td class="center" rowspan="'.(count($fieldsforcontent)).'">';
|
|
||||||
if ($action != 'edit') {
|
|
||||||
print '<input type="submit" class="button button-add" name="actionadd" value="'.$langs->trans("Add").'"><br>';
|
|
||||||
print '<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans("Cancel").'">';
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
}
|
|
||||||
// else print '<td></td>';
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
|
if ($action != 'edit') {
|
||||||
|
print '<center>';
|
||||||
|
print '<input type="submit" class="button button-add" name="actionadd" value="'.$langs->trans("Add").'"> ';
|
||||||
|
print '<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans("Cancel").'">';
|
||||||
|
print '</center>';
|
||||||
|
}
|
||||||
|
|
||||||
print '</div>';
|
print '</div>';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
print '<br>';
|
print '<br><br>';
|
||||||
} // END IF not edit
|
} // END IF not edit
|
||||||
|
|
||||||
|
// List of available record in database
|
||||||
|
dol_syslog("htdocs/admin/dict", LOG_DEBUG);
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if (!$resql) {
|
||||||
|
dol_print_error($db);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
|
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
|
||||||
@ -798,157 +858,155 @@ print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('fro
|
|||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
|
|
||||||
// List of available record in database
|
$i = 0;
|
||||||
dol_syslog("htdocs/admin/dict", LOG_DEBUG);
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
if ($resql) {
|
|
||||||
$num = $db->num_rows($resql);
|
|
||||||
$i = 0;
|
|
||||||
|
|
||||||
$param = '&id='.$id;
|
$param = '&id='.$id;
|
||||||
if ($search_label) {
|
if ($search_label) {
|
||||||
$param .= '&search_label='.urlencode($search_label);
|
$param .= '&search_label='.urlencode($search_label);
|
||||||
}
|
}
|
||||||
if ($search_lang > 0) {
|
if ($search_lang > 0) {
|
||||||
$param .= '&search_lang='.urlencode($search_lang);
|
$param .= '&search_lang='.urlencode($search_lang);
|
||||||
}
|
}
|
||||||
if ($search_type_template != '-1') {
|
if ($search_type_template != '-1') {
|
||||||
$param .= '&search_type_template='.urlencode($search_type_template);
|
$param .= '&search_type_template='.urlencode($search_type_template);
|
||||||
}
|
}
|
||||||
if ($search_fk_user > 0) {
|
if ($search_fk_user > 0) {
|
||||||
$param .= '&search_fk_user='.urlencode($search_fk_user);
|
$param .= '&search_fk_user='.urlencode($search_fk_user);
|
||||||
}
|
}
|
||||||
if ($search_topic) {
|
if ($search_topic) {
|
||||||
$param .= '&search_topic='.urlencode($search_topic);
|
$param .= '&search_topic='.urlencode($search_topic);
|
||||||
}
|
}
|
||||||
|
|
||||||
$paramwithsearch = $param;
|
$paramwithsearch = $param;
|
||||||
if ($sortorder) {
|
if ($sortorder) {
|
||||||
$paramwithsearch .= '&sortorder='.urlencode($sortorder);
|
$paramwithsearch .= '&sortorder='.urlencode($sortorder);
|
||||||
}
|
}
|
||||||
if ($sortfield) {
|
if ($sortfield) {
|
||||||
$paramwithsearch .= '&sortfield='.urlencode($sortfield);
|
$paramwithsearch .= '&sortfield='.urlencode($sortfield);
|
||||||
}
|
}
|
||||||
if (GETPOST('from', 'alpha')) {
|
if (GETPOST('from', 'alpha')) {
|
||||||
$paramwithsearch .= '&from='.urlencode(GETPOST('from', 'alpha'));
|
$paramwithsearch .= '&from='.urlencode(GETPOST('from', 'alpha'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// There is several pages
|
// There is several pages
|
||||||
if ($num > $listlimit) {
|
if ($num > $listlimit) {
|
||||||
print '<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).'">';
|
print '<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).'">';
|
||||||
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page + 1).'</span></li>');
|
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page + 1).'</span></li>');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Title line with search boxes
|
// Title line with search boxes
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
|
||||||
foreach ($fieldlist as $field => $value) {
|
foreach ($fieldlist as $field => $value) {
|
||||||
if ($value == 'label') {
|
if ($value == 'label') {
|
||||||
print '<td class="liste_titre"><input type="text" name="search_label" class="maxwidth200" value="'.dol_escape_htmltag($search_label).'"></td>';
|
print '<td class="liste_titre"><input type="text" name="search_label" class="maxwidth200" value="'.dol_escape_htmltag($search_label).'"></td>';
|
||||||
} elseif ($value == 'lang') {
|
} elseif ($value == 'lang') {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print $formadmin->select_language($search_lang, 'search_lang', 0, null, 1, 0, 0, 'maxwidth150');
|
print $formadmin->select_language($search_lang, 'search_lang', 0, null, 1, 0, 0, 'maxwidth150');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($value == 'fk_user') {
|
} elseif ($value == 'fk_user') {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print $form->select_dolusers($search_fk_user, 'search_fk_user', 1, null, 0, ($user->admin ? '' : 'hierarchyme'), null, 0, 0, 0, '', 0, '', 'maxwidth150');
|
print $form->select_dolusers($search_fk_user, 'search_fk_user', 1, null, 0, ($user->admin ? '' : 'hierarchyme'), null, 0, 0, 0, '', 0, '', 'maxwidth150');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($value == 'topic') {
|
} elseif ($value == 'topic') {
|
||||||
print '<td class="liste_titre"><input type="text" name="search_topic" value="'.dol_escape_htmltag($search_topic).'"></td>';
|
print '<td class="liste_titre"><input type="text" name="search_topic" value="'.dol_escape_htmltag($search_topic).'"></td>';
|
||||||
} elseif ($value == 'type_template') {
|
} elseif ($value == 'type_template') {
|
||||||
print '<td class="liste_titre center">';
|
print '<td class="liste_titre center">';
|
||||||
print $form->selectarray('search_type_template', $elementList, $search_type_template, 1, 0, 0, '', 0, 0, 0, '', 'minwidth150', 1, '', 0, 1);
|
print $form->selectarray('search_type_template', $elementList, $search_type_template, 1, 0, 0, '', 0, 0, 0, '', 'minwidth150', 1, '', 0, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif (!in_array($value, array('content', 'content_lines'))) {
|
} elseif (!in_array($value, array('content', 'content_lines'))) {
|
||||||
print '<td class="liste_titre"></td>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
|
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Action column
|
if (empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
|
||||||
print '<td class="liste_titre right" width="64">';
|
print '<td class="liste_titre"></td>';
|
||||||
$searchpicto = $form->showFilterButtons();
|
}
|
||||||
print $searchpicto;
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Title of lines
|
// Action column
|
||||||
print '<tr class="liste_titre">';
|
print '<td class="liste_titre right" width="64">';
|
||||||
foreach ($fieldlist as $field => $value) {
|
$searchpicto = $form->showFilterButtons();
|
||||||
$showfield = 1; // By defaut
|
print $searchpicto;
|
||||||
$align = "left";
|
print '</td>';
|
||||||
$sortable = 1;
|
print '</tr>';
|
||||||
$valuetoshow = '';
|
|
||||||
$forcenowrap = 1;
|
|
||||||
/*
|
|
||||||
$tmparray=getLabelOfField($fieldlist[$field]);
|
|
||||||
$showfield=$tmp['showfield'];
|
|
||||||
$valuetoshow=$tmp['valuetoshow'];
|
|
||||||
$align=$tmp['align'];
|
|
||||||
$sortable=$tmp['sortable'];
|
|
||||||
*/
|
|
||||||
$valuetoshow = ucfirst($fieldlist[$field]); // By defaut
|
|
||||||
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
|
||||||
if ($fieldlist[$field] == 'fk_user') {
|
|
||||||
$valuetoshow = $langs->trans("Owner");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'lang') {
|
|
||||||
$valuetoshow = $langs->trans("Language");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'type') {
|
|
||||||
$valuetoshow = $langs->trans("Type");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
|
|
||||||
$valuetoshow = $langs->trans("Code");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'type_template') {
|
|
||||||
$align = 'center';
|
|
||||||
$valuetoshow = $langs->trans("TypeOfTemplate");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'private') {
|
|
||||||
$align = 'center';
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'position') {
|
|
||||||
$align = 'center';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($fieldlist[$field] == 'joinfiles') {
|
// Title of lines
|
||||||
$valuetoshow = $langs->trans("FilesAttachedToEmail"); $align = 'center'; $forcenowrap = 0;
|
print '<tr class="liste_titre">';
|
||||||
}
|
foreach ($fieldlist as $field => $value) {
|
||||||
if ($fieldlist[$field] == 'content') {
|
$showfield = 1; // By defaut
|
||||||
$valuetoshow = $langs->trans("Content"); $showfield = 0;
|
$align = "left";
|
||||||
}
|
$sortable = 1;
|
||||||
if ($fieldlist[$field] == 'content_lines') {
|
$valuetoshow = '';
|
||||||
$valuetoshow = $langs->trans("ContentForLines"); $showfield = 0;
|
$forcenowrap = 1;
|
||||||
}
|
/*
|
||||||
|
$tmparray=getLabelOfField($fieldlist[$field]);
|
||||||
// Show fields
|
$showfield=$tmp['showfield'];
|
||||||
if ($showfield) {
|
$valuetoshow=$tmp['valuetoshow'];
|
||||||
if (!empty($tabhelp[$id][$value])) {
|
$align=$tmp['align'];
|
||||||
if (in_array($value, array('topic'))) {
|
$sortable=$tmp['sortable'];
|
||||||
$valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, 'tooltip'.$value, $forcenowrap); // Tooltip on click
|
*/
|
||||||
} else {
|
$valuetoshow = ucfirst($fieldlist[$field]); // By defaut
|
||||||
$valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, '', $forcenowrap); // Tooltip on hover
|
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
||||||
}
|
if ($fieldlist[$field] == 'fk_user') {
|
||||||
}
|
$valuetoshow = $langs->trans("Owner");
|
||||||
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable ? $fieldlist[$field] : ''), ($page ? 'page='.$page.'&' : ''), $param, "align=".$align, $sortfield, $sortorder);
|
}
|
||||||
}
|
if ($fieldlist[$field] == 'lang') {
|
||||||
|
$valuetoshow = $langs->trans("Language");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'type') {
|
||||||
|
$valuetoshow = $langs->trans("Type");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
|
||||||
|
$valuetoshow = $langs->trans("Code");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'type_template') {
|
||||||
|
$align = 'center';
|
||||||
|
$valuetoshow = $langs->trans("TypeOfTemplate");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'private') {
|
||||||
|
$align = 'center';
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'position') {
|
||||||
|
$align = 'center';
|
||||||
}
|
}
|
||||||
|
|
||||||
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page ? 'page='.$page.'&' : ''), $param, 'align="center"', $sortfield, $sortorder);
|
if ($fieldlist[$field] == 'joinfiles') {
|
||||||
print getTitleFieldOfList('');
|
$valuetoshow = $langs->trans("FilesAttachedToEmail"); $align = 'center'; $forcenowrap = 0;
|
||||||
print '</tr>';
|
}
|
||||||
|
if ($fieldlist[$field] == 'content') {
|
||||||
|
$valuetoshow = $langs->trans("Content"); $showfield = 0;
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'content_lines') {
|
||||||
|
$valuetoshow = $langs->trans("ContentForLines"); $showfield = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if ($num) {
|
// Show fields
|
||||||
// Lines with values
|
if ($showfield) {
|
||||||
while ($i < $num) {
|
if (!empty($tabhelp[$id][$value])) {
|
||||||
$obj = $db->fetch_object($resql);
|
if (in_array($value, array('topic'))) {
|
||||||
|
$valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, 'tooltip'.$value, $forcenowrap); // Tooltip on click
|
||||||
|
} else {
|
||||||
|
$valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, '', $forcenowrap); // Tooltip on hover
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable ? $fieldlist[$field] : ''), ($page ? 'page='.$page.'&' : ''), $param, "align=".$align, $sortfield, $sortorder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page ? 'page='.$page.'&' : ''), $param, 'align="center"', $sortfield, $sortorder);
|
||||||
|
print getTitleFieldOfList('');
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
if ($num) {
|
||||||
|
$nbqualified = 0;
|
||||||
|
|
||||||
|
// Lines with values
|
||||||
|
while ($i < $num) {
|
||||||
|
$obj = $db->fetch_object($resql);
|
||||||
|
|
||||||
|
if ($obj) {
|
||||||
if ($action == 'edit' && ($rowid == (!empty($obj->rowid) ? $obj->rowid : $obj->code))) {
|
if ($action == 'edit' && ($rowid == (!empty($obj->rowid) ? $obj->rowid : $obj->code))) {
|
||||||
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
|
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
|
||||||
|
|
||||||
@ -1018,6 +1076,8 @@ if ($resql) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
$nbqualified++;
|
||||||
} else {
|
} else {
|
||||||
// If template is for a module, check module is enabled.
|
// If template is for a module, check module is enabled.
|
||||||
if ($obj->module) {
|
if ($obj->module) {
|
||||||
@ -1039,6 +1099,8 @@ if ($resql) {
|
|||||||
continue; // Email template not qualified
|
continue; // Email template not qualified
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$nbqualified++;
|
||||||
|
|
||||||
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
|
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
|
||||||
|
|
||||||
$tmpaction = 'view';
|
$tmpaction = 'view';
|
||||||
@ -1155,13 +1217,16 @@ if ($resql) {
|
|||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
dol_print_error($db);
|
|
||||||
|
// If no record found
|
||||||
|
if ($nbqualified == 0) {
|
||||||
|
$colspan = 10;
|
||||||
|
print '<tr><td colspan="'.$colspan.'"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|||||||
@ -172,6 +172,10 @@ foreach ($modulesdir as $dir) {
|
|||||||
$moduleposition = '80'; // External modules at end by default
|
$moduleposition = '80'; // External modules at end by default
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($familyinfo[$familykey]['position'])) {
|
||||||
|
$familyinfo[$familykey]['position'] = '0';
|
||||||
|
}
|
||||||
|
|
||||||
$orders[$i] = $familyinfo[$familykey]['position']."_".$familykey."_".$moduleposition."_".$j; // Sort by family, then by module position then number
|
$orders[$i] = $familyinfo[$familykey]['position']."_".$familykey."_".$moduleposition."_".$j; // Sort by family, then by module position then number
|
||||||
$dirmod[$i] = $dir;
|
$dirmod[$i] = $dir;
|
||||||
//print $i.'-'.$dirmod[$i].'<br>';
|
//print $i.'-'.$dirmod[$i].'<br>';
|
||||||
@ -250,19 +254,19 @@ if (!empty($conf->global->$const_name)) {
|
|||||||
$text .= $langs->trans("Disabled");
|
$text .= $langs->trans("Disabled");
|
||||||
}
|
}
|
||||||
$tmp = $objMod->getLastActivationInfo();
|
$tmp = $objMod->getLastActivationInfo();
|
||||||
$authorid = $tmp['authorid'];
|
$authorid = (empty($tmp['authorid']) ? '' : $tmp['authorid']);
|
||||||
if ($authorid > 0) {
|
if ($authorid > 0) {
|
||||||
$tmpuser = new User($db);
|
$tmpuser = new User($db);
|
||||||
$tmpuser->fetch($authorid);
|
$tmpuser->fetch($authorid);
|
||||||
$text .= '<br><span class="opacitymedium">'.$langs->trans("LastActivationAuthor").':</span> ';
|
$text .= '<br><span class="opacitymedium">'.$langs->trans("LastActivationAuthor").':</span> ';
|
||||||
$text .= $tmpuser->getNomUrl(1);
|
$text .= $tmpuser->getNomUrl(1);
|
||||||
}
|
}
|
||||||
$ip = $tmp['ip'];
|
$ip = (empty($tmp['ip']) ? '' : $tmp['ip']);
|
||||||
if ($ip) {
|
if ($ip) {
|
||||||
$text .= '<br><span class="opacitymedium">'.$langs->trans("LastActivationIP").':</span> ';
|
$text .= '<br><span class="opacitymedium">'.$langs->trans("LastActivationIP").':</span> ';
|
||||||
$text .= $ip;
|
$text .= $ip;
|
||||||
}
|
}
|
||||||
$lastactivationversion = $tmp['lastactivationversion'];
|
$lastactivationversion = (empty($tmp['lastactivationversion']) ? '' : $tmp['lastactivationversion']);
|
||||||
if ($lastactivationversion) {
|
if ($lastactivationversion) {
|
||||||
$text .= '<br><span class="opacitymedium">'.$langs->trans("LastActivationVersion").':</span> ';
|
$text .= '<br><span class="opacitymedium">'.$langs->trans("LastActivationVersion").':</span> ';
|
||||||
$text .= $lastactivationversion;
|
$text .= $lastactivationversion;
|
||||||
|
|||||||
@ -183,6 +183,22 @@ print "<td>".$name."</td>";
|
|||||||
print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions);
|
print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions);
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
|
|
||||||
|
$functions = ["easter_date"];
|
||||||
|
$name = "Calendar";
|
||||||
|
|
||||||
|
print "<tr>";
|
||||||
|
print "<td>".$name."</td>";
|
||||||
|
print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions);
|
||||||
|
print "</tr>";
|
||||||
|
|
||||||
|
$functions = ["simplexml_load_string"];
|
||||||
|
$name = "Xml";
|
||||||
|
|
||||||
|
print "<tr>";
|
||||||
|
print "<td>".$name."</td>";
|
||||||
|
print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions);
|
||||||
|
print "</tr>";
|
||||||
|
|
||||||
if (empty($_SERVER["SERVER_ADMIN"]) || $_SERVER["SERVER_ADMIN"] != 'doliwamp@localhost') {
|
if (empty($_SERVER["SERVER_ADMIN"]) || $_SERVER["SERVER_ADMIN"] != 'doliwamp@localhost') {
|
||||||
$functions = ["locale_get_primary_language", "locale_get_region"];
|
$functions = ["locale_get_primary_language", "locale_get_region"];
|
||||||
$name = "Intl";
|
$name = "Intl";
|
||||||
|
|||||||
@ -61,7 +61,11 @@ $version = '0.0';
|
|||||||
if ($action == 'getlastversion') {
|
if ($action == 'getlastversion') {
|
||||||
$result = getURLContent('https://sourceforge.net/projects/dolibarr/rss');
|
$result = getURLContent('https://sourceforge.net/projects/dolibarr/rss');
|
||||||
//var_dump($result['content']);
|
//var_dump($result['content']);
|
||||||
$sfurl = simplexml_load_string($result['content'], 'SimpleXMLElement', LIBXML_NOCDATA|LIBXML_NONET);
|
if (function_exists('simplexml_load_string')) {
|
||||||
|
$sfurl = simplexml_load_string($result['content'], 'SimpleXMLElement', LIBXML_NOCDATA|LIBXML_NONET);
|
||||||
|
} else {
|
||||||
|
$sfurl = 'xml_not_available';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -82,7 +86,10 @@ if (function_exists('curl_init')) {
|
|||||||
$conf->global->MAIN_USE_RESPONSE_TIMEOUT = 10;
|
$conf->global->MAIN_USE_RESPONSE_TIMEOUT = 10;
|
||||||
|
|
||||||
if ($action == 'getlastversion') {
|
if ($action == 'getlastversion') {
|
||||||
if ($sfurl) {
|
if ($sfurl == 'xml_not_available') {
|
||||||
|
$langs->load("errors");
|
||||||
|
print $langs->trans("LastStableVersion").' : <b class="error">'.$langs->trans("ErrorFunctionNotAvailableInPHP", 'simplexml_load_string').'</b><br>';
|
||||||
|
} elseif ($sfurl) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while (!empty($sfurl->channel[0]->item[$i]->title) && $i < 10000) {
|
while (!empty($sfurl->channel[0]->item[$i]->title) && $i < 10000) {
|
||||||
$title = $sfurl->channel[0]->item[$i]->title;
|
$title = $sfurl->channel[0]->item[$i]->title;
|
||||||
|
|||||||
@ -90,7 +90,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
|||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
||||||
$transkey = '';
|
$transkey = '';
|
||||||
$transvalue = '';
|
$transvalue = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -295,7 +295,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
|
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'WORKSTATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'WORKSTATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $file) {
|
if (getDolGlobalString($constforvar) == $file) {
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
} else {
|
} else {
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
||||||
@ -437,7 +437,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
// Default
|
// Default
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'WORKSTATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'WORKSTATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $name) {
|
if (getDolGlobalString($constforvar) == $name) {
|
||||||
print img_picto($langs->trans("Default"), 'on');
|
print img_picto($langs->trans("Default"), 'on');
|
||||||
} else {
|
} else {
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
||||||
|
|||||||
@ -266,7 +266,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
|
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'ASSET_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'ASSET_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $file) {
|
if (getDolGlobalString($constforvar) == $file) {
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
} else {
|
} else {
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
||||||
@ -408,7 +408,7 @@ foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
|||||||
// Default
|
// Default
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
$constforvar = 'ASSET_'.strtoupper($myTmpObjectKey).'_ADDON';
|
$constforvar = 'ASSET_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
if ($conf->global->$constforvar == $name) {
|
if (getDolGlobalString($constforvar) == $name) {
|
||||||
//print img_picto($langs->trans("Default"), 'on');
|
//print img_picto($langs->trans("Default"), 'on');
|
||||||
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
||||||
|
|||||||
@ -286,7 +286,7 @@ if ($conf->product->enabled || $conf->product->service) {
|
|||||||
print '<input type="submit" class="button" name="submitformbarcodeproductgen" id="submitformbarcodeproductgen" value="'.$langs->trans("InitEmptyBarCode", min($maxperinit, $nbno)).'"'.$moretags1.'>';
|
print '<input type="submit" class="button" name="submitformbarcodeproductgen" id="submitformbarcodeproductgen" value="'.$langs->trans("InitEmptyBarCode", min($maxperinit, $nbno)).'"'.$moretags1.'>';
|
||||||
$moretags2 = (($nbno == $nbtotal) ? ' disabled' : '');
|
$moretags2 = (($nbno == $nbtotal) ? ' disabled' : '');
|
||||||
print ' ';
|
print ' ';
|
||||||
print '<input type="submit" class="button" name="eraseallbarcode" id="eraseallbarcode" value="'.$langs->trans("EraseAllCurrentBarCode").'"'.$moretags2.' onClick="return confirm_erase();">';
|
print '<input type="submit" class="button butActionDelete" name="eraseallbarcode" id="eraseallbarcode" value="'.$langs->trans("EraseAllCurrentBarCode").'"'.$moretags2.' onClick="return confirm_erase();">';
|
||||||
print '<br><br><br><br>';
|
print '<br><br><br><br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -118,7 +118,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_ref = '';
|
$search_ref = '';
|
||||||
$search_amount = '';
|
$search_amount = '';
|
||||||
$search_showonlyerrors = 0;
|
$search_showonlyerrors = 0;
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -734,9 +734,9 @@ if ($type == Categorie::TYPE_MEMBER) {
|
|||||||
print '<input type="hidden" name="action" value="addintocategory">';
|
print '<input type="hidden" name="action" value="addintocategory">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
print $langs->trans("AddMemberIntoCategory").' ';
|
print $langs->trans("AssignCategoryTo").' ';
|
||||||
print $form->selectMembers('', 'elemid');
|
print $form->selectMembers('', 'elemid');
|
||||||
print '<input type="submit" class="button buttongen" value="'.$langs->trans("ClassifyInCategory").'"></td>';
|
print '<input type="submit" class="button buttongen" value="'.$langs->trans("Save").'"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|||||||
@ -217,7 +217,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$dateend_dtstart = '';
|
$dateend_dtstart = '';
|
||||||
$dateend_dtend = '';
|
$dateend_dtend = '';
|
||||||
$search_status = '';
|
$search_status = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -173,7 +173,7 @@ if (empty($reshook)) {
|
|||||||
// terms of the settlement
|
// terms of the settlement
|
||||||
if ($action == 'setconditions' && $user->rights->societe->creer) {
|
if ($action == 'setconditions' && $user->rights->societe->creer) {
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int'));
|
$result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int'), GETPOST('cond_reglement_id_deposit_percent', 'alpha'));
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
@ -415,9 +415,9 @@ if ($object->id > 0) {
|
|||||||
print '</tr></table>';
|
print '</tr></table>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
if ($action == 'editconditions') {
|
if ($action == 'editconditions') {
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1);
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1, '', 1, $object->deposit_percent);
|
||||||
} else {
|
} else {
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'none');
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'none', 0, '', 1, $object->deposit_percent);
|
||||||
}
|
}
|
||||||
print "</td>";
|
print "</td>";
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -103,7 +103,7 @@ if (empty($reshook)) {
|
|||||||
}*/
|
}*/
|
||||||
$search_ref = '';
|
$search_ref = '';
|
||||||
$search_all = '';
|
$search_all = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|
|||||||
@ -402,6 +402,7 @@ if (empty($reshook)) {
|
|||||||
$object->warehouse_id = GETPOST('warehouse_id', 'int');
|
$object->warehouse_id = GETPOST('warehouse_id', 'int');
|
||||||
$object->duree_validite = $duration;
|
$object->duree_validite = $duration;
|
||||||
$object->cond_reglement_id = GETPOST('cond_reglement_id');
|
$object->cond_reglement_id = GETPOST('cond_reglement_id');
|
||||||
|
$object->deposit_percent = GETPOST('cond_reglement_id_deposit_percent', 'alpha');
|
||||||
$object->mode_reglement_id = GETPOST('mode_reglement_id');
|
$object->mode_reglement_id = GETPOST('mode_reglement_id');
|
||||||
$object->fk_account = GETPOST('fk_account', 'int');
|
$object->fk_account = GETPOST('fk_account', 'int');
|
||||||
$object->remise_absolue = price2num(GETPOST('remise_absolue'), 'MU', 2); // deprecated
|
$object->remise_absolue = price2num(GETPOST('remise_absolue'), 'MU', 2); // deprecated
|
||||||
@ -434,6 +435,7 @@ if (empty($reshook)) {
|
|||||||
$object->warehouse_id = GETPOST('warehouse_id', 'int');
|
$object->warehouse_id = GETPOST('warehouse_id', 'int');
|
||||||
$object->duree_validite = price2num(GETPOST('duree_validite', 'alpha'));
|
$object->duree_validite = price2num(GETPOST('duree_validite', 'alpha'));
|
||||||
$object->cond_reglement_id = GETPOST('cond_reglement_id', 'int');
|
$object->cond_reglement_id = GETPOST('cond_reglement_id', 'int');
|
||||||
|
$object->deposit_percent = GETPOST('cond_reglement_id_deposit_percent', 'alpha');
|
||||||
$object->mode_reglement_id = GETPOST('mode_reglement_id', 'int');
|
$object->mode_reglement_id = GETPOST('mode_reglement_id', 'int');
|
||||||
$object->fk_account = GETPOST('fk_account', 'int');
|
$object->fk_account = GETPOST('fk_account', 'int');
|
||||||
$object->contact_id = GETPOST('contactid', 'int');
|
$object->contact_id = GETPOST('contactid', 'int');
|
||||||
@ -687,10 +689,62 @@ if (empty($reshook)) {
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$deposit = null;
|
||||||
|
$locationTarget = '';
|
||||||
|
|
||||||
|
$deposit_percent_from_payment_terms = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $object->cond_reglement_id);
|
||||||
|
|
||||||
|
if (
|
||||||
|
!$error && GETPOST('statut', 'int') == $object::STATUS_SIGNED && GETPOST('generate_deposit', 'alpha') == 'on'
|
||||||
|
&& ! empty($deposit_percent_from_payment_terms) && ! empty($conf->facture->enabled) && ! empty($user->rights->facture->creer)
|
||||||
|
) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
|
||||||
|
|
||||||
|
$date = dol_mktime(0, 0, 0, GETPOST('datefmonth', 'int'), GETPOST('datefday', 'int'), GETPOST('datefyear', 'int'));
|
||||||
|
$forceFields = array();
|
||||||
|
|
||||||
|
if (GETPOSTISSET('date_pointoftax')) {
|
||||||
|
$forceFields['date_pointoftax'] = dol_mktime(0, 0, 0, GETPOST('date_pointoftaxmonth', 'int'), GETPOST('date_pointoftaxday', 'int'), GETPOST('date_pointoftaxyear', 'int'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$deposit = Facture::createDepositFromOrigin($object, $date, GETPOST('cond_reglement_id', 'int'), $user, 0, GETPOST('validate_generated_deposit', 'alpha') == 'on', $forceFields);
|
||||||
|
|
||||||
|
if ($deposit) {
|
||||||
|
setEventMessage('DepositGenerated');
|
||||||
|
$locationTarget = DOL_URL_ROOT . '/compta/facture/card.php?id=' . $deposit->id;
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$db->commit();
|
$db->commit();
|
||||||
|
|
||||||
|
if ($deposit && empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
|
||||||
|
$ret = $deposit->fetch($deposit->id); // Reload to get new records
|
||||||
|
$outputlangs = $langs;
|
||||||
|
|
||||||
|
if ($conf->global->MAIN_MULTILANGS) {
|
||||||
|
$outputlangs = new Translate('', $conf);
|
||||||
|
$outputlangs->setDefaultLang($deposit->thirdparty->default_lang);
|
||||||
|
$outputlangs->load('products');
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $deposit->generateDocument($deposit->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages($deposit->error, $deposit->errors, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($locationTarget) {
|
||||||
|
header('Location: ' . $locationTarget);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
|
$action = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1370,7 +1424,7 @@ if (empty($reshook)) {
|
|||||||
$result = $object->set_demand_reason($user, GETPOST('demand_reason_id', 'int'));
|
$result = $object->set_demand_reason($user, GETPOST('demand_reason_id', 'int'));
|
||||||
} elseif ($action == 'setconditions' && $usercancreate) {
|
} elseif ($action == 'setconditions' && $usercancreate) {
|
||||||
// Terms of payment
|
// Terms of payment
|
||||||
$result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int'));
|
$result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int'), GETPOST('cond_reglement_id_deposit_percent', 'alpha'));
|
||||||
} elseif ($action == 'setremisepercent' && $usercancreate) {
|
} elseif ($action == 'setremisepercent' && $usercancreate) {
|
||||||
$result = $object->set_remise_percent($user, price2num(GETPOST('remise_percent'), '', 2));
|
$result = $object->set_remise_percent($user, price2num(GETPOST('remise_percent'), '', 2));
|
||||||
} elseif ($action == 'setremiseabsolue' && $usercancreate) {
|
} elseif ($action == 'setremiseabsolue' && $usercancreate) {
|
||||||
@ -1656,9 +1710,9 @@ if ($action == 'create') {
|
|||||||
print '<tr class="field_duree_validitee"><td class="titlefieldcreate fieldrequired">'.$langs->trans("ValidityDuration").'</td><td class="valuefieldcreate">'.img_picto('', 'clock', 'class="paddingright"').'<input name="duree_validite" class="width50" value="'.(GETPOSTISSET('duree_validite') ? GETPOST('duree_validite', 'alphanohtml') : $conf->global->PROPALE_VALIDITY_DURATION).'"> '.$langs->trans("days").'</td></tr>';
|
print '<tr class="field_duree_validitee"><td class="titlefieldcreate fieldrequired">'.$langs->trans("ValidityDuration").'</td><td class="valuefieldcreate">'.img_picto('', 'clock', 'class="paddingright"').'<input name="duree_validite" class="width50" value="'.(GETPOSTISSET('duree_validite') ? GETPOST('duree_validite', 'alphanohtml') : $conf->global->PROPALE_VALIDITY_DURATION).'"> '.$langs->trans("days").'</td></tr>';
|
||||||
|
|
||||||
// Terms of payment
|
// Terms of payment
|
||||||
print '<tr class="field_cond_reglement_id"><td class="titlefieldcreate nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td class="valuefieldcreate">';
|
print '<tr class="field_cond_reglement_id"><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>';
|
||||||
print img_picto('', 'payment', 'class="pictofixedwidth"');
|
print img_picto('', 'paiment');
|
||||||
$form->select_conditions_paiements((GETPOSTISSET('cond_reglement_id') && GETPOST('cond_reglement_id') != 0) ? GETPOST('cond_reglement_id', 'int') : $soc->cond_reglement_id, 'cond_reglement_id', -1, 1);
|
$form->select_conditions_paiements((GETPOSTISSET('cond_reglement_id') && GETPOST('cond_reglement_id') != 0) ? GETPOST('cond_reglement_id', 'int') : $soc->cond_reglement_id, 'cond_reglement_id', 1, 1, 0, '', (GETPOSTISSET('cond_reglement_id_deposit_percent') ? GETPOST('cond_reglement_id_deposit_percent', 'alpha') : $soc->deposit_percent));
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Mode of payment
|
// Mode of payment
|
||||||
@ -1945,6 +1999,129 @@ if ($action == 'create') {
|
|||||||
array('type' => 'text', 'name' => 'note_private', 'label' => $langs->trans("Note"), 'value' => '') // Field to complete private note (not replace)
|
array('type' => 'text', 'name' => 'note_private', 'label' => $langs->trans("Note"), 'value' => '') // Field to complete private note (not replace)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$deposit_percent_from_payment_terms = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $object->cond_reglement_id);
|
||||||
|
|
||||||
|
if (! empty($deposit_percent_from_payment_terms) && ! empty($conf->facture->enabled) && ! empty($user->rights->facture->creer)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
|
||||||
|
|
||||||
|
$object->fetchObjectLinked();
|
||||||
|
|
||||||
|
$eligibleForDepositGeneration = true;
|
||||||
|
|
||||||
|
if (array_key_exists('facture', $object->linkedObjects)) {
|
||||||
|
foreach ($object->linkedObjects['facture'] as $invoice) {
|
||||||
|
if ($invoice->type == Facture::TYPE_DEPOSIT) {
|
||||||
|
$eligibleForDepositGeneration = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($eligibleForDepositGeneration && array_key_exists('commande', $object->linkedObjects)) {
|
||||||
|
foreach ($object->linkedObjects['commande'] as $order) {
|
||||||
|
$order->fetchObjectLinked();
|
||||||
|
|
||||||
|
if (array_key_exists('facture', $order->linkedObjects)) {
|
||||||
|
foreach ($order->linkedObjects['facture'] as $invoice) {
|
||||||
|
if ($invoice->type == Facture::TYPE_DEPOSIT) {
|
||||||
|
$eligibleForDepositGeneration = false;
|
||||||
|
break 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($eligibleForDepositGeneration) {
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'tdclass' => 'showonlyifsigned',
|
||||||
|
'name' => 'generate_deposit',
|
||||||
|
'label' => $form->textwithpicto($langs->trans('GenerateDeposit', $object->deposit_percent), $langs->trans('DepositGenerationPermittedByThePaymentTermsSelected'))
|
||||||
|
);
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'date',
|
||||||
|
'tdclass' => 'fieldrequired showonlyifgeneratedeposit',
|
||||||
|
'name' => 'datef',
|
||||||
|
'label' => $langs->trans('DateInvoice'),
|
||||||
|
'value' => dol_now(),
|
||||||
|
'datenow' => true
|
||||||
|
);
|
||||||
|
|
||||||
|
if (! empty($conf->global->INVOICE_POINTOFTAX_DATE)) {
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'date',
|
||||||
|
'tdclass' => 'fieldrequired showonlyifgeneratedeposit',
|
||||||
|
'name' => 'date_pointoftax',
|
||||||
|
'label' => $langs->trans('DatePointOfTax'),
|
||||||
|
'value' => dol_now(),
|
||||||
|
'datenow' => true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
$form->select_conditions_paiements(0, 'cond_reglement_id', -1, 0, 0, 'minwidth200');
|
||||||
|
$paymentTermsSelect = ob_get_clean();
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'other',
|
||||||
|
'tdclass' => 'fieldrequired showonlyifgeneratedeposit',
|
||||||
|
'name' => 'cond_reglement_id',
|
||||||
|
'label' => $langs->trans('PaymentTerm'),
|
||||||
|
'value' => $paymentTermsSelect
|
||||||
|
);
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'tdclass' => 'showonlyifgeneratedeposit',
|
||||||
|
'name' => 'validate_generated_deposit',
|
||||||
|
'label' => $langs->trans('ValidateGeneratedDeposit')
|
||||||
|
);
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'onecolumn',
|
||||||
|
'value' => '
|
||||||
|
<script>
|
||||||
|
let signedValue = ' . $object::STATUS_SIGNED . ';
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$("[name=generate_deposit]").change(function () {
|
||||||
|
let $self = $(this);
|
||||||
|
let $target = $(".showonlyifgeneratedeposit").parent(".tagtr");
|
||||||
|
|
||||||
|
if (! $self.parents(".tagtr").is(":hidden") && $self.is(":checked")) {
|
||||||
|
$target.show();
|
||||||
|
} else {
|
||||||
|
$target.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#statut").change(function() {
|
||||||
|
let $target = $(".showonlyifsigned").parent(".tagtr");
|
||||||
|
|
||||||
|
if ($(this).val() == signedValue) {
|
||||||
|
$target.show();
|
||||||
|
} else {
|
||||||
|
$target.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
$("[name=generate_deposit]").trigger("change");
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#statut").trigger("change");
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($conf->notification->enabled)) {
|
if (!empty($conf->notification->enabled)) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/notify.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/notify.class.php';
|
||||||
$notify = new Notify($db);
|
$notify = new Notify($db);
|
||||||
@ -2171,9 +2348,9 @@ if ($action == 'create') {
|
|||||||
print '</tr></table>';
|
print '</tr></table>';
|
||||||
print '</td><td class="valuefield">';
|
print '</td><td class="valuefield">';
|
||||||
if ($action == 'editconditions' && $usercancreate && $caneditfield) {
|
if ($action == 'editconditions' && $usercancreate && $caneditfield) {
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id');
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 0, '', 1, $object->deposit_percent);
|
||||||
} else {
|
} else {
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none');
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none', 0, '', 1, $object->deposit_percent);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -206,6 +206,7 @@ class Propal extends CommonObject
|
|||||||
public $total;
|
public $total;
|
||||||
|
|
||||||
public $cond_reglement_code;
|
public $cond_reglement_code;
|
||||||
|
public $deposit_percent;
|
||||||
public $mode_reglement_code;
|
public $mode_reglement_code;
|
||||||
public $remise_percent;
|
public $remise_percent;
|
||||||
|
|
||||||
@ -319,6 +320,7 @@ class Propal extends CommonObject
|
|||||||
'fk_account' =>array('type'=>'integer', 'label'=>'BankAccount', 'enabled'=>1, 'visible'=>-1, 'position'=>150),
|
'fk_account' =>array('type'=>'integer', 'label'=>'BankAccount', 'enabled'=>1, 'visible'=>-1, 'position'=>150),
|
||||||
'fk_currency' =>array('type'=>'varchar(3)', 'label'=>'Currency', 'enabled'=>1, 'visible'=>-1, 'position'=>155),
|
'fk_currency' =>array('type'=>'varchar(3)', 'label'=>'Currency', 'enabled'=>1, 'visible'=>-1, 'position'=>155),
|
||||||
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'position'=>160),
|
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'position'=>160),
|
||||||
|
'deposit_percent' =>array('type'=>'varchar(63)', 'label'=>'DepositPercent', 'enabled'=>1, 'visible'=>-1, 'position'=>161),
|
||||||
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'PaymentMode', 'enabled'=>1, 'visible'=>-1, 'position'=>165),
|
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'PaymentMode', 'enabled'=>1, 'visible'=>-1, 'position'=>165),
|
||||||
'note_private' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>170),
|
'note_private' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>170),
|
||||||
'note_public' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>175),
|
'note_public' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>175),
|
||||||
@ -1100,6 +1102,7 @@ class Propal extends CommonObject
|
|||||||
$sql .= ", model_pdf";
|
$sql .= ", model_pdf";
|
||||||
$sql .= ", fin_validite";
|
$sql .= ", fin_validite";
|
||||||
$sql .= ", fk_cond_reglement";
|
$sql .= ", fk_cond_reglement";
|
||||||
|
$sql .= ", deposit_percent";
|
||||||
$sql .= ", fk_mode_reglement";
|
$sql .= ", fk_mode_reglement";
|
||||||
$sql .= ", fk_account";
|
$sql .= ", fk_account";
|
||||||
$sql .= ", ref_client";
|
$sql .= ", ref_client";
|
||||||
@ -1133,6 +1136,7 @@ class Propal extends CommonObject
|
|||||||
$sql .= ", '".$this->db->escape($this->model_pdf)."'";
|
$sql .= ", '".$this->db->escape($this->model_pdf)."'";
|
||||||
$sql .= ", ".($this->fin_validite != '' ? "'".$this->db->idate($this->fin_validite)."'" : "NULL");
|
$sql .= ", ".($this->fin_validite != '' ? "'".$this->db->idate($this->fin_validite)."'" : "NULL");
|
||||||
$sql .= ", ".($this->cond_reglement_id > 0 ? ((int) $this->cond_reglement_id) : 'NULL');
|
$sql .= ", ".($this->cond_reglement_id > 0 ? ((int) $this->cond_reglement_id) : 'NULL');
|
||||||
|
$sql .= ", ".(! empty($this->deposit_percent) ? "'".$this->db->escape($this->deposit_percent)."'" : 'NULL');
|
||||||
$sql .= ", ".($this->mode_reglement_id > 0 ? ((int) $this->mode_reglement_id) : 'NULL');
|
$sql .= ", ".($this->mode_reglement_id > 0 ? ((int) $this->mode_reglement_id) : 'NULL');
|
||||||
$sql .= ", ".($this->fk_account > 0 ? ((int) $this->fk_account) : 'NULL');
|
$sql .= ", ".($this->fk_account > 0 ? ((int) $this->fk_account) : 'NULL');
|
||||||
$sql .= ", '".$this->db->escape($this->ref_client)."'";
|
$sql .= ", '".$this->db->escape($this->ref_client)."'";
|
||||||
@ -1360,6 +1364,7 @@ class Propal extends CommonObject
|
|||||||
if ($objsoc->fetch($socid) > 0) {
|
if ($objsoc->fetch($socid) > 0) {
|
||||||
$object->socid = $objsoc->id;
|
$object->socid = $objsoc->id;
|
||||||
$object->cond_reglement_id = (!empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
|
$object->cond_reglement_id = (!empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
|
||||||
|
$object->deposit_percent = (!empty($objsoc->deposit_percent) ? $objsoc->deposit_percent : null);
|
||||||
$object->mode_reglement_id = (!empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
|
$object->mode_reglement_id = (!empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
|
||||||
$object->fk_delivery_address = '';
|
$object->fk_delivery_address = '';
|
||||||
|
|
||||||
@ -1536,7 +1541,7 @@ class Propal extends CommonObject
|
|||||||
$sql .= ", c.label as statut_label";
|
$sql .= ", c.label as statut_label";
|
||||||
$sql .= ", ca.code as availability_code, ca.label as availability";
|
$sql .= ", ca.code as availability_code, ca.label as availability";
|
||||||
$sql .= ", dr.code as demand_reason_code, dr.label as demand_reason";
|
$sql .= ", dr.code as demand_reason_code, dr.label as demand_reason";
|
||||||
$sql .= ", cr.code as cond_reglement_code, cr.libelle as cond_reglement, cr.libelle_facture as cond_reglement_libelle_doc";
|
$sql .= ", cr.code as cond_reglement_code, cr.libelle as cond_reglement, cr.libelle_facture as cond_reglement_libelle_doc, p.deposit_percent";
|
||||||
$sql .= ", cp.code as mode_reglement_code, cp.libelle as mode_reglement";
|
$sql .= ", cp.code as mode_reglement_code, cp.libelle as mode_reglement";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."propal as p";
|
$sql .= " FROM ".MAIN_DB_PREFIX."propal as p";
|
||||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_propalst as c ON p.fk_statut = c.id';
|
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_propalst as c ON p.fk_statut = c.id';
|
||||||
@ -1619,6 +1624,7 @@ class Propal extends CommonObject
|
|||||||
$this->cond_reglement_code = $obj->cond_reglement_code;
|
$this->cond_reglement_code = $obj->cond_reglement_code;
|
||||||
$this->cond_reglement = $obj->cond_reglement;
|
$this->cond_reglement = $obj->cond_reglement;
|
||||||
$this->cond_reglement_doc = $obj->cond_reglement_libelle_doc;
|
$this->cond_reglement_doc = $obj->cond_reglement_libelle_doc;
|
||||||
|
$this->deposit_percent = $obj->deposit_percent;
|
||||||
|
|
||||||
$this->extraparams = (array) json_decode($obj->extraparams, true);
|
$this->extraparams = (array) json_decode($obj->extraparams, true);
|
||||||
|
|
||||||
@ -1728,6 +1734,7 @@ class Propal extends CommonObject
|
|||||||
$sql .= " fk_user_valid=".(isset($this->user_valid) ? $this->user_valid : "null").",";
|
$sql .= " fk_user_valid=".(isset($this->user_valid) ? $this->user_valid : "null").",";
|
||||||
$sql .= " fk_projet=".(isset($this->fk_project) ? $this->fk_project : "null").",";
|
$sql .= " fk_projet=".(isset($this->fk_project) ? $this->fk_project : "null").",";
|
||||||
$sql .= " fk_cond_reglement=".(isset($this->cond_reglement_id) ? $this->cond_reglement_id : "null").",";
|
$sql .= " fk_cond_reglement=".(isset($this->cond_reglement_id) ? $this->cond_reglement_id : "null").",";
|
||||||
|
$sql .= " deposit_percent=".(! empty($this->deposit_percent) ? "'".$this->db->escape($this->deposit_percent)."'" : "null").",";
|
||||||
$sql .= " fk_mode_reglement=".(isset($this->mode_reglement_id) ? $this->mode_reglement_id : "null").",";
|
$sql .= " fk_mode_reglement=".(isset($this->mode_reglement_id) ? $this->mode_reglement_id : "null").",";
|
||||||
$sql .= " fk_input_reason=".(isset($this->demand_reason_id) ? $this->demand_reason_id : "null").",";
|
$sql .= " fk_input_reason=".(isset($this->demand_reason_id) ? $this->demand_reason_id : "null").",";
|
||||||
$sql .= " note_private=".(isset($this->note_private) ? "'".$this->db->escape($this->note_private)."'" : "null").",";
|
$sql .= " note_private=".(isset($this->note_private) ? "'".$this->db->escape($this->note_private)."'" : "null").",";
|
||||||
|
|||||||
@ -340,7 +340,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_availability = '';
|
$search_availability = '';
|
||||||
$search_status = '';
|
$search_status = '';
|
||||||
$object_statut = '';
|
$object_statut = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
$search_categ_cus = 0;
|
$search_categ_cus = 0;
|
||||||
$search_fk_cond_reglement = '';
|
$search_fk_cond_reglement = '';
|
||||||
@ -537,7 +537,7 @@ $sql .= ' p.fk_multicurrency, p.multicurrency_code, p.multicurrency_tx, p.multic
|
|||||||
$sql .= ' p.datec as date_creation, p.tms as date_update, p.date_cloture as date_cloture,';
|
$sql .= ' p.datec as date_creation, p.tms as date_update, p.date_cloture as date_cloture,';
|
||||||
$sql .= ' p.date_signature as dsignature,';
|
$sql .= ' p.date_signature as dsignature,';
|
||||||
$sql .= ' p.note_public, p.note_private,';
|
$sql .= ' p.note_public, p.note_private,';
|
||||||
$sql .= ' p.fk_cond_reglement,p.fk_mode_reglement,p.fk_shipping_method,p.fk_input_reason,';
|
$sql .= ' p.fk_cond_reglement,p.deposit_percent,p.fk_mode_reglement,p.fk_shipping_method,p.fk_input_reason,';
|
||||||
$sql .= " pr.rowid as project_id, pr.ref as project_ref, pr.title as project_label,";
|
$sql .= " pr.rowid as project_id, pr.ref as project_ref, pr.title as project_label,";
|
||||||
$sql .= ' u.login, u.lastname, u.firstname, u.email as user_email, u.statut as user_statut, u.entity as user_entity, u.photo, u.office_phone, u.office_fax, u.user_mobile, u.job, u.gender';
|
$sql .= ' u.login, u.lastname, u.firstname, u.email as user_email, u.statut as user_statut, u.entity as user_entity, u.photo, u.office_phone, u.office_fax, u.user_mobile, u.job, u.gender';
|
||||||
if (empty($user->rights->societe->client->voir) && !$socid) {
|
if (empty($user->rights->societe->client->voir) && !$socid) {
|
||||||
@ -1224,7 +1224,7 @@ if ($resql) {
|
|||||||
// Payment term
|
// Payment term
|
||||||
if (!empty($arrayfields['p.fk_cond_reglement']['checked'])) {
|
if (!empty($arrayfields['p.fk_cond_reglement']['checked'])) {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
$form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', -1, 1, 1);
|
$form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', 1, 1, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Payment mode
|
// Payment mode
|
||||||
@ -1821,7 +1821,7 @@ if ($resql) {
|
|||||||
// Payment terms
|
// Payment terms
|
||||||
if (!empty($arrayfields['p.fk_cond_reglement']['checked'])) {
|
if (!empty($arrayfields['p.fk_cond_reglement']['checked'])) {
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none');
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none', 0, '', 1, $obj->deposit_percent);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
|
|||||||
@ -272,6 +272,7 @@ if (empty($reshook)) {
|
|||||||
$object->ref_client = GETPOST('ref_client', 'alpha');
|
$object->ref_client = GETPOST('ref_client', 'alpha');
|
||||||
$object->model_pdf = GETPOST('model');
|
$object->model_pdf = GETPOST('model');
|
||||||
$object->cond_reglement_id = GETPOST('cond_reglement_id');
|
$object->cond_reglement_id = GETPOST('cond_reglement_id');
|
||||||
|
$object->deposit_percent = GETPOST('cond_reglement_id_deposit_percent', 'alpha');
|
||||||
$object->mode_reglement_id = GETPOST('mode_reglement_id');
|
$object->mode_reglement_id = GETPOST('mode_reglement_id');
|
||||||
$object->fk_account = GETPOST('fk_account', 'int');
|
$object->fk_account = GETPOST('fk_account', 'int');
|
||||||
$object->availability_id = GETPOST('availability_id');
|
$object->availability_id = GETPOST('availability_id');
|
||||||
@ -571,7 +572,7 @@ if (empty($reshook)) {
|
|||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
} elseif ($action == 'setconditions' && $usercancreate) {
|
} elseif ($action == 'setconditions' && $usercancreate) {
|
||||||
$result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int'));
|
$result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int'), GETPOST('cond_reglement_id_deposit_percent', 'alpha'));
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
dol_print_error($db, $object->error);
|
dol_print_error($db, $object->error);
|
||||||
} else {
|
} else {
|
||||||
@ -1176,28 +1177,76 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
|
$locationTarget = '';
|
||||||
|
$db->begin();
|
||||||
$result = $object->valid($user, $idwarehouse);
|
$result = $object->valid($user, $idwarehouse);
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
// Define output language
|
$error = 0;
|
||||||
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
|
$deposit = null;
|
||||||
$outputlangs = $langs;
|
|
||||||
$newlang = '';
|
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) {
|
|
||||||
$newlang = GETPOST('lang_id', 'aZ09');
|
|
||||||
}
|
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) {
|
|
||||||
$newlang = $object->thirdparty->default_lang;
|
|
||||||
}
|
|
||||||
if (!empty($newlang)) {
|
|
||||||
$outputlangs = new Translate("", $conf);
|
|
||||||
$outputlangs->setDefaultLang($newlang);
|
|
||||||
}
|
|
||||||
$model = $object->model_pdf;
|
|
||||||
$ret = $object->fetch($id); // Reload to get new records
|
|
||||||
|
|
||||||
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
$deposit_percent_from_payment_terms = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $object->cond_reglement_id);
|
||||||
|
|
||||||
|
if (
|
||||||
|
GETPOST('generate_deposit', 'alpha') == 'on' && ! empty($deposit_percent_from_payment_terms)
|
||||||
|
&& ! empty($conf->facture->enabled) && ! empty($user->rights->facture->creer)
|
||||||
|
) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
|
||||||
|
|
||||||
|
$date = dol_mktime(0, 0, 0, GETPOST('datefmonth', 'int'), GETPOST('datefday', 'int'), GETPOST('datefyear', 'int'));
|
||||||
|
$forceFields = array();
|
||||||
|
|
||||||
|
if (GETPOSTISSET('date_pointoftax')) {
|
||||||
|
$forceFields['date_pointoftax'] = dol_mktime(0, 0, 0, GETPOST('date_pointoftaxmonth', 'int'), GETPOST('date_pointoftaxday', 'int'), GETPOST('date_pointoftaxyear', 'int'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$deposit = Facture::createDepositFromOrigin($object, $date, GETPOST('cond_reglement_id', 'int'), $user, 0, GETPOST('validate_generated_deposit', 'alpha') == 'on', $forceFields);
|
||||||
|
|
||||||
|
if ($deposit) {
|
||||||
|
setEventMessage('DepositGenerated');
|
||||||
|
$locationTarget = DOL_URL_ROOT . '/compta/facture/card.php?id=' . $deposit->id;
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define output language
|
||||||
|
if (! $error) {
|
||||||
|
$db->commit();
|
||||||
|
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) {
|
||||||
|
$newlang = GETPOST('lang_id', 'aZ09');
|
||||||
|
}
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) {
|
||||||
|
$newlang = $object->thirdparty->default_lang;
|
||||||
|
}
|
||||||
|
if (!empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model = $object->model_pdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
|
||||||
|
if ($deposit) {
|
||||||
|
$deposit->fetch($deposit->id); // Reload to get new records
|
||||||
|
$deposit->generateDocument($deposit->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($locationTarget) {
|
||||||
|
header('Location: ' . $locationTarget);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$db->rollback();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
$db->rollback();
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1460,6 +1509,10 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
|
|
||||||
$currency_code = $conf->currency;
|
$currency_code = $conf->currency;
|
||||||
|
|
||||||
|
$cond_reglement_id = GETPOST('cond_reglement_id', 'int');
|
||||||
|
$deposit_percent = GETPOST('cond_reglement_id_deposit_percent', 'alpha');
|
||||||
|
$mode_reglement_id = GETPOST('mode_reglement_id', 'int');
|
||||||
|
|
||||||
if (!empty($origin) && !empty($originid)) {
|
if (!empty($origin) && !empty($originid)) {
|
||||||
// Parse element/subelement (ex: project_task)
|
// Parse element/subelement (ex: project_task)
|
||||||
$element = $subelement = $origin;
|
$element = $subelement = $origin;
|
||||||
@ -1475,6 +1528,9 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
if (!$cond_reglement_id) {
|
if (!$cond_reglement_id) {
|
||||||
$cond_reglement_id = $soc->cond_reglement_id;
|
$cond_reglement_id = $soc->cond_reglement_id;
|
||||||
}
|
}
|
||||||
|
if (!$deposit_percent) {
|
||||||
|
$deposit_percent = $soc->deposit_percent;
|
||||||
|
}
|
||||||
if (!$mode_reglement_id) {
|
if (!$mode_reglement_id) {
|
||||||
$mode_reglement_id = $soc->mode_reglement_id;
|
$mode_reglement_id = $soc->mode_reglement_id;
|
||||||
}
|
}
|
||||||
@ -1515,6 +1571,7 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
|
|
||||||
$soc = $objectsrc->thirdparty;
|
$soc = $objectsrc->thirdparty;
|
||||||
$cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0)); // TODO maybe add default value option
|
$cond_reglement_id = (!empty($objectsrc->cond_reglement_id) ? $objectsrc->cond_reglement_id : (!empty($soc->cond_reglement_id) ? $soc->cond_reglement_id : 0)); // TODO maybe add default value option
|
||||||
|
$deposit_percent = (!empty($objectsrc->deposit_percent) ? $objectsrc->deposit_percent : (!empty($soc->deposit_percent) ? $soc->deposit_percent : null));
|
||||||
$mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
|
$mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
|
||||||
$fk_account = (!empty($objectsrc->fk_account) ? $objectsrc->fk_account : (!empty($soc->fk_account) ? $soc->fk_account : 0));
|
$fk_account = (!empty($objectsrc->fk_account) ? $objectsrc->fk_account : (!empty($soc->fk_account) ? $soc->fk_account : 0));
|
||||||
$availability_id = (!empty($objectsrc->availability_id) ? $objectsrc->availability_id : 0);
|
$availability_id = (!empty($objectsrc->availability_id) ? $objectsrc->availability_id : 0);
|
||||||
@ -1547,6 +1604,7 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$cond_reglement_id = $soc->cond_reglement_id;
|
$cond_reglement_id = $soc->cond_reglement_id;
|
||||||
|
$deposit_percent = $soc->deposit_percent;
|
||||||
$mode_reglement_id = $soc->mode_reglement_id;
|
$mode_reglement_id = $soc->mode_reglement_id;
|
||||||
$fk_account = $soc->fk_account;
|
$fk_account = $soc->fk_account;
|
||||||
$availability_id = 0;
|
$availability_id = 0;
|
||||||
@ -1677,8 +1735,8 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
|
|
||||||
// Terms of the settlement
|
// Terms of the settlement
|
||||||
print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>';
|
print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>';
|
||||||
print img_picto('', 'payment', 'class="pictofixedwidth"');
|
print img_picto('', 'paiment', 'class="pictofixedwidth"');
|
||||||
$form->select_conditions_paiements($cond_reglement_id, 'cond_reglement_id', - 1, 1);
|
$form->select_conditions_paiements($cond_reglement_id, 'cond_reglement_id', 1, 1, 0, '', $deposit_percent);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Payment mode
|
// Payment mode
|
||||||
@ -1967,6 +2025,111 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
if ($nbMandated > 0 ) $text .= '<div><span class="clearboth nowraponall warning">'.$langs->trans("mandatoryPeriodNeedTobeSetMsgValidate").'</span></div>';
|
if ($nbMandated > 0 ) $text .= '<div><span class="clearboth nowraponall warning">'.$langs->trans("mandatoryPeriodNeedTobeSetMsgValidate").'</span></div>';
|
||||||
|
|
||||||
|
|
||||||
|
$deposit_percent_from_payment_terms = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $object->cond_reglement_id);
|
||||||
|
|
||||||
|
if (! empty($deposit_percent_from_payment_terms) && ! empty($conf->facture->enabled) && ! empty($user->rights->facture->creer)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
|
||||||
|
|
||||||
|
$object->fetchObjectLinked();
|
||||||
|
|
||||||
|
$eligibleForDepositGeneration = true;
|
||||||
|
|
||||||
|
if (array_key_exists('facture', $object->linkedObjects)) {
|
||||||
|
foreach ($object->linkedObjects['facture'] as $invoice) {
|
||||||
|
if ($invoice->type == Facture::TYPE_DEPOSIT) {
|
||||||
|
$eligibleForDepositGeneration = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($eligibleForDepositGeneration && array_key_exists('propal', $object->linkedObjects)) {
|
||||||
|
foreach ($object->linkedObjects['propal'] as $proposal) {
|
||||||
|
$proposal->fetchObjectLinked();
|
||||||
|
|
||||||
|
if (array_key_exists('facture', $proposal->linkedObjects)) {
|
||||||
|
foreach ($proposal->linkedObjects['facture'] as $invoice) {
|
||||||
|
if ($invoice->type == Facture::TYPE_DEPOSIT) {
|
||||||
|
$eligibleForDepositGeneration = false;
|
||||||
|
break 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($eligibleForDepositGeneration) {
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'tdclass' => '',
|
||||||
|
'name' => 'generate_deposit',
|
||||||
|
'label' => $form->textwithpicto($langs->trans('GenerateDeposit', $object->deposit_percent), $langs->trans('DepositGenerationPermittedByThePaymentTermsSelected'))
|
||||||
|
);
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'date',
|
||||||
|
'tdclass' => 'fieldrequired showonlyifgeneratedeposit',
|
||||||
|
'name' => 'datef',
|
||||||
|
'label' => $langs->trans('DateInvoice'),
|
||||||
|
'value' => dol_now(),
|
||||||
|
'datenow' => true
|
||||||
|
);
|
||||||
|
|
||||||
|
if (! empty($conf->global->INVOICE_POINTOFTAX_DATE)) {
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'date',
|
||||||
|
'tdclass' => 'fieldrequired showonlyifgeneratedeposit',
|
||||||
|
'name' => 'date_pointoftax',
|
||||||
|
'label' => $langs->trans('DatePointOfTax'),
|
||||||
|
'value' => dol_now(),
|
||||||
|
'datenow' => true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
$form->select_conditions_paiements(0, 'cond_reglement_id', -1, 0, 0, 'minwidth200');
|
||||||
|
$paymentTermsSelect = ob_get_clean();
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'other',
|
||||||
|
'tdclass' => 'fieldrequired showonlyifgeneratedeposit',
|
||||||
|
'name' => 'cond_reglement_id',
|
||||||
|
'label' => $langs->trans('PaymentTerm'),
|
||||||
|
'value' => $paymentTermsSelect
|
||||||
|
);
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'tdclass' => 'showonlyifgeneratedeposit',
|
||||||
|
'name' => 'validate_generated_deposit',
|
||||||
|
'label' => $langs->trans('ValidateGeneratedDeposit')
|
||||||
|
);
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'onecolumn',
|
||||||
|
'value' => '
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$("[name=generate_deposit]").change(function () {
|
||||||
|
let $self = $(this);
|
||||||
|
let $target = $(".showonlyifgeneratedeposit").parent(".tagtr");
|
||||||
|
|
||||||
|
if (! $self.parents(".tagtr").is(":hidden") && $self.is(":checked")) {
|
||||||
|
$target.show();
|
||||||
|
} else {
|
||||||
|
$target.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateOrder'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateOrder'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
|
||||||
}
|
}
|
||||||
@ -2270,9 +2433,9 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
print $form->editfieldkey("PaymentConditionsShort", 'conditions', '', $object, $editenable);
|
print $form->editfieldkey("PaymentConditionsShort", 'conditions', '', $object, $editenable);
|
||||||
print '</td><td class="valuefield">';
|
print '</td><td class="valuefield">';
|
||||||
if ($action == 'editconditions') {
|
if ($action == 'editconditions') {
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1);
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1, '', 1, $object->deposit_percent);
|
||||||
} else {
|
} else {
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none', 1);
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->cond_reglement_id, 'none', 1, '', 1, $object->deposit_percent);
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
|||||||
@ -134,6 +134,11 @@ class Commande extends CommonOrder
|
|||||||
*/
|
*/
|
||||||
public $cond_reglement_code;
|
public $cond_reglement_code;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var double Deposit % for payment terms
|
||||||
|
*/
|
||||||
|
public $deposit_percent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int bank account ID
|
* @var int bank account ID
|
||||||
*/
|
*/
|
||||||
@ -332,6 +337,7 @@ class Commande extends CommonOrder
|
|||||||
'fk_account' =>array('type'=>'integer', 'label'=>'BankAccount', 'enabled'=>1, 'visible'=>-1, 'position'=>170),
|
'fk_account' =>array('type'=>'integer', 'label'=>'BankAccount', 'enabled'=>1, 'visible'=>-1, 'position'=>170),
|
||||||
'fk_currency' =>array('type'=>'varchar(3)', 'label'=>'MulticurrencyID', 'enabled'=>1, 'visible'=>-1, 'position'=>175),
|
'fk_currency' =>array('type'=>'varchar(3)', 'label'=>'MulticurrencyID', 'enabled'=>1, 'visible'=>-1, 'position'=>175),
|
||||||
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'position'=>180),
|
'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'position'=>180),
|
||||||
|
'deposit_percent' =>array('type'=>'varchar(63)', 'label'=>'DepositPercent', 'enabled'=>1, 'visible'=>-1, 'position'=>181),
|
||||||
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'PaymentMode', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'PaymentMode', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
||||||
'date_livraison' =>array('type'=>'date', 'label'=>'DateDeliveryPlanned', 'enabled'=>1, 'visible'=>-1, 'position'=>190),
|
'date_livraison' =>array('type'=>'date', 'label'=>'DateDeliveryPlanned', 'enabled'=>1, 'visible'=>-1, 'position'=>190),
|
||||||
'fk_shipping_method' =>array('type'=>'integer', 'label'=>'ShippingMethod', 'enabled'=>1, 'visible'=>-1, 'position'=>195),
|
'fk_shipping_method' =>array('type'=>'integer', 'label'=>'ShippingMethod', 'enabled'=>1, 'visible'=>-1, 'position'=>195),
|
||||||
@ -940,7 +946,7 @@ class Commande extends CommonOrder
|
|||||||
|
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."commande (";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."commande (";
|
||||||
$sql .= " ref, fk_soc, date_creation, fk_user_author, fk_projet, date_commande, source, note_private, note_public, ref_ext, ref_client, ref_int";
|
$sql .= " ref, fk_soc, date_creation, fk_user_author, fk_projet, date_commande, source, note_private, note_public, ref_ext, ref_client, ref_int";
|
||||||
$sql .= ", model_pdf, fk_cond_reglement, fk_mode_reglement, fk_account, fk_availability, fk_input_reason, date_livraison, fk_delivery_address";
|
$sql .= ", model_pdf, fk_cond_reglement, deposit_percent, fk_mode_reglement, fk_account, fk_availability, fk_input_reason, date_livraison, fk_delivery_address";
|
||||||
$sql .= ", fk_shipping_method";
|
$sql .= ", fk_shipping_method";
|
||||||
$sql .= ", fk_warehouse";
|
$sql .= ", fk_warehouse";
|
||||||
$sql .= ", remise_absolue, remise_percent";
|
$sql .= ", remise_absolue, remise_percent";
|
||||||
@ -961,6 +967,7 @@ class Commande extends CommonOrder
|
|||||||
$sql .= ", ".($this->ref_int ? "'".$this->db->escape($this->ref_int)."'" : "null");
|
$sql .= ", ".($this->ref_int ? "'".$this->db->escape($this->ref_int)."'" : "null");
|
||||||
$sql .= ", '".$this->db->escape($this->model_pdf)."'";
|
$sql .= ", '".$this->db->escape($this->model_pdf)."'";
|
||||||
$sql .= ", ".($this->cond_reglement_id > 0 ? ((int) $this->cond_reglement_id) : "null");
|
$sql .= ", ".($this->cond_reglement_id > 0 ? ((int) $this->cond_reglement_id) : "null");
|
||||||
|
$sql .= ", ".(! empty($this->deposit_percent) ? "'".$this->db->escape($this->deposit_percent)."'" : "null");
|
||||||
$sql .= ", ".($this->mode_reglement_id > 0 ? ((int) $this->mode_reglement_id) : "null");
|
$sql .= ", ".($this->mode_reglement_id > 0 ? ((int) $this->mode_reglement_id) : "null");
|
||||||
$sql .= ", ".($this->fk_account > 0 ? ((int) $this->fk_account) : 'NULL');
|
$sql .= ", ".($this->fk_account > 0 ? ((int) $this->fk_account) : 'NULL');
|
||||||
$sql .= ", ".($this->availability_id > 0 ? ((int) $this->availability_id) : "null");
|
$sql .= ", ".($this->availability_id > 0 ? ((int) $this->availability_id) : "null");
|
||||||
@ -1212,6 +1219,7 @@ class Commande extends CommonOrder
|
|||||||
if ($objsoc->fetch($socid) > 0) {
|
if ($objsoc->fetch($socid) > 0) {
|
||||||
$this->socid = $objsoc->id;
|
$this->socid = $objsoc->id;
|
||||||
$this->cond_reglement_id = (!empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
|
$this->cond_reglement_id = (!empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
|
||||||
|
$this->deposit_percent = (!empty($objsoc->deposit_percent) ? $objsoc->deposit_percent : null);
|
||||||
$this->mode_reglement_id = (!empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
|
$this->mode_reglement_id = (!empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
|
||||||
$this->fk_project = 0;
|
$this->fk_project = 0;
|
||||||
$this->fk_delivery_address = 0;
|
$this->fk_delivery_address = 0;
|
||||||
@ -1354,6 +1362,7 @@ class Commande extends CommonOrder
|
|||||||
$this->socid = $object->socid;
|
$this->socid = $object->socid;
|
||||||
$this->fk_project = $object->fk_project;
|
$this->fk_project = $object->fk_project;
|
||||||
$this->cond_reglement_id = $object->cond_reglement_id;
|
$this->cond_reglement_id = $object->cond_reglement_id;
|
||||||
|
$this->deposit_percent = $object->deposit_percent;
|
||||||
$this->mode_reglement_id = $object->mode_reglement_id;
|
$this->mode_reglement_id = $object->mode_reglement_id;
|
||||||
$this->fk_account = $object->fk_account;
|
$this->fk_account = $object->fk_account;
|
||||||
$this->availability_id = $object->availability_id;
|
$this->availability_id = $object->availability_id;
|
||||||
@ -1811,7 +1820,7 @@ class Commande extends CommonOrder
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT c.rowid, c.entity, c.date_creation, c.ref, c.fk_soc, c.fk_user_author, c.fk_user_valid, c.fk_user_modif, c.fk_statut';
|
$sql = 'SELECT c.rowid, c.entity, c.date_creation, c.ref, c.fk_soc, c.fk_user_author, c.fk_user_valid, c.fk_user_modif, c.fk_statut';
|
||||||
$sql .= ', c.amount_ht, c.total_ht, c.total_ttc, c.total_tva, c.localtax1 as total_localtax1, c.localtax2 as total_localtax2, c.fk_cond_reglement, c.fk_mode_reglement, c.fk_availability, c.fk_input_reason';
|
$sql .= ', c.amount_ht, c.total_ht, c.total_ttc, c.total_tva, c.localtax1 as total_localtax1, c.localtax2 as total_localtax2, c.fk_cond_reglement, c.deposit_percent, c.fk_mode_reglement, c.fk_availability, c.fk_input_reason';
|
||||||
$sql .= ', c.fk_account';
|
$sql .= ', c.fk_account';
|
||||||
$sql .= ', c.date_commande, c.date_valid, c.tms';
|
$sql .= ', c.date_commande, c.date_valid, c.tms';
|
||||||
$sql .= ', c.date_livraison as delivery_date';
|
$sql .= ', c.date_livraison as delivery_date';
|
||||||
@ -1904,6 +1913,7 @@ class Commande extends CommonOrder
|
|||||||
$this->cond_reglement_code = $obj->cond_reglement_code;
|
$this->cond_reglement_code = $obj->cond_reglement_code;
|
||||||
$this->cond_reglement = $obj->cond_reglement_libelle;
|
$this->cond_reglement = $obj->cond_reglement_libelle;
|
||||||
$this->cond_reglement_doc = $obj->cond_reglement_libelle_doc;
|
$this->cond_reglement_doc = $obj->cond_reglement_libelle_doc;
|
||||||
|
$this->deposit_percent = $obj->deposit_percent;
|
||||||
$this->fk_account = $obj->fk_account;
|
$this->fk_account = $obj->fk_account;
|
||||||
$this->availability_id = $obj->fk_availability;
|
$this->availability_id = $obj->fk_availability;
|
||||||
$this->availability_code = $obj->availability_code;
|
$this->availability_code = $obj->availability_code;
|
||||||
@ -3340,6 +3350,7 @@ class Commande extends CommonOrder
|
|||||||
$sql .= " fk_user_valid=".(isset($this->user_valid) ? $this->user_valid : "null").",";
|
$sql .= " fk_user_valid=".(isset($this->user_valid) ? $this->user_valid : "null").",";
|
||||||
$sql .= " fk_projet=".(isset($this->fk_project) ? $this->fk_project : "null").",";
|
$sql .= " fk_projet=".(isset($this->fk_project) ? $this->fk_project : "null").",";
|
||||||
$sql .= " fk_cond_reglement=".(isset($this->cond_reglement_id) ? $this->cond_reglement_id : "null").",";
|
$sql .= " fk_cond_reglement=".(isset($this->cond_reglement_id) ? $this->cond_reglement_id : "null").",";
|
||||||
|
$sql .= " deposit_percent=".(! empty($this->deposit_percent) ? strval($this->deposit_percent) : "null").",";
|
||||||
$sql .= " fk_mode_reglement=".(isset($this->mode_reglement_id) ? $this->mode_reglement_id : "null").",";
|
$sql .= " fk_mode_reglement=".(isset($this->mode_reglement_id) ? $this->mode_reglement_id : "null").",";
|
||||||
$sql .= " date_livraison=".(strval($this->delivery_date) != '' ? "'".$this->db->idate($this->delivery_date)."'" : 'null').",";
|
$sql .= " date_livraison=".(strval($this->delivery_date) != '' ? "'".$this->db->idate($this->delivery_date)."'" : 'null').",";
|
||||||
$sql .= " fk_shipping_method=".(isset($this->shipping_method_id) ? $this->shipping_method_id : "null").",";
|
$sql .= " fk_shipping_method=".(isset($this->shipping_method_id) ? $this->shipping_method_id : "null").",";
|
||||||
|
|||||||
@ -267,7 +267,7 @@ if (empty($reshook)) {
|
|||||||
$search_project = '';
|
$search_project = '';
|
||||||
$search_status = '';
|
$search_status = '';
|
||||||
$search_billed = '';
|
$search_billed = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
$search_categ_cus = 0;
|
$search_categ_cus = 0;
|
||||||
$search_datecloture_start = '';
|
$search_datecloture_start = '';
|
||||||
@ -787,7 +787,7 @@ $sql .= ' c.date_valid, c.date_commande, c.note_public, c.note_private, c.date_l
|
|||||||
$sql .= ' c.date_creation as date_creation, c.tms as date_update, c.date_cloture as date_cloture,';
|
$sql .= ' c.date_creation as date_creation, c.tms as date_update, c.date_cloture as date_cloture,';
|
||||||
$sql .= ' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
|
$sql .= ' p.rowid as project_id, p.ref as project_ref, p.title as project_label,';
|
||||||
$sql .= ' u.login, u.lastname, u.firstname, u.email as user_email, u.statut as user_statut, u.entity, u.photo, u.office_phone, u.office_fax, u.user_mobile, u.job, u.gender,';
|
$sql .= ' u.login, u.lastname, u.firstname, u.email as user_email, u.statut as user_statut, u.entity, u.photo, u.office_phone, u.office_fax, u.user_mobile, u.job, u.gender,';
|
||||||
$sql .= ' c.fk_cond_reglement,c.fk_mode_reglement,c.fk_shipping_method,';
|
$sql .= ' c.fk_cond_reglement,c.deposit_percent,c.fk_mode_reglement,c.fk_shipping_method,';
|
||||||
$sql .= ' c.fk_input_reason, c.import_key';
|
$sql .= ' c.fk_input_reason, c.import_key';
|
||||||
if (($search_categ_cus > 0) || ($search_categ_cus == -2)) {
|
if (($search_categ_cus > 0) || ($search_categ_cus == -2)) {
|
||||||
$sql .= ", cc.fk_categorie, cc.fk_soc";
|
$sql .= ", cc.fk_categorie, cc.fk_soc";
|
||||||
@ -1479,7 +1479,7 @@ if ($resql) {
|
|||||||
// Payment term
|
// Payment term
|
||||||
if (!empty($arrayfields['c.fk_cond_reglement']['checked'])) {
|
if (!empty($arrayfields['c.fk_cond_reglement']['checked'])) {
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
$form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', -1, 1, 1);
|
$form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', 1, 1, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
// Payment mode
|
// Payment mode
|
||||||
@ -2032,7 +2032,7 @@ if ($resql) {
|
|||||||
// Payment terms
|
// Payment terms
|
||||||
if (!empty($arrayfields['c.fk_cond_reglement']['checked'])) {
|
if (!empty($arrayfields['c.fk_cond_reglement']['checked'])) {
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none');
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none', 0, '', 1, $obj->deposit_percent);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
|
|||||||
@ -214,7 +214,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_thirdparty_user = '';
|
$search_thirdparty_user = '';
|
||||||
$search_num_releve = '';
|
$search_num_releve = '';
|
||||||
$search_conciliated = '';
|
$search_conciliated = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
|
|
||||||
$search_account = "";
|
$search_account = "";
|
||||||
if ($id > 0 || !empty($ref)) {
|
if ($id > 0 || !empty($ref)) {
|
||||||
|
|||||||
@ -165,7 +165,7 @@ if (empty($reshook)) {
|
|||||||
$search[$key.'_dtend'] = '';
|
$search[$key.'_dtend'] = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|
|||||||
@ -3287,10 +3287,21 @@ if ($action == 'create') {
|
|||||||
'variable' => $langs->transnoentitiesnoconv('VarAmountOneLine', $langs->transnoentitiesnoconv('Deposit')),
|
'variable' => $langs->transnoentitiesnoconv('VarAmountOneLine', $langs->transnoentitiesnoconv('Deposit')),
|
||||||
'variablealllines' => $langs->transnoentitiesnoconv('VarAmountAllLines')
|
'variablealllines' => $langs->transnoentitiesnoconv('VarAmountAllLines')
|
||||||
);
|
);
|
||||||
print $form->selectarray('typedeposit', $arraylist, GETPOST('typedeposit', 'aZ09'), 0, 0, 0, '', 1);
|
$typedeposit = GETPOST('typedeposit', 'aZ09');
|
||||||
|
$valuedeposit = GETPOST('valuedeposit', 'int');
|
||||||
|
if (empty($typedeposit) && ! empty($objectsrc->deposit_percent)) {
|
||||||
|
$origin_payment_conditions_deposit_percent = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $objectsrc->cond_reglement_id);
|
||||||
|
if (! empty($origin_payment_conditions_deposit_percent)) {
|
||||||
|
$typedeposit = 'variable';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (empty($valuedeposit) && $typedeposit == 'variable' && ! empty($objectsrc->deposit_percent)) {
|
||||||
|
$valuedeposit = $objectsrc->deposit_percent;
|
||||||
|
}
|
||||||
|
print $form->selectarray('typedeposit', $arraylist, $typedeposit, 0, 0, 0, '', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="nowrap" style="padding-left: 5px">';
|
print '<td class="nowrap" style="padding-left: 5px">';
|
||||||
print '<span class="opacitymedium paddingleft">'.$langs->trans("AmountOrPercent").'</span><input type="text" id="valuedeposit" name="valuedeposit" class="width75 right" value="'.GETPOST('valuedeposit', 'int').'"/>';
|
print '<span class="opacitymedium paddingleft">'.$langs->trans("AmountOrPercent").'</span><input type="text" id="valuedeposit" name="valuedeposit" class="width75 right" value="'.$valuedeposit.'"/>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
print '</tr></table>';
|
print '</tr></table>';
|
||||||
|
|||||||
@ -1463,6 +1463,292 @@ class Facture extends CommonInvoice
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a deposit from a proposal or an order by grouping lines by VAT rates
|
||||||
|
*
|
||||||
|
* @param Propal|Commande $origin The original proposal or order
|
||||||
|
* @param int $date Invoice date
|
||||||
|
* @param int $payment_terms_id Invoice payment terms
|
||||||
|
* @param User $user Object user
|
||||||
|
* @param int $notrigger 1=Does not execute triggers, 0= execute triggers
|
||||||
|
* @param bool $autoValidateDeposit Whether to aumatically validate the deposit created
|
||||||
|
* @param array $overrideFields Array of fields to force values
|
||||||
|
* @return Facture|null The deposit created, or null if error (populates $origin->error in this case)
|
||||||
|
*/
|
||||||
|
static public function createDepositFromOrigin(CommonObject $origin, $date, $payment_terms_id, User $user, $notrigger = 0, $autoValidateDeposit = false, $overrideFields = array())
|
||||||
|
{
|
||||||
|
global $conf, $langs, $hookmanager, $action;
|
||||||
|
|
||||||
|
if (! in_array($origin->element, array('propal', 'commande'))) {
|
||||||
|
$origin->error = 'ErrorCanOnlyAutomaticallyGenerateADepositFromProposalOrOrder';
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($date)) {
|
||||||
|
$origin->error = $langs->trans('ErrorFieldRequired', $langs->transnoentities('DateInvoice'));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
||||||
|
|
||||||
|
if ($date > (dol_get_last_hour(dol_now('tzuserrel')) + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$origin->error = 'ErrorDateIsInFuture';
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($payment_terms_id <= 0) {
|
||||||
|
$origin->error = $langs->trans('ErrorFieldRequired', $langs->transnoentities('PaymentConditionsShort'));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$payment_conditions_deposit_percent = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $origin->cond_reglement_id);
|
||||||
|
|
||||||
|
if (empty($payment_conditions_deposit_percent)) {
|
||||||
|
$origin->error = 'ErrorPaymentConditionsNotEligibleToDepositCreation';
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($origin->deposit_percent)) {
|
||||||
|
$origin->error = $langs->trans('ErrorFieldRequired', $langs->transnoentities('DepositPercent'));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$deposit = new self($origin->db);
|
||||||
|
$deposit->socid = $origin->socid;
|
||||||
|
$deposit->type = self::TYPE_DEPOSIT;
|
||||||
|
$deposit->fk_project = $origin->fk_project;
|
||||||
|
$deposit->ref_client = $origin->ref_client;
|
||||||
|
$deposit->date = $date;
|
||||||
|
$deposit->mode_reglement_id = $origin->mode_reglement_id;
|
||||||
|
$deposit->cond_reglement_id = $payment_terms_id;
|
||||||
|
$deposit->availability_id = $origin->availability_id;
|
||||||
|
$deposit->demand_reason_id = $origin->demand_reason_id;
|
||||||
|
$deposit->fk_account = $origin->fk_account;
|
||||||
|
$deposit->fk_incoterms = $origin->fk_incoterms;
|
||||||
|
$deposit->location_incoterms = $origin->location_incoterms;
|
||||||
|
$deposit->fk_multicurrency = $origin->fk_multicurrency;
|
||||||
|
$deposit->multicurrency_code = $origin->multicurrency_code;
|
||||||
|
$deposit->multicurrency_tx = $origin->multicurrency_tx;
|
||||||
|
$deposit->module_source = $origin->module_source;
|
||||||
|
$deposit->pos_source = $origin->pos_source;
|
||||||
|
$deposit->model_pdf = 'crabe';
|
||||||
|
|
||||||
|
$modelByTypeConfName = 'FACTURE_ADDON_PDF_' . $deposit->type;
|
||||||
|
|
||||||
|
if (!empty($conf->global->$modelByTypeConfName)) {
|
||||||
|
$deposit->model_pdf = $conf->global->$modelByTypeConfName;
|
||||||
|
} elseif (!empty($conf->global->FACTURE_ADDON_PDF)) {
|
||||||
|
$deposit->model_pdf = $conf->global->FACTURE_ADDON_PDF;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PROPAGATE_NOTES_FROM_ORIGIN)) {
|
||||||
|
$deposit->note_private = $origin->note_private;
|
||||||
|
$deposit->note_public = $origin->note_public;
|
||||||
|
}
|
||||||
|
|
||||||
|
$deposit->origin = $origin->element;
|
||||||
|
$deposit->origin_id = $origin->id;
|
||||||
|
|
||||||
|
$origin->fetch_optionals();
|
||||||
|
|
||||||
|
foreach ($origin->array_options as $extrakey => $value) {
|
||||||
|
$deposit->array_options[$extrakey] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$deposit->linked_objects[$deposit->origin] = $deposit->origin_id;
|
||||||
|
|
||||||
|
foreach ($overrideFields as $key => $value) {
|
||||||
|
$deposit->$key = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$deposit->context['createdepositfromorigin'] = 'createdepositfromorigin';
|
||||||
|
|
||||||
|
$origin->db->begin();
|
||||||
|
|
||||||
|
// Facture::create() also imports contact from origin
|
||||||
|
$createReturn = $deposit->create($user, $notrigger);
|
||||||
|
|
||||||
|
if ($createReturn <= 0) {
|
||||||
|
$origin->db->rollback();
|
||||||
|
$origin->error = $deposit->error;
|
||||||
|
$origin->errors = $deposit->errors;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$amount_ttc_diff = 0;
|
||||||
|
$amountdeposit = array();
|
||||||
|
$descriptions = array();
|
||||||
|
|
||||||
|
if (! empty($conf->global->MAIN_DEPOSIT_MULTI_TVA)) {
|
||||||
|
$amount = $origin->total_ttc * ($origin->deposit_percent / 100);
|
||||||
|
|
||||||
|
$TTotalByTva = array();
|
||||||
|
foreach ($origin->lines as &$line) {
|
||||||
|
if (!empty($line->special_code)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$TTotalByTva[$line->tva_tx] += $line->total_ttc;
|
||||||
|
$descriptions[$line->tva_tx] .= '<li>' . (! empty($line->product_ref) ? $line->product_ref . ' - ' : '');
|
||||||
|
$descriptions[$line->tva_tx] .= (! empty($line->product_label) ? $line->product_label . ' - ' : '');
|
||||||
|
$descriptions[$line->tva_tx] .= $langs->trans('Qty') . ' : ' . $line->qty;
|
||||||
|
$descriptions[$line->tva_tx] .= ' - ' . $langs->trans('TotalHT') . ' : ' . price($line->total_ht) . '</li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($TTotalByTva as $tva => &$total) {
|
||||||
|
$coef = $total / $origin->total_ttc; // Calc coef
|
||||||
|
$am = $amount * $coef;
|
||||||
|
$amount_ttc_diff += $am;
|
||||||
|
$amountdeposit[$tva] += $am / (1 + $tva / 100); // Convert into HT for the addline
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$totalamount = 0;
|
||||||
|
$lines = $origin->lines;
|
||||||
|
$numlines = count($lines);
|
||||||
|
for ($i = 0; $i < $numlines; $i++) {
|
||||||
|
if (empty($lines[$i]->qty)) {
|
||||||
|
continue; // We discard qty=0, it is an option
|
||||||
|
}
|
||||||
|
if (!empty($lines[$i]->special_code)) {
|
||||||
|
continue; // We discard special_code (frais port, ecotaxe, option, ...)
|
||||||
|
}
|
||||||
|
|
||||||
|
$totalamount += $lines[$i]->total_ht; // Fixme : is it not for the customer ? Shouldn't we take total_ttc ?
|
||||||
|
$tva_tx = $lines[$i]->tva_tx;
|
||||||
|
$amountdeposit[$tva_tx] += ($lines[$i]->total_ht * $origin->deposit_percent) / 100;
|
||||||
|
$descriptions[$tva_tx] .= '<li>' . (! empty($lines[$i]->product_ref) ? $lines[$i]->product_ref . ' - ' : '');
|
||||||
|
$descriptions[$tva_tx] .= (! empty($lines[$i]->product_label) ? $lines[$i]->product_label . ' - ' : '');
|
||||||
|
$descriptions[$tva_tx] .= $langs->trans('Qty') . ' : ' . $lines[$i]->qty;
|
||||||
|
$descriptions[$tva_tx] .= ' - ' . $langs->trans('TotalHT') . ' : ' . price($lines[$i]->total_ht) . '</li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($totalamount == 0) {
|
||||||
|
$amountdeposit[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$amount_ttc_diff = $amountdeposit[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($amountdeposit as $tva => $amount) {
|
||||||
|
if (empty($amount)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$descline = '(DEPOSIT) ('. $origin->deposit_percent .'%) - '.$origin->ref;
|
||||||
|
|
||||||
|
// Hidden conf
|
||||||
|
if (! empty($conf->global->INVOICE_DEPOSIT_VARIABLE_MODE_DETAIL_LINES_IN_DESCRIPTION) && ! empty($descriptions[$tva])) {
|
||||||
|
$descline .= '<ul>' . $descriptions[$tva] . '</ul>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$addlineResult = $deposit->addline(
|
||||||
|
$descline,
|
||||||
|
$amount, // subprice
|
||||||
|
1, // quantity
|
||||||
|
$tva, // vat rate
|
||||||
|
0, // localtax1_tx
|
||||||
|
0, // localtax2_tx
|
||||||
|
(empty($conf->global->INVOICE_PRODUCTID_DEPOSIT) ? 0 : $conf->global->INVOICE_PRODUCTID_DEPOSIT), // fk_product
|
||||||
|
0, // remise_percent
|
||||||
|
0, // date_start
|
||||||
|
0, // date_end
|
||||||
|
0,
|
||||||
|
$lines[$i]->info_bits, // info_bits
|
||||||
|
0,
|
||||||
|
'HT',
|
||||||
|
0,
|
||||||
|
0, // product_type
|
||||||
|
1,
|
||||||
|
$lines[$i]->special_code,
|
||||||
|
$deposit->origin,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
//,$langs->trans('Deposit') //Deprecated
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($addlineResult < 0) {
|
||||||
|
$origin->db->rollback();
|
||||||
|
$origin->error = $deposit->error;
|
||||||
|
$origin->errors = $deposit->errors;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$diff = $deposit->total_ttc - $amount_ttc_diff;
|
||||||
|
|
||||||
|
if (!empty($conf->global->MAIN_DEPOSIT_MULTI_TVA) && $diff != 0) {
|
||||||
|
$deposit->fetch_lines();
|
||||||
|
$subprice_diff = $deposit->lines[0]->subprice - $diff / (1 + $deposit->lines[0]->tva_tx / 100);
|
||||||
|
|
||||||
|
$updatelineResult = $deposit->updateline(
|
||||||
|
$deposit->lines[0]->id,
|
||||||
|
$deposit->lines[0]->desc,
|
||||||
|
$subprice_diff,
|
||||||
|
$deposit->lines[0]->qty,
|
||||||
|
$deposit->lines[0]->remise_percent,
|
||||||
|
$deposit->lines[0]->date_start,
|
||||||
|
$deposit->lines[0]->date_end,
|
||||||
|
$deposit->lines[0]->tva_tx,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
'HT',
|
||||||
|
$deposit->lines[0]->info_bits,
|
||||||
|
$deposit->lines[0]->product_type,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
$deposit->lines[0]->pa_ht,
|
||||||
|
$deposit->lines[0]->label,
|
||||||
|
0,
|
||||||
|
array(),
|
||||||
|
100
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($updatelineResult < 0) {
|
||||||
|
$origin->db->rollback();
|
||||||
|
$origin->error = $deposit->error;
|
||||||
|
$origin->errors = $deposit->errors;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (! is_object($hookmanager)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/class/hookmanager.class.php';
|
||||||
|
$hookmanager = new HookManager($origin->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
$hookmanager->initHooks(array('invoicedao'));
|
||||||
|
|
||||||
|
$parameters = array('objFrom' => $origin);
|
||||||
|
$reshook = $hookmanager->executeHooks('createFrom', $parameters, $deposit, $action); // Note that $action and $object may have been
|
||||||
|
// modified by hook
|
||||||
|
if ($reshook < 0) {
|
||||||
|
$origin->db->rollback();
|
||||||
|
$origin->error = $hookmanager->error;
|
||||||
|
$origin->errors = $hookmanager->errors;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! empty($autoValidateDeposit)) {
|
||||||
|
$validateReturn = $deposit->validate($user, '', 0, $notrigger);
|
||||||
|
|
||||||
|
if ($validateReturn < 0) {
|
||||||
|
$origin->db->rollback();
|
||||||
|
$origin->error = $deposit->error;
|
||||||
|
$origin->errors = $deposit->errors;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unset($deposit->context['createdepositfromorigin']);
|
||||||
|
|
||||||
|
$origin->db->commit();
|
||||||
|
|
||||||
|
return $deposit;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return clicable link of object (with eventually picto)
|
* Return clicable link of object (with eventually picto)
|
||||||
*
|
*
|
||||||
|
|||||||
@ -366,7 +366,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter',
|
|||||||
$search_fac_rec_source_title = '';
|
$search_fac_rec_source_title = '';
|
||||||
$option = '';
|
$option = '';
|
||||||
$filter = '';
|
$filter = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
$search_categ_cus = 0;
|
$search_categ_cus = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -148,7 +148,7 @@ if (empty($reshook)) {
|
|||||||
$search_company = '';
|
$search_company = '';
|
||||||
$search_status = '';
|
$search_status = '';
|
||||||
$option = '';
|
$option = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,7 +80,7 @@ $result = restrictedArea($user, 'tax', '', 'chargesociales', 'charges');
|
|||||||
// Purge search criteria
|
// Purge search criteria
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
||||||
$search_sc_type = '';
|
$search_sc_type = '';
|
||||||
//$toselect = '';
|
//$toselect = array();
|
||||||
//$search_array_options = array();
|
//$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -203,7 +203,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_date_end = '';
|
$search_date_end = '';
|
||||||
$sall = "";
|
$sall = "";
|
||||||
$search_status = "";
|
$search_status = "";
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_type_thirdparty = '';
|
$search_type_thirdparty = '';
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
@ -312,6 +312,9 @@ if ($search_zip) {
|
|||||||
if ($search_town) {
|
if ($search_town) {
|
||||||
$sql .= natural_search(array('s.town'), $search_town);
|
$sql .= natural_search(array('s.town'), $search_town);
|
||||||
}
|
}
|
||||||
|
if ($search_country && $search_country != '-1') {
|
||||||
|
$sql .= " AND s.fk_pays IN (".$db->sanitize($search_country).')';
|
||||||
|
}
|
||||||
if ($search_sale > 0) {
|
if ($search_sale > 0) {
|
||||||
$sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $search_sale);
|
$sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $search_sale);
|
||||||
}
|
}
|
||||||
@ -489,6 +492,9 @@ if ($search_user > 0) {
|
|||||||
if ($search_type_thirdparty > 0) {
|
if ($search_type_thirdparty > 0) {
|
||||||
$param .= '&search_type_thirdparty='.urlencode($search_type_thirdparty);
|
$param .= '&search_type_thirdparty='.urlencode($search_type_thirdparty);
|
||||||
}
|
}
|
||||||
|
if ($search_country != '') {
|
||||||
|
$param .= "&search_country=".urlencode($search_country);
|
||||||
|
}
|
||||||
if ($search_product_category > 0) {
|
if ($search_product_category > 0) {
|
||||||
$param .= '&search_product_category='.urlencode($search_product_category);
|
$param .= '&search_product_category='.urlencode($search_product_category);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -201,7 +201,7 @@ if (empty($reshook)) {
|
|||||||
$filter_opcloture = "";
|
$filter_opcloture = "";
|
||||||
$mode = '';
|
$mode = '';
|
||||||
$filter = '';
|
$filter = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1302,6 +1302,49 @@ if (!$error && ($massaction == 'disable' || ($action == 'disable' && $confirm ==
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$error && $action == 'confirm_edit_value_extrafields' && $confirm == 'yes' && $permissiontoadd) {
|
||||||
|
$db->begin();
|
||||||
|
|
||||||
|
$objecttmp = new $objectclass($db);
|
||||||
|
$e = new ExtraFields($db);// fetch optionals attributes and labels
|
||||||
|
$e->fetch_name_optionals_label($objecttmp->table_element);
|
||||||
|
|
||||||
|
$nbok = 0;
|
||||||
|
$extrafieldKeyToUpdate = GETPOST('extrafield-key-to-update');
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($toselect as $toselectid) {
|
||||||
|
/** @var CommonObject $objecttmp */
|
||||||
|
$objecttmp = new $objectclass($db); // to avoid ghost data
|
||||||
|
$result = $objecttmp->fetch($toselectid);
|
||||||
|
if ($result>0) {
|
||||||
|
// Fill array 'array_options' with data from add form
|
||||||
|
$ret = $e->setOptionalsFromPost(null, $objecttmp, $extrafieldKeyToUpdate);
|
||||||
|
if ($ret > 0) {
|
||||||
|
$objecttmp->insertExtraFields();
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
|
||||||
|
$error++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
if ($nbok > 1) {
|
||||||
|
setEventMessages($langs->trans("RecordsDisabled", $nbok), null, 'mesgs');
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans("save"), null, 'mesgs');
|
||||||
|
}
|
||||||
|
$db->commit();
|
||||||
|
} else {
|
||||||
|
$db->rollback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!$error && ($massaction == 'affectcommercial' || ($action == 'affectcommercial' && $confirm == 'yes')) && $permissiontoadd) {
|
if (!$error && ($massaction == 'affectcommercial' || ($action == 'affectcommercial' && $confirm == 'yes')) && $permissiontoadd) {
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
|
|||||||
@ -173,27 +173,34 @@ class box_members_by_type extends ModeleBoxes
|
|||||||
$line = 0;
|
$line = 0;
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
'td' => 'class=""',
|
'td' => 'class=""',
|
||||||
'text' => $langs->trans("MembersTypes"),
|
'text' => '',
|
||||||
);
|
);
|
||||||
|
$labelstatus = $staticmember->LibStatut($staticmember::STATUS_DRAFT, 0, 0, 1);
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
'td' => 'class="right"',
|
'td' => 'class="right tdoverflowmax100" width="15%" title="'.dol_escape_htmltag($labelstatus).'"',
|
||||||
'text' => $langs->trans("MembersStatusToValid"), // Draft
|
'text' => $labelstatus
|
||||||
);
|
);
|
||||||
|
$labelstatus = $langs->trans("UpToDate");
|
||||||
|
$labelstatus = $staticmember->LibStatut($staticmember::STATUS_VALIDATED, 1, dol_now() + 86400, 1);
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
'td' => 'class="right"',
|
'td' => 'class="right tdoverflowmax100" width="15%" title="'.dol_escape_htmltag($labelstatus).'"',
|
||||||
'text' => $langs->trans("UpToDate"),
|
'text' => $labelstatus,
|
||||||
);
|
);
|
||||||
|
$labelstatus = $langs->trans("OutOfDate");
|
||||||
|
$labelstatus = $staticmember->LibStatut($staticmember::STATUS_VALIDATED, 1, dol_now() - 86400, 1);
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
'td' => 'class="right"',
|
'td' => 'class="right tdoverflowmax100" width="15%" title="'.dol_escape_htmltag($labelstatus).'"',
|
||||||
'text' => $langs->trans("OutOfDate"),
|
'text' => $labelstatus
|
||||||
);
|
);
|
||||||
|
$labelstatus = $staticmember->LibStatut($staticmember::STATUS_EXCLUDED, 0, 0, 1);
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
'td' => 'class="right"',
|
'td' => 'class="right tdoverflowmax100" width="15%" title="'.dol_escape_htmltag($labelstatus).'"',
|
||||||
'text' => $langs->trans("MembersStatusExcluded"),
|
'text' => $labelstatus
|
||||||
);
|
);
|
||||||
|
$labelstatus = $staticmember->LibStatut($staticmember::STATUS_RESILIATED, 0, 0, 1);
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
'td' => 'class="right"',
|
'td' => 'class="right tdoverflowmax100" width="15%" title="'.dol_escape_htmltag($labelstatus).'"',
|
||||||
'text' => $langs->trans("MembersStatusResiliated"),
|
'text' => $labelstatus
|
||||||
);
|
);
|
||||||
$line++;
|
$line++;
|
||||||
foreach ($AdherentType as $key => $adhtype) {
|
foreach ($AdherentType as $key => $adhtype) {
|
||||||
|
|||||||
@ -222,7 +222,7 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" box
|
|||||||
// Show box title
|
// Show box title
|
||||||
if (!empty($head['text']) || !empty($head['sublink']) || !empty($head['subpicto'])) {
|
if (!empty($head['text']) || !empty($head['sublink']) || !empty($head['subpicto'])) {
|
||||||
$out .= '<tr class="liste_titre box_titre">';
|
$out .= '<tr class="liste_titre box_titre">';
|
||||||
$out .= '<td';
|
$out .= '<th';
|
||||||
if ($nbcol > 0) {
|
if ($nbcol > 0) {
|
||||||
$out .= ' colspan="'.$nbcol.'"';
|
$out .= ' colspan="'.$nbcol.'"';
|
||||||
}
|
}
|
||||||
@ -268,7 +268,7 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" box
|
|||||||
$out .= '</div>';
|
$out .= '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$out .= "</td>";
|
$out .= "</th>";
|
||||||
$out .= "</tr>\n";
|
$out .= "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2588,12 +2588,13 @@ abstract class CommonObject
|
|||||||
/**
|
/**
|
||||||
* Change the payments terms
|
* Change the payments terms
|
||||||
*
|
*
|
||||||
* @param int $id Id of new payment terms
|
* @param int $id Id of new payment terms
|
||||||
* @return int >0 if OK, <0 if KO
|
* @param string $deposit_percent % of deposit if needed by payment terms
|
||||||
|
* @return int >0 if OK, <0 if KO
|
||||||
*/
|
*/
|
||||||
public function setPaymentTerms($id)
|
public function setPaymentTerms($id, $deposit_percent = null)
|
||||||
{
|
{
|
||||||
dol_syslog(get_class($this).'::setPaymentTerms('.$id.')');
|
dol_syslog(get_class($this).'::setPaymentTerms('.$id.', '.var_export($deposit_percent, true).')');
|
||||||
if ($this->statut >= 0 || $this->element == 'societe') {
|
if ($this->statut >= 0 || $this->element == 'societe') {
|
||||||
// TODO uniformize field name
|
// TODO uniformize field name
|
||||||
$fieldname = 'fk_cond_reglement';
|
$fieldname = 'fk_cond_reglement';
|
||||||
@ -2604,8 +2605,17 @@ abstract class CommonObject
|
|||||||
$fieldname = 'cond_reglement_supplier';
|
$fieldname = 'cond_reglement_supplier';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($deposit_percent) || $deposit_percent < 0) {
|
||||||
|
$deposit_percent = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($deposit_percent > 100) {
|
||||||
|
$deposit_percent = 100;
|
||||||
|
}
|
||||||
|
|
||||||
$sql = 'UPDATE '.$this->db->prefix().$this->table_element;
|
$sql = 'UPDATE '.$this->db->prefix().$this->table_element;
|
||||||
$sql .= " SET ".$fieldname." = ".(($id > 0 || $id == '0') ? ((int) $id) : 'NULL');
|
$sql .= " SET ".$fieldname." = ".(($id > 0 || $id == '0') ? ((int) $id) : 'NULL');
|
||||||
|
$sql .= " , deposit_percent = " . (! empty($deposit_percent) ? "'".$this->db->escape($deposit_percent)."'" : 'NULL');
|
||||||
$sql .= ' WHERE rowid='.((int) $this->id);
|
$sql .= ' WHERE rowid='.((int) $this->id);
|
||||||
|
|
||||||
if ($this->db->query($sql)) {
|
if ($this->db->query($sql)) {
|
||||||
@ -2615,6 +2625,7 @@ abstract class CommonObject
|
|||||||
$this->cond_reglement_supplier_id = $id;
|
$this->cond_reglement_supplier_id = $id;
|
||||||
}
|
}
|
||||||
$this->cond_reglement = $id; // for compatibility
|
$this->cond_reglement = $id; // for compatibility
|
||||||
|
$this->deposit_percent = $deposit_percent;
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
dol_syslog(get_class($this).'::setPaymentTerms Error '.$sql.' - '.$this->db->error());
|
dol_syslog(get_class($this).'::setPaymentTerms Error '.$sql.' - '.$this->db->error());
|
||||||
|
|||||||
@ -956,6 +956,8 @@ class ExtraFields
|
|||||||
$morecss = 'minwidth400';
|
$morecss = 'minwidth400';
|
||||||
} elseif ($type == 'boolean') {
|
} elseif ($type == 'boolean') {
|
||||||
$morecss = '';
|
$morecss = '';
|
||||||
|
} elseif ($type == 'radio') {
|
||||||
|
$morecss = 'width25';
|
||||||
} else {
|
} else {
|
||||||
if (empty($size) || round($size) < 12) {
|
if (empty($size) || round($size) < 12) {
|
||||||
$morecss = 'minwidth100';
|
$morecss = 'minwidth100';
|
||||||
@ -1147,7 +1149,7 @@ class ExtraFields
|
|||||||
$sql = "SELECT ".$keyList;
|
$sql = "SELECT ".$keyList;
|
||||||
$sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0];
|
$sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0];
|
||||||
if (!empty($InfoFieldList[4])) {
|
if (!empty($InfoFieldList[4])) {
|
||||||
// can use curent entity filter
|
// can use current entity filter
|
||||||
if (strpos($InfoFieldList[4], '$ENTITY$') !== false) {
|
if (strpos($InfoFieldList[4], '$ENTITY$') !== false) {
|
||||||
$InfoFieldList[4] = str_replace('$ENTITY$', $conf->entity, $InfoFieldList[4]);
|
$InfoFieldList[4] = str_replace('$ENTITY$', $conf->entity, $InfoFieldList[4]);
|
||||||
}
|
}
|
||||||
@ -1262,7 +1264,7 @@ class ExtraFields
|
|||||||
$out .= ' value="'.$keyopt.'"';
|
$out .= ' value="'.$keyopt.'"';
|
||||||
$out .= ' id="'.$keyprefix.$key.$keysuffix.'_'.$keyopt.'"';
|
$out .= ' id="'.$keyprefix.$key.$keysuffix.'_'.$keyopt.'"';
|
||||||
$out .= ($value == $keyopt ? 'checked' : '');
|
$out .= ($value == $keyopt ? 'checked' : '');
|
||||||
$out .= '/><label for="'.$keyprefix.$key.$keysuffix.'_'.$keyopt.'">'.$val.'</label><br>';
|
$out .= '/><label for="'.$keyprefix.$key.$keysuffix.'_'.$keyopt.'">'.$langs->trans($val).'</label><br>';
|
||||||
}
|
}
|
||||||
} elseif ($type == 'chkbxlst') {
|
} elseif ($type == 'chkbxlst') {
|
||||||
if (is_array($value)) {
|
if (is_array($value)) {
|
||||||
@ -1315,6 +1317,10 @@ class ExtraFields
|
|||||||
$sql = "SELECT ".$keyList;
|
$sql = "SELECT ".$keyList;
|
||||||
$sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0];
|
$sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0];
|
||||||
if (!empty($InfoFieldList[4])) {
|
if (!empty($InfoFieldList[4])) {
|
||||||
|
// can use current entity filter
|
||||||
|
if (strpos($InfoFieldList[4], '$ENTITY$') !== false) {
|
||||||
|
$InfoFieldList[4] = str_replace('$ENTITY$', $conf->entity, $InfoFieldList[4]);
|
||||||
|
}
|
||||||
// can use SELECT request
|
// can use SELECT request
|
||||||
if (strpos($InfoFieldList[4], '$SEL$') !== false) {
|
if (strpos($InfoFieldList[4], '$SEL$') !== false) {
|
||||||
$InfoFieldList[4] = str_replace('$SEL$', 'SELECT', $InfoFieldList[4]);
|
$InfoFieldList[4] = str_replace('$SEL$', 'SELECT', $InfoFieldList[4]);
|
||||||
@ -1666,7 +1672,7 @@ class ExtraFields
|
|||||||
dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING);
|
dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING);
|
||||||
}
|
}
|
||||||
} elseif ($type == 'radio') {
|
} elseif ($type == 'radio') {
|
||||||
$value = $param['options'][$value];
|
$value = $langs->trans($param['options'][$value]);
|
||||||
} elseif ($type == 'checkbox') {
|
} elseif ($type == 'checkbox') {
|
||||||
$value_arr = explode(',', $value);
|
$value_arr = explode(',', $value);
|
||||||
$value = '';
|
$value = '';
|
||||||
|
|||||||
@ -3729,7 +3729,7 @@ class Form
|
|||||||
|
|
||||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||||
|
|
||||||
$sql = "SELECT rowid, code, libelle as label";
|
$sql = "SELECT rowid, code, libelle as label, deposit_percent";
|
||||||
$sql .= " FROM ".$this->db->prefix().'c_payment_term';
|
$sql .= " FROM ".$this->db->prefix().'c_payment_term';
|
||||||
$sql .= " WHERE entity IN (".getEntity('c_payment_term').")";
|
$sql .= " WHERE entity IN (".getEntity('c_payment_term').")";
|
||||||
$sql .= " AND active > 0";
|
$sql .= " AND active > 0";
|
||||||
@ -3746,6 +3746,7 @@ class Form
|
|||||||
$label = ($langs->trans("PaymentConditionShort".$obj->code) != ("PaymentConditionShort".$obj->code) ? $langs->trans("PaymentConditionShort".$obj->code) : ($obj->label != '-' ? $obj->label : ''));
|
$label = ($langs->trans("PaymentConditionShort".$obj->code) != ("PaymentConditionShort".$obj->code) ? $langs->trans("PaymentConditionShort".$obj->code) : ($obj->label != '-' ? $obj->label : ''));
|
||||||
$this->cache_conditions_paiements[$obj->rowid]['code'] = $obj->code;
|
$this->cache_conditions_paiements[$obj->rowid]['code'] = $obj->code;
|
||||||
$this->cache_conditions_paiements[$obj->rowid]['label'] = $label;
|
$this->cache_conditions_paiements[$obj->rowid]['label'] = $label;
|
||||||
|
$this->cache_conditions_paiements[$obj->rowid]['deposit_percent'] = $obj->deposit_percent;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3991,39 +3992,45 @@ class Form
|
|||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* print list of payment modes.
|
* print list of payment modes.
|
||||||
* Constant MAIN_DEFAULT_PAYMENT_TERM_ID can used to set default value but scope is all application, probably not what you want.
|
* Constant MAIN_DEFAULT_PAYMENT_TERM_ID can used to set default value but scope is all application, probably not what you want.
|
||||||
* See instead to force the default value by the caller.
|
* See instead to force the default value by the caller.
|
||||||
*
|
*
|
||||||
* @param int $selected Id of payment term to preselect by default
|
* @param int $selected Id of payment term to preselect by default
|
||||||
* @param string $htmlname Nom de la zone select
|
* @param string $htmlname Nom de la zone select
|
||||||
* @param int $filtertype Not used
|
* @param int $filtertype If > 0, include payment terms with deposit percentage (for objects other than invoices and invoice templates)
|
||||||
* @param int $addempty Add an empty entry
|
* @param int $addempty Add an empty entry
|
||||||
* @param int $noinfoadmin 0=Add admin info, 1=Disable admin info
|
* @param int $noinfoadmin 0=Add admin info, 1=Disable admin info
|
||||||
* @param string $morecss Add more CSS on select tag
|
* @param string $morecss Add more CSS on select tag
|
||||||
* @return void
|
* @param string $deposit_percent < 0 : deposit_percent input makes no sense (for example, in list filters)
|
||||||
|
* 0 : use default deposit percentage from entry
|
||||||
|
* > 0 : force deposit percentage (for example, from company object)
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function select_conditions_paiements($selected = 0, $htmlname = 'condid', $filtertype = -1, $addempty = 0, $noinfoadmin = 0, $morecss = '')
|
public function select_conditions_paiements($selected = 0, $htmlname = 'condid', $filtertype = -1, $addempty = 0, $noinfoadmin = 0, $morecss = '', $deposit_percent = -1)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
print $this->getSelectConditionsPaiements($selected, $htmlname, $filtertype, $addempty, $noinfoadmin, $morecss);
|
print $this->getSelectConditionsPaiements($selected, $htmlname, $filtertype, $addempty, $noinfoadmin, $morecss, $deposit_percent = -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return list of payment modes.
|
* Return list of payment modes.
|
||||||
* Constant MAIN_DEFAULT_PAYMENT_TERM_ID can used to set default value but scope is all application, probably not what you want.
|
* Constant MAIN_DEFAULT_PAYMENT_TERM_ID can used to set default value but scope is all application, probably not what you want.
|
||||||
* See instead to force the default value by the caller.
|
* See instead to force the default value by the caller.
|
||||||
*
|
*
|
||||||
* @param int $selected Id of payment term to preselect by default
|
* @param int $selected Id of payment term to preselect by default
|
||||||
* @param string $htmlname Nom de la zone select
|
* @param string $htmlname Nom de la zone select
|
||||||
* @param int $filtertype Not used
|
* @param int $filtertype If > 0, include payment terms with deposit percentage (for objects other than invoices and invoice templates)
|
||||||
* @param int $addempty Add an empty entry
|
* @param int $addempty Add an empty entry
|
||||||
* @param int $noinfoadmin 0=Add admin info, 1=Disable admin info
|
* @param int $noinfoadmin 0=Add admin info, 1=Disable admin info
|
||||||
* @param string $morecss Add more CSS on select tag
|
* @param string $morecss Add more CSS on select tag
|
||||||
* @return void
|
* @param string $deposit_percent < 0 : deposit_percent input makes no sense (for example, in list filters)
|
||||||
|
* 0 : use default deposit percentage from entry
|
||||||
|
* > 0 : force deposit percentage (for example, from company object)
|
||||||
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getSelectConditionsPaiements($selected = 0, $htmlname = 'condid', $filtertype = -1, $addempty = 0, $noinfoadmin = 0, $morecss = '')
|
public function getSelectConditionsPaiements($selected = 0, $htmlname = 'condid', $filtertype = -1, $addempty = 0, $noinfoadmin = 0, $deposit_percent = -1)
|
||||||
{
|
{
|
||||||
|
|
||||||
global $langs, $user, $conf;
|
global $langs, $user, $conf;
|
||||||
@ -4041,20 +4048,59 @@ class Form
|
|||||||
if ($addempty) {
|
if ($addempty) {
|
||||||
$out.= '<option value="0"> </option>';
|
$out.= '<option value="0"> </option>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$selectedDepositPercent = null;
|
||||||
|
|
||||||
foreach ($this->cache_conditions_paiements as $id => $arrayconditions) {
|
foreach ($this->cache_conditions_paiements as $id => $arrayconditions) {
|
||||||
if ($selected == $id) {
|
if ($filtertype <= 0 && ! empty($arrayconditions['deposit_percent'])) {
|
||||||
$out.= '<option value="'.$id.'" selected>';
|
continue;
|
||||||
} else {
|
|
||||||
$out.= '<option value="'.$id.'">';
|
|
||||||
}
|
}
|
||||||
$out.= $arrayconditions['label'];
|
|
||||||
$out.= '</option>';
|
if ($selected == $id) {
|
||||||
|
$selectedDepositPercent = $deposit_percent > 0 ? $deposit_percent : $arrayconditions['deposit_percent'];
|
||||||
|
$out .= '<option value="'.$id.'" data-deposit_percent="' . $arrayconditions['deposit_percent'] . '" selected>';
|
||||||
|
} else {
|
||||||
|
$out .= '<option value="'.$id.'" data-deposit_percent="' . $arrayconditions['deposit_percent'] . '">';
|
||||||
|
}
|
||||||
|
$label = $arrayconditions['label'];
|
||||||
|
|
||||||
|
if (! empty($arrayconditions['deposit_percent'])) {
|
||||||
|
$label = str_replace('__DEPOSIT_PERCENT__', $deposit_percent > 0 ? $deposit_percent : $arrayconditions['deposit_percent'], $label);
|
||||||
|
}
|
||||||
|
|
||||||
|
$out.= $label;
|
||||||
|
$out.= '</option>';
|
||||||
}
|
}
|
||||||
$out.= '</select>';
|
$out.= '</select>';
|
||||||
if ($user->admin && empty($noinfoadmin)) {
|
if ($user->admin && empty($noinfoadmin)) {
|
||||||
$out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
$out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||||
}
|
}
|
||||||
$out.= ajax_combobox($htmlname);
|
$out.= ajax_combobox($htmlname);
|
||||||
|
|
||||||
|
if ($deposit_percent >= 0) {
|
||||||
|
$out .= ' <span id="'.$htmlname.'_deposit_percent_container"' . (empty($selectedDepositPercent) ? ' style="display: none"' : '') . '>';
|
||||||
|
$out .= $langs->trans('DepositPercent') . ' : ';
|
||||||
|
$out .= '<input id="'.$htmlname.'_deposit_percent" name="'.$htmlname.'_deposit_percent" class="maxwidth50" value="' . strval($deposit_percent) . '" />';
|
||||||
|
$out .= '</span>';
|
||||||
|
$out .= '
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
$("#' . $htmlname . '").change(function () {
|
||||||
|
let $selected = $(this).find("option:selected");
|
||||||
|
let depositPercent = $selected.attr("data-deposit_percent");
|
||||||
|
|
||||||
|
if (depositPercent.length > 0) {
|
||||||
|
$("#'.$htmlname.'_deposit_percent_container").show().find("#'.$htmlname.'_deposit_percent").val(depositPercent);
|
||||||
|
} else {
|
||||||
|
$("#'.$htmlname.'_deposit_percent_container").hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>';
|
||||||
|
}
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5245,14 +5291,18 @@ class Form
|
|||||||
/**
|
/**
|
||||||
* Show a form to select payment conditions
|
* Show a form to select payment conditions
|
||||||
*
|
*
|
||||||
* @param int $page Page
|
* @param int $page Page
|
||||||
* @param string $selected Id condition pre-selectionne
|
* @param string $selected Id condition pre-selectionne
|
||||||
* @param string $htmlname Name of select html field
|
* @param string $htmlname Name of select html field
|
||||||
* @param int $addempty Add empty entry
|
* @param int $addempty Add empty entry
|
||||||
* @param string $type Type ('direct-debit' or 'bank-transfer')
|
* @param string $type Type ('direct-debit' or 'bank-transfer')
|
||||||
|
* @param int $filtertype If > 0, include payment terms with deposit percentage (for objects other than invoices and invoice templates)
|
||||||
|
* @param string $deposit_percent < 0 : deposit_percent input makes no sense (for example, in list filters)
|
||||||
|
* 0 : use default deposit percentage from entry
|
||||||
|
* > 0 : force deposit percentage (for example, from company object)
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function form_conditions_reglement($page, $selected = '', $htmlname = 'cond_reglement_id', $addempty = 0, $type = '')
|
public function form_conditions_reglement($page, $selected = '', $htmlname = 'cond_reglement_id', $addempty = 0, $type = '', $filtertype = -1, $deposit_percent = -1)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $langs;
|
global $langs;
|
||||||
@ -5263,14 +5313,20 @@ class Form
|
|||||||
if ($type) {
|
if ($type) {
|
||||||
print '<input type="hidden" name="type" value="'.dol_escape_htmltag($type).'">';
|
print '<input type="hidden" name="type" value="'.dol_escape_htmltag($type).'">';
|
||||||
}
|
}
|
||||||
$this->select_conditions_paiements($selected, $htmlname, -1, $addempty, 0, '');
|
$this->select_conditions_paiements($selected, $htmlname, $filtertype, $addempty, 0, '', $deposit_percent);
|
||||||
print '<input type="submit" class="button valignmiddle smallpaddingimp" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button valignmiddle smallpaddingimp" value="'.$langs->trans("Modify").'">';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
} else {
|
} else {
|
||||||
if ($selected) {
|
if ($selected) {
|
||||||
$this->load_cache_conditions_paiements();
|
$this->load_cache_conditions_paiements();
|
||||||
if (isset($this->cache_conditions_paiements[$selected])) {
|
if (isset($this->cache_conditions_paiements[$selected])) {
|
||||||
print $this->cache_conditions_paiements[$selected]['label'];
|
$label = $this->cache_conditions_paiements[$selected]['label'];
|
||||||
|
|
||||||
|
if (! empty($this->cache_conditions_paiements[$selected]['deposit_percent'])) {
|
||||||
|
$label = str_replace('__DEPOSIT_PERCENT__', $deposit_percent > 0 ? $deposit_percent : $this->cache_conditions_paiements[$selected]['deposit_percent'], $label);
|
||||||
|
}
|
||||||
|
|
||||||
|
print $label;
|
||||||
} else {
|
} else {
|
||||||
$langs->load('errors');
|
$langs->load('errors');
|
||||||
print $langs->trans('ErrorNotInDictionaryPaymentConditions');
|
print $langs->trans('ErrorNotInDictionaryPaymentConditions');
|
||||||
@ -7226,6 +7282,8 @@ class Form
|
|||||||
unset($adherenttmpselect);
|
unset($adherenttmpselect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$urloption = '';
|
||||||
|
|
||||||
$out .= ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT.'/adherents/ajax/adherents.php', $urloption, $conf->global->PRODUIT_USE_SEARCH_TO_SELECT, 1, $ajaxoptions);
|
$out .= ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT.'/adherents/ajax/adherents.php', $urloption, $conf->global->PRODUIT_USE_SEARCH_TO_SELECT, 1, $ajaxoptions);
|
||||||
|
|
||||||
if (empty($hidelabel)) $out .= $langs->trans("RefOrLabel").' : ';
|
if (empty($hidelabel)) $out .= $langs->trans("RefOrLabel").' : ';
|
||||||
@ -7240,7 +7298,9 @@ class Form
|
|||||||
$out .= img_picto($langs->trans("Search"), 'search');
|
$out .= img_picto($langs->trans("Search"), 'search');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$out .= $this->selectMembersList($selected, $htmlname, $filtertype, $limit, $status, 0, $socid, $showempty, $forcecombo, $morecss);
|
$filterkey = '';
|
||||||
|
|
||||||
|
$out .= $this->selectMembersList($selected, $htmlname, $filtertype, $limit, $filterkey, $status, 0, $showempty, $forcecombo, $morecss);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($nooutput)) print $out;
|
if (empty($nooutput)) print $out;
|
||||||
@ -7255,8 +7315,8 @@ class Form
|
|||||||
* @param string $htmlname Name of select html
|
* @param string $htmlname Name of select html
|
||||||
* @param string $filtertype Filter on adherent type
|
* @param string $filtertype Filter on adherent type
|
||||||
* @param int $limit Limit on number of returned lines
|
* @param int $limit Limit on number of returned lines
|
||||||
* @param string $filterkey Filter on adherent ref or subject
|
* @param string $filterkey Filter on member status
|
||||||
* @param int $status Ticket status
|
* @param int $status Member status
|
||||||
* @param int $outputmode 0=HTML select string, 1=Array
|
* @param int $outputmode 0=HTML select string, 1=Array
|
||||||
* @param string $showempty '' to not show empty line. Translation key to show an empty line. '1' show empty line with no text.
|
* @param string $showempty '' to not show empty line. Translation key to show an empty line. '1' show empty line with no text.
|
||||||
* @param int $forcecombo Force to use combo box
|
* @param int $forcecombo Force to use combo box
|
||||||
@ -7270,7 +7330,7 @@ class Form
|
|||||||
$out = '';
|
$out = '';
|
||||||
$outarray = array();
|
$outarray = array();
|
||||||
|
|
||||||
$selectFields = " p.rowid, p.ref";
|
$selectFields = " p.rowid, p.ref, p.firstname, p.lastname";
|
||||||
|
|
||||||
$sql = "SELECT ";
|
$sql = "SELECT ";
|
||||||
$sql .= $selectFields;
|
$sql .= $selectFields;
|
||||||
@ -7280,21 +7340,23 @@ class Form
|
|||||||
// Add criteria on ref/label
|
// Add criteria on ref/label
|
||||||
if ($filterkey != '') {
|
if ($filterkey != '') {
|
||||||
$sql .= ' AND (';
|
$sql .= ' AND (';
|
||||||
$prefix = empty($conf->global->TICKET_DONOTSEARCH_ANYWHERE) ? '%' : ''; // Can use index if PRODUCT_DONOTSEARCH_ANYWHERE is on
|
$prefix = empty($conf->global->MEMBER_DONOTSEARCH_ANYWHERE) ? '%' : ''; // Can use index if PRODUCT_DONOTSEARCH_ANYWHERE is on
|
||||||
// For natural search
|
// For natural search
|
||||||
$scrit = explode(' ', $filterkey);
|
$scrit = explode(' ', $filterkey);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
if (count($scrit) > 1) $sql .= "(";
|
if (count($scrit) > 1) $sql .= "(";
|
||||||
foreach ($scrit as $crit) {
|
foreach ($scrit as $crit) {
|
||||||
if ($i > 0) $sql .= " AND ";
|
if ($i > 0) $sql .= " AND ";
|
||||||
$sql .= "p.ref LIKE '".$this->db->escape($prefix.$crit)."%'";
|
$sql .= "(p.firstname LIKE '".$this->db->escape($prefix.$crit)."%'";
|
||||||
$sql .= "";
|
$sql .= " OR p.lastname LIKE '".$this->db->escape($prefix.$crit)."%')";
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
if (count($scrit) > 1) $sql .= ")";
|
if (count($scrit) > 1) $sql .= ")";
|
||||||
$sql .= ')';
|
$sql .= ')';
|
||||||
}
|
}
|
||||||
|
if ($status != -1) {
|
||||||
|
$sql .= ' AND statut = '.((int) $status);
|
||||||
|
}
|
||||||
$sql .= $this->db->plimit($limit, 0);
|
$sql .= $this->db->plimit($limit, 0);
|
||||||
|
|
||||||
// Build output string
|
// Build output string
|
||||||
@ -7324,7 +7386,9 @@ class Form
|
|||||||
} else {
|
} else {
|
||||||
if ($showempty && !is_numeric($showempty)) $textifempty = $langs->trans($showempty);
|
if ($showempty && !is_numeric($showempty)) $textifempty = $langs->trans($showempty);
|
||||||
}
|
}
|
||||||
if ($showempty) $out .= '<option value="0" selected>'.$textifempty.'</option>';
|
if ($showempty) {
|
||||||
|
$out .= '<option value="-1" selected>'.$textifempty.'</option>';
|
||||||
|
}
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($num && $i < $num) {
|
while ($num && $i < $num) {
|
||||||
@ -7333,6 +7397,7 @@ class Form
|
|||||||
$objp = $this->db->fetch_object($result);
|
$objp = $this->db->fetch_object($result);
|
||||||
|
|
||||||
$this->constructMemberListOption($objp, $opt, $optJson, $selected, $filterkey);
|
$this->constructMemberListOption($objp, $opt, $optJson, $selected, $filterkey);
|
||||||
|
|
||||||
// Add new entry
|
// Add new entry
|
||||||
// "key" value of json key array is used by jQuery automatically as selected value
|
// "key" value of json key array is used by jQuery automatically as selected value
|
||||||
// "label" value of json key array is used by jQuery automatically as text for combo box
|
// "label" value of json key array is used by jQuery automatically as text for combo box
|
||||||
@ -7367,28 +7432,23 @@ class Form
|
|||||||
protected function constructMemberListOption(&$objp, &$opt, &$optJson, $selected, $filterkey = '')
|
protected function constructMemberListOption(&$objp, &$opt, &$optJson, $selected, $filterkey = '')
|
||||||
{
|
{
|
||||||
$outkey = '';
|
$outkey = '';
|
||||||
$outval = '';
|
|
||||||
$outref = '';
|
|
||||||
$outlabel = '';
|
$outlabel = '';
|
||||||
$outtype = '';
|
$outtype = '';
|
||||||
|
|
||||||
$label = $objp->label;
|
|
||||||
|
|
||||||
$outkey = $objp->rowid;
|
$outkey = $objp->rowid;
|
||||||
$outref = $objp->ref;
|
$outlabel = dolGetFirstLastname($objp->firstname, $objp->lastname);
|
||||||
$outlabel = $objp->label;
|
$outtype = $objp->fk_adherent_type;
|
||||||
$outtype = $objp->fk_product_type;
|
|
||||||
|
|
||||||
$opt = '<option value="'.$objp->rowid.'"';
|
$opt = '<option value="'.$objp->rowid.'"';
|
||||||
$opt .= ($objp->rowid == $selected) ? ' selected' : '';
|
$opt .= ($objp->rowid == $selected) ? ' selected' : '';
|
||||||
$opt .= '>';
|
$opt .= '>';
|
||||||
$opt .= $objp->ref;
|
if (!empty($filterkey) && $filterkey != '') {
|
||||||
$objRef = $objp->ref;
|
$outlabel = preg_replace('/('.preg_quote($filterkey, '/').')/i', '<strong>$1</strong>', $outlabel, 1);
|
||||||
if (!empty($filterkey) && $filterkey != '') $objRef = preg_replace('/('.preg_quote($filterkey, '/').')/i', '<strong>$1</strong>', $objRef, 1);
|
}
|
||||||
$outval .= $objRef;
|
$opt .= $outlabel;
|
||||||
|
|
||||||
$opt .= "</option>\n";
|
$opt .= "</option>\n";
|
||||||
$optJson = array('key'=>$outkey, 'value'=>$outref, 'type'=>$outtype);
|
|
||||||
|
$optJson = array('key'=>$outkey, 'value'=>$outlabel, 'type'=>$outtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -234,7 +234,7 @@ class Ldap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_resource($this->connection)) {
|
if (is_resource($this->connection) || is_object($this->connection)) {
|
||||||
// Upgrade connexion to TLS, if requested by the configuration
|
// Upgrade connexion to TLS, if requested by the configuration
|
||||||
if (!empty($conf->global->LDAP_SERVER_USE_TLS)) {
|
if (!empty($conf->global->LDAP_SERVER_USE_TLS)) {
|
||||||
// For test/debug
|
// For test/debug
|
||||||
|
|||||||
@ -1089,11 +1089,12 @@ class Translate
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < $num) {
|
while ($i < $num) {
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
|
if ($obj) {
|
||||||
// Si traduction existe, on l'utilise, sinon on prend le libelle par defaut
|
// If a translation exists, we use it lese we use the default label
|
||||||
$this->cache_currencies[$obj->code_iso]['label'] = ($obj->code_iso && $this->trans("Currency".$obj->code_iso) != "Currency".$obj->code_iso ? $this->trans("Currency".$obj->code_iso) : ($obj->label != '-' ? $obj->label : ''));
|
$this->cache_currencies[$obj->code_iso]['label'] = ($obj->code_iso && $this->trans("Currency".$obj->code_iso) != "Currency".$obj->code_iso ? $this->trans("Currency".$obj->code_iso) : ($obj->label != '-' ? $obj->label : ''));
|
||||||
$this->cache_currencies[$obj->code_iso]['unicode'] = (array) json_decode($obj->unicode, true);
|
$this->cache_currencies[$obj->code_iso]['unicode'] = (array) json_decode($obj->unicode, true);
|
||||||
$label[$obj->code_iso] = $this->cache_currencies[$obj->code_iso]['label'];
|
$label[$obj->code_iso] = $this->cache_currencies[$obj->code_iso]['label'];
|
||||||
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
if (empty($currency_code)) {
|
if (empty($currency_code)) {
|
||||||
|
|||||||
@ -502,8 +502,8 @@ interface Database
|
|||||||
/**
|
/**
|
||||||
* Returns the current line (as an object) for the resultset cursor
|
* Returns the current line (as an object) for the resultset cursor
|
||||||
*
|
*
|
||||||
* @param resource $resultset Cursor of the desired request
|
* @param resource|Connection $resultset Handler of the desired request
|
||||||
* @return Object Object result line or false if KO or end of cursor
|
* @return Object Object result line or false if KO or end of cursor
|
||||||
*/
|
*/
|
||||||
public function fetch_object($resultset);
|
public function fetch_object($resultset);
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
|
|||||||
@ -116,7 +116,7 @@ class DoliDBPgsql extends DoliDB
|
|||||||
$this->connected = false;
|
$this->connected = false;
|
||||||
$this->ok = false;
|
$this->ok = false;
|
||||||
$this->error = 'Host, login or password incorrect';
|
$this->error = 'Host, login or password incorrect';
|
||||||
dol_syslog(get_class($this)."::DoliDBPgsql : Erreur Connect ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::DoliDBPgsql : Erreur Connect ".$this->error.'. Failed to connect to host='.$host.' port='.$port.' user='.$user, LOG_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si connexion serveur ok et si connexion base demandee, on essaie connexion base
|
// Si connexion serveur ok et si connexion base demandee, on essaie connexion base
|
||||||
@ -423,7 +423,7 @@ class DoliDBPgsql extends DoliDB
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if local connection failed or not requested, use TCP/IP
|
// if local connection failed or not requested, use TCP/IP
|
||||||
if (!$this->db) {
|
if (empty($this->db)) {
|
||||||
if (!$host) {
|
if (!$host) {
|
||||||
$host = "localhost";
|
$host = "localhost";
|
||||||
}
|
}
|
||||||
@ -432,7 +432,11 @@ class DoliDBPgsql extends DoliDB
|
|||||||
}
|
}
|
||||||
|
|
||||||
$con_string = "host='".$host."' port='".$port."' dbname='".$name."' user='".$login."' password='".$passwd."'";
|
$con_string = "host='".$host."' port='".$port."' dbname='".$name."' user='".$login."' password='".$passwd."'";
|
||||||
$this->db = @pg_connect($con_string);
|
try {
|
||||||
|
$this->db = @pg_connect($con_string);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
print $e->getMessage();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// now we test if at least one connect method was a success
|
// now we test if at least one connect method was a success
|
||||||
@ -580,7 +584,7 @@ class DoliDBPgsql extends DoliDB
|
|||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
// If resultset not provided, we take the last used by connexion
|
// If resultset not provided, we take the last used by connexion
|
||||||
if (!is_resource($resultset)) {
|
if (!is_resource($resultset) && !is_object($resultset)) {
|
||||||
$resultset = $this->_results;
|
$resultset = $this->_results;
|
||||||
}
|
}
|
||||||
return pg_fetch_object($resultset);
|
return pg_fetch_object($resultset);
|
||||||
@ -597,7 +601,7 @@ class DoliDBPgsql extends DoliDB
|
|||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
// If resultset not provided, we take the last used by connexion
|
// If resultset not provided, we take the last used by connexion
|
||||||
if (!is_resource($resultset)) {
|
if (!is_resource($resultset) && !is_object($resultset)) {
|
||||||
$resultset = $this->_results;
|
$resultset = $this->_results;
|
||||||
}
|
}
|
||||||
return pg_fetch_array($resultset);
|
return pg_fetch_array($resultset);
|
||||||
@ -614,7 +618,7 @@ class DoliDBPgsql extends DoliDB
|
|||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||||
if (!is_resource($resultset)) {
|
if (!is_resource($resultset) && !is_object($resultset)) {
|
||||||
$resultset = $this->_results;
|
$resultset = $this->_results;
|
||||||
}
|
}
|
||||||
return pg_fetch_row($resultset);
|
return pg_fetch_row($resultset);
|
||||||
@ -632,7 +636,7 @@ class DoliDBPgsql extends DoliDB
|
|||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
// If resultset not provided, we take the last used by connexion
|
// If resultset not provided, we take the last used by connexion
|
||||||
if (!is_resource($resultset)) {
|
if (!is_resource($resultset) && !is_object($resultset)) {
|
||||||
$resultset = $this->_results;
|
$resultset = $this->_results;
|
||||||
}
|
}
|
||||||
return pg_num_rows($resultset);
|
return pg_num_rows($resultset);
|
||||||
@ -650,7 +654,7 @@ class DoliDBPgsql extends DoliDB
|
|||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
// If resultset not provided, we take the last used by connexion
|
// If resultset not provided, we take the last used by connexion
|
||||||
if (!is_resource($resultset)) {
|
if (!is_resource($resultset) && !is_object($resultset)) {
|
||||||
$resultset = $this->_results;
|
$resultset = $this->_results;
|
||||||
}
|
}
|
||||||
// pgsql necessite un resultset pour cette fonction contrairement
|
// pgsql necessite un resultset pour cette fonction contrairement
|
||||||
@ -668,11 +672,11 @@ class DoliDBPgsql extends DoliDB
|
|||||||
public function free($resultset = null)
|
public function free($resultset = null)
|
||||||
{
|
{
|
||||||
// If resultset not provided, we take the last used by connexion
|
// If resultset not provided, we take the last used by connexion
|
||||||
if (!is_resource($resultset)) {
|
if (!is_resource($resultset) && !is_object($resultset)) {
|
||||||
$resultset = $this->_results;
|
$resultset = $this->_results;
|
||||||
}
|
}
|
||||||
// Si resultset en est un, on libere la memoire
|
// Si resultset en est un, on libere la memoire
|
||||||
if (is_resource($resultset)) {
|
if (is_resource($resultset) || is_object($resultset)) {
|
||||||
pg_free_result($resultset);
|
pg_free_result($resultset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -916,7 +920,8 @@ class DoliDBPgsql extends DoliDB
|
|||||||
// Test charset match LC_TYPE (pgsql error otherwise)
|
// Test charset match LC_TYPE (pgsql error otherwise)
|
||||||
//print $charset.' '.setlocale(LC_CTYPE,'0'); exit;
|
//print $charset.' '.setlocale(LC_CTYPE,'0'); exit;
|
||||||
|
|
||||||
$sql = "CREATE DATABASE '".$this->escape($database)."' OWNER '".$this->escape($owner)."' ENCODING '".$this->escape($charset)."'";
|
// NOTE: Do not use ' around the database name
|
||||||
|
$sql = "CREATE DATABASE ".$this->escape($database)." OWNER '".$this->escape($owner)."' ENCODING '".$this->escape($charset)."'";
|
||||||
dol_syslog($sql, LOG_DEBUG);
|
dol_syslog($sql, LOG_DEBUG);
|
||||||
$ret = $this->query($sql);
|
$ret = $this->query($sql);
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|||||||
@ -127,6 +127,19 @@ $langs->trans("FridayMin"),
|
|||||||
$langs->trans("SaturdayMin")
|
$langs->trans("SaturdayMin")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
$dec = ',';
|
||||||
|
$thousand = ' ';
|
||||||
|
if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") {
|
||||||
|
$dec = $langs->transnoentitiesnoconv("SeparatorDecimal");
|
||||||
|
}
|
||||||
|
if ($langs->transnoentitiesnoconv("SeparatorThousand") != "SeparatorThousand") {
|
||||||
|
$thousand = $langs->transnoentitiesnoconv("SeparatorThousand");
|
||||||
|
}
|
||||||
|
if ($thousand == 'Space') {
|
||||||
|
$thousand = ' ';
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
// Javascript libraries for Dolibarr ERP CRM (https://www.dolibarr.org)
|
// Javascript libraries for Dolibarr ERP CRM (https://www.dolibarr.org)
|
||||||
|
|
||||||
@ -136,6 +149,7 @@ var tradMonthsShort = <?php echo json_encode($tradMonthsShort) ?>;
|
|||||||
var tradDays = <?php echo json_encode($tradDays) ?>;
|
var tradDays = <?php echo json_encode($tradDays) ?>;
|
||||||
var tradDaysShort = <?php echo json_encode($tradDaysShort) ?>;
|
var tradDaysShort = <?php echo json_encode($tradDaysShort) ?>;
|
||||||
var tradDaysMin = <?php echo json_encode($tradDaysMin) ?>;
|
var tradDaysMin = <?php echo json_encode($tradDaysMin) ?>;
|
||||||
|
var currencyCache = <?php echo json_encode($langs->cache_currencies) ?>;
|
||||||
|
|
||||||
// For JQuery date picker
|
// For JQuery date picker
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
@ -623,6 +637,18 @@ function setConstant(url, code, input, entity, strict, forcereload, userid, toke
|
|||||||
url = url + "?dol_resetcache=1";
|
url = url + "?dol_resetcache=1";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var page_y = $(document).scrollTop();
|
||||||
|
url = url.replace(/page_y=\d+/g, '');
|
||||||
|
if (page_y > 0) {
|
||||||
|
if (url.indexOf('?') > -1) {
|
||||||
|
url = url + "&page_y="+page_y;
|
||||||
|
} else {
|
||||||
|
url = url + "?page_y="+page_y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
url = url.replace(/&&+/, '&');
|
||||||
|
console.log("url ro redirect = "+url);
|
||||||
|
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
//location.reload();
|
//location.reload();
|
||||||
return false;
|
return false;
|
||||||
@ -704,6 +730,18 @@ function delConstant(url, code, input, entity, strict, forcereload, userid, toke
|
|||||||
url = url + "?dol_resetcache=1";
|
url = url + "?dol_resetcache=1";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var page_y = $(document).scrollTop();
|
||||||
|
url = url.replace(/page_y=\d+/g, '');
|
||||||
|
if (page_y > 0) {
|
||||||
|
if (url.indexOf('?') > -1) {
|
||||||
|
url = url + "&page_y="+page_y;
|
||||||
|
} else {
|
||||||
|
url = url + "?page_y="+page_y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
url = url.replace(/&&+/, '&');
|
||||||
|
console.log("url ro redirect = "+url);
|
||||||
|
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
//location.reload();
|
//location.reload();
|
||||||
return false;
|
return false;
|
||||||
@ -1091,22 +1129,87 @@ function getParameterByName(name, valueifnotfound)
|
|||||||
// Another solution, easier, to build a javascript rounding function
|
// Another solution, easier, to build a javascript rounding function
|
||||||
function dolroundjs(number, decimals) { return +(Math.round(number + "e+" + decimals) + "e-" + decimals); }
|
function dolroundjs(number, decimals) { return +(Math.round(number + "e+" + decimals) + "e-" + decimals); }
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function similar to PHP price()
|
* Function similar to PHP price()
|
||||||
*
|
*
|
||||||
|
* Example use:
|
||||||
|
* pricejs(13312.448, 'MT', 'EUR', 'fr_FR')
|
||||||
|
* // (depending on conf for 'MT'): '13 312.45 €'
|
||||||
|
*
|
||||||
|
* pricejs(343000.121, 'MT')
|
||||||
|
* // assuming conf for 'MT' is 2 and $langs->defaultlang is 'en_US': '343,000.12'
|
||||||
|
*
|
||||||
* @param {number|string} amount The amount to show
|
* @param {number|string} amount The amount to show
|
||||||
* @param {string} mode 'MT' or 'MU'
|
* @param {string} mode 'MT' or 'MU'
|
||||||
|
* @param {string} currency_code ISO code of currency (empty by default)
|
||||||
|
* @param {string} force_locale ISO code locale to use (if empty, will use Dolibarr's current locale code)
|
||||||
* @return {string} The amount with digits
|
* @return {string} The amount with digits
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
function pricejs(amount, mode) {
|
function pricejs(amount, mode = 'MT', currency_code = '', force_locale = '') {
|
||||||
var main_max_dec_shown = <?php echo (int) str_replace('.', '', $conf->global->MAIN_MAX_DECIMALS_SHOWN); ?>;
|
var main_max_dec_shown = <?php echo (int) str_replace('.', '', $conf->global->MAIN_MAX_DECIMALS_SHOWN); ?>;
|
||||||
var main_rounding_unit = <?php echo (int) $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>;
|
var main_rounding_unit = <?php echo (int) $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>;
|
||||||
var main_rounding_tot = <?php echo (int) $conf->global->MAIN_MAX_DECIMALS_TOT; ?>;
|
var main_rounding_tot = <?php echo (int) $conf->global->MAIN_MAX_DECIMALS_TOT; ?>;
|
||||||
|
var main_decimal_separator = <?php echo json_encode($dec) ?>;
|
||||||
|
var main_thousand_separator = <?php echo json_encode($thousand) ?>;
|
||||||
|
var locale_code = force_locale || <?php echo json_encode($langs->defaultlang) ?>;
|
||||||
|
var amountAsLocalizedString;
|
||||||
|
var useIntl = Boolean(Intl && Intl.NumberFormat);
|
||||||
|
var nDigits;
|
||||||
|
if (currency_code === 'auto') currency_code = <?php echo json_encode($conf->currency) ?>;
|
||||||
|
|
||||||
if (mode == 'MU') return amount.toFixed(main_rounding_unit);
|
if (mode === 'MU') nDigits = main_rounding_unit;
|
||||||
if (mode == 'MT') return amount.toFixed(main_rounding_tot);
|
else if (mode === 'MT') nDigits = main_rounding_tot;
|
||||||
return 'Bad value for parameter mode';
|
else return 'Bad value for parameter mode';
|
||||||
|
|
||||||
|
if (useIntl) {
|
||||||
|
// simple version: let the browser decide how to format the number using the provided language / currency
|
||||||
|
// parameters
|
||||||
|
var formattingOptions = {
|
||||||
|
minimumFractionDigits: nDigits,
|
||||||
|
maximumFractionDigits: nDigits
|
||||||
|
};
|
||||||
|
if (currency_code) {
|
||||||
|
formattingOptions['style'] = 'currency';
|
||||||
|
formattingOptions['currency'] = currency_code;
|
||||||
|
}
|
||||||
|
return Intl.NumberFormat(locale_code.replace('_', '-'), formattingOptions).format(amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
// No Intl -> attempt to format the number in a way similar to Dolibarr PHP's `price()` function
|
||||||
|
amountAsLocalizedString = amount.toFixed(nDigits).replace(
|
||||||
|
/((?!^)(?:\d{3})*)(?:\.(\d+))?$/,
|
||||||
|
(fullMatch, digitsByThree, decimals) =>
|
||||||
|
digitsByThree.replace(
|
||||||
|
/\d{3}/g,
|
||||||
|
(groupOfThree) => main_thousand_separator + groupOfThree
|
||||||
|
) + (decimals !== undefined ? main_decimal_separator + decimals : '')
|
||||||
|
).replace(/ /, ' ');
|
||||||
|
if (!currency_code) return amountAsLocalizedString;
|
||||||
|
|
||||||
|
// print with currency
|
||||||
|
var currency_symbol = currency_code;
|
||||||
|
|
||||||
|
// codes of languages / currencies where the symbol must be placed before the amount
|
||||||
|
var currencyBeforeAmountCodes = {
|
||||||
|
currency: ['AUD', 'CAD', 'CNY', 'COP', 'CLP', 'GBP', 'HKD', 'MXN', 'PEN', 'USD'],
|
||||||
|
language: ['nl_NL']
|
||||||
|
};
|
||||||
|
|
||||||
|
if (currencyCache[currency_code]
|
||||||
|
&& currencyCache[currency_code]['unicode']
|
||||||
|
&& currencyCache[currency_code]['unicode'].length) {
|
||||||
|
currency_symbol = currencyCache[currency_code]['unicode'].reduce(function (res, cur) {return res + cur}, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currencyBeforeAmountCodes.currency.indexOf(currency_code) >= 0
|
||||||
|
|| currencyBeforeAmountCodes.language.indexOf(locale_code)) {
|
||||||
|
// if we use a language or a currency where the symbol is placed before the amount
|
||||||
|
return currency_symbol + amountAsLocalizedString;
|
||||||
|
}
|
||||||
|
|
||||||
|
// by default: currency symbol after the amount
|
||||||
|
return amountAsLocalizedString + ' ' + currency_symbol;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1119,20 +1222,8 @@ function pricejs(amount, mode) {
|
|||||||
function price2numjs(amount) {
|
function price2numjs(amount) {
|
||||||
if (amount == '') return '';
|
if (amount == '') return '';
|
||||||
|
|
||||||
<?php
|
var dec = <?php echo json_encode($dec) ?>;
|
||||||
$dec = ',';
|
var thousand = <?php echo json_encode($thousand) ?>;
|
||||||
$thousand = ' ';
|
|
||||||
if ($langs->transnoentitiesnoconv("SeparatorDecimal") != "SeparatorDecimal") {
|
|
||||||
$dec = $langs->transnoentitiesnoconv("SeparatorDecimal");
|
|
||||||
}
|
|
||||||
if ($langs->transnoentitiesnoconv("SeparatorThousand") != "SeparatorThousand") {
|
|
||||||
$thousand = $langs->transnoentitiesnoconv("SeparatorThousand");
|
|
||||||
}
|
|
||||||
if ($thousand == 'Space') {
|
|
||||||
$thousand = ' ';
|
|
||||||
}
|
|
||||||
print "var dec='".dol_escape_js($dec)."'; var thousand='".dol_escape_js($thousand)."';\n"; // Set var in javascript
|
|
||||||
?>
|
|
||||||
|
|
||||||
var main_max_dec_shown = <?php echo (int) str_replace('.', '', $conf->global->MAIN_MAX_DECIMALS_SHOWN); ?>;
|
var main_max_dec_shown = <?php echo (int) str_replace('.', '', $conf->global->MAIN_MAX_DECIMALS_SHOWN); ?>;
|
||||||
var main_rounding_unit = <?php echo (int) $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>;
|
var main_rounding_unit = <?php echo (int) $conf->global->MAIN_MAX_DECIMALS_UNIT; ?>;
|
||||||
|
|||||||
@ -9878,7 +9878,7 @@ function getDictionaryValue($tablename, $field, $id, $checkentity = false, $rowi
|
|||||||
if (is_null($dictvalues)) {
|
if (is_null($dictvalues)) {
|
||||||
$dictvalues = array();
|
$dictvalues = array();
|
||||||
|
|
||||||
$sql = "SELECT * FROM ".$tablename." WHERE 1 = 1"; // Here select * is allowed as it is generic code and we don't have list of fields
|
$sql = "SELECT * FROM ".MAIN_DB_PREFIX.$tablename." WHERE 1 = 1"; // Here select * is allowed as it is generic code and we don't have list of fields
|
||||||
if ($checkentity) {
|
if ($checkentity) {
|
||||||
$sql .= ' AND entity IN (0,'.getEntity($tablename).')';
|
$sql .= ' AND entity IN (0,'.getEntity($tablename).')';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,10 +29,10 @@
|
|||||||
/**
|
/**
|
||||||
* Prepare array with list of tabs
|
* Prepare array with list of tabs
|
||||||
*
|
*
|
||||||
* @param Object $object Object related to tabs
|
* @param User $object Object related to tabs
|
||||||
* @return array Array of tabs to show
|
* @return array Array of tabs to show
|
||||||
*/
|
*/
|
||||||
function user_prepare_head($object)
|
function user_prepare_head(User $object)
|
||||||
{
|
{
|
||||||
global $langs, $conf, $user, $db;
|
global $langs, $conf, $user, $db;
|
||||||
|
|
||||||
|
|||||||
@ -260,7 +260,7 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest)
|
|||||||
** 53 - Account inactive (manually locked out by administrator)
|
** 53 - Account inactive (manually locked out by administrator)
|
||||||
*/
|
*/
|
||||||
dol_syslog("functions_ldap::check_user_password_ldap Authentication KO failed to connect to LDAP for '".$usertotest."'", LOG_NOTICE);
|
dol_syslog("functions_ldap::check_user_password_ldap Authentication KO failed to connect to LDAP for '".$usertotest."'", LOG_NOTICE);
|
||||||
if (is_resource($ldap->connection)) { // If connection ok but bind ko
|
if (is_resource($ldap->connection) || is_object($ldap->connection)) { // If connection ok but bind ko
|
||||||
$ldap->ldapErrorCode = ldap_errno($ldap->connection);
|
$ldap->ldapErrorCode = ldap_errno($ldap->connection);
|
||||||
$ldap->ldapErrorText = ldap_error($ldap->connection);
|
$ldap->ldapErrorText = ldap_error($ldap->connection);
|
||||||
dol_syslog("functions_ldap::check_user_password_ldap ".$ldap->ldapErrorCode." ".$ldap->ldapErrorText);
|
dol_syslog("functions_ldap::check_user_password_ldap ".$ldap->ldapErrorCode." ".$ldap->ldapErrorText);
|
||||||
|
|||||||
@ -956,11 +956,11 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it
|
|||||||
$err++;
|
$err++;
|
||||||
} else {
|
} else {
|
||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
$tmp = array();
|
|
||||||
if ($obj->note) {
|
|
||||||
$tmp = json_decode($obj->note, true);
|
|
||||||
}
|
|
||||||
if ($obj) {
|
if ($obj) {
|
||||||
|
$tmp = array();
|
||||||
|
if ($obj->note) {
|
||||||
|
$tmp = json_decode($obj->note, true);
|
||||||
|
}
|
||||||
return array(
|
return array(
|
||||||
'authorid' => $tmp['authorid'],
|
'authorid' => $tmp['authorid'],
|
||||||
'ip' => $tmp['ip'],
|
'ip' => $tmp['ip'],
|
||||||
@ -1054,16 +1054,16 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it
|
|||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps,PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps,PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||||
/**
|
/**
|
||||||
* Create tables and keys required by module:
|
* Create tables and keys required by module:
|
||||||
* - Files module.sql with create table instructions
|
* - Files table.sql or table-module.sql with create table instructions
|
||||||
* - Then modules.key.sql with create keys instructions
|
* - Then table.key.sql or table-module.key.sql with create keys instructions
|
||||||
* - Then data_xxx.sql (usualy provided by external modules only)
|
* - Then data_xxx.sql (usualy provided by external modules only)
|
||||||
* - Then update_xxx.sql (usualy provided by external modules only)
|
* - Then update_xxx.sql (usualy provided by external modules only)
|
||||||
* Files must be stored in directory defined by reldir (Example: '/install/mysql/tables' or '/module/sql/')
|
* Files must be stored in subdirectory 'tables' or 'data' into directory $reldir (Example: '/install/mysql/' or '/module/sql/')
|
||||||
* This function may also be called by :
|
* This function may also be called by :
|
||||||
* - _load_tables('/install/mysql/tables/', 'modulename') into the this->init() of core module descriptors.
|
* - _load_tables('/install/mysql/', 'modulename') into the this->init() of core module descriptors.
|
||||||
* - _load_tables('/mymodule/sql/') into the this->init() of external module descriptors.
|
* - _load_tables('/mymodule/sql/') into the this->init() of external module descriptors.
|
||||||
*
|
*
|
||||||
* @param string $reldir Relative directory where to scan files. Example: '/install/mysql/tables' or '/module/sql/'
|
* @param string $reldir Relative directory where to scan files. Example: '/install/mysql/' or '/module/sql/'
|
||||||
* @param string $onlywithsuffix Only with the defined suffix
|
* @param string $onlywithsuffix Only with the defined suffix
|
||||||
* @return int <=0 if KO, >0 if OK
|
* @return int <=0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
@ -1084,112 +1084,147 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it
|
|||||||
$ok = 1;
|
$ok = 1;
|
||||||
foreach ($conf->file->dol_document_root as $dirroot) {
|
foreach ($conf->file->dol_document_root as $dirroot) {
|
||||||
if ($ok) {
|
if ($ok) {
|
||||||
$dir = $dirroot.$reldir;
|
$dirsql = $dirroot.$reldir;
|
||||||
$ok = 0;
|
$ok = 0;
|
||||||
|
|
||||||
$handle = @opendir($dir); // Dir may not exists
|
// We will loop on xxx/, xxx/tables/, xxx/data/
|
||||||
if (is_resource($handle)) {
|
$listofsubdir = array('', 'tables/', 'data/');
|
||||||
$dirfound++;
|
if ($this->db->type == 'pgsql') {
|
||||||
|
$listofsubdir[] = '../pgsql/functions/';
|
||||||
|
}
|
||||||
|
|
||||||
// Run llx_mytable.sql files, then llx_mytable_*.sql
|
foreach ($listofsubdir as $subdir) {
|
||||||
$files = array();
|
$dir = $dirsql.$subdir;
|
||||||
while (($file = readdir($handle)) !== false) {
|
|
||||||
$files[] = $file;
|
$handle = @opendir($dir); // Dir may not exists
|
||||||
}
|
if (is_resource($handle)) {
|
||||||
sort($files);
|
$dirfound++;
|
||||||
foreach ($files as $file) {
|
|
||||||
if ($onlywithsuffix) {
|
// Run llx_mytable.sql files, then llx_mytable_*.sql
|
||||||
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
$files = array();
|
||||||
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
while (($file = readdir($handle)) !== false) {
|
||||||
continue;
|
$files[] = $file;
|
||||||
} else {
|
}
|
||||||
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
sort($files);
|
||||||
|
foreach ($files as $file) {
|
||||||
|
if ($onlywithsuffix) {
|
||||||
|
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
||||||
|
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (preg_match('/\.sql$/i', $file) && !preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 4) == 'llx_') {
|
||||||
|
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
||||||
|
if ($result <= 0) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (preg_match('/\.sql$/i', $file) && !preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 4) == 'llx_' && substr($file, 0, 4) != 'data') {
|
|
||||||
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
rewinddir($handle);
|
||||||
if ($result <= 0) {
|
|
||||||
$error++;
|
// Run llx_mytable.key.sql files (Must be done after llx_mytable.sql) then then llx_mytable_*.key.sql
|
||||||
|
$files = array();
|
||||||
|
while (($file = readdir($handle)) !== false) {
|
||||||
|
$files[] = $file;
|
||||||
|
}
|
||||||
|
sort($files);
|
||||||
|
foreach ($files as $file) {
|
||||||
|
if ($onlywithsuffix) {
|
||||||
|
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
||||||
|
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 4) == 'llx_') {
|
||||||
|
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
||||||
|
if ($result <= 0) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
rewinddir($handle);
|
rewinddir($handle);
|
||||||
|
|
||||||
// Run llx_mytable.key.sql files (Must be done after llx_mytable.sql) then then llx_mytable_*.key.sql
|
// Run functions-xxx.sql files (Must be done after llx_mytable.key.sql)
|
||||||
$files = array();
|
$files = array();
|
||||||
while (($file = readdir($handle)) !== false) {
|
while (($file = readdir($handle)) !== false) {
|
||||||
$files[] = $file;
|
$files[] = $file;
|
||||||
}
|
}
|
||||||
sort($files);
|
sort($files);
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
if ($onlywithsuffix) {
|
if ($onlywithsuffix) {
|
||||||
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
||||||
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (preg_match('/\.sql$/i', $file) && !preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 9) == 'functions') {
|
||||||
|
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
||||||
|
if ($result <= 0) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 4) == 'llx_' && substr($file, 0, 4) != 'data') {
|
|
||||||
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
rewinddir($handle);
|
||||||
if ($result <= 0) {
|
|
||||||
$error++;
|
// Run data_xxx.sql files (Must be done after llx_mytable.key.sql)
|
||||||
|
$files = array();
|
||||||
|
while (($file = readdir($handle)) !== false) {
|
||||||
|
$files[] = $file;
|
||||||
|
}
|
||||||
|
sort($files);
|
||||||
|
foreach ($files as $file) {
|
||||||
|
if ($onlywithsuffix) {
|
||||||
|
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
||||||
|
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (preg_match('/\.sql$/i', $file) && !preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 4) == 'data') {
|
||||||
|
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
||||||
|
if ($result <= 0) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
rewinddir($handle);
|
rewinddir($handle);
|
||||||
|
|
||||||
// Run data_xxx.sql files (Must be done after llx_mytable.key.sql)
|
// Run update_xxx.sql files
|
||||||
$files = array();
|
$files = array();
|
||||||
while (($file = readdir($handle)) !== false) {
|
while (($file = readdir($handle)) !== false) {
|
||||||
$files[] = $file;
|
$files[] = $file;
|
||||||
}
|
}
|
||||||
sort($files);
|
sort($files);
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
if ($onlywithsuffix) {
|
if ($onlywithsuffix) {
|
||||||
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
||||||
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (preg_match('/\.sql$/i', $file) && !preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 6) == 'update') {
|
||||||
|
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
||||||
|
if ($result <= 0) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (preg_match('/\.sql$/i', $file) && !preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 4) == 'data') {
|
|
||||||
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
|
||||||
if ($result <= 0) {
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
rewinddir($handle);
|
closedir($handle);
|
||||||
|
|
||||||
// Run update_xxx.sql files
|
|
||||||
$files = array();
|
|
||||||
while (($file = readdir($handle)) !== false) {
|
|
||||||
$files[] = $file;
|
|
||||||
}
|
}
|
||||||
sort($files);
|
|
||||||
foreach ($files as $file) {
|
|
||||||
if ($onlywithsuffix) {
|
|
||||||
if (!preg_match('/\-'.preg_quote($onlywithsuffix, '/').'\./i', $file)) {
|
|
||||||
//print 'File '.$file.' does not match suffix '.$onlywithsuffix.' so it is discarded<br>'."\n";
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
//print 'File '.$file.' match suffix '.$onlywithsuffix.' so we keep it<br>'."\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (preg_match('/\.sql$/i', $file) && !preg_match('/\.key\.sql$/i', $file) && substr($file, 0, 6) == 'update') {
|
|
||||||
$result = run_sql($dir.$file, empty($conf->global->MAIN_DISPLAY_SQL_INSTALL_LOG) ? 1 : 0, '', 1);
|
|
||||||
if ($result <= 0) {
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
closedir($handle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($error == 0) {
|
if ($error == 0) {
|
||||||
|
|||||||
@ -742,6 +742,9 @@ class pdf_einstein extends ModelePDFCommandes
|
|||||||
$pdf->SetXY($posxval, $posy);
|
$pdf->SetXY($posxval, $posy);
|
||||||
$lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label);
|
$lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label);
|
||||||
$lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement);
|
$lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement);
|
||||||
|
if ($object->deposit_percent > 0) {
|
||||||
|
$lib_condition_paiement = str_replace('__DEPOSIT_PERCENT__', $object->deposit_percent, $lib_condition_paiement);
|
||||||
|
}
|
||||||
$pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L');
|
$pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L');
|
||||||
|
|
||||||
$posy = $pdf->GetY() + 3;
|
$posy = $pdf->GetY() + 3;
|
||||||
|
|||||||
@ -960,6 +960,9 @@ class pdf_eratosthene extends ModelePDFCommandes
|
|||||||
$pdf->SetXY($posxval, $posy);
|
$pdf->SetXY($posxval, $posy);
|
||||||
$lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label);
|
$lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label);
|
||||||
$lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement);
|
$lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement);
|
||||||
|
if ($object->deposit_percent > 0) {
|
||||||
|
$lib_condition_paiement = str_replace('__DEPOSIT_PERCENT__', $object->deposit_percent, $lib_condition_paiement);
|
||||||
|
}
|
||||||
$pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L');
|
$pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L');
|
||||||
|
|
||||||
$posy = $pdf->GetY() + 3;
|
$posy = $pdf->GetY() + 3;
|
||||||
|
|||||||
@ -240,7 +240,7 @@ class modAsset extends DolibarrModules
|
|||||||
*/
|
*/
|
||||||
public function init($options = '')
|
public function init($options = '')
|
||||||
{
|
{
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'asset');
|
$result = $this->_load_tables('/install/mysql/', 'asset');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -159,7 +159,7 @@ class modDeplacement extends DolibarrModules
|
|||||||
*/
|
*/
|
||||||
public function init($options = '')
|
public function init($options = '')
|
||||||
{
|
{
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'deplacement');
|
$result = $this->_load_tables('/install/mysql/', 'deplacement');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -155,7 +155,7 @@ class modDon extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'deplacement');
|
$result = $this->_load_tables('/install/mysql/', 'don');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -280,7 +280,7 @@ class modHRM extends DolibarrModules
|
|||||||
// Permissions
|
// Permissions
|
||||||
$this->remove($options);
|
$this->remove($options);
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'hrm');
|
$result = $this->_load_tables('/install/mysql/', 'hrm');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -138,7 +138,7 @@ class modIntracommreport extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'intracommreport');
|
$result = $this->_load_tables('/install/mysql/', 'intracommreport');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -442,7 +442,7 @@ class modKnowledgeManagement extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'knowledgemanagement');
|
$result = $this->_load_tables('/install/mysql/', 'knowledgemanagement');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -160,7 +160,7 @@ class modLoan extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'loan');
|
$result = $this->_load_tables('/install/mysql/', 'loan');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -159,7 +159,7 @@ class modMailing extends DolibarrModules
|
|||||||
*/
|
*/
|
||||||
public function init($options = '')
|
public function init($options = '')
|
||||||
{
|
{
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'mailing');
|
$result = $this->_load_tables('/install/mysql/', 'mailing');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -184,7 +184,7 @@ class modOpenSurvey extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'opensurvey');
|
$result = $this->_load_tables('/install/mysql/', 'opensurvey');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -410,7 +410,7 @@ class modPartnership extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'partnership');
|
$result = $this->_load_tables('/install/mysql/', 'partnership');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -152,7 +152,7 @@ class modProjet extends DolibarrModules
|
|||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->rights[$r][0] = 41; // id de la permission
|
$this->rights[$r][0] = 41; // id de la permission
|
||||||
$this->rights[$r][1] = "Read projects and tasks (shared projects or projects I am contact for). Can also enter time consumed on assigned tasks (timesheet)"; // libelle de la permission
|
$this->rights[$r][1] = "Read projects and tasks (shared projects or projects I am contact for)"; // libelle de la permission
|
||||||
$this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
|
$this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
|
||||||
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
||||||
$this->rights[$r][4] = 'lire';
|
$this->rights[$r][4] = 'lire';
|
||||||
@ -188,7 +188,7 @@ class modProjet extends DolibarrModules
|
|||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->rights[$r][0] = 142; // id de la permission
|
$this->rights[$r][0] = 142; // id de la permission
|
||||||
$this->rights[$r][1] = "Create/modify all projects and tasks (also private projects I am not contact for). Can also enter time consumed on assigned tasks (timesheet)"; // libelle de la permission
|
$this->rights[$r][1] = "Create/modify all projects and tasks (also private projects I am not contact for)"; // libelle de la permission
|
||||||
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
|
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
|
||||||
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
||||||
$this->rights[$r][4] = 'all';
|
$this->rights[$r][4] = 'all';
|
||||||
@ -202,6 +202,12 @@ class modProjet extends DolibarrModules
|
|||||||
$this->rights[$r][4] = 'all';
|
$this->rights[$r][4] = 'all';
|
||||||
$this->rights[$r][5] = 'supprimer';
|
$this->rights[$r][5] = 'supprimer';
|
||||||
|
|
||||||
|
$r++;
|
||||||
|
$this->rights[$r][0] = 145; // id de la permission
|
||||||
|
$this->rights[$r][1] = "Can enter time consumed on assigned tasks (timesheet)"; // libelle de la permission
|
||||||
|
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
|
||||||
|
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
||||||
|
$this->rights[$r][4] = 'time';
|
||||||
|
|
||||||
// Menus
|
// Menus
|
||||||
//-------
|
//-------
|
||||||
|
|||||||
@ -403,7 +403,7 @@ class modRecruitment extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'recruitment');
|
$result = $this->_load_tables('/install/mysql/', 'recruitment');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -434,7 +434,7 @@ class modStock extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'stock');
|
$result = $this->_load_tables('/install/mysql/', 'stock');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -331,7 +331,7 @@ class modTicket extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'ticket');
|
$result = $this->_load_tables('/install/mysql/', 'ticket');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -164,7 +164,7 @@ class modWebsite extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'website');
|
$result = $this->_load_tables('/install/mysql/', 'website');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -390,7 +390,7 @@ class modWorkstation extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'workstation');
|
$result = $this->_load_tables('/install/mysql/', 'workstation');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -281,7 +281,7 @@ class modZapier extends DolibarrModules
|
|||||||
*/
|
*/
|
||||||
public function init($options = '')
|
public function init($options = '')
|
||||||
{
|
{
|
||||||
$result = $this->_load_tables('/install/mysql/tables/', 'zapier');
|
$result = $this->_load_tables('/install/mysql/', 'zapier');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -964,6 +964,9 @@ class pdf_azur extends ModelePDFPropales
|
|||||||
$pdf->SetXY($posxval, $posy);
|
$pdf->SetXY($posxval, $posy);
|
||||||
$lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label);
|
$lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label);
|
||||||
$lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement);
|
$lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement);
|
||||||
|
if ($object->deposit_percent > 0) {
|
||||||
|
$lib_condition_paiement = str_replace('__DEPOSIT_PERCENT__', $object->deposit_percent, $lib_condition_paiement);
|
||||||
|
}
|
||||||
$pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L');
|
$pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L');
|
||||||
|
|
||||||
$posy = $pdf->GetY() + 3;
|
$posy = $pdf->GetY() + 3;
|
||||||
|
|||||||
@ -1083,6 +1083,9 @@ class pdf_cyan extends ModelePDFPropales
|
|||||||
$pdf->SetXY($posxval, $posy);
|
$pdf->SetXY($posxval, $posy);
|
||||||
$lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label);
|
$lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label);
|
||||||
$lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement);
|
$lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement);
|
||||||
|
if ($object->deposit_percent > 0) {
|
||||||
|
$lib_condition_paiement = str_replace('__DEPOSIT_PERCENT__', $object->deposit_percent, $lib_condition_paiement);
|
||||||
|
}
|
||||||
$pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L');
|
$pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L');
|
||||||
|
|
||||||
$posy = $pdf->GetY() + 3;
|
$posy = $pdf->GetY() + 3;
|
||||||
|
|||||||
@ -211,6 +211,59 @@ if ($massaction == 'presend') {
|
|||||||
print dol_get_fiche_end();
|
print dol_get_fiche_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($massaction == 'edit_extrafields') {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
|
$elementtype = $objecttmp->element;
|
||||||
|
/** @var CommonObject $objecttmp */
|
||||||
|
$extrafields = new ExtraFields($db);
|
||||||
|
$keysuffix = '';
|
||||||
|
$extrafields->fetch_name_optionals_label($elementtype);
|
||||||
|
$extrafields_list = $extrafields->attributes[$elementtype]['label'];
|
||||||
|
|
||||||
|
$formquestion = array();
|
||||||
|
if (!empty($extrafields_list)) {
|
||||||
|
$myParamExtra = $object->showOptionals($extrafields, 'create');
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'other',
|
||||||
|
'value' => $form->selectarray('extrafield-key-to-update', $extrafields_list, GETPOST('extrafield-key-to-update'), 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
$outputShowOutputFields = '<div class="extrafields-inputs">';
|
||||||
|
|
||||||
|
foreach ($extrafields_list as $extraKey => $extraLabel) {
|
||||||
|
$outputShowOutputFields.= '<div class="mass-action-extrafield" data-extrafield="'.$extraKey.'" style="display:none;" >';
|
||||||
|
$outputShowOutputFields.= '<br><span>'. $langs->trans('NewValue').'</span>';
|
||||||
|
$outputShowOutputFields.= $extrafields->showInputField($extraKey, '', '', $keysuffix, '', 0, $objecttmp->id, $objecttmp->table_element);
|
||||||
|
$outputShowOutputFields.= '</div>';
|
||||||
|
}
|
||||||
|
$outputShowOutputFields.= '<script>
|
||||||
|
jQuery(function($) {
|
||||||
|
$("#extrafield-key-to-update").on(\'change\',function(){
|
||||||
|
let selectedExtrtafield = $(this).val();
|
||||||
|
if($(".extrafields-inputs .product_extras_"+selectedExtrtafield) != undefined){
|
||||||
|
$(".mass-action-extrafield").hide();
|
||||||
|
$(".mass-action-extrafield[data-extrafield=" + selectedExtrtafield + "]").show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>';
|
||||||
|
$outputShowOutputFields.= '</div>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$formquestion[] = array(
|
||||||
|
'type' => 'other',
|
||||||
|
'value' => $outputShowOutputFields
|
||||||
|
);
|
||||||
|
|
||||||
|
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmEditExtrafield"), $langs->trans("ConfirmEditExtrafieldQuestion", count($toselect)), "confirm_edit_value_extrafields", $formquestion, 1, 0, 200, 500, 1);
|
||||||
|
} else {
|
||||||
|
setEventMessage($langs->trans("noExtrafields"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($massaction == 'preenable') {
|
if ($massaction == 'preenable') {
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmMassEnabling"), $langs->trans("ConfirmMassEnablingQuestion", count($toselect)), "enable", null, 'yes', 0, 200, 500, 1);
|
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmMassEnabling"), $langs->trans("ConfirmMassEnablingQuestion", count($toselect)), "enable", null, 'yes', 0, 200, 500, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -115,7 +115,7 @@ if (empty($reshook)) {
|
|||||||
$search_label = '';
|
$search_label = '';
|
||||||
$search_status = -1;
|
$search_status = -1;
|
||||||
$search_lastresult = '';
|
$search_lastresult = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|
|||||||
@ -684,10 +684,10 @@ class TraceableDB extends DoliDB
|
|||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* Renvoie la ligne courante (comme un objet) pour le curseur resultset
|
* Returns the current line (as an object) for the resultset cursor
|
||||||
*
|
*
|
||||||
* @param resource $resultset Curseur de la requete voulue
|
* @param resource|Connection $resultset Handler of the desired SQL request
|
||||||
* @return Object Object result line or false if KO or end of cursor
|
* @return Object Object result line or false if KO or end of cursor
|
||||||
*/
|
*/
|
||||||
public function fetch_object($resultset)
|
public function fetch_object($resultset)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -105,7 +105,7 @@ class ConferenceOrBooth extends ActionComm
|
|||||||
public $fields = array(
|
public $fields = array(
|
||||||
'id' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
'id' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
||||||
'ref' => array('type'=>'integer', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
'ref' => array('type'=>'integer', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
||||||
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>0, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'help'=>"Help text", 'showoncombobox'=>'1',),
|
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>0, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax125', 'help'=>"Help text", 'showoncombobox'=>'1',),
|
||||||
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"LinkToThirparty", 'picto'=>'company', 'css'=>'tdoverflowmax150 maxwidth500'),
|
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"LinkToThirparty", 'picto'=>'company', 'css'=>'tdoverflowmax150 maxwidth500'),
|
||||||
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:t.usage_organize_event=1', 'label'=>'Project', 'enabled'=>'1', 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500'),
|
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:t.usage_organize_event=1', 'label'=>'Project', 'enabled'=>'1', 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500'),
|
||||||
'note' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>1),
|
'note' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>1),
|
||||||
|
|||||||
@ -205,7 +205,7 @@ if (empty($reshook)) {
|
|||||||
$search[$key.'_dtend'] = '';
|
$search[$key.'_dtend'] = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
@ -705,15 +705,16 @@ print '<table class="tagtable nobottomiftotal liste'.($moreforfilter ? " listwit
|
|||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
$cssforfield = (empty($val['css']) ? '' : $val['css']);
|
|
||||||
$searchkey = (empty($search[$key]) ? '' : $search[$key]);
|
$searchkey = (empty($search[$key]) ? '' : $search[$key]);
|
||||||
|
|
||||||
|
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
||||||
if ($key == 'status') {
|
if ($key == 'status') {
|
||||||
$cssforfield .= ($cssforfield ? ' ' : '').'center';
|
$cssforfield .= ($cssforfield ? ' ' : '').'center';
|
||||||
} elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) {
|
} elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) {
|
||||||
$cssforfield .= ($cssforfield ? ' ' : '').'center';
|
$cssforfield .= ($cssforfield ? ' ' : '').'center';
|
||||||
} elseif (in_array($val['type'], array('timestamp'))) {
|
} elseif (in_array($val['type'], array('timestamp'))) {
|
||||||
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
||||||
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'ref')) && $val['label'] != 'TechnicalID') {
|
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) {
|
||||||
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
||||||
|
|||||||
@ -206,7 +206,7 @@ if (empty($reshook)) {
|
|||||||
$search[$key.'_dtend'] = '';
|
$search[$key.'_dtend'] = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|
|||||||
@ -196,7 +196,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_datereceipt_start = '';
|
$search_datereceipt_start = '';
|
||||||
$search_datereceipt_end = '';
|
$search_datereceipt_end = '';
|
||||||
$search_status = '';
|
$search_status = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
$search_categ_cus = 0;
|
$search_categ_cus = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -224,7 +224,7 @@ if (empty($reshook)) {
|
|||||||
$search_date_endendyear = '';
|
$search_date_endendyear = '';
|
||||||
$search_date_end = '';
|
$search_date_end = '';
|
||||||
$search_date_endend = '';
|
$search_date_endend = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|
|||||||
@ -171,7 +171,7 @@ if (empty($reshook)) {
|
|||||||
$search_contrat_ref = "";
|
$search_contrat_ref = "";
|
||||||
$search_desc = "";
|
$search_desc = "";
|
||||||
$search_status = "";
|
$search_status = "";
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ if (!defined('DOL_APPLICATION_TITLE')) {
|
|||||||
define('DOL_APPLICATION_TITLE', 'Dolibarr');
|
define('DOL_APPLICATION_TITLE', 'Dolibarr');
|
||||||
}
|
}
|
||||||
if (!defined('DOL_VERSION')) {
|
if (!defined('DOL_VERSION')) {
|
||||||
define('DOL_VERSION', '16.0.0-alpha'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c
|
define('DOL_VERSION', '16.0.0-beta'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defined('EURO')) {
|
if (!defined('EURO')) {
|
||||||
@ -115,6 +115,13 @@ if (!$result && !empty($_SERVER["GATEWAY_INTERFACE"])) { // If install not do
|
|||||||
}
|
}
|
||||||
|
|
||||||
header("Location: ".$path."install/index.php");
|
header("Location: ".$path."install/index.php");
|
||||||
|
|
||||||
|
/*
|
||||||
|
print '<br><center>';
|
||||||
|
print 'The conf/conf.php file was not found or is not readable by the web server. If this is your first access, <a href="'.$path.'install/index.php">click here to start the Dolibarr installation process</a> to create it...';
|
||||||
|
print '</center><br>';
|
||||||
|
*/
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -266,7 +266,7 @@ if ($object->id > 0) {
|
|||||||
print '</tr></table>';
|
print '</tr></table>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
if ($action == 'editconditions') {
|
if ($action == 'editconditions') {
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_supplier_id, 'cond_reglement_supplier_id', -1, 1);
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_supplier_id, 'cond_reglement_supplier_id', 1);
|
||||||
} else {
|
} else {
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_supplier_id, 'none');
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_supplier_id, 'none');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -291,7 +291,7 @@ if (empty($reshook)) {
|
|||||||
$search_date_approve_end = '';
|
$search_date_approve_end = '';
|
||||||
$billed = '';
|
$billed = '';
|
||||||
$search_billed = '';
|
$search_billed = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|
|||||||
@ -290,7 +290,7 @@ if (empty($reshook)) {
|
|||||||
$search_datelimit_endyear = '';
|
$search_datelimit_endyear = '';
|
||||||
$search_datelimit_start = '';
|
$search_datelimit_start = '';
|
||||||
$search_datelimit_end = '';
|
$search_datelimit_end = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
$filter = '';
|
$filter = '';
|
||||||
$option = '';
|
$option = '';
|
||||||
@ -1474,7 +1474,7 @@ if ($resql) {
|
|||||||
// Payment condition
|
// Payment condition
|
||||||
if (!empty($arrayfields['f.fk_cond_reglement']['checked'])) {
|
if (!empty($arrayfields['f.fk_cond_reglement']['checked'])) {
|
||||||
print '<td class="tdoverflowmax125">';
|
print '<td class="tdoverflowmax125">';
|
||||||
$form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none', '', -1);
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
|
|||||||
@ -108,7 +108,7 @@ if (empty($reshook)) {
|
|||||||
$search_field2 = '';
|
$search_field2 = '';
|
||||||
$search_date_creation = '';
|
$search_date_creation = '';
|
||||||
$search_date_update = '';
|
$search_date_update = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,7 +111,7 @@ if (empty($reshook)) {
|
|||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
|
||||||
$search_name = '';
|
$search_name = '';
|
||||||
$search_supervisor = '';
|
$search_supervisor = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -200,7 +200,7 @@ if (empty($reshook)) {
|
|||||||
$search_valideur = "";
|
$search_valideur = "";
|
||||||
$search_status = "";
|
$search_status = "";
|
||||||
$search_type = '';
|
$search_type = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|
|||||||
@ -95,7 +95,7 @@ if (empty($reshook)) {
|
|||||||
$search_employee = '';
|
$search_employee = '';
|
||||||
$search_type = '';
|
$search_type = '';
|
||||||
$search_description = '';
|
$search_description = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -133,7 +133,7 @@ if (empty($reshook)) {
|
|||||||
$search_type = '';
|
$search_type = '';
|
||||||
$search_prev_solde = '';
|
$search_prev_solde = '';
|
||||||
$search_new_solde = '';
|
$search_new_solde = '';
|
||||||
$toselect = '';
|
$toselect = array();
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -91,6 +91,8 @@ require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$textobject = $langs->transnoentitiesnoconv("Evaluation");
|
||||||
|
|
||||||
$help_url = '';
|
$help_url = '';
|
||||||
$page_name = "HrmSetup";
|
$page_name = "HrmSetup";
|
||||||
|
|
||||||
|
|||||||
@ -91,6 +91,8 @@ require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$textobject = $langs->transnoentitiesnoconv("Job");
|
||||||
|
|
||||||
$help_url = '';
|
$help_url = '';
|
||||||
$page_name = "HrmSetup";
|
$page_name = "HrmSetup";
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user