Merge pull request #2 from IAS-SYSTEMS-CSC/develop

develop > dolibarr-fixes
This commit is contained in:
Hytham Soliman
2018-07-11 10:03:18 +03:00
committed by GitHub
1087 changed files with 10141 additions and 8439 deletions

170
ChangeLog
View File

@@ -2,7 +2,173 @@
English Dolibarr ChangeLog
--------------------------------------------------------------
***** ChangeLog for 8.0.0 compared to 7.0.3 *****
***** ChangeLog for 8.0.0 compared to 7.0.0 *****
For Users:
NEW: Experimental module: Ticket
NEW: Experimental module: WebDAV
NEW: Accept anonymous events (no user assigned)
NEW: Accountancy - Add import on general ledger
NEW: Accountancy - Show journal name on journal page and hide button draft export (Add an option in admin)
NEW: Can create event from record card of a company and member
NEW: Add a button to create Stripe customer from the Payment mode tab
NEW: Add accounting account number on product tooltip
NEW: add any predefined mail content
NEW: Add arrows to navigate into containers in website module
NEW: Add a tab to specify accountant/auditor of the company
NEW: Add Date delivery and Availability on Propals List
NEW: Add date in goods reception supplier order table
NEW: Add delivery_time_days of suppliers in export profile
NEW: Add Documents'tab to expedition module
NEW: Use dol_print_phone in thirdparty list page to format phone
NEW: Add entry for the GDPR contact
NEW: Add extrafield type "html"
NEW: Add file number in accountant card and update export filename
NEW: Add files management on products lot
NEW: add filter on project task list
NEW: Add hidden option COMPANY_AQUARIUM_CLEAN_REGEX to clean generated
NEW: add internal stripe payment page for invoice
NEW: Add key __USER_REMOTE_IP__ into available substitution variables
NEW: Add link between credit note invoice and origin
NEW: Add linked file tab to vat
NEW: add link to stripe's info in bank menu
NEW: Add margin filters
NEW: Add mass action enable/disable on cron job list
NEW: Add mass action on project's list to close projects
NEW: Add method to register distributed payments on invoices
NEW: Add multicurrency support for product buy price for supplier propales, orders and invoices
NEW: Add name of day in the timesheet input page per day.
NEW: add new parameters for tcpf encryption
NEW: add optional esign field in pdf propal
NEW: Add option BANK_ACCOUNT_ALLOW_EXTERNAL_DOWNLOAD
NEW: Add option CONTRACT_SYNC_PLANNED_DATE_OF_SERVICES
NEW: Add param $dolibarr_main_restrict_ip in config file to limit ips
NEW: add pdf function to check if pdf file is protected/encrypted
NEW: Add pdf template for stock/warehouse module
NEW: Add phone format for a lot of countries
NEW: Add product and product categories filters on customer margins
NEW: Add product categories filter on product margin
NEW: Add romanian chart of accounts
NEW: Add stats in salaries module
NEW: add stripe transaction
NEW: Add tab contact on supplier proposals
NEW: Add total of time spent in timespent page at top of page too.
NEW: Add trigger CONTRACT_MODIFY
NEW: Add triggers on ECM object and add fill src_object_type/id fields
NEW: Add type of website container/page into dictionary
NEW: advance target filtering can be used everywhere with tpl and fk_element
NEW: Allow negative quantity for dispatch (supplier order)
NEW: bank reconcile: checkbox to select all bank operations
NEW: Better performance with openldap
NEW: Can add filter actiontype and notactiontype on event ical export
NEW: Can add product in supplier order/invoice even w/o predefined price
NEW: cancel orders on massaction
NEW: Can crop image files attached in "document" tabs of a member
NEW: Can delete dir content in media and ECM module recursively
NEW: Can dispatch if more than ordered (if hidden option set)
NEW: Can edit the text color for title line of tables
NEW: Can enter time spent from the list of time spent of project
NEW: Can export leave requests
NEW: Can filter on account range in general ledger grouped by account
NEW: Can filter on country and taxid into the binding page
NEW: Can filter on progression in timesheet
NEW: Can fix the bank account of a payment if payment not conciliated
NEW: Can force usage of shared link for photo of products
NEW: Can get template of email from its label
NEW: Can see Unit Purchase Value of product in stock movement
NEW: Can select from the user list into send form email (For field to and CC)
NEW: Can select sample to use when creating a new page
NEW: can send mail from project card
NEW: Can set position of images in module tickets
NEW: Can set the reply-to into email sent
NEW: Can set the start/end date of service line in invoice templates
NEW: Can share any file from the "Document" tab.
NEW: Can sort on priority in task scheduler list
NEW: Can sort order of files in attach tab for leave and expensereport
NEW: Can use setValueFrom without user modification field
NEW: Cat set the encryption algorithm for extrafields of type password
NEW: check idprof1 for country pt
NEW: default add action: new param $backurlforcard to redirect to card
NEW: default warehouse field for products + prefill warehouses when dispatching supplier orders
NEW: Display price HT on all commercial area boards
NEW: display total on contract service list
NEW: display weight volume in proposal
NEW: Edit of extrafields position page on the edit form
NEW: Experimental DAV module provides a public and private directory
NEW: export filter models can be share or not by user
NEW: Externalsite module can accept iframe content.
NEW: Filter export model is now by user
NEW: Finish implementation of option PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES
NEW: generalize use of button to create new element from list
NEW: hidden conf AGENDA_NB_WEEKS_IN_VIEW_PER_USER to set nb weeks to show into per user view
NEW: hidden conf to assign category to thirparty that are neither customer nor prospect or supplier
NEW: hidden conf to set nb weeks to show into user view
NEW: hidden option MAIN_DISABLE_FREE_LINES
NEW: improve way of adding users/sales representative to thirdparty
NEW: Introduce option THIRDPARTY_QUICKSEARCH_ON_FIELDS to personalize fields use to search on quick search.
NEW: Introduce permission "approve" for "leave request" like for "expense report"
NEW: Load product data optional fields to the line -> enables to use "line_options_{extrafield}"
NEW: Look and feel v8 - Show Picto "+" on all links "Add record"
NEW: Look and feel v8: Use a different picto for delete and unlink
NEW: mail templates for projects
NEW: Module variant supported on services
NEW: monthly VAT report show "Claimed for the period" + "Paid during this
NEW: Mutualize code for action="update_extras"
NEW: On invoice card, show accounting account linked
NEW: Online payment of invoice and subscription record the payment
NEW: OnSearchAndListGoOnCustomerOrSupplierCard conf
NEW: Optimize load of hooks classes (save 1-5Kb of memory)
NEW: Option MAIN_SHOW_REGION_IN_STATE renamed into MAIN_SHOW_REGION_IN_STATE_SELECT are more complete
NEW: Option to force all emails recipient
NEW: Hidden option to send to salaries into emails forms
NEW: order minimum amount
NEW: add price in burger menu on mouvement list
NEW: Report a list of leave requests for a month
NEW: Section of files generated by mass action not visible if empty
NEW: send mails from project card
NEW: Show also size in bytes in tooltip if visible unit is not bytes
NEW: Show keyboard shortcut of nav arrow into tooltip
NEW: Show last result code of cron jobs in error in red
NEW: Show region in company info & Global option to show state code MAIN_SHOW_STATE_CODE
NEW: Show total number of records by category
NEW: Show total of time consumed in week in time spent entry page
NEW: Stripe online payments reuse the same stripe customer account
NEW: Suggest link to pay online for customer orders
NEW: supplier credit notes is now supported like for customer credit notes
NEW: supplier order/order lines export: add supplier product ref
NEW: supplier relative discounts
NEW: Support alternative aliases of page name in website
NEW: syslog file autoclean
NEW: thirdparty categ filter on lists
NEW: Use a css style for weekend in time spent
NEW: Use common substitution rule for language to get translation in ODT
NEW: Variable __ONLINE_PAYMENT_URL__ available in email templates
For developers:
NEW: class reposition can also work on POST (not only GET)
NEW: add a hook in dol_print_phone
NEW: The field "visible" on extrafield can accept expression as condition
NEW: Upgrade of Stripe lib to 6.4.1
NEW: work on CommonObject 'array' field typeNew common object array
NEW: method Form::selectArrayFilter() + use in left menu search
NEW: [REST API] Add the possibility to remove a category from a thirdparty
NEW: doActions on categorycard
NEW: add "moreHtmlRef" hook
NEW: add hook for more permissions control
NEW: add hook moreHtmlStatus to complete to status on banners
NEW: Add hook printEmail
NEW: Add hook setContentSecurityPolicy
NEW: Add password_hash as a hash algorithm
NEW: Add dol_is_link function
NEW: Adds a contact to an invoice with REST API
NEW: Adds a payment for the list of invoices given as parameter
NEW: adds billing contacts ids to REST API returns
NEW: Add showempty parameter in country selection
NEW: add printUserListWhere hook
NEW: add "printUserPasswordField" hooks
NEW: Call to trigger on payment social contribution creation
NEW: Call to trigger on social contribution creation
NEW: hook getnomurltooltip is replaced with hook getNomUrl more powerfull
WARNING:
@@ -24,6 +190,8 @@ Following changes may create regressions for some external modules, but were nec
* Hook getnomurltooltip provide a duplicate feature compared to hook getNomUrl so all hooks getnomurltooltip
are now replaced with hook getNomUrl.
***** ChangeLog for 7.0.3 compared to 7.0.2 *****
FIX: 7.0 task contact card without withproject parameters
FIX: #8722

View File

@@ -37,11 +37,11 @@ $rowid=GETPOST('rowid','int');
$entity=GETPOST('entity','int');
$action=GETPOST('action','alpha');
$update=GETPOST('update','alpha');
$delete=GETPOST('delete'); // Do not use alpha here
$delete=GETPOST('delete','none'); // Do not use alpha here
$debug=GETPOST('debug','int');
$consts=GETPOST('const','array');
$constname=GETPOST('constname','alpha');
$constvalue=GETPOST('constvalue');
$constvalue=GETPOST('constvalue','none'); // We shoul dbe able to send everything here
$constnote=GETPOST('constnote','alpha');
@@ -248,7 +248,7 @@ if ($result)
while ($i < $num)
{
$obj = $db->fetch_object($result);
print "\n";

View File

@@ -34,7 +34,7 @@ if (!$user->admin) accessforbidden();
$id=GETPOST('rowid','int');
$action=GETPOST('action','alpha');
$mode = GETPOST('mode')?GETPOST('mode'):'createform'; // 'createform', 'filters', 'sortorder', 'focus'
$mode = GETPOST('mode','aZ09')?GETPOST('mode','aZ09'):'createform'; // 'createform', 'filters', 'sortorder', 'focus'
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
$sortfield = GETPOST("sortfield",'alpha');

View File

@@ -89,7 +89,7 @@ if ($action == 'update')
if ($result > 0)
{
$menu->titre=GETPOST('titre', 'alpha');
$menu->leftmenu=GETPOST('leftmenu', 'alpha');
$menu->leftmenu=GETPOST('leftmenu', 'aZ09');
$menu->url=GETPOST('url','alpha');
$menu->langs=GETPOST('langs','alpha');
$menu->position=GETPOST('position','int');

View File

@@ -157,7 +157,7 @@ $i=0;
foreach($_SESSION as $key => $val)
{
if ($i > 0) print ', ';
print $key.' => '.$val;
print $key.' => '.dol_escape_htmltag($val);
$i++;
}
print '</td></tr>'."\n";

View File

@@ -67,92 +67,92 @@ if ($action == 'updateMask') {
} elseif ($action == 'setvar') {
include_once DOL_DOCUMENT_ROOT . "/core/lib/files.lib.php";
$notification_email = GETPOST('TICKETS_NOTIFICATION_EMAIL_FROM', 'alpha');
$notification_email = GETPOST('TICKET_NOTIFICATION_EMAIL_FROM', 'alpha');
if (!empty($notification_email)) {
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_EMAIL_FROM', $notification_email, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_FROM', $notification_email, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_EMAIL_FROM', '', 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_FROM', '', 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
}
// altairis : differentiate notification email FROM and TO
$notification_email_to = GETPOST('TICKETS_NOTIFICATION_EMAIL_TO', 'alpha');
$notification_email_to = GETPOST('TICKET_NOTIFICATION_EMAIL_TO', 'alpha');
if (!empty($notification_email_to)) {
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_EMAIL_TO', $notification_email_to, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_TO', $notification_email_to, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_EMAIL_TO', '', 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_EMAIL_TO', '', 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
}
$mail_new_ticket = GETPOST('TICKETS_MESSAGE_MAIL_NEW', 'alpha');
$mail_new_ticket = GETPOST('TICKET_MESSAGE_MAIL_NEW', 'alpha');
if (!empty($mail_new_ticket)) {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_NEW', $mail_new_ticket, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_NEW', $mail_new_ticket, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_NEW', $langs->trans('TicketMessageMailNewText'), 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_NEW', $langs->trans('TicketMessageMailNewText'), 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
}
$mail_intro = GETPOST('TICKETS_MESSAGE_MAIL_INTRO', 'alpha');
$mail_intro = GETPOST('TICKET_MESSAGE_MAIL_INTRO', 'alpha');
if (!empty($mail_intro)) {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_INTRO', $mail_intro, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_INTRO', $mail_intro, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_INTRO', $langs->trans('TicketMessageMailIntroText'), 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_INTRO', $langs->trans('TicketMessageMailIntroText'), 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
}
$mail_signature = GETPOST('TICKETS_MESSAGE_MAIL_SIGNATURE', 'alpha');
$mail_signature = GETPOST('TICKET_MESSAGE_MAIL_SIGNATURE', 'alpha');
if (!empty($mail_signature)) {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_SIGNATURE', $mail_signature, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_SIGNATURE', $mail_signature, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_MESSAGE_MAIL_SIGNATURE', $langs->trans('TicketMessageMailSignatureText'), 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_SIGNATURE', $langs->trans('TicketMessageMailSignatureText'), 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
}
$url_interface = GETPOST('TICKETS_URL_PUBLIC_INTERFACE', 'alpha');
$url_interface = GETPOST('TICKET_URL_PUBLIC_INTERFACE', 'alpha');
if (!empty($mail_signature)) {
$res = dolibarr_set_const($db, 'TICKETS_URL_PUBLIC_INTERFACE', $url_interface, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_URL_PUBLIC_INTERFACE', $url_interface, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_URL_PUBLIC_INTERFACE', '', 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_URL_PUBLIC_INTERFACE', '', 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
}
$topic_interface = GETPOST('TICKETS_PUBLIC_INTERFACE_TOPIC', 'alpha');
$topic_interface = GETPOST('TICKET_PUBLIC_INTERFACE_TOPIC', 'alpha');
if (!empty($mail_signature)) {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_INTERFACE_TOPIC', $topic_interface, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_PUBLIC_INTERFACE_TOPIC', $topic_interface, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_INTERFACE_TOPIC', '', 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_PUBLIC_INTERFACE_TOPIC', '', 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
}
$text_home = GETPOST('TICKETS_PUBLIC_TEXT_HOME', 'alpha');
$text_home = GETPOST('TICKET_PUBLIC_TEXT_HOME', 'alpha');
if (!empty($mail_signature)) {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_TEXT_HOME', $text_home, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HOME', $text_home, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_TEXT_HOME', $langs->trans('TicketPublicInterfaceTextHome'), 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HOME', $langs->trans('TicketPublicInterfaceTextHome'), 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
}
$text_help = GETPOST('TICKETS_PUBLIC_TEXT_HELP_MESSAGE', 'alpha');
$text_help = GETPOST('TICKET_PUBLIC_TEXT_HELP_MESSAGE', 'alpha');
if (!empty($text_help)) {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_TEXT_HELP_MESSAGE', $text_help, 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HELP_MESSAGE', $text_help, 'chaine', 0, '', $conf->entity);
} else {
$res = dolibarr_set_const($db, 'TICKETS_PUBLIC_TEXT_HELP_MESSAGE', $langs->trans('TicketPublicPleaseBeAccuratelyDescribe'), 'chaine', 0, '', $conf->entity);
$res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HELP_MESSAGE', $langs->trans('TicketPublicPleaseBeAccuratelyDescribe'), 'chaine', 0, '', $conf->entity);
}
if (!$res > 0) {
$error++;
@@ -160,34 +160,34 @@ if ($action == 'updateMask') {
}
if ($action == 'setvarother') {
$param_enable_public_interface = GETPOST('TICKETS_ENABLE_PUBLIC_INTERFACE', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_ENABLE_PUBLIC_INTERFACE', $param_enable_public_interface, 'chaine', 0, '', $conf->entity);
$param_enable_public_interface = GETPOST('TICKET_ENABLE_PUBLIC_INTERFACE', 'alpha');
$res = dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', $param_enable_public_interface, 'chaine', 0, '', $conf->entity);
if (!$res > 0) {
$error++;
}
$param_must_exists = GETPOST('TICKETS_EMAIL_MUST_EXISTS', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_EMAIL_MUST_EXISTS', $param_must_exists, 'chaine', 0, '', $conf->entity);
$param_must_exists = GETPOST('TICKET_EMAIL_MUST_EXISTS', 'alpha');
$res = dolibarr_set_const($db, 'TICKET_EMAIL_MUST_EXISTS', $param_must_exists, 'chaine', 0, '', $conf->entity);
if (!$res > 0) {
$error++;
}
$param_disable_email = GETPOST('TICKETS_DISABLE_ALL_MAILS', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_DISABLE_ALL_MAILS', $param_disable_email, 'chaine', 0, '', $conf->entity);
$param_disable_email = GETPOST('TICKET_DISABLE_ALL_MAILS', 'alpha');
$res = dolibarr_set_const($db, 'TICKET_DISABLE_ALL_MAILS', $param_disable_email, 'chaine', 0, '', $conf->entity);
if (!$res > 0) {
$error++;
}
$param_activate_log_by_email = GETPOST('TICKETS_ACTIVATE_LOG_BY_EMAIL', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_ACTIVATE_LOG_BY_EMAIL', $param_activate_log_by_email, 'chaine', 0, '', $conf->entity);
$param_activate_log_by_email = GETPOST('TICKET_ACTIVATE_LOG_BY_EMAIL', 'alpha');
$res = dolibarr_set_const($db, 'TICKET_ACTIVATE_LOG_BY_EMAIL', $param_activate_log_by_email, 'chaine', 0, '', $conf->entity);
if (!$res > 0) {
$error++;
}
if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
{
$param_show_module_logo = GETPOST('TICKETS_SHOW_MODULE_LOGO', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_SHOW_MODULE_LOGO', $param_show_module_logo, 'chaine', 0, '', $conf->entity);
$param_show_module_logo = GETPOST('TICKET_SHOW_MODULE_LOGO', 'alpha');
$res = dolibarr_set_const($db, 'TICKET_SHOW_MODULE_LOGO', $param_show_module_logo, 'chaine', 0, '', $conf->entity);
if (!$res > 0) {
$error++;
}
@@ -195,21 +195,21 @@ if ($action == 'setvarother') {
if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
{
$param_notification_also_main_addressemail = GETPOST('TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS', $param_notification_also_main_addressemail, 'chaine', 0, '', $conf->entity);
$param_notification_also_main_addressemail = GETPOST('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', 'alpha');
$res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', $param_notification_also_main_addressemail, 'chaine', 0, '', $conf->entity);
if (!$res > 0) {
$error++;
}
}
$param_limit_view = GETPOST('TICKETS_LIMIT_VIEW_ASSIGNED_ONLY', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_LIMIT_VIEW_ASSIGNED_ONLY', $param_limit_view, 'chaine', 0, '', $conf->entity);
$param_limit_view = GETPOST('TICKET_LIMIT_VIEW_ASSIGNED_ONLY', 'alpha');
$res = dolibarr_set_const($db, 'TICKET_LIMIT_VIEW_ASSIGNED_ONLY', $param_limit_view, 'chaine', 0, '', $conf->entity);
if (!$res > 0) {
$error++;
}
$param_auto_assign = GETPOST('TICKETS_AUTO_ASSIGN_USER_CREATE', 'alpha');
$res = dolibarr_set_const($db, 'TICKETS_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity);
$param_auto_assign = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha');
$res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity);
if (!$res > 0) {
$error++;
}
@@ -358,10 +358,10 @@ print '<table class="noborder" width="100%">';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsActivatePublicInterface") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_ENABLE_PUBLIC_INTERFACE');
print ajax_constantonoff('TICKET_ENABLE_PUBLIC_INTERFACE');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_ENABLE_PUBLIC_INTERFACE", $arrval, $conf->global->TICKETS_ENABLE_PUBLIC_INTERFACE);
print $form->selectarray("TICKET_ENABLE_PUBLIC_INTERFACE", $arrval, $conf->global->TICKET_ENABLE_PUBLIC_INTERFACE);
}
print '</td>';
print '<td align="center">';
@@ -373,10 +373,10 @@ print '</tr>';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsEmailMustExist") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_EMAIL_MUST_EXISTS');
print ajax_constantonoff('TICKET_EMAIL_MUST_EXISTS');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_EMAIL_MUST_EXISTS", $arrval, $conf->global->TICKETS_EMAIL_MUST_EXISTS);
print $form->selectarray("TICKET_EMAIL_MUST_EXISTS", $arrval, $conf->global->TICKET_EMAIL_MUST_EXISTS);
}
print '</td>';
print '<td align="center">';
@@ -390,10 +390,10 @@ print '</tr>';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsShowModuleLogo") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_SHOW_MODULE_LOGO');
print ajax_constantonoff('TICKET_SHOW_MODULE_LOGO');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_SHOW_MODULE_LOGO", $arrval, $conf->global->TICKETS_SHOW_MODULE_LOGO);
print $form->selectarray("TICKET_SHOW_MODULE_LOGO", $arrval, $conf->global->TICKET_SHOW_MODULE_LOGO);
}
print '</td>';
print '<td align="center">';
@@ -406,10 +406,10 @@ print '</tr>';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsShowCompanyLogo") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_SHOW_COMPANY_LOGO');
print ajax_constantonoff('TICKET_SHOW_COMPANY_LOGO');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_SHOW_COMPANY_LOGO", $arrval, $conf->global->TICKETS_SHOW_COMPANY_LOGO);
print $form->selectarray("TICKET_SHOW_COMPANY_LOGO", $arrval, $conf->global->TICKET_SHOW_COMPANY_LOGO);
}
print '</td>';
print '<td align="center">';
@@ -426,10 +426,10 @@ print '<table class="noborder" width="100%">';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsDisableEmail") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_DISABLE_ALL_MAILS');
print ajax_constantonoff('TICKET_DISABLE_ALL_MAILS');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_DISABLE_ALL_MAILS", $arrval, $conf->global->TICKETS_DISABLE_ALL_MAILS);
print $form->selectarray("TICKET_DISABLE_ALL_MAILS", $arrval, $conf->global->TICKET_DISABLE_ALL_MAILS);
}
print '</td>';
print '<td align="center">';
@@ -441,10 +441,10 @@ print '</tr>';
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsLogEnableEmail") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_ACTIVATE_LOG_BY_EMAIL');
print ajax_constantonoff('TICKET_ACTIVATE_LOG_BY_EMAIL');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_ACTIVATE_LOG_BY_EMAIL", $arrval, $conf->global->TICKETS_ACTIVATE_LOG_BY_EMAIL);
print $form->selectarray("TICKET_ACTIVATE_LOG_BY_EMAIL", $arrval, $conf->global->TICKET_ACTIVATE_LOG_BY_EMAIL);
}
print '</td>';
print '<td align="center">';
@@ -458,10 +458,10 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsEmailAlsoSendToMainAddress") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS');
print ajax_constantonoff('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS", $arrval, $conf->global->TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS);
print $form->selectarray("TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS", $arrval, $conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS);
}
print '</td>';
print '<td align="center">';
@@ -474,10 +474,10 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsLimitViewAssignedOnly") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_LIMIT_VIEW_ASSIGNED_ONLY');
print ajax_constantonoff('TICKET_LIMIT_VIEW_ASSIGNED_ONLY');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_LIMIT_VIEW_ASSIGNED_ONLY", $arrval, $conf->global->TICKETS_LIMIT_VIEW_ASSIGNED_ONLY);
print $form->selectarray("TICKET_LIMIT_VIEW_ASSIGNED_ONLY", $arrval, $conf->global->TICKET_LIMIT_VIEW_ASSIGNED_ONLY);
}
print '</td>';
print '<td align="center">';
@@ -494,10 +494,10 @@ if (!$conf->use_javascript_ajax) {
print '<tr class="pair"><td width="70%">' . $langs->trans("TicketsAutoAssignTicket") . '</td>';
print '<td align="left">';
if ($conf->use_javascript_ajax) {
print ajax_constantonoff('TICKETS_AUTO_ASSIGN_USER_CREATE');
print ajax_constantonoff('TICKET_AUTO_ASSIGN_USER_CREATE');
} else {
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
print $form->selectarray("TICKETS_AUTO_ASSIGN_USER_CREATE", $arrval, $conf->global->TICKETS_AUTO_ASSIGN_USER_CREATE);
print $form->selectarray("TICKET_AUTO_ASSIGN_USER_CREATE", $arrval, $conf->global->TICKET_AUTO_ASSIGN_USER_CREATE);
}
print '</td>';
print '<td align="center">';
@@ -533,7 +533,7 @@ if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) {
// Email d'envoi des notifications
print '<tr class="pair"><td>' . $langs->trans("TicketEmailNotificationFrom") . '</td>';
print '<td align="left">';
print '<input type="text" name="TICKETS_NOTIFICATION_EMAIL_FROM" value="' . $conf->global->TICKETS_NOTIFICATION_EMAIL_FROM . '" size="20" ></td>';
print '<input type="text" name="TICKET_NOTIFICATION_EMAIL_FROM" value="' . $conf->global->TICKET_NOTIFICATION_EMAIL_FROM . '" size="20" ></td>';
print '<td align="center">';
print $form->textwithpicto('', $langs->trans("TicketEmailNotificationFromHelp"), 1, 'help');
print '</td>';
@@ -542,18 +542,18 @@ print '</tr>';
// Email de réception des notifications
print '<tr class="pair"><td>' . $langs->trans("TicketEmailNotificationTo") . '</td>';
print '<td align="left">';
print '<input type="text" name="TICKETS_NOTIFICATION_EMAIL_TO" value="' . (!empty($conf->global->TICKETS_NOTIFICATION_EMAIL_TO) ? $conf->global->TICKETS_NOTIFICATION_EMAIL_TO : $conf->global->TICKETS_NOTIFICATION_EMAIL_FROM) . '" size="20" ></td>';
print '<input type="text" name="TICKET_NOTIFICATION_EMAIL_TO" value="' . (!empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO) ? $conf->global->TICKET_NOTIFICATION_EMAIL_TO : $conf->global->TICKET_NOTIFICATION_EMAIL_FROM) . '" size="20" ></td>';
print '<td align="center">';
print $form->textwithpicto('', $langs->trans("TicketEmailNotificationToHelp"), 1, 'help');
print '</td>';
print '</tr>';
// Texte de création d'un ticket
$mail_mesg_new = $conf->global->TICKETS_MESSAGE_MAIL_NEW ? $conf->global->TICKETS_MESSAGE_MAIL_NEW : $langs->trans('TicketNewEmailBody');
$mail_mesg_new = $conf->global->TICKET_MESSAGE_MAIL_NEW ? $conf->global->TICKET_MESSAGE_MAIL_NEW : $langs->trans('TicketNewEmailBody');
print '<tr><td>' . $langs->trans("TicketNewEmailBodyLabel") . '</label>';
print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_MESSAGE_MAIL_NEW', $mail_mesg_new, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor = new DolEditor('TICKET_MESSAGE_MAIL_NEW', $mail_mesg_new, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor->Create();
print '</td>';
print '<td align="center">';
@@ -561,11 +561,11 @@ print $form->textwithpicto('', $langs->trans("TicketNewEmailBodyHelp"), 1, 'help
print '</td></tr>';
// Texte d'introduction
$mail_intro = $conf->global->TICKETS_MESSAGE_MAIL_INTRO ? $conf->global->TICKETS_MESSAGE_MAIL_INTRO : $langs->trans('TicketMessageMailIntroText');
$mail_intro = $conf->global->TICKET_MESSAGE_MAIL_INTRO ? $conf->global->TICKET_MESSAGE_MAIL_INTRO : $langs->trans('TicketMessageMailIntroText');
print '<tr><td>' . $langs->trans("TicketMessageMailIntroLabelAdmin") . '</label>';
print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_MESSAGE_MAIL_INTRO', $mail_intro, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor = new DolEditor('TICKET_MESSAGE_MAIL_INTRO', $mail_intro, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor->Create();
print '</td>';
print '<td align="center">';
@@ -573,11 +573,11 @@ print $form->textwithpicto('', $langs->trans("TicketMessageMailIntroHelpAdmin"),
print '</td></tr>';
// Texte de signature
$mail_signature = $conf->global->TICKETS_MESSAGE_MAIL_SIGNATURE ? $conf->global->TICKETS_MESSAGE_MAIL_SIGNATURE : $langs->trans('TicketMessageMailSignatureText');
$mail_signature = $conf->global->TICKET_MESSAGE_MAIL_SIGNATURE ? $conf->global->TICKET_MESSAGE_MAIL_SIGNATURE : $langs->trans('TicketMessageMailSignatureText');
print '<tr><td>' . $langs->trans("TicketMessageMailSignatureLabelAdmin") . '</label>';
print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_MESSAGE_MAIL_SIGNATURE', $mail_signature, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor = new DolEditor('TICKET_MESSAGE_MAIL_SIGNATURE', $mail_signature, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
$doleditor->Create();
print '</td>';
print '<td align="center">';
@@ -589,31 +589,31 @@ print '<td colspan="3">' . $langs->trans("PublicInterface") . '</td>';
print "</tr>\n";
// Url public interface
$url_interface = $conf->global->TICKETS_URL_PUBLIC_INTERFACE;
$url_interface = $conf->global->TICKET_URL_PUBLIC_INTERFACE;
print '<tr><td>' . $langs->trans("TicketUrlPublicInterfaceLabelAdmin") . '</label>';
print '</td><td>';
print '<input type="text" name="TICKETS_URL_PUBLIC_INTERFACE" value="' . $conf->global->TICKETS_URL_PUBLIC_INTERFACE . '" size="40" ></td>';
print '<input type="text" name="TICKET_URL_PUBLIC_INTERFACE" value="' . $conf->global->TICKET_URL_PUBLIC_INTERFACE . '" size="40" ></td>';
print '</td>';
print '<td align="center">';
print $form->textwithpicto('', $langs->trans("TicketUrlPublicInterfaceHelpAdmin"), 1, 'help');
print '</td></tr>';
// Interface topic
$url_interface = $conf->global->TICKETS_PUBLIC_INTERFACE_TOPIC;
$url_interface = $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC;
print '<tr><td>' . $langs->trans("TicketPublicInterfaceTopicLabelAdmin") . '</label>';
print '</td><td>';
print '<input type="text" name="TICKETS_PUBLIC_INTERFACE_TOPIC" value="' . $conf->global->TICKETS_PUBLIC_INTERFACE_TOPIC . '" size="40" ></td>';
print '<input type="text" name="TICKET_PUBLIC_INTERFACE_TOPIC" value="' . $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC . '" size="40" ></td>';
print '</td>';
print '<td align="center">';
print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTopicHelp"), 1, 'help');
print '</td></tr>';
// Texte d'accueil homepage
$public_text_home = $conf->global->TICKETS_PUBLIC_TEXT_HOME ? $conf->global->TICKETS_PUBLIC_TEXT_HOME : $langs->trans('TicketPublicInterfaceTextHome');
$public_text_home = $conf->global->TICKET_PUBLIC_TEXT_HOME ? $conf->global->TICKET_PUBLIC_TEXT_HOME : $langs->trans('TicketPublicInterfaceTextHome');
print '<tr><td>' . $langs->trans("TicketPublicInterfaceTextHomeLabelAdmin") . '</label>';
print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_PUBLIC_TEXT_HOME', $public_text_home, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70);
$doleditor = new DolEditor('TICKET_PUBLIC_TEXT_HOME', $public_text_home, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70);
$doleditor->Create();
print '</td>';
print '<td align="center">';
@@ -621,11 +621,11 @@ print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTextHomeHelpA
print '</td></tr>';
// Texte d'aide à la saisie du message
$public_text_help_message = $conf->global->TICKETS_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKETS_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe');
$public_text_help_message = $conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe');
print '<tr><td>' . $langs->trans("TicketPublicInterfaceTextHelpMessageLabelAdmin") . '</label>';
print '</td><td>';
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$doleditor = new DolEditor('TICKETS_PUBLIC_TEXT_HELP_MESSAGE', $public_text_help_message, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70);
$doleditor = new DolEditor('TICKET_PUBLIC_TEXT_HELP_MESSAGE', $public_text_help_message, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70);
$doleditor->Create();
print '</td>';
print '<td align="center">';

View File

@@ -40,7 +40,7 @@ $transkey=GETPOST('transkey','alpha');
$transvalue=GETPOST('transvalue','alpha');
$mode = GETPOST('mode')?GETPOST('mode'):'overwrite';
$mode = GETPOST('mode','aZ09')?GETPOST('mode','aZ09'):'overwrite';
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
$sortfield = GETPOST("sortfield",'alpha');

View File

@@ -1290,7 +1290,7 @@ if (empty($reshook))
{
$arraylist = array('amount' => 'FixAmount','variable' => 'VarAmount');
$descline = $langs->trans('Deposit');
$descline.= ' - '.$langs->trans($arraylist[$typeamount]);
//$descline.= ' - '.$langs->trans($arraylist[$typeamount]);
if ($typeamount=='amount') {
$descline.= ' ('. price($valuedeposit, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)).')';
} elseif ($typeamount=='variable') {
@@ -2873,7 +2873,7 @@ if ($action == 'create')
if (($origin == 'propal') || ($origin == 'commande'))
{
print '<td class="nowrap" style="padding-left: 5px">';
$arraylist = array('amount' => 'FixAmount','variable' => 'VarAmount');
$arraylist = array('amount' => $langs->transnoentitiesnoconv('FixAmount'), 'variable' => $langs->transnoentitiesnoconv('VarAmountOneLine', $langs->transnoentitiesnoconv('Deposit')));
print $form->selectarray('typedeposit', $arraylist, GETPOST('typedeposit'), 0, 0, 0, '', 1);
print '</td>';
print '<td class="nowrap" style="padding-left: 5px">' . $langs->trans('Value') . ':<input type="text" id="valuedeposit" name="valuedeposit" size="3" value="' . GETPOST('valuedeposit', 'int') . '"/>';

View File

@@ -442,7 +442,7 @@ if ($search_montant_localtax2 != '') $sql.= natural_search('f.localtax2', $searc
if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1);
if ($search_categ_cus > 0) $sql.= " AND cc.fk_categorie = ".$db->escape($search_categ_cus);
if ($search_categ_cus == -2) $sql.= " AND cc.fk_categorie IS NULL";
if ($search_status != '')
if ($search_status != '-1' && $search_status != '')
{
if (is_numeric($search_status) && $search_status >= 0)
{

View File

@@ -204,7 +204,7 @@ class Contact extends CommonObject
if (empty($this->priv)) $this->priv = 0;
if (empty($this->statut)) $this->statut = 0; // This is to convert '' into '0' to avoid bad sql request
$entity = ((isset($this->entity) && is_numeric($this->entity))?$this->entity:$conf->entity);
$this->entity = ((isset($this->entity) && is_numeric($this->entity))?$this->entity:$conf->entity);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."socpeople (";
$sql.= " datec";
@@ -228,7 +228,7 @@ class Contact extends CommonObject
$sql.= " ".$this->db->escape($this->priv).",";
$sql.= " ".$this->db->escape($this->statut).",";
$sql.= " ".(! empty($this->canvas)?"'".$this->db->escape($this->canvas)."'":"null").",";
$sql.= " ".$this->db->escape($entity).",";
$sql.= " ".$this->db->escape($this->entity).",";
$sql.= "'".$this->db->escape($this->ref_ext)."',";
$sql.= " ".(! empty($this->import_key)?"'".$this->db->escape($this->import_key)."'":"null");
$sql.= ")";
@@ -307,6 +307,8 @@ class Contact extends CommonObject
$this->id = $id;
$this->entity = ((isset($this->entity) && is_numeric($this->entity))?$this->entity:$conf->entity);
// Clean parameters
$this->lastname=trim($this->lastname)?trim($this->lastname):trim($this->lastname);
$this->firstname=trim($this->firstname);
@@ -354,6 +356,7 @@ class Contact extends CommonObject
$sql .= ", fk_user_modif=".($user->id > 0 ? "'".$this->db->escape($user->id)."'":"NULL");
$sql .= ", default_lang=".($this->default_lang?"'".$this->db->escape($this->default_lang)."'":"NULL");
$sql .= ", no_email=".($this->no_email?"'".$this->db->escape($this->no_email)."'":"0");
$sql .= ", entity = " . $this->db->escape($this->entity);
$sql .= " WHERE rowid=".$this->db->escape($id);
dol_syslog(get_class($this)."::update", LOG_DEBUG);

View File

@@ -178,7 +178,7 @@ if ($action == 'add')
(GETPOST('alwayseditable', 'alpha')?1:0),
(GETPOST('perms', 'alpha')?GETPOST('perms', 'alpha'):''),
$visibility,
0,
GETPOST('help','alpha'),
GETPOST('computed_value','alpha'),
(GETPOST('entitycurrentorall', 'alpha')?0:''),
GETPOST('langfile', 'alpha')
@@ -344,7 +344,7 @@ if ($action == 'update')
(GETPOST('alwayseditable', 'alpha')?1:0),
(GETPOST('perms', 'alpha')?GETPOST('perms', 'alpha'):''),
$visibility,
0,
GETPOST('help','alpha'),
GETPOST('default_value','alpha'),
GETPOST('computed_value','alpha'),
(GETPOST('entitycurrentorall', 'alpha')?0:''),

View File

@@ -256,10 +256,10 @@ class ExtraFields
if ($type == 'varchar' && empty($lengthdb)) $lengthdb='255';
}
$field_desc = array(
'type'=>$typedb,
'value'=>$lengthdb,
'null'=>($required?'NOT NULL':'NULL'),
'default' => $default_value
'type'=>$typedb,
'value'=>$lengthdb,
'null'=>($required?'NOT NULL':'NULL'),
'default' => $default_value
);
$result=$this->db->DDLAddField(MAIN_DB_PREFIX.$table, $attrname, $field_desc);
@@ -376,8 +376,8 @@ class ExtraFields
$sql.= " '".$this->db->escape($list)."',";
$sql.= " ".($default?"'".$this->db->escape($default)."'":"null").",";
$sql.= " ".($computed?"'".$this->db->escape($computed)."'":"null").",";
$sql .= " " . $user->id . ",";
$sql .= " " . $user->id . ",";
$sql .= " " . (is_object($user) ? $user->id : 0). ",";
$sql .= " " . (is_object($user) ? $user->id : 0). ",";
$sql .= "'" . $this->db->idate(dol_now()) . "',";
$sql.= " ".($enabled?"'".$this->db->escape($enabled)."'":"1").",";
$sql.= " ".($help?"'".$this->db->escape($help)."'":"null");

View File

@@ -193,7 +193,12 @@ class Form
$morealt=' style="width: '.$cols.'"';
$cols='';
}
$ret.='<textarea id="'.$htmlname.'" name="'.$htmlname.'" wrap="soft" rows="'.($tmp[1]?$tmp[1]:'20').'"'.($cols?' cols="'.$cols.'"':'class="quatrevingtpercent"').$morealt.'">'.($editvalue?$editvalue:$value).'</textarea>';
$valuetoshow = ($editvalue?$editvalue:$value);
$ret.='<textarea id="'.$htmlname.'" name="'.$htmlname.'" wrap="soft" rows="'.($tmp[1]?$tmp[1]:'20').'"'.($cols?' cols="'.$cols.'"':'class="quatrevingtpercent"').$morealt.'">';
$ret.=dol_string_neverthesehtmltags($valuetoshow, array('textarea'));
$ret.='</textarea>';
}
else if ($typeofdata == 'day' || $typeofdata == 'datepicker')
{
@@ -1073,10 +1078,10 @@ class Form
$out='';
$num=0;
$outarray=array();
if ($selected === '') $selected = array();
else if (!is_array($selected)) $selected = array($selected);
// Clean $filter that may contains sql conditions so sql code
if (function_exists('test_sql_and_script_inject')) $filter = test_sql_and_script_inject($filter, 3);
@@ -1335,7 +1340,7 @@ class Form
$langs->load('companies');
if (empty($htmlid)) $htmlid = $htmlname;
if ($selected === '') $selected = array();
else if (!is_array($selected)) $selected = array($selected);
$out='';
@@ -1484,13 +1489,13 @@ class Form
function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude=null, $disabled=0, $include='', $enableonly='', $force_entity='0', $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='', $morecss='', $noactive=0, $outputmode=0, $multiple=false)
{
global $conf,$user,$langs;
// If no preselected user defined, we take current user
if ((is_numeric($selected) && ($selected < -2 || empty($selected))) && empty($conf->global->SOCIETE_DISABLE_DEFAULT_SALESREPRESENTATIVE)) $selected=$user->id;
if ($selected === '') $selected = array();
else if (!is_array($selected)) $selected = array($selected);
$excludeUsers=null;
$includeUsers=null;
@@ -1568,7 +1573,7 @@ class Form
if ($show_every) $out.= '<option value="-2"'.((in_array(-2,$selected))?' selected':'').'>-- '.$langs->trans("Everybody").' --</option>'."\n";
$userstatic=new User($this->db);
while ($i < $num)
{
$obj = $this->db->fetch_object($resql);
@@ -2666,7 +2671,7 @@ class Form
$sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid";
$sql.= " WHERE pfp.entity IN (".getEntity('productprice').")";
$sql.= " WHERE pfp.entity IN (".getEntity('productsupplierprice').")";
$sql.= " AND p.tobuy = 1";
$sql.= " AND s.fournisseur = 1";
$sql.= " AND p.rowid = ".$productid;
@@ -6754,7 +6759,7 @@ class Form
if (is_array($include)) $includeGroups = implode("','",$include);
if (!is_array($selected)) $selected = array($selected);
$out='';
// On recherche les groupes

View File

@@ -197,7 +197,7 @@ class FormActions
$newcardbutton='';
if (! empty($conf->agenda->enabled))
{
$newcardbutton = '<a class="butActionNew" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.dol_print_date(dol_now(),'dayhourlog').'&origin='.$typeelement.'&originid='.$object->id.($object->socid>0?'&socid='.$object->socid:'').($projectid>0?'&projectid='.$projectid:'').'&backtopage='.urlencode($urlbacktopage).'"><span class="valignmiddle">'.$langs->trans("AddEvent").'</span>';
$newcardbutton = '<a class="butActionNew" href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.dol_print_date(dol_now(),'dayhourlog').'&origin='.$typeelement.'&originid='.$object->id.($object->socid>0?'&socid='.$object->socid:($socid>0?'&socid='.$socid:'')).($projectid>0?'&projectid='.$projectid:'').'&backtopage='.urlencode($urlbacktopage).'"><span class="valignmiddle">'.$langs->trans("AddEvent").'</span>';
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
$newcardbutton.= '</a>';
}

View File

@@ -327,7 +327,7 @@ class FormTicket
// If public form, display more information
if ($this->ispublic) {
print '<div class="warning">' . ($conf->global->TICKETS_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKETS_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe')) . '</div>';
print '<div class="warning">' . ($conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe')) . '</div>';
}
include_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
$uselocalbrowser = true;
@@ -889,8 +889,8 @@ class FormTicket
}
}
if ($conf->global->TICKETS_NOTIFICATION_ALSO_MAIN_ADDRESS) {
$sendto[] = $conf->global->TICKETS_NOTIFICATION_EMAIL_TO . '(generic email)';
if ($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS) {
$sendto[] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO . '(generic email)';
}
// Print recipient list
@@ -906,7 +906,7 @@ class FormTicket
// Intro
// External users can't send message email
if ($user->rights->ticket->write && !$user->socid) {
$mail_intro = GETPOST('mail_intro') ? GETPOST('mail_intro') : $conf->global->TICKETS_MESSAGE_MAIL_INTRO;
$mail_intro = GETPOST('mail_intro') ? GETPOST('mail_intro') : $conf->global->TICKET_MESSAGE_MAIL_INTRO;
print '<tr class="email_line"><td><label for="mail_intro">' . $langs->trans("TicketMessageMailIntro") . '</label>';
print '</td><td>';
@@ -957,7 +957,7 @@ class FormTicket
// Signature
// External users can't send message email
if ($user->rights->ticket->write && !$user->socid) {
$mail_signature = GETPOST('mail_signature') ? GETPOST('mail_signature') : $conf->global->TICKETS_MESSAGE_MAIL_SIGNATURE;
$mail_signature = GETPOST('mail_signature') ? GETPOST('mail_signature') : $conf->global->TICKET_MESSAGE_MAIL_SIGNATURE;
print '<tr class="email_line"><td><label for="mail_intro">' . $langs->trans("TicketMessageMailSignature") . '</label>';
print '</td><td>';

View File

@@ -765,28 +765,36 @@ class DoliDBMysqli extends DoliDB
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
$sql.= $field_desc['type'];
if(preg_match("/^[^\s]/i",$field_desc['value']))
if (preg_match("/^[^\s]/i",$field_desc['value']))
{
if (! in_array($field_desc['type'],array('date','datetime')))
{
$sql.= "(".$field_desc['value'].")";
}
if(preg_match("/^[^\s]/i",$field_desc['attribute']))
$sql.= " ".$field_desc['attribute'];
if(preg_match("/^[^\s]/i",$field_desc['null']))
$sql.= " ".$field_desc['null'];
if(preg_match("/^[^\s]/i",$field_desc['default']))
}
if (isset($field_desc['attribute']) && preg_match("/^[^\s]/i",$field_desc['attribute']))
{
$sql.= " ".$field_desc['attribute'];
}
if (isset($field_desc['null']) && preg_match("/^[^\s]/i",$field_desc['null']))
{
$sql.= " ".$field_desc['null'];
}
if (isset($field_desc['default']) && preg_match("/^[^\s]/i",$field_desc['default']))
{
if(preg_match("/null/i",$field_desc['default']))
$sql.= " default ".$field_desc['default'];
else
$sql.= " default '".$field_desc['default']."'";
}
if(preg_match("/^[^\s]/i",$field_desc['extra']))
$sql.= " ".$field_desc['extra'];
if (isset($field_desc['extra']) && preg_match("/^[^\s]/i",$field_desc['extra']))
{
$sql.= " ".$field_desc['extra'];
}
$sql.= " ".$field_position;
dol_syslog(get_class($this)."::DDLAddField ".$sql,LOG_DEBUG);
if($this->query($sql)) {
if ($this->query($sql)) {
return 1;
}
return -1;

View File

@@ -234,8 +234,8 @@ function societe_prepare_head(Societe $object)
$head[$h][1] = $langs->trans("WebSiteAccounts");
$nbNote = 0;
$sql = "SELECT COUNT(n.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."website_account as n";
$sql.= " WHERE fk_soc = ".$object->id;
$sql.= " FROM ".MAIN_DB_PREFIX."societe_account as n";
$sql.= " WHERE fk_soc = ".$object->id.' AND fk_website > 0';
$resql=$db->query($sql);
if ($resql)
{

View File

@@ -1219,7 +1219,7 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n
}
else dol_syslog("Failed to remove file ".$filename, LOG_WARNING);
// TODO Failure to remove can be because file was already removed or because of permission
// If error because of not exists, we must should return true and we should return false if this is a permission problem
// If error because it does not exists, we should return true, and we should return false if this is a permission problem
}
}
else dol_syslog("No files to delete found", LOG_DEBUG);

View File

@@ -2021,7 +2021,7 @@ function dol_mktime($hour,$minute,$second,$month,$day,$year,$gm=false,$check=1)
}
else
{
dol_print_error('','PHP version must be 5.3+');
dol_print_error('','PHP version must be 5.4+');
return '';
}
}
@@ -4549,7 +4549,7 @@ function price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerou
* 'MT'=Round to Max for totals with Tax (MAIN_MAX_DECIMALS_TOT)
* 'MS'=Round to Max for stock quantity (MAIN_MAX_DECIMALS_STOCK)
* @param int $alreadysqlnb Put 1 if you know that content is already universal format number
* @return string Amount with universal numeric format (Example: '99.99999') or unchanged text if conversion fails.
* @return string Amount with universal numeric format (Example: '99.99999') or unchanged text if conversion fails. If amount is null or '', it returns ''.
*
* @see price Opposite function of price2num
*/
@@ -5477,7 +5477,7 @@ function picto_required()
* @param integer $strip_tags 0=Use internal strip, 1=Use strip_tags() php function (bugged when text contains a < char that is not for a html tag)
* @return string String cleaned
*
* @see dol_escape_htmltag strip_tags
* @see dol_escape_htmltag strip_tags dol_string_onlythesehtmltags dol_string_neverthesehtmltags
*/
function dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0)
{
@@ -5509,6 +5509,51 @@ function dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UT
return trim($temp);
}
/**
* Clean a string to keep only desirable HTML tags.
*
* @param string $stringtoclean String to clean
* @return string String cleaned
*
* @see dol_escape_htmltag strip_tags dol_string_nohtmltag dol_string_neverthesehtmltags
*/
function dol_string_onlythesehtmltags($stringtoclean)
{
$allowed_tags = array(
"html", "head", "meta", "body", "b", "br", "div", "em", "font", "img", "hr", "i", "li", "link",
"ol", "p", "s", "section", "span", "strong", "title",
"table", "tr", "th", "td", "u", "ul"
);
$allowed_tags_string = join("><", $allowed_tags);
$allowed_tags_string = preg_replace('/^>/','',$allowed_tags_string);
$allowed_tags_string = preg_replace('/<$/','',$allowed_tags_string);
$temp = strip_tags($stringtoclean, $allowed_tags_string);
return $temp;
}
/**
* Clean a string from some undesirable HTML tags.
*
* @param string $stringtoclean String to clean
* @param array $disallowed_tags Array of tags not allowed
* @return string String cleaned
*
* @see dol_escape_htmltag strip_tags dol_string_nohtmltag dol_string_onlythesehtmltags
*/
function dol_string_neverthesehtmltags($stringtoclean, $disallowed_tags=array('textarea'))
{
$temp = $stringtoclean;
foreach($disallowed_tags as $tagtoremove)
{
$temp = preg_replace('/<\/?'.$tagtoremove.'>/', '', $temp);
$temp = preg_replace('/<\/?'.$tagtoremove.'\s+[^>]*>/', '', $temp);
}
return $temp;
}
/**
* Return first line of text. Cut will depends if content is HTML or not.

View File

@@ -150,7 +150,7 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $
top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); // Show html headers
print '<body id="mainbody" class="publicnewticketform" style="margin-top: 10px;">';
if (! empty($conf->global->TICKETS_SHOW_COMPANY_LOGO)) {
if (! empty($conf->global->TICKET_SHOW_COMPANY_LOGO)) {
// Print logo
$urllogo = DOL_URL_ROOT . '/theme/login_logo.png';
@@ -163,8 +163,8 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $
$urllogo = DOL_URL_ROOT . '/theme/dolibarr_logo.png';
}
print '<center>';
print '<a href="' . ($conf->global->TICKETS_URL_PUBLIC_INTERFACE ? $conf->global->TICKETS_URL_PUBLIC_INTERFACE : dol_buildpath('/public/ticket/index.php', 1)) . '"><img alt="Logo" id="logosubscribe" title="" src="' . $urllogo . '" style="max-width: 440px" /></a><br>';
print '<strong>' . ($conf->global->TICKETS_PUBLIC_INTERFACE_TOPIC ? $conf->global->TICKETS_PUBLIC_INTERFACE_TOPIC : $langs->trans("TicketSystem")) . '</strong>';
print '<a href="' . ($conf->global->TICKET_URL_PUBLIC_INTERFACE ? $conf->global->TICKET_URL_PUBLIC_INTERFACE : dol_buildpath('/public/ticket/index.php', 1)) . '"><img alt="Logo" id="logosubscribe" title="" src="' . $urllogo . '" style="max-width: 440px" /></a><br>';
print '<strong>' . ($conf->global->TICKET_PUBLIC_INTERFACE_TOPIC ? $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC : $langs->trans("TicketSystem")) . '</strong>';
print '</center><br>';
}

View File

@@ -143,7 +143,10 @@ function user_prepare_head($object)
complete_head_from_modules($conf,$langs,$object,$head,$h,'user');
if ((! empty($conf->salaries->enabled) && ! empty($user->rights->salaries->read))
|| (! empty($conf->hrm->enabled) && ! empty($user->rights->hrm->employee->read)))
|| (! empty($conf->hrm->enabled) && ! empty($user->rights->hrm->employee->read))
|| (! empty($conf->expensereport->enabled) && ! empty($user->rights->expensereport->lire) && $user->id == $object->id)
|| (! empty($conf->holiday->enabled) && ! empty($user->rights->holiday->read) && $user->id == $object->id )
)
{
// Bank
$head[$h][0] = DOL_URL_ROOT.'/user/bank.php?id='.$object->id;

View File

@@ -35,27 +35,82 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
/**
* Classe permettant de generer les bons de livraison au modele Typho
* Class to build Delivery Order documents with typhon model
*/
class pdf_typhon extends ModelePDFDeliveryOrder
{
var $db;
var $name;
var $description;
var $type;
var $phpmin = array(4,3,0); // Minimum version of PHP required by module
var $version = 'dolibarr';
var $page_largeur;
var $page_hauteur;
var $format;
var $marge_gauche;
var $marge_droite;
var $marge_haute;
var $marge_basse;
var $emetteur; // Objet societe qui emet
/**
* @var DoliDb Database handler
*/
public $db;
/**
* @var string model name
*/
public $name;
/**
* @var string model description (short text)
*/
public $description;
/**
* @var string document type
*/
public $type;
/**
* @var array() Minimum version of PHP required by module.
* e.g.: PHP ≥ 5.4 = array(5, 4)
*/
public $phpmin = array(5, 4);
/**
* Dolibarr version of the loaded document
* @public string
*/
public $version = 'dolibarr';
/**
* @var int page_largeur
*/
public $page_largeur;
/**
* @var int page_hauteur
*/
public $page_hauteur;
/**
* @var array format
*/
public $format;
/**
* @var int marge_gauche
*/
public $marge_gauche;
/**
* @var int marge_droite
*/
public $marge_droite;
/**
* @var int marge_haute
*/
public $marge_haute;
/**
* @var int marge_basse
*/
public $marge_basse;
/**
* Issuer
* @var Societe
*/
public $emetteur; // Objet societe qui emet
/**
* Constructor

View File

@@ -66,7 +66,7 @@ class modAccounting extends DolibarrModules
$this->depends = array("modFacture","modBanque","modTax"); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->conflictwith = array("modComptabilite"); // List of modules are in conflict with this module
$this->phpmin = array(5, 3); // Minimum version of PHP required by module
$this->phpmin = array(5, 4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3, 9); // Minimum version of Dolibarr required by module
$this->langfiles = array("accountancy","compta");

View File

@@ -62,17 +62,17 @@ class modAdherent extends DolibarrModules
$this->dirs = array("/adherent/temp");
// Config pages
//-------------
$this->config_page_url = array("adherent.php@adherents");
// Dependencies
//------------
$this->depends = array();
$this->requiredby = array('modMailmanSpip');
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array('modMailmanSpip'); // List of module class names as string this module is in conflict with
$this->langfiles = array("members","companies");
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Constants
//-----------
$this->const = array();
$r=0;

View File

@@ -65,14 +65,15 @@ class modAgenda extends DolibarrModules
$this->dirs = array("/agenda/temp");
// Config pages
//-------------
$this->config_page_url = array("agenda_other.php");
// Dependancies
//-------------
$this->depends = array();
$this->requiredby = array();
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->langfiles = array("companies");
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Module parts
$this->module_parts = array();

View File

@@ -82,7 +82,7 @@ class modApi extends DolibarrModules
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->conflictwith = array(); // List of modules id this module is in conflict with
$this->phpmin = array(5,3); // Minimum version of PHP required by module
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("other");
// Constants

View File

@@ -96,7 +96,7 @@ class modAsset extends DolibarrModules
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->langfiles = array("assets");
$this->phpmin = array(5,3); // Minimum version of PHP required by module
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(7,0); // Minimum version of Dolibarr required by module
$this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
$this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...)

View File

@@ -63,9 +63,9 @@ class modBanque extends DolibarrModules
// Data directories to create when module is enabled
$this->dirs = array("/banque/temp");
// Config pages
//-------------
$this->config_page_url = array("bank.php");
// Config pages
//-------------
$this->config_page_url = array("bank.php");
// Dependancies
$this->depends = array();
@@ -160,11 +160,11 @@ class modBanque extends DolibarrModules
'b.datec'=>"account","bu.url_id"=>"company","s.nom"=>"company","s.code_compta"=>"company","s.code_compta_fournisseur"=>"company"
);
$this->export_special_array[$r]=array('-b.amount'=>'NULLIFNEG','b.amount'=>'NULLIFNEG');
if (empty($conf->fournisseur->enabled))
{
unset($this->export_fields_array[$r]['s.code_compta_fournisseur']);
unset($this->export_entities_array[$r]['s.code_compta_fournisseur']);
}
if (empty($conf->fournisseur->enabled))
{
unset($this->export_fields_array[$r]['s.code_compta_fournisseur']);
unset($this->export_entities_array[$r]['s.code_compta_fournisseur']);
}
$this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'bank_account as ba, '.MAIN_DB_PREFIX.'bank as b)';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."bank_url as bu ON (bu.fk_bank = b.rowid AND bu.type = 'company')";
@@ -178,10 +178,10 @@ class modBanque extends DolibarrModules
$this->export_label[$r]='Bordereaux remise Chq/Fact';
$this->export_permission[$r]=array(array("banque","export"));
$this->export_fields_array[$r]=array("bch.rowid"=>"DepositId","bch.ref"=>"Numero","bch.ref_ext"=>"RefExt",'ba.ref'=>'AccountRef','ba.label'=>'AccountLabel','b.datev'=>'DateValue','b.num_chq'=>'ChequeOrTransferNumber','b.amount'=>'Credit','b.num_releve'=>'AccountStatement','b.datec'=>"DateCreation",
"bch.date_bordereau"=>"Date","bch.amount"=>"Total","bch.nbcheque"=>"NbCheque","bu.url_id"=>"IdThirdParty","s.nom"=>"ThirdParty","f.facnumber"=>"InvoiceRef"
"bch.date_bordereau"=>"Date","bch.amount"=>"Total","bch.nbcheque"=>"NbCheque","bu.url_id"=>"IdThirdParty","s.nom"=>"ThirdParty","s.code_compta"=>"CustomerAccountancyCode","f.facnumber"=>"InvoiceRef"
);
$this->export_TypeFields_array[$r]=array('ba.ref'=>'Text','ba.label'=>'Text','b.datev'=>'Date','b.num_chq'=>'Text','b.amount'=>'Numeric','b.num_releve'=>'Text','b.datec'=>"Date",
"bch.date_bordereau"=>"Date","bch.rowid"=>"Numeric","bch.ref"=>"Numeric","bch.ref_ext"=>"Text","bch.amount"=>"Numeric","bch.nbcheque"=>"Numeric","bu.url_id"=>"Text","s.nom"=>"Text","f.facnumber"=>"Text"
"bch.date_bordereau"=>"Date","bch.rowid"=>"Numeric","bch.ref"=>"Numeric","bch.ref_ext"=>"Text","bch.amount"=>"Numeric","bch.nbcheque"=>"Numeric","bu.url_id"=>"Text","s.nom"=>"Text","s.code_compta"=>"Text","f.facnumber"=>"Text"
);
$this->export_entities_array[$r]=array('ba.ref'=>'account','ba.label'=>'account','b.datev'=>'account','b.num_chq'=>'account','b.amount'=>'account','b.num_releve'=>'account','b.datec'=>"account",
"bu.url_id"=>"company","s.nom"=>"company","s.code_compta"=>"company","s.code_compta_fournisseur"=>"company","f.facnumber"=>"invoice");
@@ -203,12 +203,12 @@ class modBanque extends DolibarrModules
}
/**
* Function called when module is enabled.
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
* It also creates data directories.
*
* @param string $options Options when enabling module ('', 'noboxes')
/**
* Function called when module is enabled.
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
* It also creates data directories.
*
* @param string $options Options when enabling module ('', 'noboxes')
* @return int 1 if OK, 0 if KO
*/
function init($options='')

View File

@@ -64,9 +64,10 @@ class modCashDesk extends DolibarrModules
$this->config_page_url = array("cashdesk.php@cashdesk");
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array('always'=>"modBanque", 'always'=>"modFacture", 'always'=>"modProduct", 'FR'=>'modBlockedLog'); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4,1); // Minimum version of PHP required by module
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(2,4); // Minimum version of Dolibarr required by module
$this->langfiles = array("cashdesk");
$this->warnings_activation = array('FR'=>'WarningNoteModulePOSForFrenchLaw'); // Warning to show when we activate module. array('always'='text') or array('FR'='text')

View File

@@ -61,10 +61,11 @@ class modExpenseReport extends DolibarrModules
$this->config_page_url = array('expensereport.php');
// Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
// $this->conflictwith = array("modDeplacement"); // Deactivate for access on old information
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4,3); // Minimum version of PHP required by module
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,7); // Minimum version of Dolibarr required by module
$this->langfiles = array("companies","trips");

View File

@@ -65,9 +65,11 @@ class modGeoIPMaxmind extends DolibarrModules
$this->config_page_url = array("geoipmaxmind.php");
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->phpmin = array(4,2,0);
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4);
$this->phpmax = array();
$this->need_dolibarr_version = array(2,7,-1); // Minimum version of Dolibarr required by module
$this->need_javascript_ajax = 1;

View File

@@ -71,9 +71,11 @@ class modGravatar extends DolibarrModules
$this->config_page_url = array();
// Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4, 3); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5, 4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(2, 7); // Minimum version of Dolibarr required by module
$this->langfiles = array();

View File

@@ -66,27 +66,16 @@ class modHRM extends DolibarrModules
$this->config_page_url = array('admin_hrm.php@hrm');
// Dependencies
$this->depends = array();
$this->requiredby = array(/*"
modSalaries,
modExpenseReport,
modHoliday
"*/);
$this->conflictwith = array();
$this->phpmin = array (
5,
3
); // Minimum version of PHP required by module
$this->need_dolibarr_version = array (
3,
9
); // Minimum version of Dolibarr required by module
$this->langfiles = array (
"hrm"
);
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(/*"modSalaries, modExpenseReport, modHoliday"*/); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array (3,9); // Minimum version of Dolibarr required by module
$this->langfiles = array ("hrm");
// Dictionnaries
$this->dictionnaries=array();
// Dictionaries
$this->dictionaries=array();
// Constantes
$this->const = array ();

View File

@@ -81,9 +81,11 @@ class modHoliday extends DolibarrModules
// $this->config_page_url = array("holiday.php?leftmenu=setup@holiday");
// Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4,3); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("holiday");
@@ -116,7 +118,8 @@ class modHoliday extends DolibarrModules
$r++;
// Array to add new pages in new tabs
$this->tabs[] = array('data'=>'user:+paidholidays:CPTitreMenu:holiday:$user->rights->holiday->read:/holiday/list.php?mainmenu=hrm&id=__ID__'); // To add a new tab identified by code tabname1
//$this->tabs[] = array('data'=>'user:+paidholidays:CPTitreMenu:holiday:$user->rights->holiday->read:/holiday/list.php?mainmenu=hrm&id=__ID__'); // We avoid to get one tab for each module. RH data are already in RH tab.
$this->tabs[] = array(); // To add a new tab identified by code tabname1
// Boxes
$this->boxes = array(); // List of boxes

View File

@@ -60,9 +60,11 @@ class modImport extends DolibarrModules
$this->config_page_url = array();
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->phpmin = array(4,3,0); // Need auto_detect_line_endings php option to solve MAC pbs.
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module - Need auto_detect_line_endings php option to solve MAC pbs.
$this->phpmax = array();
$this->need_dolibarr_version = array(2,7,-1); // Minimum version of Dolibarr required by module
$this->need_javascript_ajax = 1;

View File

@@ -65,9 +65,11 @@ class modIncoterm extends DolibarrModules
$this->config_page_url = array();
// Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(5,0); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("incoterm");

View File

@@ -56,9 +56,12 @@ class modLabel extends DolibarrModules
// Data directories to create when module is enabled
$this->dirs = array("/label/temp");
// Dependancies
$this->depends = array();
$this->requiredby = array();
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages
// $this->config_page_url = array("label.php");

View File

@@ -60,9 +60,12 @@ class modLdap extends DolibarrModules
// Config pages
$this->config_page_url = array("ldap.php");
// Dependancies
$this->depends = array();
$this->requiredby = array();
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Constants
$this->const = array(

View File

@@ -63,9 +63,11 @@ class modLoan extends DolibarrModules
$this->config_page_url = array('loan.php');
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->conflictwith = array();
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("loan");
// Constants

View File

@@ -57,8 +57,11 @@ class modMailing extends DolibarrModules
$this->dirs = array("/mailing/temp");
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("mails");
// Config pages

View File

@@ -58,8 +58,11 @@ class modMailmanSpip extends DolibarrModules
$this->dirs = array();
// Dependencies
$this->depends = array('modAdherent');
$this->requiredby = array();
$this->hidden = false; // A condition to hide module
$this->depends = array('modAdherent'); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages
$this->config_page_url = array('mailman.php');

View File

@@ -68,9 +68,11 @@ class modMargin extends DolibarrModules
$this->config_page_url = array("margin.php@margin");
// Dependencies
$this->depends = array("modPropale", "modProduct"); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(5,1); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array("modPropale", "modProduct"); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,2); // Minimum version of Dolibarr required by module
$this->langfiles = array("margins");

View File

@@ -62,7 +62,7 @@ class modModuleBuilder extends DolibarrModules
//-------------
$this->config_page_url = array('setup@modulebuilder');
// Dependancies
// Dependencies
//-------------
$this->hidden = false; // A condition to disable module
$this->depends = array(); // List of modules id that must be enabled if this module is enabled

View File

@@ -88,7 +88,7 @@ class modMultiCurrency extends DolibarrModules
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->conflictwith = array(); // List of modules id this module is in conflict with
$this->phpmin = array(5, 0); // Minimum version of PHP required by module
$this->phpmin = array(5, 4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3, 0); // Minimum version of Dolibarr required by module
$this->langfiles = array("multicurrency");

View File

@@ -55,8 +55,11 @@ class modNotification extends DolibarrModules
$this->dirs = array();
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("mails");
// Config pages

View File

@@ -67,9 +67,11 @@ class modOauth extends DolibarrModules
$this->config_page_url = array("oauth.php");
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->phpmin = array(5,1); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,7,-2); // Minimum version of Dolibarr required by module
$this->conflictwith = array();
$this->langfiles = array("oauth");

View File

@@ -72,9 +72,11 @@ class modOpenSurvey extends DolibarrModules
//$this->dirs[1] = DOL_DATA_ROOT.'/mymodule/temp;
// Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4,1); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,4,0); // Minimum version of Dolibarr required by module
// Constants

View File

@@ -69,9 +69,11 @@ class modPayBox extends DolibarrModules
$this->config_page_url = array("paybox.php@paybox");
// Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4,1); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(2,6); // Minimum version of Dolibarr required by module
$this->langfiles = array("paybox");

View File

@@ -70,9 +70,11 @@ class modPaypal extends DolibarrModules
$this->config_page_url = array("paypal.php@paypal");
// Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array('modPaypalPlus'); // List of modules id to disable if this one is disabled
$this->phpmin = array(5,2); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array('modPaypalPlus'); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("paypal");

View File

@@ -63,9 +63,12 @@ class modPrelevement extends DolibarrModules
// Data directories to create when module is enabled
$this->dirs = array("/prelevement/temp","/prelevement/receipts");
// Dependancies
$this->depends = array("modFacture","modBanque");
$this->requiredby = array();
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array("modFacture","modBanque"); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages
$this->config_page_url = array("prelevement.php");

View File

@@ -66,9 +66,11 @@ class modPrinting extends DolibarrModules
$this->config_page_url = array("printing.php@printing");
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->phpmin = array(5,1); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,7,-2); // Minimum version of Dolibarr required by module
$this->conflictwith = array();
$this->langfiles = array("printing");

View File

@@ -65,8 +65,11 @@ class modProduct extends DolibarrModules
$this->dirs = array("/product/temp");
// Dependencies
$this->depends = array();
$this->requiredby = array("modStock","modBarcode","modProductBatch");
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array("modStock","modBarcode","modProductBatch"); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages
$this->config_page_url = array("product.php@product");

View File

@@ -68,9 +68,11 @@ class modProductBatch extends DolibarrModules
$this->config_page_url = array("product_lot_extrafields.php@product");
// Dependencies
$this->depends = array("modProduct","modStock","modExpedition","modFournisseur"); // List of modules id that must be enabled if this module is enabled. modExpedition is required to manage batch exit (by manual stock decrease on shipment), modSupplier to manage batch entry (after supplier order).
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(5,0); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array("modProduct","modStock","modExpedition","modFournisseur"); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("productbatch");

View File

@@ -64,10 +64,12 @@ class modProjet extends DolibarrModules
// Data directories to create when module is enabled
$this->dirs = array("/projet/temp");
// Dependancies
$this->depends = array();
$this->requiredby = array();
$this->conflictwith = array();
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array('projects');
// Constants

View File

@@ -63,9 +63,12 @@ class modPropale extends DolibarrModules
// Data directories to create when module is enabled
$this->dirs = array("/propale/temp");
// Dependancies
$this->depends = array("modSociete");
$this->requiredby = array();
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array("modSociete"); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->config_page_url = array("propal.php");
$this->langfiles = array("propal","bills","companies","deliveries","products");

View File

@@ -67,9 +67,11 @@ class modReceiptPrinter extends DolibarrModules
$this->config_page_url = array("receiptprinter.php");
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->phpmin = array(5,1); // Minimum version of PHP required by module
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,9,-2); // Minimum version of Dolibarr required by module
$this->conflictwith = array();
$this->langfiles = array("receiptprinter");

View File

@@ -95,7 +95,7 @@ class modResource extends DolibarrModules
// List of modules id to disable if this one is disabled
$this->requiredby = array('modPlace');
// Minimum version of PHP required by module
$this->phpmin = array(5, 3);
$this->phpmin = array(5, 4);
$this->langfiles = array("resource"); // langfiles@resource
// Constants

View File

@@ -70,9 +70,11 @@ class modSalaries extends DolibarrModules
$this->config_page_url = array();
// Dependencies
$this->depends = array();
$this->requiredby = array();
$this->conflictwith = array();
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array("salaries","bills");
// Constants

View File

@@ -62,9 +62,12 @@ class modService extends DolibarrModules
// Data directories to create when module is enabled
$this->dirs = array("/product/temp");
// Dependancies
$this->depends = array();
$this->requiredby = array();
// Dependencies
$this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
// Config pages
$this->config_page_url = array("product.php@product");

View File

@@ -25,7 +25,7 @@
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
/**
* Class to describe a Cron module
* Class to describe a Skype module
*/
class modSkype extends DolibarrModules
{
@@ -59,31 +59,26 @@ class modSkype extends DolibarrModules
$this->dirs = array();
// Config pages
//-------------
$this->config_page_url = array();
// Dependancies
//-------------
$this->hidden = ! empty($conf->global->MODULE_SKYPE_DISABLED); // A condition to disable module
$this->depends = array('modSociete'); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->conflictwith = array(); // List of modules id this module is in conflict with
// Dependencies
$this->hidden = ! empty($conf->global->MODULE_SKYPE_DISABLED); // A condition to hide module
$this->depends = array('modSociete'); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module
$this->langfiles = array();
// Constants
//-----------
// New pages on tabs
// -----------------
$this->tabs = array();
// Boxes
//------
$this->boxes = array();
// Main menu entries
//------------------
$this->menu = array();
}
}

View File

@@ -107,8 +107,8 @@ class modTicket extends DolibarrModules
// (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
// Example:
$this->const = array();
$this->const[1] = array('TICKETS_ENABLE_PUBLIC_INTERFACE', 'chaine', '1', 'Enable ticket public interface');
$this->const[2] = array('TICKETSUP_ADDON', 'chaine', 'mod_ticket_simple', 'Ticket ref module');
$this->const[1] = array('TICKET_ENABLE_PUBLIC_INTERFACE', 'chaine', '1', 'Enable ticket public interface');
$this->const[2] = array('TICKET_ADDON', 'chaine', 'mod_ticket_simple', 'Ticket ref module');
$this->tabs = array(
'thirdparty:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?socid=__ID__',

View File

@@ -38,7 +38,78 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
class pdf_baleine extends ModelePDFProjects
{
var $emetteur; // Objet societe qui emet
/**
* @var DoliDb Database handler
*/
public $db;
/**
* @var string model name
*/
public $name;
/**
* @var string model description (short text)
*/
public $description;
/**
* @var string document type
*/
public $type;
/**
* @var array() Minimum version of PHP required by module.
* e.g.: PHP ≥ 5.4 = array(5, 4)
*/
public $phpmin = array(5, 4);
/**
* Dolibarr version of the loaded document
* @public string
*/
public $version = 'dolibarr';
/**
* @var int page_largeur
*/
public $page_largeur;
/**
* @var int page_hauteur
*/
public $page_hauteur;
/**
* @var array format
*/
public $format;
/**
* @var int marge_gauche
*/
public $marge_gauche;
/**
* @var int marge_droite
*/
public $marge_droite;
/**
* @var int marge_haute
*/
public $marge_haute;
/**
* @var int marge_basse
*/
public $marge_basse;
/**
* Issuer
* @var Societe
*/
public $emetteur; // Objet societe qui emet
/**
* Constructor

View File

@@ -38,23 +38,78 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functionsnumtoword.lib.php';
*/
class pdf_standard extends ModelePDFSuppliersPayments
{
var $db;
var $name;
var $description;
var $type;
/**
* @var DoliDb Database handler
*/
public $db;
/**
* @var string model name
*/
public $name;
/**
* @var string model description (short text)
*/
public $description;
/**
* @var string document type
*/
public $type;
var $phpmin = array(4,3,0); // Minimum version of PHP required by module
var $version = 'dolibarr';
var $page_largeur;
var $page_hauteur;
var $format;
var $marge_gauche;
var $marge_droite;
var $marge_haute;
var $marge_basse;
var $emetteur; // Objet societe qui emet
/**
* @var array() Minimum version of PHP required by module.
* e.g.: PHP ≥ 5.4 = array(5, 4)
*/
public $phpmin = array(5, 4);
/**
* Dolibarr version of the loaded document
* @public string
*/
public $version = 'dolibarr';
/**
* @var int page_largeur
*/
public $page_largeur;
/**
* @var int page_hauteur
*/
public $page_hauteur;
/**
* @var array format
*/
public $format;
/**
* @var int marge_gauche
*/
public $marge_gauche;
/**
* @var int marge_droite
*/
public $marge_droite;
/**
* @var int marge_haute
*/
public $marge_haute;
/**
* @var int marge_basse
*/
public $marge_basse;
/**
* Issuer
* @var Societe
*/
public $emetteur;
/**

View File

@@ -60,9 +60,9 @@ class pdf_aurore extends ModelePDFSupplierProposal
/**
* @var array() Minimum version of PHP required by module.
* e.g.: PHP ≥ 5.3 = array(5, 3)
* e.g.: PHP ≥ 5.4 = array(5, 4)
*/
public $phpmin = array(5, 2);
public $phpmin = array(5, 4);
/**
* Dolibarr version of the loaded document

View File

@@ -23,7 +23,7 @@
* \brief File with class to manage the numbering module Simple for ticket references
*/
require_once DOL_DOCUMENT_ROOT.'/core/modules/modules_ticket.php';
require_once DOL_DOCUMENT_ROOT.'/core/modules/ticket/modules_ticket.php';
/**
* Class to manage the numbering module Simple for ticket references

View File

@@ -22,7 +22,7 @@
* \brief Fichier contenant la classe du modele de numerotation de reference de projet Universal
*/
require_once DOL_DOCUMENT_ROOT.'/core/modules/modules_ticket.php';
require_once DOL_DOCUMENT_ROOT.'/core/modules/ticket/modules_ticket.php';
/**
* Classe du modele de numerotation de reference de projet Universal
@@ -52,7 +52,7 @@ class mod_ticket_universal extends ModeleNumRefTicket
$texte .= '<form action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
$texte .= '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
$texte .= '<input type="hidden" name="action" value="updateMask">';
$texte .= '<input type="hidden" name="maskconstticket" value="TICKETSUP_UNIVERSAL_MASK">';
$texte .= '<input type="hidden" name="maskconstticket" value="TICKET_UNIVERSAL_MASK">';
$texte .= '<table class="nobordernopadding" width="100%">';
$tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("Ticket"), $langs->transnoentities("Ticket"));
@@ -63,7 +63,7 @@ class mod_ticket_universal extends ModeleNumRefTicket
// Parametrage du prefix
$texte .= '<tr><td>' . $langs->trans("Mask") . ':</td>';
$texte .= '<td align="right">' . $form->textwithpicto('<input type="text" class="flat" size="24" name="maskticket" value="' . $conf->global->TICKETSUP_UNIVERSAL_MASK . '">', $tooltip, 1, 1) . '</td>';
$texte .= '<td align="right">' . $form->textwithpicto('<input type="text" class="flat" size="24" name="maskticket" value="' . $conf->global->TICKET_UNIVERSAL_MASK . '">', $tooltip, 1, 1) . '</td>';
$texte .= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="' . $langs->trans("Modify") . '" name="Button"></td>';
@@ -109,7 +109,7 @@ class mod_ticket_universal extends ModeleNumRefTicket
include_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
// On defini critere recherche compteur
$mask = $conf->global->TICKETSUP_UNIVERSAL_MASK;
$mask = $conf->global->TICKET_UNIVERSAL_MASK;
if (!$mask) {
$this->error = 'NotConfigured';

View File

@@ -0,0 +1,120 @@
<?php
/* Copyright (C) 2010-2014 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* or see http://www.gnu.org/
*/
/**
* \file htdocs/core/modules/ticket/modules_ticket.php
* \ingroup project
* \brief File that contain parent class for projects models
* and parent class for projects numbering models
*/
/**
* Classe mere des modeles de numerotation des references de projets
*/
abstract class ModeleNumRefTicket
{
public $error = '';
/**
* Return if a module can be used or not
*
* @return boolean true if module can be used
*/
public function isEnabled()
{
return true;
}
/**
* Renvoi la description par defaut du modele de numerotation
*
* @return string Texte descripif
*/
public function info()
{
global $langs;
$langs->load("ticket");
return $langs->trans("NoDescription");
}
/**
* Renvoi un exemple de numerotation
*
* @return string Example
*/
public function getExample()
{
global $langs;
$langs->load("ticket");
return $langs->trans("NoExample");
}
/**
* Test si les numeros deja en vigueur dans la base ne provoquent pas de
* de conflits qui empechera cette numerotation de fonctionner.
*
* @return boolean false si conflit, true si ok
*/
public function canBeActivated()
{
return true;
}
/**
* Renvoi prochaine valeur attribuee
*
* @param Societe $objsoc Object third party
* @param Project $project Object project
* @return string Valeur
*/
public function getNextValue($objsoc, $project)
{
global $langs;
return $langs->trans("NotAvailable");
}
/**
* Renvoi version du module numerotation
*
* @return string Valeur
*/
public function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'development') {
return $langs->trans("VersionDevelopment");
}
if ($this->version == 'experimental') {
return $langs->trans("VersionExperimental");
}
if ($this->version == 'dolibarr') {
return DOL_VERSION;
}
if ($this->version) {
return $this->version;
}
return $langs->trans("NotAvailable");
}
}

View File

@@ -144,7 +144,7 @@ $langs->load("modulebuilder");
<table summary="listofattributes" class="border centpercent">
<!-- Label -->
<tr><td class="titlefield fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo GETPOST('label','alpha'); ?>"></td></tr>
<tr><td class="titlefield fieldrequired"><?php echo $langs->trans("LabelOrTranslationKey"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo GETPOST('label','alpha'); ?>"></td></tr>
<!-- Code -->
<tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><input type="text" name="attrname" id="attrname" size="10" value="<?php echo GETPOST('attrname','alpha'); ?>"> (<?php echo $langs->trans("AlphaNumOnlyLowerCharsAndNoSpace"); ?>)</td></tr>
<!-- Type -->
@@ -186,12 +186,15 @@ $langs->load("modulebuilder");
<tr class="extra_required"><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required"<?php echo (GETPOST('required','alpha')?' checked':''); ?>></td></tr>
<!-- Always editable -->
<tr class="extra_alwayseditable"><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable"<?php echo ((GETPOST('alwayseditable','alpha') || ! GETPOST('button','alpha'))?' checked':''); ?>></td></tr>
<?php if ($conf->multicompany->enabled) { ?>
<tr><td><?php echo $langs->trans("AllEntities"); ?></td><td class="valeur"><input id="entitycurrentorall" type="checkbox" name="entitycurrentorall"<?php echo (GETPOST('entitycurrentorall','alpha') ? '':' checked'); ?>></td></tr>
<?php } ?>
<!-- Visibility -->
<tr><td class="extra_list"><?php echo $form->textwithpicto($langs->trans("Visibility"), $langs->trans("VisibleDesc")); ?>
</td><td class="valeur"><input id="list" class="minwidth100" type="text" name="list" value="<?php echo GETPOST('list','int')!='' ? GETPOST('list','int') : '1'; ?>"></td></tr>
<!-- Help tooltip -->
<tr class="help"><td><?php echo $form->textwithpicto($langs->trans("HelpOnTooltip"), $langs->trans("HelpOnTooltipDesc")); ?></td><td class="valeur"><input id="help" class="quatrevingtpercent" type="text" name="help" value="<?php echo dol_escape_htmltag($help); ?>"></td></tr>
<?php if ($conf->multicompany->enabled) { ?>
<!-- Multicompany entity -->
<tr><td><?php echo $langs->trans("AllEntities"); ?></td><td class="valeur"><input id="entitycurrentorall" type="checkbox" name="entitycurrentorall"<?php echo (GETPOST('entitycurrentorall','alpha') ? '':' checked'); ?>></td></tr>
<?php } ?>
</table>
<?php dol_fiche_end(); ?>

View File

@@ -156,6 +156,7 @@ $param=$extrafields->attributes[$elementtype]['param'][$attrname];
$perms=$extrafields->attributes[$elementtype]['perms'][$attrname];
$langfile=$extrafields->attributes[$elementtype]['langfile'][$attrname];
$list=$extrafields->attributes[$elementtype]['list'][$attrname];
$help=$extrafields->attributes[$elementtype]['help'][$attrname];
$entitycurrentorall=$extrafields->attributes[$elementtype]['entityid'][$attrname];
if((($type == 'select') || ($type == 'checkbox') || ($type == 'radio')) && is_array($param))
@@ -176,7 +177,7 @@ elseif (($type== 'sellist') || ($type == 'chkbxlst') || ($type == 'link') || ($t
}
?>
<!-- Label -->
<tr><td class="titlefield fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo $label; ?>"></td></tr>
<tr><td class="titlefield fieldrequired"><?php echo $langs->trans("LabelOrTranslationKey"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo $label; ?>"></td></tr>
<!-- Code -->
<tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><?php echo $attrname; ?></td></tr>
<!-- Type -->
@@ -248,12 +249,15 @@ else
<tr class="extra_required"><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required"<?php echo ($required?' checked':''); ?>></td></tr>
<!-- Always editable -->
<tr class="extra_alwayseditable"><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable"<?php echo ($alwayseditable?' checked':''); ?>></td></tr>
<tr><td class="extra_list"><?php echo $form->textwithpicto($langs->trans("Visibility"), $langs->trans("VisibleDesc")); ?>
</td><td class="valeur"><input id="list" class="minwidth100" type="text" name="list" value="<?php echo ($list!=''?$list:'1'); ?>"></td></tr>
<!-- Help tooltip -->
<tr class="help"><td><?php echo $form->textwithpicto($langs->trans("HelpOnTooltip"), $langs->trans("HelpOnTooltipDesc")); ?></td><td class="valeur"><input id="help" class="quatrevingtpercent" type="text" name="help" value="<?php echo dol_escape_htmltag($help); ?>"></td></tr>
<?php if ($conf->multicompany->enabled) { ?>
<!-- Multicompany entity -->
<tr><td><?php echo $langs->trans("AllEntities"); ?></td><td class="valeur"><input id="entitycurrentorall" type="checkbox" name="entitycurrentorall"<?php echo (empty($entitycurrentorall) ?' checked':''); ?>></td></tr>
<?php } ?>
<!-- Visibility -->
<tr><td class="extra_list"><?php echo $form->textwithpicto($langs->trans("Visibility"), $langs->trans("VisibleDesc")); ?>
</td><td class="valeur"><input id="list" class="minwidth100" type="text" name="list" value="<?php echo ($list!=''?$list:'1'); ?>"></td></tr>
</table>
<?php dol_fiche_end(); ?>

View File

@@ -51,13 +51,13 @@ print '<tr class="liste_titre">';
print '<td align="left">'.$langs->trans("Position");
print '<span class="nowrap"><img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/1downarrow.png" alt="" title="A-Z" class="imgdown"></span>';
print '</td>';
print '<td>'.$langs->trans("Label").'</td>';
print '<td>'.$langs->trans("LabelOrTranslationKey").'</td>';
print '<td>'.$langs->trans("TranslationString").'</td>';
print '<td>'.$langs->trans("AttributeCode").'</td>';
print '<td>'.$langs->trans("Type").'</td>';
print '<td align="right">'.$langs->trans("Size").'</td>';
print '<td align="center">'.$langs->trans("Unique").'</td>';
print '<td>'.$langs->trans("ComputedFormula").'</td>';
print '<td align="center">'.$langs->trans("Unique").'</td>';
print '<td align="center">'.$langs->trans("Required").'</td>';
print '<td align="center">'.$langs->trans("AlwaysEditable").'</td>';
print '<td align="center">'.$form->textwithpicto($langs->trans("Visible"), $langs->trans("VisibleDesc")).'</td>';
@@ -83,8 +83,8 @@ if (is_array($extrafields->attributes[$elementtype]['type']) && count($extrafiel
print "<td>".$key."</td>\n";
print "<td>".$type2label[$extrafields->attributes[$elementtype]['type'][$key]]."</td>\n";
print '<td align="right">'.$extrafields->attributes[$elementtype]['size'][$key]."</td>\n";
print '<td align="center">'.yn($extrafields->attributes[$elementtype]['unique'][$key])."</td>\n";
print '<td>'.dol_trunc($extrafields->attributes[$elementtype]['computed'][$key], 20)."</td>\n";
print '<td align="center">'.yn($extrafields->attributes[$elementtype]['unique'][$key])."</td>\n";
print '<td align="center">'.yn($extrafields->attributes[$elementtype]['required'][$key])."</td>\n";
print '<td align="center">'.yn($extrafields->attributes[$elementtype]['alwayseditable'][$key])."</td>\n";
print '<td align="center">'.$extrafields->attributes[$elementtype]['list'][$key]."</td>\n";

View File

@@ -116,7 +116,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
$res = $userstat->fetch($object->fk_user_assign);
if ($res > 0)
{
if (empty($conf->global->TICKETS_DISABLE_ALL_MAILS))
if (empty($conf->global->TICKET_DISABLE_ALL_MAILS))
{
// Init to avoid errors
$filepath = array();
@@ -146,7 +146,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
$message = dol_nl2br($message);
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) {
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
}
@@ -157,7 +157,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
} else {
$result = $mailfile->sendfile();
}
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) {
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
}
}
@@ -182,9 +182,9 @@ class InterfaceTicketEmail extends DolibarrTriggers
// Send email to notification email
if (empty($conf->global->TICKETS_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']))
if (empty($conf->global->TICKET_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']))
{
$sendto = $conf->global->TICKETS_NOTIFICATION_EMAIL_TO;
$sendto = $conf->global->TICKET_NOTIFICATION_EMAIL_TO;
if ($sendto)
{
@@ -217,12 +217,12 @@ class InterfaceTicketEmail extends DolibarrTriggers
$message_admin.='<p>'.$langs->trans('Message').' : <br>'.$object->message.'</p>';
$message_admin.='<p><a href="'.dol_buildpath('/ticket/card.php', 2).'?track_id='.$object->track_id.'">'.$langs->trans('SeeThisTicketIntomanagementInterface').'</a></p>';
$from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKETS_NOTIFICATION_EMAIL_FROM.'>';
$from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKET_NOTIFICATION_EMAIL_FROM.'>';
$replyto = $from;
$message_admin = dol_nl2br($message_admin);
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) {
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
}
@@ -233,7 +233,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
} else {
$result=$mailfile->sendfile();
}
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) {
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
}
}
@@ -241,7 +241,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
// Send email to customer
if (empty($conf->global->TICKETS_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create)
if (empty($conf->global->TICKET_DISABLE_ALL_MAILS) && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create)
{
$sendto = '';
if (empty($user->socid) && empty($user->email)) {
@@ -287,16 +287,16 @@ class InterfaceTicketEmail extends DolibarrTriggers
$message_customer.='</ul>';
$message_customer.='<p>'.$langs->trans('Message').' : <br>'.$object->message.'</p>';
$url_public_ticket = ($conf->global->TICKETS_URL_PUBLIC_INTERFACE?$conf->global->TICKETS_URL_PUBLIC_INTERFACE.'/':dol_buildpath('/public/ticket/view.php', 2)).'?track_id='.$object->track_id;
$url_public_ticket = ($conf->global->TICKET_URL_PUBLIC_INTERFACE?$conf->global->TICKET_URL_PUBLIC_INTERFACE.'/':dol_buildpath('/public/ticket/view.php', 2)).'?track_id='.$object->track_id;
$message_customer.='<p>' . $langs->trans('TicketNewEmailBodyInfosTrackUrlCustomer') . ' : <a href="'.$url_public_ticket.'">'.$url_public_ticket.'</a></p>';
$message_customer.='<p>'.$langs->trans('TicketEmailPleaseDoNotReplyToThisEmail').'</p>';
$from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKETS_NOTIFICATION_EMAIL_FROM.'>';
$from = $conf->global->MAIN_INFO_SOCIETE_NOM.'<'.$conf->global->TICKET_NOTIFICATION_EMAIL_FROM.'>';
$replyto = $from;
$message_customer = dol_nl2br($message_customer);
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) {
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO;
$conf->global->MAIN_MAIL_AUTOCOPY_TO = '';
}
@@ -307,7 +307,7 @@ class InterfaceTicketEmail extends DolibarrTriggers
} else {
$result=$mailfile->sendfile();
}
if (!empty($conf->global->TICKETS_DISABLE_MAIL_AUTOCOPY_TO)) {
if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) {
$conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO;
}
}

View File

@@ -285,6 +285,8 @@ class EcmFiles extends CommonObject
*/
public function fetch($id, $ref = '', $relativepath = '', $hashoffile='', $hashforshare='', $src_object_type='', $src_object_id=0)
{
global $conf;
dol_syslog(__METHOD__, LOG_DEBUG);
$sql = 'SELECT';
@@ -317,25 +319,31 @@ class EcmFiles extends CommonObject
}*/
if ($relativepath) {
$sql .= " AND t.filepath = '" . $this->db->escape(dirname($relativepath)) . "' AND t.filename = '".$this->db->escape(basename($relativepath))."'";
$sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index
}
elseif (! empty($ref)) {
elseif (! empty($ref)) { // hash of file path
$sql .= " AND t.ref = '".$this->db->escape($ref)."'";
$sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index
}
elseif (! empty($hashoffile)) {
elseif (! empty($hashoffile)) { // hash of content
$sql .= " AND t.label = '".$this->db->escape($hashoffile)."'";
$sql .= " AND t.entity = ".$conf->entity; // unique key include the entity so each company has its own index
}
elseif (! empty($hashforshare)) {
$sql .= " AND t.share = '".$this->db->escape($hashforshare)."'";
//$sql .= " AND t.entity = ".$conf->entity; // hashforshare already unique
}
elseif ($src_object_type && $src_object_id)
{
$sql.= " AND t.src_object_type ='".$this->db->escape($src_object_type)."' AND t.src_object_id = ".$this->db->escape($src_object_id);
// Warning: May return several record, and only first one is returned !
$sql .= " AND t.src_object_type ='".$this->db->escape($src_object_type)."' AND t.src_object_id = ".$this->db->escape($src_object_id);
$sql .= " AND t.entity = ".$conf->entity;
}
else {
$sql .= ' AND t.rowid = '.$this->db->escape($id);
$sql .= ' AND t.rowid = '.$this->db->escape($id); // rowid already unique
}
// When we search on hash of content, we take the first one. Solve also hash conflict.
$this->db->plimit(1);
$this->db->plimit(1); // When we search on src or on hash of content (hashforfile) to solve hash conflict when several files has same content, we take first one only
$this->db->order('t.rowid', 'ASC');
$resql = $this->db->query($sql);

View File

@@ -309,8 +309,7 @@ if ($search_status != '' && $search_status >= 0) $sql.=" AND d.fk_statut IN (".$
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)
&& (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || empty($user->rights->expensereport->writeall_advance)))
{
$childids = $user->getAllChildIds();
$childids[]=$user->id;
$childids = $user->getAllChildIds(1);
$sql.= " AND d.fk_user_author IN (".join(',',$childids).")\n";
}
// Add where from extra fields
@@ -447,12 +446,15 @@ if ($resql)
print '<a href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$user_id.'" class="butAction">'.$langs->trans("Modify").'</a>';
}
$canedit=(($user->id == $user_id && $user->rights->expensereport->creer) || ($user->id != $user_id));
$childids = $user->getAllChildIds(1);
$canedit=((in_array($user_id, $childids) && $user->rights->expensereport->creer)
|| ($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->expensereport->writeall_advance));
// Boutons d'actions
if ($canedit)
{
print '<a href="'.DOL_URL_ROOT.'/expensereport/card.php?action=request&id='.$user_id.'" class="butAction">'.$langs->trans("AddTrip").'</a>';
print '<a href="'.DOL_URL_ROOT.'/expensereport/card.php?action=create&fk_user_author='.$fuser->id.'" class="butAction">'.$langs->trans("AddTrip").'</a>';
}
print '</div>';

View File

@@ -530,7 +530,7 @@ class ProductFournisseur extends Product
$sql.= " ,pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
$sql.= ", ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE pfp.entity IN (".getEntity('productprice').")";
$sql.= " WHERE pfp.entity IN (".getEntity('productsupplierprice').")";
$sql.= " AND pfp.fk_soc = s.rowid";
$sql.= " AND s.status=1"; // only enabled company selected
$sql.= " AND pfp.fk_product = ".$prodid;

View File

@@ -346,12 +346,12 @@ class Holiday extends CommonObject
$sql.= " AND cp.fk_user = uu.rowid AND cp.fk_validator = ua.rowid"; // Hack pour la recherche sur le tableau
$sql.= " AND cp.fk_user IN (".$user_id.")";
// Filtre de séléction
// Selection filter
if(!empty($filter)) {
$sql.= $filter;
}
// Ordre d'affichage du résultat
// Order of display of the result
if(!empty($order)) {
$sql.= $order;
}
@@ -359,19 +359,19 @@ class Holiday extends CommonObject
dol_syslog(get_class($this)."::fetchByUser", LOG_DEBUG);
$resql=$this->db->query($sql);
// Si pas d'erreur SQL
// If no SQL error
if ($resql) {
$i = 0;
$tab_result = $this->holiday;
$num = $this->db->num_rows($resql);
// Si pas d'enregistrement
// If no registration
if(!$num) {
return 2;
}
// Liste les enregistrements et les ajoutent au tableau
// List the records and add them to the table
while($i < $num) {
$obj = $this->db->fetch_object($resql);
@@ -412,13 +412,13 @@ class Holiday extends CommonObject
$i++;
}
// Retourne 1 avec le tableau rempli
// Returns 1 with the filled array
$this->holiday = $tab_result;
return 1;
}
else
{
// Erreur SQL
// SQL Error
$this->error="Error ".$this->db->lasterror();
return -1;
}
@@ -471,12 +471,12 @@ class Holiday extends CommonObject
$sql.= " WHERE cp.entity IN (".getEntity('holiday').")";
$sql.= " AND cp.fk_user = uu.rowid AND cp.fk_validator = ua.rowid "; // Hack pour la recherche sur le tableau
// Filtrage de séléction
// Selection filtering
if(!empty($filter)) {
$sql.= $filter;
}
// Ordre d'affichage
// order of display
if(!empty($order)) {
$sql.= $order;
}
@@ -484,19 +484,19 @@ class Holiday extends CommonObject
dol_syslog(get_class($this)."::fetchAll", LOG_DEBUG);
$resql=$this->db->query($sql);
// Si pas d'erreur SQL
// If no SQL error
if ($resql) {
$i = 0;
$tab_result = $this->holiday;
$num = $this->db->num_rows($resql);
// Si pas d'enregistrement
// If no registration
if(!$num) {
return 2;
}
// On liste les résultats et on les ajoutent dans le tableau
// List the records and add them to the table
while($i < $num) {
$obj = $this->db->fetch_object($resql);
@@ -536,13 +536,13 @@ class Holiday extends CommonObject
$i++;
}
// Retourne 1 et ajoute le tableau à la variable
// Returns 1 and adds the array to the variable
$this->holiday = $tab_result;
return 1;
}
else
{
// Erreur SQL
// SQL Error
$this->error="Error ".$this->db->lasterror();
return -1;
}

View File

@@ -40,7 +40,7 @@ $langs->setDefaultLang($setuplang);
$langs->load("install");
// Now we load forced value from install.forced.php file.
// Now we load forced/pre-set values from install.forced.php file.
$useforcedwizard=false;
$forcedfile="./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php";
@@ -49,14 +49,14 @@ if (@file_exists($forcedfile)) {
include_once $forcedfile;
}
dolibarr_install_syslog("--- check: Dolibarr install/upgrade process started");
dolibarr_install_syslog("- check: Dolibarr install/upgrade process started");
/*
* View
*/
pHeader('',''); // No next step for navigation buttons. Next step is defined by clik on links.
pHeader('',''); // No next step for navigation buttons. Next step is defined by click on links.
//print "<br>\n";
@@ -233,13 +233,13 @@ else
else dolibarr_install_syslog("check: failed to create a new file " . $conffile . " into current dir " . getcwd() . ". Please check permissions.", LOG_ERR);
}
// First install, we can't upgrade
// First install: no upgrade necessary/required
$allowupgrade=false;
}
// File is missng and can't be created
// File is missing and cannot be created
if (! file_exists($conffile))
{
print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ConfFileDoesNotExistsAndCouldNotBeCreated",$conffiletoshow);
@@ -258,7 +258,7 @@ else
$allowinstall=0;
}
// File exists but can't be modified
// File exists but cannot be modified
elseif (!is_writable($conffile))
{
if ($confexists)
@@ -294,7 +294,7 @@ else
}
print "<br>\n";
// Requirements ok, we display the next step button
// Requirements met/all ok: display the next step button
if ($checksok)
{
$ok=0;
@@ -307,7 +307,7 @@ else
{
if (! file_exists($dolibarr_main_document_root."/core/lib/admin.lib.php"))
{
print '<font class="error">A '.$conffiletoshow.' file exists with a dolibarr_main_document_root to '.$dolibarr_main_document_root.' that seems wrong. Try to fix or remove the '.$conffiletoshow.' file.</font><br>'."\n";
print '<span class="error">A '.$conffiletoshow.' file exists with a dolibarr_main_document_root to '.$dolibarr_main_document_root.' that seems wrong. Try to fix or remove the '.$conffiletoshow.' file.</span><br>'."\n";
dol_syslog("A '" . $conffiletoshow . "' file exists with a dolibarr_main_document_root to " . $dolibarr_main_document_root . " that seems wrong. Try to fix or remove the '" . $conffiletoshow . "' file.", LOG_WARNING);
}
else
@@ -326,7 +326,7 @@ else
else $dolibarr_main_db_pass = dol_decode($dolibarr_main_db_encrypted_pass);
}
// $conf is already instancied inside inc.php
// $conf already created in inc.php
$conf->db->type = $dolibarr_main_db_type;
$conf->db->host = $dolibarr_main_db_host;
$conf->db->port = $dolibarr_main_db_port;
@@ -342,7 +342,7 @@ else
}
}
// If a database access is available, we set more variable
// If database access is available, we set more variables
if ($ok)
{
if (empty($dolibarr_main_db_encryption)) $dolibarr_main_db_encryption=0;
@@ -364,8 +364,8 @@ else
// Show title
if (! empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ! empty($conf->global->MAIN_VERSION_LAST_INSTALL))
{
print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.(empty($conf->global->MAIN_VERSION_LAST_UPGRADE)?$conf->global->MAIN_VERSION_LAST_INSTALL:$conf->global->MAIN_VERSION_LAST_UPGRADE).'</font></b><br>';
print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b>';
print $langs->trans("VersionLastUpgrade").': <b><span class="ok">'.(empty($conf->global->MAIN_VERSION_LAST_UPGRADE)?$conf->global->MAIN_VERSION_LAST_INSTALL:$conf->global->MAIN_VERSION_LAST_UPGRADE).'</span></b><br>';
print $langs->trans("VersionProgram").': <b><span class="ok">'.DOL_VERSION.'</span></b>';
//print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired"));
print '<br>';
print '<br>';
@@ -375,7 +375,7 @@ else
print $langs->trans("InstallEasy")." ";
print $langs->trans("ChooseYourSetupMode");
print '<br><br>';
print '<br>';
$foundrecommandedchoice=0;
@@ -383,9 +383,9 @@ else
$notavailable_choices = array();
// Show first install line
$choice = '<tr class="listofchoices"><td class="listofchoices nowrap" align="center"><b>'.$langs->trans("FreshInstall").'</b>';
$choice = "\n".'<tr><td class="nowrap center"><b>'.$langs->trans("FreshInstall").'</b>';
$choice .= '</td>';
$choice .= '<td class="listofchoices listofchoicesdesc">';
$choice .= '<td class="listofchoicesdesc">';
$choice .= $langs->trans("FreshInstallDesc");
if (empty($dolibarr_main_db_host)) // This means install process was not run
{
@@ -397,7 +397,7 @@ else
}
$choice .= '</td>';
$choice .= '<td class="listofchoices" align="center">';
$choice .= '<td class="center">';
if ($allowinstall)
{
$choice .= '<a class="button" href="fileconf.php?selectlang='.$setuplang.'">'.$langs->trans("Start").'</a>';
@@ -465,7 +465,7 @@ else
if ($ok)
{
if (count($dolibarrlastupgradeversionarray) >= 2) // If a database access is available and last upgrade version is known
if (count($dolibarrlastupgradeversionarray) >= 2) // If database access is available and last upgrade version is known
{
// Now we check if this is the first qualified choice
if ($allowupgrade && empty($foundrecommandedchoice) &&
@@ -477,22 +477,23 @@ else
}
}
else {
// We can not recommand a choice.
// We cannot recommend a choice.
// A version of install may be known, but we need last upgrade.
}
}
$choice .= '<tr class="listofchoices '.($recommended_choice ? 'choiceselected' : '').'">';
$choice .= '<td class="listofchoices nowrap" align="center"><b>'.$langs->trans("Upgrade").'<br>'.$newversionfrom.$newversionfrombis.' -> '.$newversionto.'</b></td>';
$choice .= '<td class="listofchoices listofchoicesdesc">';
$choice .= "\n".'<tr'.($recommended_choice ? ' class="choiceselected"' : '').'>';
$choice .= '<td class="nowrap center"><b>'.$langs->trans("Upgrade").'<br>'.$newversionfrom.$newversionfrombis.' -> '.$newversionto.'</b></td>';
$choice .= '<td class="listofchoicesdesc">';
$choice .= $langs->trans("UpgradeDesc");
if ($recommended_choice)
{
$choice .= '<br>';
//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
$choice .= '<div class="center"><div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div>';
if ($count < count($migarray)) // There is other choices after
$choice .= '<div class="center">';
$choice .= '<div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div>';
if ($count < count($migarray)) // There are other choices after
{
print $langs->trans("MigrateIsDoneStepByStep",DOL_VERSION);
}
@@ -500,7 +501,7 @@ else
}
$choice .= '</td>';
$choice .= '<td class="listofchoices" align="center">';
$choice .= '<td class="center">';
if ($allowupgrade)
{
$disabled=false;
@@ -512,8 +513,14 @@ else
{
$foundrecommandedchoice = 2;
}
if ($disabled) $choice .= '<span class="buttonDisable runupgrade"'.($disabled?' disabled="disabled"':'').' href="#">'.$langs->trans("NotAvailable").'</span>';
else $choice .= '<a class="button runupgrade"'.($disabled?' disabled="disabled"':'').' href="upgrade.php?action=upgrade'.($count<count($migrationscript)?'_'.$versionto:'').'&amp;selectlang='.$setuplang.'&amp;versionfrom='.$versionfrom.'&amp;versionto='.$versionto.'">'.$langs->trans("Start").'</a>';
if ($disabled)
{
$choice .= '<span class="button">'.$langs->trans("NotAvailable").'</span>';
}
else
{
$choice .= '<a class="button runupgrade" href="upgrade.php?action=upgrade'.($count<count($migrationscript)?'_'.$versionto:'').'&amp;selectlang='.$setuplang.'&amp;versionfrom='.$versionfrom.'&amp;versionto='.$versionto.'">'.$langs->trans("Start").'</a>';
}
}
else
{
@@ -537,28 +544,28 @@ else
}
// Array of install choices
print"\n";
print '<table width="100%" class="listofchoices">';
foreach ($available_choices as $choice) {
print $choice;
}
print '</table>';
print '</table>'."\n";
if (count($notavailable_choices)) {
print '<br>';
print '<div id="AShowChoices">';
print '<img src="../theme/eldy/img/1downarrow.png"> <a href="#">'.$langs->trans('ShowNotAvailableOptions').'</a>';
print '</div>';
print '<div id="navail_choices" style="display:none">';
print '<br>';
print "<br>\n";
print '<table width="100%" class="listofchoices">';
foreach ($notavailable_choices as $choice) {
print $choice;
}
print '</table>';
print '</table>'."\n";
print '</div>';
}
@@ -590,6 +597,5 @@ $(".runupgrade").click(function() {
</script>';
dolibarr_install_syslog("--- check: end");
dolibarr_install_syslog("- check: end");
pFooter(1); // Never display next button

View File

@@ -199,7 +199,7 @@ input:-webkit-autofill {
-webkit-box-shadow: 0 0 0 50px #FBFFEA inset;
}
table.listofchoices, tr.listofchoices, td.listofchoices {
table.listofchoices, table.listofchoices tr, table.listofchoices td {
border-collapse: collapse;
padding: 4px;
color: #000000;
@@ -207,9 +207,6 @@ table.listofchoices, tr.listofchoices, td.listofchoices {
line-height: 18px;
}
tr.listofchoices {
height: 42px;
}
.listofchoicesdesc {
color: #999 !important;
}
@@ -230,7 +227,7 @@ tr.listofchoices {
div.ok {
color: #114466;
}
font.ok {
span.ok {
color: #114466;
}
@@ -238,7 +235,7 @@ font.ok {
div.warning {
color: #777711;
}
font.warning {
span.warning {
color: #777711;
}
@@ -249,7 +246,7 @@ div.error {
padding: 0.2em 0.2em 0.2em 0;
margin: 0.5em 0 0.5em 0;
}
font.error {
span.error {
color: #550000;
font-weight: bold;
}

View File

@@ -24,7 +24,7 @@
/**
* \file htdocs/install/fileconf.php
* \ingroup install
* \brief Ask all informations required to build Dolibarr htdocs/conf/conf.php file (will be wrote on disk on next page step1)
* \brief Ask all information required to build Dolibarr htdocs/conf/conf.php file (will be written to disk on next page step1)
*/
include_once 'inc.php';
@@ -39,7 +39,7 @@ $langs->setDefaultLang($setuplang);
$langs->load("install");
$langs->load("errors");
dolibarr_install_syslog("--- fileconf: entering fileconf.php page");
dolibarr_install_syslog("- fileconf: entering fileconf.php page");
// You can force preselected values of the config step of Dolibarr by adding a file
// install.forced.php into directory htdocs/install (This is the case with some wizard
@@ -56,7 +56,7 @@ if (! isset($force_install_databaselogin)) $force_install_databaselogin='';
if (! isset($force_install_databasepass)) $force_install_databasepass='';
if (! isset($force_install_databaserootlogin)) $force_install_databaserootlogin='';
if (! isset($force_install_databaserootpass)) $force_install_databaserootpass='';
// Now we load forced value from install.forced.php file.
// Now we load forced values from install.forced.php file.
$useforcedwizard=false;
$forcedfile="./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; // Must be after inc.php
@@ -71,7 +71,7 @@ if (@file_exists($forcedfile)) {
* View
*/
session_start(); // To be able to keep info into session (used for not loosing pass during navigation. pass must not transit throug parmaeters)
session_start(); // To be able to keep info into session (used for not losing pass during navigation. pass must not transit through parmaeters)
pHeader($langs->trans("ConfigurationFile"), "step1", "set", "", (empty($force_dolibarr_js_JQUERY)?'':$force_dolibarr_js_JQUERY.'/'), 'main-inside-bis');
@@ -80,7 +80,7 @@ if (! is_writable($conffile))
{
print $langs->trans("ConfFileIsNotWritable", $conffiletoshow);
dolibarr_install_syslog("fileconf: config file is not writable", LOG_WARNING);
dolibarr_install_syslog("--- fileconf: end");
dolibarr_install_syslog("- fileconf: end");
pFooter(1,$setuplang,'jscheckparam');
exit;
}
@@ -117,20 +117,18 @@ if (! empty($force_install_message))
<!-- Documents root $dolibarr_main_document_root -->
<tr>
<?php
print '<td class="tdtop label"><b>';
print $langs->trans("WebPagesDirectory");
print "</b></td>";
<td class="label"><label for="main_dir"><b><?php print $langs->trans("WebPagesDirectory"); ?></b></label></td>
<?php
if (empty($dolibarr_main_url_root)) {
$dolibarr_main_document_root = detect_dolibarr_main_document_root();
}
?>
<td class="label tdtop">
<td class="label">
<input type="text"
class="minwidth300"
value="<?php print $dolibarr_main_document_root ?>"
name="main_dir"
id="main_dir"
name="main_dir"
value="<?php print $dolibarr_main_document_root ?>"
<?php if (!empty($force_install_noedit)) {
print ' disabled';
} ?>
@@ -149,19 +147,19 @@ if (! empty($force_install_message))
<!-- Documents URL $dolibarr_main_data_root -->
<tr>
<td class="tdtop label"><b> <?php print $langs->trans("DocumentsDirectory"); ?></b>
</td>
<td class="label"><label for="main_data_dir"><b><?php print $langs->trans("DocumentsDirectory"); ?></b></label></td>
<?php
$dolibarr_main_data_root = @$force_install_main_data_root;
if (empty($dolibarr_main_data_root)) {
$dolibarr_main_data_root = detect_dolibarr_main_data_root($dolibarr_main_document_root);
}
?>
<td class="label tdtop">
<td class="label">
<input type="text"
class="minwidth300"
value="<?php print $dolibarr_main_data_root ?>"
name="main_data_dir"
id="main_data_dir"
name="main_data_dir"
value="<?php print $dolibarr_main_data_root ?>"
<?php if (!empty($force_install_noedit)) {
print ' disabled';
} ?>
@@ -186,12 +184,13 @@ if (! empty($force_install_message))
}
?>
<tr>
<td class="tdtop label"><b> <?php echo $langs->trans("URLRoot"); ?></b>
<td class="label"><label for="main_url"><b><?php echo $langs->trans("URLRoot"); ?></b></label>
</td>
<td class="tdtop label">
<td class="label">
<input type="text"
class="minwidth300"
name="main_url"
id="main_url"
name="main_url"
value="<?php print $dolibarr_main_url_root; ?> "
<?php if (!empty($force_install_noedit)) {
print ' disabled';
@@ -210,10 +209,11 @@ if (! empty($force_install_message))
if (! empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') { // Enabled if the installation process is "https://"
?>
<tr>
<td class="tdtop label"><?php echo $langs->trans("ForceHttps"); ?></td>
<td class="label tdtop">
<input type="checkbox"
name="main_force_https"
<td class="label"><label for="main_force_https"><?php echo $langs->trans("ForceHttps"); ?></label></td>
<td class="label">
<input type="checkbox"
id="main_force_https"
name="main_force_https"
<?php if (!empty($force_install_mainforcehttps)) {
print ' checked';
} ?>
@@ -239,11 +239,11 @@ if (! empty($force_install_message))
</tr>
<tr>
<td class="label tdtop"><b> <?php echo $langs->trans("DatabaseName"); ?>
</b></td>
<td class="label tdtop">
<input type="text" id="db_name"
name="db_name"
<td class="label"><label for="db_name"><b><?php echo $langs->trans("DatabaseName"); ?></b></label></td>
<td class="label">
<input type="text"
id="db_name"
name="db_name"
value="<?php echo (!empty($dolibarr_main_db_name)) ? $dolibarr_main_db_name : ($force_install_database ? $force_install_database : 'dolibarr'); ?>"
<?php if ($force_install_noedit == 2 && $force_install_database !== null) {
print ' disabled';
@@ -262,8 +262,7 @@ if (! empty($force_install_message))
?>
<tr>
<!-- Driver type -->
<td class="tdtop label"><b> <?php echo $langs->trans("DriverType"); ?>
</b></td>
<td class="label"><label for="db_type"><b><?php echo $langs->trans("DriverType"); ?></b></label></td>
<td class="label">
<?php
@@ -338,10 +337,10 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite">
<td class="tdtop label"><b> <?php echo $langs->trans("DatabaseServer"); ?>
</b></td>
<td class="tdtop label">
<td class="label"><label for="db_host"><b><?php echo $langs->trans("DatabaseServer"); ?></b></label></td>
<td class="label">
<input type="text"
id="db_host"
name="db_host"
value="<?php print (!empty($force_install_dbserver) ? $force_install_dbserver : (!empty($dolibarr_main_db_host) ? $dolibarr_main_db_host : 'localhost')); ?>"
<?php if ($force_install_noedit == 2 && $force_install_dbserver !== null) {
@@ -355,8 +354,8 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite">
<td class="tdtop label"><?php echo $langs->trans("Port"); ?></td>
<td class="tdtop label">
<td class="label"><label for="db_port"><?php echo $langs->trans("Port"); ?></label></td>
<td class="label">
<input type="text"
name="db_port"
id="db_port"
@@ -372,10 +371,10 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite">
<td class="label tdtop"><?php echo $langs->trans("DatabasePrefix"); ?>
</td>
<td class="label tdtop">
<input type="text" id="db_prefix"
<td class="label"><label for="db_prefix"><?php echo $langs->trans("DatabasePrefix"); ?></label></td>
<td class="label">
<input type="text"
id="db_prefix"
name="db_prefix"
value="<?php echo(!empty($force_install_prefix) ? $force_install_prefix : (!empty($dolibarr_main_db_prefix) ? $dolibarr_main_db_prefix : 'llx_')); ?>"
<?php if ($force_install_noedit == 2 && $force_install_prefix !== null) {
@@ -387,9 +386,8 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite">
<td class="label tdtop"><?php echo $langs->trans("CreateDatabase"); ?>
</td>
<td class="label tdtop">
<td class="label"><label for="db_create_database"><?php echo $langs->trans("CreateDatabase"); ?></label></td>
<td class="label">
<input type="checkbox"
id="db_create_database"
name="db_create_database"
@@ -406,10 +404,10 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite">
<td class="label tdtop"><b><?php echo $langs->trans("Login"); ?></b>
</td>
<td class="label tdtop">
<input type="text" id="db_user"
<td class="label"><label for="db_user"><b><?php echo $langs->trans("Login"); ?></b></label></td>
<td class="label">
<input type="text"
id="db_user"
name="db_user"
value="<?php print (!empty($force_install_databaselogin)) ? $force_install_databaselogin : $dolibarr_main_db_user; ?>"
<?php if ($force_install_noedit == 2 && $force_install_databaselogin !== null) {
@@ -421,10 +419,10 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite">
<td class="label tdtop"><b><?php echo $langs->trans("Password"); ?></b>
</td>
<td class="label tdtop">
<input type="password" id="db_pass" autocomplete="off"
<td class="label"><label for="db_pass"><b><?php echo $langs->trans("Password"); ?></b></label></td>
<td class="label">
<input type="password"
id="db_pass" autocomplete="off"
name="db_pass"
value="<?php
// If $force_install_databasepass is on, we don't want to set password, we just show '***'. Real value will be extracted from the forced install file at step1.
@@ -443,11 +441,11 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite">
<td class="label tdtop"><?php echo $langs->trans("CreateUser"); ?>
</td>
<td class="label tdtop">
<td class="label"><label for="db_create_user"><?php echo $langs->trans("CreateUser"); ?></label></td>
<td class="label">
<input type="checkbox"
id="db_create_user" name="db_create_user"
id="db_create_user"
name="db_create_user"
<?php if (!empty($force_install_createuser)) {
print ' checked';
} ?>
@@ -473,8 +471,8 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite hideroot">
<td class="label tdtop"><b><?php echo $langs->trans("Login"); ?></b></td>
<td class="label tdtop">
<td class="label"><label for="db_user_root"><b><?php echo $langs->trans("Login"); ?></b></label></td>
<td class="label">
<input type="text"
id="db_user_root"
name="db_user_root"
@@ -497,9 +495,8 @@ if (! empty($force_install_message))
</tr>
<tr class="hidesqlite hideroot">
<td class="label tdtop"><b><?php echo $langs->trans("Password"); ?></b>
</td>
<td class="label tdtop">
<td class="label"><label for="db_pass_root"><b><?php echo $langs->trans("Password"); ?></b></label></td>
<td class="label">
<input type="password"
autocomplete="off"
id="db_pass_root"
@@ -648,5 +645,5 @@ function jscheckparam()
// $db->close(); Not database connexion yet
dolibarr_install_syslog("--- fileconf: end");
dolibarr_install_syslog("- fileconf: end");
pFooter($err,$setuplang,'jscheckparam');

View File

@@ -149,7 +149,7 @@ if ($suburi == '/') $suburi = ''; // If $suburi is /, it is now ''
define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...)
if (empty($conf->file->character_set_client)) $conf->file->character_set_client="UTF-8";
if (empty($conf->file->character_set_client)) $conf->file->character_set_client="utf-8";
if (empty($conf->db->character_set)) $conf->db->character_set='utf8';
if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_unicode_ci';
if (empty($conf->db->dolibarr_main_db_encryption)) $conf->db->dolibarr_main_db_encryption=0;

View File

@@ -55,7 +55,7 @@ print '<br><br><div class="center">';
print '<table>';
print '<tr>';
print '<td>'.$langs->trans("DefaultLanguage").' : </td><td align="left">';
print '<td>'.$langs->trans("DefaultLanguage").' : </td><td>';
print $formadmin->select_language('auto','selectlang',1,0,0,1);
print '</td>';
print '</tr>';

View File

@@ -43,6 +43,8 @@ ALTER TABLE llx_website_page ADD COLUMN fk_user_create integer;
ALTER TABLE llx_website_page ADD COLUMN fk_user_modif integer;
ALTER TABLE llx_website_page ADD COLUMN type_container varchar(16) NOT NULL DEFAULT 'page';
ALTER TABLE llx_ecm_files DROP INDEX uk_ecm_files;
ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (filepath, filename, entity);
-- drop very old table (bad name)
@@ -84,6 +86,9 @@ INSERT INTO llx_accounting_system (fk_country, pcg_version, label, active) VALUE
-- For 8.0
DROP TABLE llx_website_account;
DROP TABLE llx_website_account_extrafields;
ALTER TABLE llx_paiementfourn ADD COLUMN fk_user_modif integer AFTER fk_user_author;
-- delete old permission no more used

View File

@@ -17,7 +17,7 @@
-- ============================================================================
ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (filepath, filename);
ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (filepath, filename, entity);
ALTER TABLE llx_ecm_files ADD INDEX idx_ecm_files_label (label);
--ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files_fullpath(fullpath); Disabled, mysql limits size of index

View File

@@ -13,7 +13,8 @@
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see http://www.gnu.org/licenses/.
--
-- Table to store accounts of thirdparties on websites
-- Table to store accounts of thirdparties on external websites (like on stripe field site = 'stripe')
-- or on local website (fk_website).
CREATE TABLE llx_societe_account(
-- BEGIN MODULEBUILDER FIELDS

View File

@@ -1,29 +0,0 @@
-- Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see http://www.gnu.org/licenses/.
-- BEGIN MODULEBUILDER INDEXES
ALTER TABLE llx_website_account ADD INDEX idx_website_account_rowid (rowid);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_login (login);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_import_key (import_key);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_status (status);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_fk_soc (fk_soc);
ALTER TABLE llx_website_account ADD INDEX idx_website_account_fk_website (fk_website);
-- END MODULEBUILDER INDEXES
ALTER TABLE llx_website_account ADD UNIQUE INDEX uk_website_account_login_website_soc(login, fk_website, fk_soc);
ALTER TABLE llx_website_account ADD CONSTRAINT llx_website_account_fk_website FOREIGN KEY (fk_website) REFERENCES llx_website(rowid);

View File

@@ -1,36 +0,0 @@
-- Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see http://www.gnu.org/licenses/.
CREATE TABLE llx_website_account(
-- BEGIN MODULEBUILDER FIELDS
rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL,
login varchar(64) NOT NULL,
pass_encoding varchar(24) NOT NULL,
pass_crypted varchar(128),
pass_temp varchar(128), -- temporary password when asked for forget password
fk_soc integer,
fk_website integer NOT NULL,
note_private text,
date_last_login datetime,
date_previous_login datetime,
date_creation datetime NOT NULL,
tms timestamp NOT NULL,
fk_user_creat integer NOT NULL,
fk_user_modif integer,
import_key varchar(14),
status integer
-- END MODULEBUILDER FIELDS
) ENGINE=innodb;

View File

@@ -549,11 +549,11 @@ if ($ok && GETPOST('clean_menus','alpha'))
dol_print_error($db);
}
else
print ' - <font class="warning">Cleaned</font>';
print ' - <span class="warning">Cleaned</span>';
}
else
{
print ' - <font class="warning">Canceled (test mode)</font>';
print ' - <span class="warning">Canceled (test mode)</span>';
}
}
else
@@ -982,11 +982,11 @@ if ($ok && GETPOST('force_disable_of_modules_not_found','alpha'))
dol_print_error($db);
}
else
print ' - <font class="warning">Cleaned</font>';
print ' - <span class="warning">Cleaned</span>';
}
else
{
print ' - <font class="warning">Canceled (test mode)</font>';
print ' - <span class="warning">Canceled (test mode)</span>';
}
}
else

View File

@@ -46,7 +46,7 @@ $main_dir = GETPOST('main_dir')?GETPOST('main_dir'):(empty($argv[3])?'':$argv[3]
$main_data_dir = GETPOST('main_data_dir') ? GETPOST('main_data_dir') : (empty($argv[4])? ($main_dir . '/documents') :$argv[4]);
// Dolibarr root URL
$main_url = GETPOST('main_url')?GETPOST('main_url'):(empty($argv[5])?'':$argv[5]);
// Database login informations
// Database login information
$userroot=GETPOST('db_user_root','alpha')?GETPOST('db_user_root','alpha'):(empty($argv[6])?'':$argv[6]);
$passroot=GETPOST('db_pass_root','none')?GETPOST('db_pass_root','none'):(empty($argv[7])?'':$argv[7]);
// Database server
@@ -68,18 +68,18 @@ $main_alt_dir_name = ((GETPOST("main_alt_dir_name",'alpha') && GETPOST("main_alt
session_start(); // To be able to keep info into session (used for not losing password during navigation. The password must not transit through parameters)
// Save a flag to tell to restore input value if we do back
// Save a flag to tell to restore input value if we go back
$_SESSION['dol_save_pass']=$db_pass;
//$_SESSION['dol_save_passroot']=$passroot;
// Now we load forced value from install.forced.php file.
// Now we load forced values from install.forced.php file.
$useforcedwizard=false;
$forcedfile="./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php";
if (@file_exists($forcedfile)) {
$useforcedwizard = true;
include_once $forcedfile;
// If forced install is enabled, let's replace post values. These are empty because form fields are disabled.
// If forced install is enabled, replace the post values. These are empty because form fields are disabled.
if ($force_install_noedit) {
$main_dir = detect_dolibarr_main_document_root();
if (!empty($force_install_main_data_root)) {
@@ -204,7 +204,7 @@ if (! $error) {
$result=@include_once $main_dir."/core/db/".$db_type.'.class.php';
if ($result)
{
// If we ask database or user creation we need to connect as root, so we need root login
// If we require database or user creation we need to connect as root, so we need root login credentials
if (!empty($db_create_database) && !$userroot) {
print '<div class="error">'.$langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$db_name).'</div>';
print '<br>';
@@ -397,7 +397,7 @@ if (! $error && $db->connected && $action == "set")
print "<tr><td>".$langs->trans("ErrorDirDoesNotExists",$main_data_dir);
print ' '.$langs->trans("YouMustCreateItAndAllowServerToWrite");
print '</td><td>';
print '<font class="error">'.$langs->trans("Error").'</font>';
print '<span class="error">'.$langs->trans("Error").'</span>';
print "</td></tr>";
print '<tr><td colspan="2"><br>'.$langs->trans("CorrectProblemAndReloadPage",$_SERVER['PHP_SELF'].'?testget=ok').'</td></tr>';
$error++;
@@ -420,7 +420,7 @@ if (! $error && $db->connected && $action == "set")
}
}
// Les documents sont en dehors de htdocs car ne doivent pas pouvoir etre telecharges en passant outre l'authentification
// Documents are stored above the web pages root to prevent being downloaded without authentification
$dir=array();
$dir[] = $main_data_dir."/mycompany";
$dir[] = $main_data_dir."/medias";
@@ -431,7 +431,7 @@ if (! $error && $db->connected && $action == "set")
$dir[] = $main_data_dir."/produit";
$dir[] = $main_data_dir."/doctemplates";
// Boucle sur chaque repertoire de dir[] pour les creer s'ils nexistent pas
// Loop on each directory of dir [] to create them if they do not exist
$num=count($dir);
for ($i = 0; $i < $num; $i++)
{
@@ -469,7 +469,7 @@ if (! $error && $db->connected && $action == "set")
print "<tr><td>".$langs->trans("ErrorDirDoesNotExists",$main_data_dir);
print ' '.$langs->trans("YouMustCreateItAndAllowServerToWrite");
print '</td><td>';
print '<font class="error">'.$langs->trans("Error").'</font>';
print '<span class="error">'.$langs->trans("Error").'</span>';
print "</td></tr>";
print '<tr><td colspan="2"><br>'.$langs->trans("CorrectProblemAndReloadPage",$_SERVER['PHP_SELF'].'?testget=ok').'</td></tr>';
}
@@ -519,7 +519,7 @@ if (! $error && $db->connected && $action == "set")
// Save old conf file on disk
if (file_exists("$conffile"))
{
// We must ignore errors as an existing old file may already exists and not be replacable or
// We must ignore errors as an existing old file may already exist and not be replaceable or
// the installer (like for ubuntu) may not have permission to create another file than conf.php.
// Also no other process must be able to read file or we expose the new file, so content with password.
@dol_copy($conffile, $conffile.'.old', '0400');
@@ -539,7 +539,7 @@ if (! $error && $db->connected && $action == "set")
print '</td>';
print '<td><img src="../theme/eldy/img/tick.png" alt="Ok"></td></tr>';
// Si creation utilisateur admin demandee, on le cree
// Create database user if requested
if (isset($db_create_user) && ($db_create_user == "1" || $db_create_user == "on")) {
dolibarr_install_syslog("step1: create database user: " . $dolibarr_main_db_user);
@@ -558,7 +558,7 @@ if (! $error && $db->connected && $action == "set")
$databasefortest='master';
}
// Creation handler de base, verification du support et connexion
// Check database connection
$db=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,$databasefortest,$conf->db->port);
@@ -629,7 +629,7 @@ if (! $error && $db->connected && $action == "set")
print '<td><img src="../theme/eldy/img/error.png" alt="Error"></td>';
print '</tr>';
// Affiche aide diagnostique
// warning message due to connection failure
print '<tr><td colspan="2"><br>';
print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot);
print '<br>';
@@ -640,10 +640,10 @@ if (! $error && $db->connected && $action == "set")
$error++;
}
}
} // Fin si "creation utilisateur"
} // end of user account creation
// If database creation is asked, we create it
// If database creation was asked, we create it
if (!$error && (isset($db_create_database) && ($db_create_database == "1" || $db_create_database == "on"))) {
dolibarr_install_syslog("step1: create database: " . $dolibarr_main_db_name . " " . $dolibarr_main_db_character_set . " " . $dolibarr_main_db_collation . " " . $dolibarr_main_db_user);
$newdb=getDoliDBInstance($conf->db->type,$conf->db->host,$userroot,$passroot,'',$conf->db->port);
@@ -672,7 +672,7 @@ if (! $error && $db->connected && $action == "set")
}
else
{
// Affiche aide diagnostique
// warning message
print '<tr><td colspan="2"><br>';
print $langs->trans("ErrorFailedToCreateDatabase",$dolibarr_main_db_name).'<br>';
print $newdb->lasterror().'<br>';
@@ -693,7 +693,7 @@ if (! $error && $db->connected && $action == "set")
print '<td><img src="../theme/eldy/img/error.png" alt="Error"></td>';
print '</tr>';
// Affiche aide diagnostique
// warning message
print '<tr><td colspan="2"><br>';
print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot);
print '<br>';
@@ -703,7 +703,7 @@ if (! $error && $db->connected && $action == "set")
$error++;
}
} // Fin si "creation database"
} // end of create database
// We test access with dolibarr database user (not admin)
@@ -724,7 +724,7 @@ if (! $error && $db->connected && $action == "set")
print '<img src="../theme/eldy/img/tick.png" alt="Ok">';
print "</td></tr>";
// si acces serveur ok et acces base ok, tout est ok, on ne va pas plus loin, on a meme pas utilise le compte root.
// server access ok, basic access ok
if ($db->database_selected)
{
dolibarr_install_syslog("step1: connection to database " . $conf->db->name . " by user " . $conf->db->user . " ok");
@@ -747,7 +747,7 @@ if (! $error && $db->connected && $action == "set")
print '<img src="../theme/eldy/img/error.png" alt="Error">';
print "</td></tr>";
// Affiche aide diagnostique
// warning message
print '<tr><td colspan="2"><br>';
print $langs->trans('CheckThatDatabasenameIsCorrect',$dolibarr_main_db_name).'<br>';
print $langs->trans('IfAlreadyExistsCheckOption').'<br>';
@@ -767,7 +767,7 @@ if (! $error && $db->connected && $action == "set")
print '<img src="../theme/eldy/img/error.png" alt="Error">';
print "</td></tr>";
// Affiche aide diagnostique
// warning message
print '<tr><td colspan="2"><br>';
print $langs->trans("ErrorConnection",$conf->db->host,$conf->db->name,$conf->db->user);
print $langs->trans('IfLoginDoesNotExistsCheckCreateUser').'<br>';
@@ -893,45 +893,45 @@ function write_conf_file($conffile)
fputs($fp,'// and explanations for all possibles parameters.'."\n");
fputs($fp,'//'."\n");
fputs($fp, '$dolibarr_main_url_root=\''.str_replace("'","\'",($main_url)).'\';');
fputs($fp, '$dolibarr_main_url_root=\''.str_replace("'","\'",trim($main_url)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_document_root=\''.str_replace("'","\'",($main_dir)).'\';');
fputs($fp, '$dolibarr_main_document_root=\''.str_replace("'","\'",trim($main_dir)).'\';');
fputs($fp,"\n");
fputs($fp, $main_use_alt_dir.'$dolibarr_main_url_root_alt=\''.str_replace("'","\'",("/".$main_alt_dir_name)).'\';');
fputs($fp, $main_use_alt_dir.'$dolibarr_main_url_root_alt=\''.str_replace("'","\'",trim("/".$main_alt_dir_name)).'\';');
fputs($fp,"\n");
fputs($fp, $main_use_alt_dir.'$dolibarr_main_document_root_alt=\''.str_replace("'","\'",($main_dir."/".$main_alt_dir_name)).'\';');
fputs($fp, $main_use_alt_dir.'$dolibarr_main_document_root_alt=\''.str_replace("'","\'",trim($main_dir."/".$main_alt_dir_name)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_data_root=\''.str_replace("'","\'",($main_data_dir)).'\';');
fputs($fp, '$dolibarr_main_data_root=\''.str_replace("'","\'",trim($main_data_dir)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_host=\''.str_replace("'","\'",($db_host)).'\';');
fputs($fp, '$dolibarr_main_db_host=\''.str_replace("'","\'",trim($db_host)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_port=\''.str_replace("'","\'",($db_port)).'\';');
fputs($fp, '$dolibarr_main_db_port=\''.str_replace("'","\'",trim($db_port)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_name=\''.str_replace("'","\'",($db_name)).'\';');
fputs($fp, '$dolibarr_main_db_name=\''.str_replace("'","\'",trim($db_name)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_prefix=\''.str_replace("'","\'",($main_db_prefix)).'\';');
fputs($fp, '$dolibarr_main_db_prefix=\''.str_replace("'","\'",trim($main_db_prefix)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_user=\''.str_replace("'","\'",($db_user)).'\';');
fputs($fp, '$dolibarr_main_db_user=\''.str_replace("'","\'",trim($db_user)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_pass=\''.str_replace("'","\'",($db_pass)).'\';');
fputs($fp, '$dolibarr_main_db_pass=\''.str_replace("'","\'",trim($db_pass)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_type=\''.str_replace("'","\'",($db_type)).'\';');
fputs($fp, '$dolibarr_main_db_type=\''.str_replace("'","\'",trim($db_type)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_character_set=\''.str_replace("'","\'",($db_character_set)).'\';');
fputs($fp, '$dolibarr_main_db_character_set=\''.str_replace("'","\'",trim($db_character_set)).'\';');
fputs($fp,"\n");
fputs($fp, '$dolibarr_main_db_collation=\''.str_replace("'","\'",($db_collation)).'\';');
fputs($fp, '$dolibarr_main_db_collation=\''.str_replace("'","\'",trim($db_collation)).'\';');
fputs($fp,"\n");
/* Authentication */
@@ -1023,7 +1023,7 @@ function write_conf_file($conffile)
if (file_exists("$conffile"))
{
include $conffile; // On force rechargement. Ne pas mettre include_once !
include $conffile; // force config reload, do not put include_once
conf($dolibarr_main_document_root);
print "<tr><td>";

View File

@@ -58,7 +58,7 @@ if ($dolibarr_main_db_type == "sqlite3") $choix=5;
//if (empty($choix)) dol_print_error('','Database type '.$dolibarr_main_db_type.' not supported into step2.php page');
// Now we load forced value from install.forced.php file.
// Now we load forced values from install.forced.php file.
$useforcedwizard=false;
$forcedfile="./install.forced.php";
if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php";
@@ -67,7 +67,7 @@ if (@file_exists($forcedfile)) {
include_once $forcedfile;
}
dolibarr_install_syslog("--- step2: entering step2.php page");
dolibarr_install_syslog("- step2: entering step2.php page");
/*
@@ -88,7 +88,7 @@ if ($action == "set")
{
print '<h3><img class="valigntextbottom" src="../theme/common/octicons/build/svg/database.svg" width="20" alt="Database"> '.$langs->trans("Database").'</h3>';
print '<table cellspacing="0" style="padding: 4px 4px 4px 0px" border="0" width="100%">';
print '<table cellspacing="0" style="padding: 4px 4px 4px 0" border="0" width="100%">';
$error=0;
$db=getDoliDBInstance($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port);
@@ -237,7 +237,7 @@ if ($action == "set")
print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name);
print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer.' <br>Executed query : '.$db->lastquery;
print "\n</td>";
print '<td><font class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</font></td></tr>';
print '<td><span class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</span></td></tr>';
$error++;
}
}
@@ -246,7 +246,7 @@ if ($action == "set")
{
print "<tr><td>".$langs->trans("CreateTableAndPrimaryKey",$name);
print "</td>";
print '<td><font class="error">'.$langs->trans("Error").' Failed to open file '.$dir.$file.'</td></tr>';
print '<td><span class="error">'.$langs->trans("Error").' Failed to open file '.$dir.$file.'</span></td></tr>';
$error++;
dolibarr_install_syslog("step2: failed to open file " . $dir . $file, LOG_ERR);
}
@@ -384,7 +384,7 @@ if ($action == "set")
print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name);
print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$db->lastqueryerror();
print "\n</td>";
print '<td><font class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</font></td></tr>';
print '<td><span class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</span></td></tr>';
$error++;
}
}
@@ -395,7 +395,7 @@ if ($action == "set")
{
print "<tr><td>".$langs->trans("CreateOtherKeysForTable",$name);
print "</td>";
print '<td><font class="error">'.$langs->trans("Error")." Failed to open file ".$dir.$file."</font></td></tr>";
print '<td><span class="error">'.$langs->trans("Error")." Failed to open file ".$dir.$file."</span></td></tr>";
$error++;
dolibarr_install_syslog("step2: failed to open file " . $dir . $file, LOG_ERR);
}
@@ -417,7 +417,7 @@ if ($action == "set")
***************************************************************************************/
if ($ok && $createfunctions)
{
// For this file, we use directory according to database type
// For this file, we use a directory according to database type
if ($choix==1) $dir = "mysql/functions/";
elseif ($choix==2) $dir = "pgsql/functions/";
elseif ($choix==3) $dir = "mssql/functions/";
@@ -473,7 +473,7 @@ if ($action == "set")
print "<tr><td>".$langs->trans("FunctionsCreation");
print "<br>\n".$langs->trans("Request").' '.$requestnb.' : '.$buffer;
print "\n</td>";
print '<td><font class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</font></td></tr>';
print '<td><span class="error">'.$langs->trans("ErrorSQL")." ".$db->errno()." ".$db->error().'</span></td></tr>';
$error++;
}
}
@@ -594,7 +594,7 @@ if ($action == "set")
{
$ok = 0;
$okallfile = 0;
print '<font class="error">'.$langs->trans("ErrorSQL")." : ".$db->lasterrno()." - ".$db->lastqueryerror()." - ".$db->lasterror()."</font><br>";
print '<span class="error">'.$langs->trans("ErrorSQL")." : ".$db->lasterrno()." - ".$db->lastqueryerror()." - ".$db->lasterror()."</span><br>";
}
}
}
@@ -627,7 +627,7 @@ $ret=0;
if (!$ok && isset($argv[1])) $ret=1;
dolibarr_install_syslog("Exit ".$ret);
dolibarr_install_syslog("--- step2: end");
dolibarr_install_syslog("- step2: end");
pFooter($ok?0:1,$setuplang);
@@ -635,4 +635,3 @@ if (isset($db) && is_object($db)) $db->close();
// Return code if ran from command line
if ($ret) exit($ret);

View File

@@ -47,7 +47,7 @@ if (@file_exists($forcedfile)) {
include_once $forcedfile;
}
dolibarr_install_syslog("--- step4: entering step4.php page");
dolibarr_install_syslog("- step4: entering step4.php page");
$error=0;
$ok = 0;
@@ -74,18 +74,18 @@ print '<h3><img class="valigntextbottom" src="../theme/common/octicons/build/svg
print $langs->trans("LastStepDesc").'<br><br>';
print '<table cellspacing="0" cellpadding="2" width="100%">';
print '<table cellspacing="0" cellpadding="2">';
$db=getDoliDBInstance($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port);
if ($db->ok)
{
print '<tr><td>'.$langs->trans("Login").' :</td><td>';
print '<input name="login" type="text" value="' . (!empty($_GET["login"]) ? GETPOST("login") : (isset($force_install_dolibarrlogin) ? $force_install_dolibarrlogin : '')) . '"' . (@$force_install_noedit == 2 && $force_install_dolibarrlogin !== null ? ' disabled' : '') . '></td></tr>';
print '<tr><td>'.$langs->trans("Password").' :</td><td>';
print '<input type="password" name="pass"></td></tr>';
print '<tr><td>'.$langs->trans("PasswordAgain").' :</td><td>';
print '<input type="password" name="pass_verif"></td></tr>';
print '<tr><td><label for="login">'.$langs->trans("Login").' :</label></td><td>';
print '<input id="login" name="login" type="text" value="' . (!empty($_GET["login"]) ? GETPOST("login") : (isset($force_install_dolibarrlogin) ? $force_install_dolibarrlogin : '')) . '"' . (@$force_install_noedit == 2 && $force_install_dolibarrlogin !== null ? ' disabled' : '') . '></td></tr>';
print '<tr><td><label for="pass">'.$langs->trans("Password").' :</label></td><td>';
print '<input type="password" id="pass" name="pass"></td></tr>';
print '<tr><td><label for="pass_verif">'.$langs->trans("PasswordAgain").' :</label></td><td>';
print '<input type="password" id="pass_verif" name="pass_verif"></td></tr>';
print '</table>';
if (isset($_GET["error"]) && $_GET["error"] == 1)
@@ -113,12 +113,11 @@ if ($db->ok)
}
$ret=0;
if ($error && isset($argv[1])) $ret=1;
dolibarr_install_syslog("Exit ".$ret);
dolibarr_install_syslog("--- step4: end");
dolibarr_install_syslog("- step4: end");
pFooter($error,$setuplang);

View File

@@ -23,7 +23,7 @@
/**
* \file htdocs/install/step5.php
* \ingroup install
* \brief Last page of upgrade or install process
* \brief Last page of upgrade / install process
*/
include_once 'inc.php';
@@ -67,7 +67,7 @@ if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.fo
if (@file_exists($forcedfile)) {
$useforcedwizard = true;
include_once $forcedfile;
// If forced install is enabled, let's replace post values. These are empty because form fields are disabled.
// If forced install is enabled, replace post values. These are empty because form fields are disabled.
if ($force_install_noedit == 2) {
if (!empty($force_install_dolibarrlogin)) {
$login = $force_install_dolibarrlogin;
@@ -75,16 +75,15 @@ if (@file_exists($forcedfile)) {
}
}
dolibarr_install_syslog("--- step5: entering step5.php page");
dolibarr_install_syslog("- step5: entering step5.php page");
$error=0;
/*
* Actions
*/
// If install, check pass and pass_verif used to create admin account
// If install, check password and password_verification used to create admin account
if ($action == "set") {
if ($pass <> $pass_verif) {
header("Location: step4.php?error=1&selectlang=$setuplang" . (isset($login) ? '&login=' . $login : ''));
@@ -394,8 +393,8 @@ if ($action == "set" && $success)
else
{
// If here MAIN_VERSION_LAST_UPGRADE is not empty
print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</font></b><br>';
print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b><br>';
print $langs->trans("VersionLastUpgrade").': <b><span class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</span></b><br>';
print $langs->trans("VersionProgram").': <b><span class="ok">'.DOL_VERSION.'</span></b><br>';
print $langs->trans("MigrationNotFinished").'<br>';
print "<br>";
@@ -442,8 +441,8 @@ elseif (empty($action) || preg_match('/upgrade/i',$action))
else
{
// If here MAIN_VERSION_LAST_UPGRADE is not empty
print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</font></b><br>';
print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b>';
print $langs->trans("VersionLastUpgrade").': <b><span class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</span></b><br>';
print $langs->trans("VersionProgram").': <b><span class="ok">'.DOL_VERSION.'</span></b>';
print "<br>";
@@ -457,17 +456,14 @@ else
dol_print_error('','step5.php: unknown choice of action');
}
// Clear cache files
clearstatcache();
$ret=0;
if ($error && isset($argv[1])) $ret=1;
dolibarr_install_syslog("Exit ".$ret);
dolibarr_install_syslog("--- step5: Dolibarr setup finished");
dolibarr_install_syslog("- step5: Dolibarr setup finished");
pFooter(1,$setuplang);

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015-2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
*
@@ -21,10 +21,13 @@
*
* cd htdocs/install
* php upgrade.php 3.4.0 3.5.0 [dirmodule|ignoredbversion]
* php upgrade2.php 3.4.0 3.5.0
* php upgrade2.php 3.4.0 3.5.0 [MODULE_NAME1_TO_ENABLE,MODULE_NAME2_TO_ENABLE]
*
* Option 'dirmodule' allows to provide a path for an external module, so we migrate from command line a script from a module.
* Option 'ignoredbversion' allows to run migration even if database is a bugged database version.
* And for final step:
* php step5.php 3.4.0 3.5.0
*
* Option 'dirmodule' allows to provide a path for an external module, so we migrate from command line using a script from a module.
* Option 'ignoredbversion' allows to run migration even if database version does not match start version of migration
* Return code is 0 if OK, >0 if error
*/
@@ -84,7 +87,7 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial
if (! $versionfrom && ! $versionto)
{
print 'Error: Parameter versionfrom or versionto missing.'."\n";
print 'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n";
print 'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install)'."\n";
// Test if batch mode
$sapi_type = php_sapi_name();
$script_file = basename(__FILE__);
@@ -297,7 +300,7 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09
{
if ($db->lasterrno() != 'DB_ERROR_NOSUCHTABLE')
{
print '<tr><td colspan="2"><font class="error">'.$sql.' : '.$db->lasterror()."</font></td></tr>\n";
print '<tr><td colspan="2"><span class="error">'.$sql.' : '.$db->lasterror()."</font></td></tr>\n";
}
}
}

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2018 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015-2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
@@ -18,13 +18,19 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Upgrade scripts can be ran from command line with syntax:
* Upgrade2 scripts can be ran from command line with syntax:
*
* cd htdocs/install
* php upgrade.php 3.4.0 3.5.0
* php upgrade2.php 3.4.0 3.5.0 [MODULE_NAME1_TO_ENABLE,MODULE_NAME2_TO_ENABLE]
* php upgrade.php 3.4.0 3.5.0 [dirmodule|ignoredbversion]
* php upgrade2.php 3.4.0 3.5.0 [MAIN_MODULE_NAME1_TO_ENABLE,MAIN_MODULE_NAME2_TO_ENABLE]
*
* And for final step:
* php step5.php 3.4.0 3.5.0
*
* Return code is 0 if OK, >0 if error
*
* Note: To just enable a module from command line, use this syntax:
* php upgrade2.php 0.0.0 0.0.0 [MAIN_MODULE_NAME1_TO_ENABLE,MAIN_MODULE_NAME2_TO_ENABLE]
*/
/**
@@ -77,7 +83,7 @@ if ($dolibarr_main_db_type == 'pgsql') $choix=2;
if ($dolibarr_main_db_type == 'mssql') $choix=3;
dolibarr_install_syslog("--- upgrade2: entering upgrade2.php page ".$versionfrom." ".$versionto);
dolibarr_install_syslog("--- upgrade2: entering upgrade2.php page ".$versionfrom." ".$versionto." ".$enablemodules);
if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initialized", LOG_ERR);
@@ -89,14 +95,14 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial
if ((! $versionfrom || preg_match('/version/', $versionfrom)) && (! $versionto || preg_match('/version/', $versionto)))
{
print 'Error: Parameter versionfrom or versionto missing or having a bad format.'."\n";
print 'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n";
print 'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install)'."\n";
// Test if batch mode
$sapi_type = php_sapi_name();
$script_file = basename(__FILE__);
$path=dirname(__FILE__).'/';
if (substr($sapi_type, 0, 3) == 'cli')
{
print 'Syntax from command line: '.$script_file." x.y.z a.b.c\n";
print 'Syntax from command line: '.$script_file." x.y.z a.b.c [MAIN_MODULE_NAME1_TO_ENABLE,MAIN_MODULE_NAME2_TO_ENABLE...]\n";
}
exit;
}
@@ -438,6 +444,13 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09
migrate_rename_directories($db,$langs,$conf,'/contracts','/contract');
}
// Scripts for 9.0
$afterversionarray=explode('.','8.0.9');
$beforeversionarray=explode('.','9.0.9');
if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0)
{
//migrate_rename_directories($db,$langs,$conf,'/contracts','/contract');
}
}
// Code executed only if migration is LAST ONE. Must always be done.
@@ -541,12 +554,12 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09
dolCopyDir($srcroot, $destroot, 0, 0);
// Actions for all versions (no database change, delete files and directories)
// Actions for all versions (no database change but delete some files and directories)
migrate_delete_old_files($db, $langs, $conf);
migrate_delete_old_dir($db, $langs, $conf);
// Actions for all versions (no database change, create directories)
// Actions for all versions (no database change but create some directories)
dol_mkdir(DOL_DATA_ROOT.'/bank');
// Actions for all versions (no database change, rename directories)
// Actions for all versions (no database change but rename some directories)
migrate_rename_directories($db, $langs, $conf, '/banque/bordereau', '/bank/checkdeposits');
print '<div><br>'.$langs->trans("MigrationFinished").'</div>';
@@ -4536,11 +4549,11 @@ function migrate_delete_old_dir($db,$langs,$conf)
* @param int $force 1=Reload module even if not already loaded
* @return void
*/
function migrate_reload_modules($db,$langs,$conf,$listofmodule=array(),$force=0)
function migrate_reload_modules($db, $langs, $conf, $listofmodule=array(), $force=0)
{
if (count($listofmodule) == 0) return;
dolibarr_install_syslog("upgrade2::migrate_reload_modules force=".$force);
dolibarr_install_syslog("upgrade2::migrate_reload_modules force=".$force.", listofmodule=".join(',', array_keys($listofmodule)));
foreach($listofmodule as $moduletoreload => $reloadmode) // reloadmodule can be 'noboxes', 'newboxdefonly', 'forceactivate'
{
@@ -4723,8 +4736,15 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array(),$force=0)
$tmp = preg_match('/MAIN_MODULE_([a-zA-Z0-9]+)/', $moduletoreload, $reg);
if (! empty($reg[1]))
{
$moduletoreloadshort = ucfirst(strtolower($reg[1]));
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module ".$moduletoreloadshort);
if (strtoupper($moduletoreload) == $moduletoreload) // If key is un uppercase
{
$moduletoreloadshort = ucfirst(strtolower($reg[1]));
}
else // If key is a mix of up and low case
{
$moduletoreloadshort = $reg[1];
}
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module ".$moduletoreloadshort." with mode ".$reloadmode);
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/mod'.$moduletoreloadshort.'.class.php';
if ($res) {
$classname = 'mod'.$moduletoreloadshort;
@@ -4732,10 +4752,27 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array(),$force=0)
//$mod->remove('noboxes');
$mod->init($reloadmode);
}
else
{
dolibarr_install_syslog('Failed to include '.DOL_DOCUMENT_ROOT.'/core/modules/mod'.$moduletoreloadshort.'.class.php');
$res=@dol_include_once(strtolower($moduletoreloadshort).'/core/modules/mod'.$moduletoreloadshort.'.class.php');
if ($res) {
$classname = 'mod'.$moduletoreloadshort;
$mod=new $classname($db);
//$mod->remove('noboxes');
$mod->init($reloadmode);
}
else
{
dolibarr_install_syslog('Failed to include '.strtolower($moduletoreloadshort).'/core/modules/mod'.$moduletoreloadshort.'.class.php');
}
}
}
else
{
print "Error, can't find module name";
dolibarr_install_syslog("Error, can't find module with name ".$moduletoreload, LOG_WARNING);
print "Error, can't find module with name ".$moduletoreload;
}
}

View File

@@ -55,6 +55,7 @@ AccountancyAreaDescChartModel=STEP %s: Create a model of chart of account from m
AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s
AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s.
AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s.
AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of expense report. For this, use the menu entry %s.
AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s.
AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for special expences (miscellaneous taxes). For this, use the menu entry %s.
@@ -131,6 +132,7 @@ ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounting accounts (If you set
ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounting accounts (If you set value to 6 here, the account '401' will appear like '401000' on screen)
ACCOUNTING_MANAGE_ZERO=Allow to manage different number of zero at the end of an accounting account. Needed by some countries (like switzerland). If keep to off (default), you can set the 2 following parameters to ask application to add virtual zero.
BANK_DISABLE_DIRECT_INPUT=Disable direct recording of transaction in bank account
ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Enable draft export on journal
ACCOUNTING_SELL_JOURNAL=دفتر البيع اليومي
ACCOUNTING_PURCHASE_JOURNAL=دفتر الشراء اليومي

View File

@@ -454,7 +454,7 @@ ModuleCompanyCodeDigitaria=Accounting code depends on third party code. The code
Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).<br>Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required.
UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than...
WarningPHPMail=WARNING: It is often better to setup outgoing emails to use the email server of your provider instead of the default setup. Some email providers (like Yahoo) does not allow you to send an email from another server than their own server. Your current setup use the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not a server of them, so few of your sent Emails may not be accepted (be carefull also to your email provider sending quota).<br>If your Email provider (like Yahoo) has this restriction, you must change Email setup to choose the other method "SMTP server" and enter the SMTP server and credentials provided by your Email provider (ask your EMail provider to get SMTP credentials for your account).
WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of your ERP CRM application: <strong>%s</strong>.
WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: <strong>%s</strong>.
ClickToShowDescription=Click to show description
DependsOn=This module need the module(s)
RequiredBy=This module is required by module(s)
@@ -497,7 +497,7 @@ Module25Desc=طلبات الزبائن إدارة
Module30Name=فواتير
Module30Desc=ويلاحظ اعتماد الفواتير وإدارة العملاء. فواتير إدارة الموردين
Module40Name=الموردين
Module40Desc=الموردين وإدارة وشراء (الأوامر والفواتير)
Module40Desc=Suppliers and purchase management (purchase orders and billing)
Module42Name=Debug Logs
Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes.
Module49Name=المحررين
@@ -605,7 +605,7 @@ Module4000Desc=Human resources management (management of department, employee co
Module5000Name=شركة متعددة
Module5000Desc=يسمح لك لإدارة الشركات المتعددة
Module6000Name=سير العمل
Module6000Desc=إدارة سير العمل
Module6000Desc=Workflow management (automatic creation of object and/or automatic status change)
Module10000Name=Websites
Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the Internet with your own domain name.
Module20000Name=ترك إدارة الطلبات
@@ -891,7 +891,7 @@ DictionaryCivility=Personal and professional titles
DictionaryActions=Types of agenda events
DictionarySocialContributions=الضرائب الاجتماعية أو المالية أنواع
DictionaryVAT=أسعار الضريبة على القيمة المضافة أو ضريبة المبيعات الاسعار
DictionaryRevenueStamp=كمية من طوابع الواردات
DictionaryRevenueStamp=Amount of tax stamps
DictionaryPaymentConditions=شروط الدفع
DictionaryPaymentModes=وسائل الدفع
DictionaryTypeContact=الاتصال / أنواع العناوين
@@ -919,7 +919,7 @@ SetupSaved=الإعداد المحفوظة
SetupNotSaved=Setup not saved
BackToModuleList=العودة إلى قائمة الوحدات
BackToDictionaryList=العودة إلى قائمة القواميس
TypeOfRevenueStamp=Type of revenue stamp
TypeOfRevenueStamp=Type of tax stamp
VATManagement=إدارة الضريبة على القيمة المضافة
VATIsUsedDesc=By default when creating prospects, invoices, orders etc the VAT rate follows the active standard rule:<br>If the seller is not subjected to VAT, then VAT defaults to 0. End of rule.<br>If the (selling country= buying country), then the VAT by default equals the VAT of the product in the selling country. End of rule. <br>If seller and buyer are both in the European Community and goods are transport products (car, ship, plane), the default VAT is 0 ( The VAT should be paid by the buyer to the customoffice of his country and not to the seller). End of rule.<br>If seller and buyer are both in the European Community and the buyer is not a company, then the VAT by defaults to the VAT of the product sold. End of rule.<br>If seller and buyer are both in the European Community and the buyer is a company, then the VAT is 0 by default . End of rule.<br>In any othe case the proposed default is VAT=0. End of rule.
VATIsNotUsedDesc=افتراضي المقترحة 0 ضريبة القيمة المضافة هو الذي يمكن أن يستخدم في حالات مثل الجمعيات والأفراد والشركات الصغيرة où.
@@ -1027,7 +1027,7 @@ Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned
Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Delay tolerance (in days) before alert on project not closed in time
Delays_MAIN_DELAY_TASKS_TODO=Delay tolerance (in days) before alert on planned tasks (project tasks) not completed yet
Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not processed yet
Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not processed yet
Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on purchase orders not processed yet
Delays_MAIN_DELAY_PROPALS_TO_CLOSE=التسامح التأخير (في يوم) في حالة تأهب على المقترحات المعروضة ليقفل
Delays_MAIN_DELAY_PROPALS_TO_BILL=تأخير التسامح (أيام) قبل تنبيه بشأن المقترحات لا توصف
Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=تأخير التسامح (في يوم) في حالة تأهب قبل يوم والخدمات لتفعيل
@@ -1458,7 +1458,7 @@ SyslogFilename=اسم الملف ومسار
YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr "وثائق" دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف.
ErrorUnknownSyslogConstant=ثابت %s ليس ثابت سيسلوغ معروفة
OnlyWindowsLOG_USER=نوافذ يعتمد فقط LOG_USER
CompressSyslogs=Syslog files compression and backup
CompressSyslogs=Compression and backup of debug log files (generated by module Log for debug)
SyslogFileNumberOfSaves=Log backups
ConfigureCleaningCronjobToSetFrequencyOfSaves=Configure cleaning scheduled job to set log backup frequency
##### Donations #####

View File

@@ -1,163 +1,165 @@
# Dolibarr language file - Source file is en_US - banks
Bank=البنك
MenuBankCash=البنك / النقدية
MenuVariousPayment=Miscellaneous payments
MenuNewVariousPayment=New Miscellaneous payment
MenuBankCash=Bank | Cash
MenuVariousPayment=مدفوعات متنوعة
MenuNewVariousPayment=مدفوعات متنوعة جديدة
BankName=اسم المصرف
FinancialAccount=حساب
FinancialAccount=الحساب
BankAccount=الحساب المصرفي
BankAccounts=الحسابات المصرفية
ShowAccount=مشاهدة الحساب
AccountRef=الحساب المالي المرجع
AccountLabel=الحساب المالي العلامة
BankAccountsAndGateways=Bank accounts | Gateways
ShowAccount=عرض الحساب
AccountRef=مرجع الحساب المالي
AccountLabel=بطاقة الحساب المالي
CashAccount=الحساب النقدي
CashAccounts=حسابات نقدية
CurrentAccounts=الحسابات الجارية
SavingAccounts=حسابات التوفير
ErrorBankLabelAlreadyExists=الحساب المالي الملصق موجود بالفعل
ErrorBankLabelAlreadyExists=بطاقة الحساب المالي موجوده بالفعل
BankBalance=التوازن
BankBalanceBefore=التوازن قبل
BankBalanceAfter=التوازن بعد
BalanceMinimalAllowed=الحد الأدنى المسموح التوازن
BalanceMinimalDesired=الحد الأدنى من التوازن المطلوب
BankBalanceBefore=الرصيد قبل
BankBalanceAfter=الرصيد بعد
BalanceMinimalAllowed=الحد الأدنى المسموح من الرصيد
BalanceMinimalDesired=الحد الأدنى المطلوب من الرصيد
InitialBankBalance=الرصيد الأولي
EndBankBalance=رصيد نهاية
EndBankBalance=الرصيد النهائي
CurrentBalance=الرصيد الحالي
FutureBalance=التوازن في المستقبل
ShowAllTimeBalance=يظهر من البداية على التوازن
ShowAllTimeBalance=عرض الرصيد من البداية
AllTime=من البداية
Reconciliation=المصالحة
Reconciliation=التسوية
RIB=رقم الحساب المصرفي
IBAN=عدد إيبان
BIC=بيك / سويفت عدد
SwiftValid=BIC/SWIFT valid
SwiftVNotalid=BIC/SWIFT not valid
IbanValid=BAN valid
IbanNotValid=BAN not valid
StandingOrders=Direct Debit orders
StandingOrder=Direct debit order
AccountStatement=كشف حساب
SwiftValid=بيك / سويفت صالحة
SwiftVNotalid=بيك / سويفت غير صالح
IbanValid=بان صالحة
IbanNotValid=بان غير صالح
StandingOrders=أوامر الخصم المباشر
StandingOrder=أمر الخصم المباشر
AccountStatement=كشف الحساب
AccountStatementShort=بيان
AccountStatements=بيانات الحساب
LastAccountStatements=كشوفات الحساب الأخير
AccountStatements=كشوفات الحساب
LastAccountStatements=كشوفات الحساب الأخيرة
IOMonthlyReporting=تقارير شهرية
BankAccountDomiciliation=معالجة حساب
BankAccountCountry=حساب البلاد
BankAccountDomiciliation=عنوان الحساب
BankAccountCountry=بلد حساب
BankAccountOwner=اسم صاحب الحساب
BankAccountOwnerAddress=معالجة حساب المالك
RIBControlError=التحقق من تكامل القيم يفشل. وهذا يعني حصول على معلومات عن هذا رقم الحساب ليست كاملة أو خاطئة (ارجع البلد والأرقام وIBAN).
BankAccountOwnerAddress=عنوان مالك الحساب
RIBControlError=فشل التحقق من سلامة القيم. وهذا يعني أن المعلومات الخاصة برقم الحساب هذا غير كاملة أو خاطئة (راجع البلد والأرقام و إيبان).
CreateAccount=إنشاء حساب
NewBankAccount=حساب جديد
NewFinancialAccount=الحساب المالي الجديد
MenuNewFinancialAccount=الحساب المالي الجديد
EditFinancialAccount=تحرير الحساب
LabelBankCashAccount=بطاقة مصرفية أو نقدا
NewFinancialAccount=حساب مالي جديد
MenuNewFinancialAccount=حساب مالي جديد
EditFinancialAccount=تعديل الحساب
LabelBankCashAccount=بطاقة مصرفية أو نقدية
AccountType=نوع الحساب
BankType0=حساب توفير
BankType1=الحساب الجاري
BankType1=الحساب الجاري او حساب بطاقة الائتمان
BankType2=الحساب النقدي
AccountsArea=حسابات المنطقة
AccountCard=حساب بطاقة
DeleteAccount=حذف حساب
ConfirmDeleteAccount=Are you sure you want to delete this account?
AccountsArea=منطقة الحسابات
AccountCard=بطاقة الحساب
DeleteAccount=حذف الحساب
ConfirmDeleteAccount=هل أنت متأكد أنك تريد حذف هذا الحساب؟
Account=حساب
BankTransactionByCategories=Bank entries by categories
BankTransactionForCategory=Bank entries for category <b>%s</b>
BankTransactionByCategories=القيود البنكية حسب الفئات
BankTransactionForCategory=القيود البنكية للفئة <b>%s</b>
RemoveFromRubrique=إزالة الارتباط مع هذه الفئة
RemoveFromRubriqueConfirm=Are you sure you want to remove link between the entry and the category?
ListBankTransactions=List of bank entries
IdTransaction=رقم المعاملات
BankTransactions=Bank entries
BankTransaction=Bank entry
ListTransactions=List entries
ListTransactionsByCategory=List entries/category
TransactionsToConciliate=Entries to reconcile
Conciliable=Conciliable
Conciliate=التوفيق
Conciliation=توفيق
ReconciliationLate=Reconciliation late
RemoveFromRubriqueConfirm=هل انت متأكد أنك تريد إزالة الربط بين القيد والفئة؟
ListBankTransactions=قائمة القيود البنكية
IdTransaction=معرف المعاملة
BankTransactions=القيود البنكية
BankTransaction=قيد بنكي
ListTransactions=قائمة القيود
ListTransactionsByCategory=قائمةالقيود/الفئات
TransactionsToConciliate=قيود للتسويات
Conciliable=يمكن أن يتم تسويتة
Conciliate=التسوية
Conciliation=تسوية
ReconciliationLate=التسوية في وقت متأخر
IncludeClosedAccount=وتشمل حسابات مغلقة
OnlyOpenedAccount=إلا فتح حسابات
AccountToCredit=الحساب على الائتمان
AccountToDebit=لحساب الخصم
DisableConciliation=تعطيل ميزة التوفيق لهذا الحساب
ConciliationDisabled=توفيق سمة المعوقين
LinkedToAConciliatedTransaction=Linked to a conciliated entry
StatusAccountOpened=Opened
StatusAccountClosed=مغلقة
AccountIdShort=عدد
LineRecord=المعاملات
AddBankRecord=Add entry
AddBankRecordLong=Add entry manually
Conciliated=Reconciled
ConciliatedBy=طريق التصالح
DateConciliating=التوفيق التاريخ
BankLineConciliated=Entry reconciled
Reconciled=Reconciled
NotReconciled=Not reconciled
CustomerInvoicePayment=عملاء الدفع
SupplierInvoicePayment=المورد الدفع
OnlyOpenedAccount=الحسابات المفتوحة فقط
AccountToCredit=تقييد مبلغ دائن بالحساب
AccountToDebit=تقييد مبلغ مدين بالحساب
DisableConciliation=تعطيل خاصية التسوية لهذا الحساب
ConciliationDisabled=خاصية التسوية معطلة
LinkedToAConciliatedTransaction=مرتبط بقيد تمت تسويتة
StatusAccountOpened=مفتوح
StatusAccountClosed=مغلق
AccountIdShort=رقم
LineRecord=المعاملة
AddBankRecord=إضافة قيد
AddBankRecordLong=إضافة قيد يدوي
Conciliated=تمت تسويتة
ConciliatedBy=تمت التسوية بواسطة
DateConciliating=تاريخ التسوية
BankLineConciliated=تم تسوية القيد
Reconciled=تمت تسويتة
NotReconciled=لم يتم تسويتة
CustomerInvoicePayment=مدفوعات العميل
SupplierInvoicePayment=دفع المورد
SubscriptionPayment=دفع الاشتراك
WithdrawalPayment=انسحاب الدفع
SocialContributionPayment=اجتماعي / دفع الضرائب المالية
WithdrawalPayment=سحب المدفوعات
SocialContributionPayment=مدفوعات الضرائب الاجتماعية / المالية
BankTransfer=حوالة مصرفية
BankTransfers=التحويلات المصرفية
MenuBankInternalTransfer=Internal transfer
TransferDesc=Transfer from one account to another one, Dolibarr will write two record (a debit in source account and a credit in target account. The same amount (except sign), label and date will be used for this transaction)
BankTransfers=حوالات المصرفية
MenuBankInternalTransfer=حوالة داخلية
TransferDesc=التحويل من حساب إلى آخر، سوف يقوم دوليبار بكتابة سجلين (مدين في حساب المصدر و دائن في حساب الهدف، نفس المبلغ (باستثناء العلامة)، سيتم استخدام البطاقة و التاريخ لهذه المعاملة)
TransferFrom=من
TransferTo=إلى
TransferFromToDone=ونقل من هناك إلى ٪ <b>%s ق %s</b> ٪ وقد سجلت ق.
CheckTransmitter=الإرسال
ValidateCheckReceipt=Validate this check receipt?
ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt, no change will be possible once this is done?
DeleteCheckReceipt=Delete this check receipt?
ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt?
TransferFromToDone=التحويل من <b>%s</b>إلى <b>%s</b>من <b>%s</b>%s قد تم تسجيلة.
CheckTransmitter=المرسل
ValidateCheckReceipt=تأكيد صحة الشيك المستلم؟
ConfirmValidateCheckReceipt=هل تريد تأكيد هذا الشيك ، لن يكون من الممكن إجراء أي تغيير بعد الانتهاء من ذلك؟
DeleteCheckReceipt=حذف هذا الشيك ؟
ConfirmDeleteCheckReceipt=هل انت متأكد أنك تريد حذف هذا الشيك؟
BankChecks=الشيكات المصرفية
BankChecksToReceipt=Checks awaiting deposit
ShowCheckReceipt=الاختيار إظهار تلقي الودائع
NumberOfCheques=ملاحظة : للشيكات
DeleteTransaction=Delete entry
ConfirmDeleteTransaction=Are you sure you want to delete this entry?
ThisWillAlsoDeleteBankRecord=This will also delete generated bank entry
BankChecksToReceipt=شيكات في انتظار الإيداع
ShowCheckReceipt=عرض إيصال إيداع شيكات
NumberOfCheques=عدد الشيكات
DeleteTransaction=حذف المعاملة
ConfirmDeleteTransaction=هل تريد بالتأكيد حذف هذه المعاملة؟
ThisWillAlsoDeleteBankRecord=سيؤدي هذا أيضا إلى حذف القيد البنكي الذي تم إنشاؤه
BankMovements=حركات
PlannedTransactions=Planned entries
PlannedTransactions=المعاملات المخططة
Graph=الرسومات
ExportDataset_banque_1=Bank entries and account statement
ExportDataset_banque_2=إيداع زلة
TransactionOnTheOtherAccount=صفقة على حساب الآخرين
PaymentNumberUpdateSucceeded=Payment number updated successfully
PaymentNumberUpdateFailed=دفع عددا لا يمكن تحديث
PaymentDateUpdateSucceeded=Payment date updated successfully
PaymentDateUpdateFailed=دفع حتى الآن لا يمكن تحديث
ExportDataset_banque_1=القيود البنكية وكشف الحساب
ExportDataset_banque_2=قسيمة الإيداع
TransactionOnTheOtherAccount=معاملة على الحساب الآخر
PaymentNumberUpdateSucceeded=تم تحديث رقم الدفع بنجاح
PaymentNumberUpdateFailed=تعذر تحديث رقم الدفعة
PaymentDateUpdateSucceeded=تم تحديث تاريخ الدفع بنجاح
PaymentDateUpdateFailed=تعذر تحديث تاريخ الدفع
Transactions=المعاملات
BankTransactionLine=Bank entry
AllAccounts=جميع المصرفية / حسابات نقدية
BackToAccount=إلى حساب
ShowAllAccounts=وتبين للجميع الحسابات
FutureTransaction=الصفقة في أجل المستقبل. أي وسيلة للتوفيق.
SelectChequeTransactionAndGenerate=حدد / تصفية الشيكات لتشمل في الاختيار استلام الودائع وانقر على &quot;إنشاء&quot;.
InputReceiptNumber=اختيار كشف حساب مصرفي ذات الصلة مع التوفيق. استخدام قيمة رقمية للفرز: YYYYMM أو YYYYMMDD
BankTransactionLine=قيد البنك
AllAccounts=All bank and cash accounts
BackToAccount=عودة إلى الحساب
ShowAllAccounts=عرض لجميع الحسابات
FutureTransaction=المعاملة أجلة. لا يوجد فرصة للتسوية.
SelectChequeTransactionAndGenerate=تحديد / تصفية الشيكات ليتم تضمينها في ايصال ايداع الشيكات وانقر على "إنشاء".
InputReceiptNumber=اختيار كشف الحساب البنكي ذات الصلة مع التسوية. استخدام قيمة رقمية للفرز: شهر سنة أو يوم شهر سنة
EventualyAddCategory=في نهاية المطاف، حدد الفئة التي لتصنيف السجلات
ToConciliate=To reconcile?
ThenCheckLinesAndConciliate=ثم، والتحقق من خطوط الحالية في بيان البنك وانقر
ToConciliate=للتسوية؟
ThenCheckLinesAndConciliate=ثم، تحقق من السطور الحالية في كشف الحساب البنكي وانقر
DefaultRIB=BAN الافتراضي
AllRIB=جميع BAN
LabelRIB=BAN تسمية
LabelRIB=بطاقة BAN
NoBANRecord=لا يوجد سجل BAN
DeleteARib=حذف سجل BAN
ConfirmDeleteRib=Are you sure you want to delete this BAN record?
RejectCheck=تحقق عاد
ConfirmRejectCheck=Are you sure you want to mark this check as rejected?
RejectCheckDate=تاريخ أعيد الاختيار
CheckRejected=تحقق عاد
CheckRejectedAndInvoicesReopened=تحقق عاد والفواتير فتح
BankAccountModelModule=Document templates for bank accounts
DocumentModelSepaMandate=Template of SEPA mandate. Usefull for european countries in EEC only.
DocumentModelBan=Template to print a page with BAN information.
NewVariousPayment=New miscellaneous payments
VariousPayment=Miscellaneous payments
VariousPayments=Miscellaneous payments
ShowVariousPayment=Show miscellaneous payments
AddVariousPayment=Add miscellaneous payments
YourSEPAMandate=Your SEPA mandate
FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Thanks to return it signed (scan of the signed document) or sent it by mail to
ConfirmDeleteRib=هل أنت متأكد أنك تريد حذف سجل BAN هذا ؟
RejectCheck=تم إرجاع الشيك
ConfirmRejectCheck=هل انت متأكد انك تريد وضع علامة على هذا الشيك على أنه مرفوض؟
RejectCheckDate=تاريخ إرجاع الشيك
CheckRejected=تم إرجاع الشيك
CheckRejectedAndInvoicesReopened=تم ارجاع الشيك وإعادة فتح الفواتير
BankAccountModelModule=نماذج مستندات للحسابات البنكية
DocumentModelSepaMandate=نموذج تفويض سيبا. مفيدة للبلدان الأوروبية في السوق الأوروبية المشتركة فقط.
DocumentModelBan=نموذج لطباعة صفحة تحتوي على معلومات BAN .
NewVariousPayment=مدفوعات متنوعة جديدة
VariousPayment=مدفوعات متنوعة
VariousPayments=مدفوعات متنوعة
ShowVariousPayment=عرض الدفعات المتنوعة
AddVariousPayment=إضافة دفعات متنوعة
SEPAMandate=SEPA mandate
YourSEPAMandate=تفويض سيبا الخاص بك
FindYourSEPAMandate=هذا هو تفويض سيبا الخاصة بك لتخويل شركتنا لتقديم أمر الخصم المباشر إلى البنك الذي تتعامل معه. شكرا للعودة وقعت (فحص الوثيقة الموقعة) أو إرسالها عن طريق البريد إلى

View File

@@ -110,8 +110,8 @@ SendRemindByMail=إرسال تذكرة عن طريق البريد الإلكتر
DoPayment=Enter payment
DoPaymentBack=Enter refund
ConvertToReduc=Mark as credit available
ConvertExcessReceivedToReduc=Convert excess received into future discount
ConvertExcessPaidToReduc=Convert excess paid into future discount
ConvertExcessReceivedToReduc=Convert excess received into available credit
ConvertExcessPaidToReduc=Convert excess paid into available discount
EnterPaymentReceivedFromCustomer=دخول الدفع الواردة من العملاء
EnterPaymentDueToCustomer=من المقرر أن يسدد العميل
DisabledBecauseRemainderToPayIsZero=تعطيل بسبب المتبقية غير المدفوعة صفر
@@ -282,6 +282,7 @@ RelativeDiscount=الخصم النسبي
GlobalDiscount=خصم العالمية
CreditNote=علما الائتمان
CreditNotes=ويلاحظ الائتمان
CreditNotesOrExcessReceived=Credit notes or excess received
Deposit=Down payment
Deposits=Down payments
DiscountFromCreditNote=خصم من دائن %s
@@ -393,6 +394,7 @@ PaymentConditionShort14DENDMONTH=14 days of month-end
PaymentCondition14DENDMONTH=Within 14 days following the end of the month
FixAmount=كمية الإصلاح
VarAmount=مقدار متغير (٪٪ TOT).
VarAmountOneLine=Variable amount (%% tot.) - 1 line with label '%s'
# PaymentType
PaymentTypeVIR=حوالة مصرفية
PaymentTypeShortVIR=حوالة مصرفية

View File

@@ -19,7 +19,8 @@ Income=الدخل
Outcome=نتائج
MenuReportInOut=دخل / نتائج
ReportInOut=Balance of income and expenses
ReportTurnover=دوران
ReportTurnover=Turnover invoiced
ReportTurnoverCollected=Turnover collected
PaymentsNotLinkedToInvoice=المدفوعات ليست مرتبطة بأي الفاتورة ، وذلك ليس مرتبطا بأي طرف ثالث
PaymentsNotLinkedToUser=المدفوعات ليست مرتبطة بأي مستخدم
Profit=الأرباح
@@ -77,7 +78,7 @@ MenuNewSocialContribution=الضريبة الاجتماعية / مالية جد
NewSocialContribution=الضريبة الاجتماعية / مالية جديدة
AddSocialContribution=Add social/fiscal tax
ContributionsToPay=الضرائب الاجتماعية / المالية لدفع
AccountancyTreasuryArea=المحاسبة / الخزانة المنطقة
AccountancyTreasuryArea=Billing and payment area
NewPayment=دفع جديدة
Payments=المدفوعات
PaymentCustomerInvoice=الزبون تسديد الفاتورة
@@ -105,6 +106,7 @@ VATPayment=Sales tax payment
VATPayments=Sales tax payments
VATRefund=Sales tax refund
NewVATPayment=New sales tax payment
NewLocalTaxPayment=New tax %s payment
Refund=رد
SocialContributionsPayments=الاجتماعية المدفوعات / الضرائب المالية
ShowVatPayment=وتظهر دفع ضريبة القيمة المضافة
@@ -116,8 +118,9 @@ CustomerAccountancyCodeShort=الزبون. حساب. رمز
SupplierAccountancyCodeShort=سوب. حساب. رمز
AccountNumber=رقم الحساب
NewAccountingAccount=حساب جديد
SalesTurnover=مبيعات
SalesTurnoverMinimum=الحد الأدنى حجم مبيعات
Turnover=Turnover invoiced
TurnoverCollected=Turnover collected
SalesTurnoverMinimum=Minimum turnover
ByExpenseIncome=By expenses & incomes
ByThirdParties=بو أطراف ثالثة
ByUserAuthorOfInvoice=فاتورة من قبل المؤلف
@@ -137,8 +140,8 @@ ConfirmDeleteSocialContribution=هل أنت متأكد أنك تريد حذف /
ExportDataset_tax_1=الضرائب والمدفوعات الاجتماعية والمالية
CalcModeVATDebt=<b>الوضع٪ SVAT بشأن المحاسبة الالتزام٪ الصورة.</b>
CalcModeVATEngagement=وضع <b>SVAT٪ على مداخيل مصاريف٪ الصورة.</b>
CalcModeDebt=<b>وقال٪</b> وضع <b>sClaims-الديون٪ الصورة</b> <b>المحاسبة الالتزام.</b>
CalcModeEngagement=وقال <b>واسطة٪ sIncomes-المصروفات٪ الصورة</b> <b>المحاسبة النقدية</b>
CalcModeDebt=Analysis of known recorded invoices even if they are not yet accounted in ledger.
CalcModeEngagement=Analysis of known recorded payments, even if they are not yet accounted in Ledger.
CalcModeBookkeeping=Analysis of <b>data journalized in Bookkeeping Ledger table</b>
CalcModeLT1= <b>الوضع٪ زارة العلاقات الخارجية على فواتير العملاء - فواتير الموردين٪ الصورة</b>
CalcModeLT1Debt=<b>الوضع٪ زارة العلاقات الخارجية على فواتير العملاء٪ الصورة</b>
@@ -151,9 +154,9 @@ AnnualSummaryInputOutputMode=ميزان الإيرادات والمصروفات
AnnualByCompanies=Balance of income and expenses, by predefined groups of account
AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>.
AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode <b>%sIncomes-Expenses%s</b> said <b>cash accounting</b>.
SeeReportInInputOutputMode=انظر التقرير <b>sIncomes ٪</b> بين <b>المصروفات ٪ ق</b> قال <b>المحاسبة النقدية</b> لحساب المدفوعات الفعلية
SeeReportInDueDebtMode=انظر التقرير <b>sClaims ٪</b> بين <b>ديونها ٪ ق الالتزام والمحاسبة</b> وقال لحساب فواتير
SeeReportInBookkeepingMode=See report <b>%sBookeeping%s</b> for a calculation on <b>bookkeeping table analysis</b>
SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on actual payments made even if they are not yet accounted in Ledger.
SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger.
SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b>
RulesAmountWithTaxIncluded=- المبالغ المبينة لمع جميع الضرائب المدرجة
RulesResultDue=- وتتضمن الفواتير غير المسددة، والنفقات، ضريبة القيمة المضافة، والتبرعات سواء كانت بأجر أو لا. هو أيضا يتضمن الرواتب المدفوعة. <br> - وهو يستند إلى تاريخ المصادقة على الفواتير وضريبة القيمة المضافة وعلى الموعد المحدد للنفقات. لرواتب محددة مع وحدة الراتب، يتم استخدام قيمة تاريخ الدفع.
RulesResultInOut=- ويشمل المدفوعات الحقيقية المحرز في الفواتير والمصاريف والضريبة على القيمة المضافة والرواتب. <br> - لأنه يقوم على مواعيد دفع الفواتير والمصاريف والضريبة على القيمة المضافة والرواتب. تاريخ التبرع للتبرع.
@@ -218,8 +221,8 @@ Mode1=طريقة 1
Mode2=طريقة 2
CalculationRuleDesc=لحساب مجموع الضريبة على القيمة المضافة، هناك طريقتين: <br> طريقة 1 والتقريب ضريبة القيمة المضافة في كل سطر، ثم ملخصا لها. <br> طريقة 2 يتم تلخيص كل ضريبة القيمة المضافة في كل سطر، ثم التقريب النتيجة. <br> النتيجة النهائية قد تختلف من بضعة سنتات. الوضع الافتراضي هو وضع <b>الصورة٪.</b>
CalculationRuleDescSupplier=وفقا لالمورد، واختيار الطريقة المناسبة لتطبيق الحكم حساب نفسها والحصول على نفس النتيجة المتوقعة من المورد الخاص بك.
TurnoverPerProductInCommitmentAccountingNotRelevant=The Turnover report per product, when using a <b>cash accounting</b> mode is not relevant. This report is only available when using <b>commitment accounting</b> mode (see setup of accountancy module).
TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=The Turnover report per sale tax rate, when using a <b>cash accounting</b> mode is not relevant. This report is only available when using <b>commitment accounting</b> mode (see setup of accountancy module).
TurnoverPerProductInCommitmentAccountingNotRelevant=The report of Turnover collected per product is not available. This report is only available for turnover invoiced.
TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=The report of Turnover collected per sale tax rate is not available. This report is only available for turnover invoiced.
CalculationMode=وضع الحساب
AccountancyJournal=Accounting code journal
ACCOUNTING_VAT_SOLD_ACCOUNT=Accounting account by default for VAT on sales (used if not defined on VAT dictionary setup)
@@ -251,5 +254,6 @@ VATDue=Sale tax claimed
ClaimedForThisPeriod=Claimed for the period
PaidDuringThisPeriod=Paid during this period
ByVatRate=By sale tax rate
TurnoverbyVatrate=Turnover by sale tax rate
TurnoverbyVatrate=Turnover invoiced by sale tax rate
TurnoverCollectedbyVatrate=Turnover collected by sale tax rate
PurchasebyVatrate=Purchase by sale tax rate

View File

@@ -204,3 +204,7 @@ MigrationResetBlockedLog=Reset module BlockedLog for v7 algorithm
ShowNotAvailableOptions=عرض خيارات غير متوفرة
HideNotAvailableOptions=إخفاء خيارات غير متوفرة
ErrorFoundDuringMigration=Error were reported during migration process so next step is not available. To ignore errors, you can <a href="%s">click here</a>, but application or some features may not work correctly until fixed.
YouTryInstallDisabledByDirLock=The application try to sefl upgrade, but install/upgrade pages have been disabled for security reason (directory renamed with .lock suffix).<br>
YouTryInstallDisabledByFileLock=The application try to sefl upgrade, but install/upgrade pages pages have been disabled for security reason (by lock file <strong>install.lock</strong> into dolibarr documents directory).<br>
ClickHereToGoToApp=Click here to go to your application
ClickOnLinkOrRemoveManualy=Click on following link and if you always reach this page, you must remove the file install.lock into documents directory manually

View File

@@ -507,6 +507,7 @@ NoneF=لا شيء
NoneOrSeveral=None or several
Late=متأخر
LateDesc=Delay to define if a record is late or not depends on your setup. Ask your admin to change delay from menu Home - Setup - Alerts.
NoItemLate=No late item
Photo=صورة
Photos=الصور
AddPhoto=إضافة الصورة
@@ -945,3 +946,5 @@ KeyboardShortcut=Keyboard shortcut
AssignedTo=مخصص ل
Deletedraft=Delete draft
ConfirmMassDraftDeletion=Draft Bulk delete confirmation
FileSharedViaALink=File shared via a link

View File

@@ -74,6 +74,7 @@ NoWidget=No widget
GoToApiExplorer=Go to API explorer
ListOfMenusEntries=List of menu entries
ListOfPermissionsDefined=List of defined permissions
SeeExamples=See examples here
EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION)
VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only. Using a negative value means field is not shown by default on list but can be selected for viewing)
IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0)
@@ -95,3 +96,6 @@ DropTableIfEmpty=(Delete table if empty)
TableDoesNotExists=The table %s does not exists
TableDropped=Table %s deleted
InitStructureFromExistingTable=Build the structure array string of an existing table
UseAboutPage=Disallow the about page
UseDocFolder=Disallow the documentation folder
UseSpecificReadme=Use a specific ReadMe

Some files were not shown because too many files have changed in this diff Show More