Merge pull request #5 from Dolibarr/develop
Merge latest changes to fork
146
ChangeLog
@ -12,14 +12,150 @@ NEW: Several security issues after a second private bug bounty campaign.
|
||||
NEW: Add a security center page with all information and advices related to the security of your instance
|
||||
NEW: Add a performance center page with all information and advices related to the performance of your instance
|
||||
NEW: A lot of fix into english text after a small proofreading campaign (still not perfect, but really better)
|
||||
|
||||
NEW: All main menu entries are using the picto of the module
|
||||
NEW: Accountancy - Add closure menu
|
||||
NEW: Accountancy - Add FEC import
|
||||
NEW: Accountancy - Add formconfirm with options on export
|
||||
NEW: Accountancy - Add select date from/to in already bind customer and supplier list
|
||||
NEW: Accountancy - Format FEC - Add new field DateLimitReglmt
|
||||
NEW: Accountancy - In ledger & journals, show link on bank transaction
|
||||
NEW: Accountancy - Possibility to filter on journals in balance
|
||||
NEW: Accountancy - Add a page to list subledger accounts on product/company
|
||||
NEW: add the Channel column into the list of orders
|
||||
NEW: Add a check to avoid an invoice date in the future
|
||||
NEW: Add some color and picto for the direction of movement
|
||||
NEW: Add the column "alias" of company in the list of proposal, order, invoice
|
||||
NEW: Add the column "Office phone" and "User mobile" in user list
|
||||
NEW: Add the column "Price level"in thirdparty list
|
||||
NEW: Add some company information in the dropdown login menu
|
||||
NEW: Add constant MAIN_BUGTRACK_URL to set url to redirect to on link "declare a bug"
|
||||
NEW: Add contact tag and bulk email status on the thirparty+contact create form
|
||||
NEW: Add db fields note_public note_private for ECM module
|
||||
NEW: Manage deposit on supplier invoice (& somes ajustments)
|
||||
NEW: Add edit/delete action icons on categories list pages
|
||||
NEW: Add hidden option to auto load input line extrafield into new lines
|
||||
NEW: Add import profile to import BOM
|
||||
NEW: Add last date of modification for website pages in the list of pages
|
||||
NEW: Add link picto to the stock movement on the detail of production
|
||||
NEW: Add mass action "Set tag" for product/service, user, thirdparty, warehouse, project, bank account, members
|
||||
NEW: Add Mass action order validate and set to billed
|
||||
NEW: add massActions to set a commercial proposal to status "Refused"
|
||||
NEW: Add option CONTRACT_ALLOW_EXTERNAL_DOWNLOAD and SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD
|
||||
NEW: Add option MAIN_SECURITY_ANTI_SSRF_SERVER_IP
|
||||
NEW: Add option SOCIETE_DISABLE_WORKFORCE to hide staff field
|
||||
NEW: Add pagination at Get Products response
|
||||
NEW: Add new permission "Export website"
|
||||
NEW: Add possibility to exports userGroups fields on user exports
|
||||
NEW: Add price min and price min including tax into product export
|
||||
NEW: Can search on lots or serials into the quick search bar
|
||||
NEW: Add support for Friday as a non working day
|
||||
NEW: Add a total in agent margin & uniformize code
|
||||
NEW: add total margin in invoice list
|
||||
NEW: Can set a Warehouse on Thirparty
|
||||
NEW: auto notification with module Notification can use templated emails
|
||||
NEW: Bank Entries : add verif fk_user addPaymentToBank Social Contribution
|
||||
NEW: Bank Entries : display user linked to a salary or a taxes
|
||||
NEW: better date_valid on invoice
|
||||
NEW: Can ask the warehouse in proposal
|
||||
NEW: Can clone a cron job.
|
||||
NEW: Can create a lot from list
|
||||
NEW: Can edit object in module builder
|
||||
NEW: Can filter files in GED on status Shared/Not shared
|
||||
NEW: Can filter on extrafields date on lists
|
||||
NEW: Can filter on rowid in list of blocked logs.
|
||||
NEW: Can hide columns "time consumed" on timesheet per week.
|
||||
NEW: Can set an employee on each social contribution
|
||||
NEW: Can set a percentage when creating an invoice from another object
|
||||
NEW: Can set if a ticket group is visible on public interface or not.
|
||||
NEW: Can set order of execution of hooks
|
||||
NEW: Can show the holidays on the agenda view.
|
||||
NEW: Can show the project ref or label into PDF documents
|
||||
NEW: Can toggle FCKeditor on public/private notes
|
||||
NEW: Can use captcha on public page to create a ticket
|
||||
NEW: Check update for externals modules using button on module page
|
||||
NEW: choose lines while creating intervention card from origin
|
||||
NEW: Column shippement method, payment mode, payment term in propal and order list
|
||||
NEW: Conf for default actiomm status when created from card
|
||||
NEW: Conf for default actiomm status when created from card (and DefaultValues CRUD class)
|
||||
NEW: customer price customer ref: push back to v14
|
||||
NEW: customer ref for product customer prices
|
||||
NEW: date and user signature on proposal (Issue 16062)
|
||||
NEW: Dictionary for availability - Add column position
|
||||
NEW: TAKEPOS delayed payment in TakePOS
|
||||
NEW: TAKEPOS display date range if exist in TakePOS
|
||||
NEW: TAKEPOS display resiliate status in TakePOS for member
|
||||
NEW: TAKEPOS Edit sales lines rights in TakePOS
|
||||
NEW: Extrafields of documents lines are inside the lines, not any more on separate TR
|
||||
NEW: Can set a user related to a social contribution
|
||||
NEW: ICS Direct debit can be set with a different value for each bank account
|
||||
NEW: LDAP: usergroup search can be filtered
|
||||
NEW: Make public bookmarks editable by admin users only
|
||||
NEW: If no logo defined, can use the squarred logo on login page
|
||||
NEW: The manifest file can use the squared image if available
|
||||
NEW: Add buld actions for Bank Transfer
|
||||
NEW: Enhance the multicurrency rate editor
|
||||
NEW: migration script
|
||||
NEW: More permission in TakePOS (Can edit added line, can modify once order sent to kitchen)
|
||||
NEW: Multiselect ledger account code filter on book keeping list
|
||||
NEW: Normalyse Type company field with ajax combobox
|
||||
NEW: TAKEPOS: option for Takepos to show the total price without tax
|
||||
NEW: option to automatically close an open project when all its tasks are done (=progress 100%)
|
||||
NEW: option to select membership type on the online payment page for membership subscription or renewal
|
||||
NEW: preload product description on selection for customer propal/order/invoice
|
||||
NEW: Add a ref in product customer price
|
||||
NEW: Save old page with .old extension on disk when editing a website page
|
||||
NEW: Search usergroups & resources
|
||||
NEW: Set status of all variant when setting status of parent
|
||||
NEW: Setup Page for module create with module builder enhancement #FoundationFunding
|
||||
NEW: Show picto of module into the list of dictionaries
|
||||
NEW: Show the total of payment on the payment confirm page
|
||||
NEW: Stock movement list - Add more complete date field
|
||||
NEW: Support color for types of event
|
||||
NEW: The setup for Mandatory field can now be done on combo list too.
|
||||
NEW: translate in "en_US" to complete PR 16980
|
||||
NEW: unit selection on object edit line
|
||||
NEW: Update the list of taxes available by default for France
|
||||
NEW: Add captcha on public page to create a ticket
|
||||
NEW: Salary payment request and Salary payment are 2 different steps in workflow on Salary payment recording
|
||||
NEW: VAT payment request and VAT payment are now 2 different steps in workflow on VAT payment recording
|
||||
NEW: VAT report - Optimisation & collapse by rate
|
||||
NEW: When we add contacts/users to Project, ask to also affect them on project tasks
|
||||
NEW: When a doc file is shared, link is visible from the main page of doc.
|
||||
NEW: Workflow to set a shipment as closed.
|
||||
NEW: Option to automatically create a login/user when a new subscription of a member is done online
|
||||
NEW: #16378 More E-Mail Contact substitution Values for better salutation
|
||||
NEW: #13739 #17390 Product API route added to get product stock and product with or without variants
|
||||
NEW: option to leave the "Automatically create a total payment" checkbox empty on the tax creation page
|
||||
NEW: #17113 Can upload a favicon in website module
|
||||
NEW: #17292 default subscription amount by adherent type
|
||||
|
||||
For developers:
|
||||
---------------
|
||||
* start new module Event Organization Management
|
||||
* start new module Partnership Management
|
||||
* start new module Knowledge Management
|
||||
|
||||
NEW: start new module Event Organization Management
|
||||
NEW: start new module Partnership Management
|
||||
NEW: start new module Knowledge Management
|
||||
NEW: start new module Workstations management
|
||||
NEW: hook printFieldListTitle for cabyprodserv.php
|
||||
NEW: Hook to allow external modules to add their own shortlist of recent objects
|
||||
NEW: SQL-altering hooks in the turnover by product report
|
||||
NEW: Add data-eec=1 for EEC countries on select for js interaction
|
||||
NEW: Add experimental repair script to switch to dynamic row format and utf8mb4 encoding
|
||||
NEW: add form confirm hook on company card
|
||||
NEW: Add function showValueWithClipboardCPButton() to add a copy/paste
|
||||
NEW: Add function showValueWithCopyAndPasteButton() to add a copy/paste
|
||||
NEW: Add hook addSectionECMAuto method to add custom diretory into ECM auto files
|
||||
NEW: Add native compression in rest apis
|
||||
NEW: Product Variants API, add variant stock to response by parameter
|
||||
NEW: Upgrade Stripe PHP lib to 7.67.0
|
||||
NEW: Add link to OpenAPI specifications xml file in REST API module setup: swagger.json file can be included into external tools like redoc
|
||||
NEW: Support sepa_debit in stripe paymentmethods list
|
||||
NEW: Update doleditor.class.php for easily activate SCAYT
|
||||
NEW: Add triggers in the function add_object_linked(), updateObjectLinked() and deleteObjectLinked()
|
||||
NEW: Add triggers OBJECT_LINK_INSERT, OBJECT_LINK_UPDATE et OBJECT_LINK_DELETE in the function add_object_linked(), updateObjectLinked() and deleteObjectLinked()
|
||||
NEW: API Add option $includeifobjectisused to get a product
|
||||
NEW: API Get the list of product ids only
|
||||
NEW: Can set a target image in dolcropresize function.
|
||||
NEW: Can set a label as placeholder for combo lists.
|
||||
|
||||
|
||||
WARNING:
|
||||
|
||||
@ -542,7 +542,7 @@ $cfg['ThemePerServer'] = FALSE; // allow diferent theme for each co
|
||||
* %f will be replaced by a list of field names.
|
||||
* (%t and %f only applies to DefaultQueryTable)
|
||||
*/
|
||||
$cfg['DefaultQueryTable'] = 'SELECT * FROM %t WHERE 1';
|
||||
$cfg['DefaultQueryTable'] = 'SELECT * FROM %t WHERE 1 = 1';
|
||||
$cfg['DefaultQueryDatabase'] = '';
|
||||
|
||||
/**
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 443 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 412 B After Width: | Height: | Size: 2.1 KiB |
BIN
doc/images/appicon_32.ico
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 693 B After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
@ -105,6 +105,7 @@ if ($action == 'set_default') {
|
||||
$res1 = dolibarr_set_const($db, 'ADHERENT_LOGIN_NOT_REQUIRED', GETPOST('ADHERENT_LOGIN_NOT_REQUIRED', 'alpha') ? 0 : 1, 'chaine', 0, '', $conf->entity);
|
||||
$res2 = dolibarr_set_const($db, 'ADHERENT_MAIL_REQUIRED', GETPOST('ADHERENT_MAIL_REQUIRED', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res3 = dolibarr_set_const($db, 'ADHERENT_DEFAULT_SENDINFOBYMAIL', GETPOST('ADHERENT_DEFAULT_SENDINFOBYMAIL', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res3 = dolibarr_set_const($db, 'ADHERENT_CREATE_EXTERNAL_USER_LOGIN', GETPOST('ADHERENT_CREATE_EXTERNAL_USER_LOGIN', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res4 = dolibarr_set_const($db, 'ADHERENT_BANK_USE', GETPOST('ADHERENT_BANK_USE', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
// Use vat for invoice creation
|
||||
if ($conf->facture->enabled) {
|
||||
@ -217,6 +218,11 @@ print '<tr class="oddeven"><td>'.$langs->trans("MemberSendInformationByMailByDef
|
||||
print $form->selectyesno('ADHERENT_DEFAULT_SENDINFOBYMAIL', (!empty($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL) ? $conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL : 0), 1);
|
||||
print "</td></tr>\n";
|
||||
|
||||
// Create an external user login for each new member subscription validated
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("MemberCreateAnExternalUserForSubscriptionValidated").'</td><td>';
|
||||
print $form->selectyesno('ADHERENT_CREATE_EXTERNAL_USER_LOGIN', (!empty($conf->global->ADHERENT_CREATE_EXTERNAL_USER_LOGIN) ? $conf->global->ADHERENT_CREATE_EXTERNAL_USER_LOGIN : 0), 1);
|
||||
print "</td></tr>\n";
|
||||
|
||||
// Insert subscription into bank account
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("MoreActionsOnSubscription").'</td>';
|
||||
$arraychoices = array('0'=>$langs->trans("None"));
|
||||
|
||||
@ -284,6 +284,7 @@ if (empty($reshook)) {
|
||||
$object->phone_perso = trim(GETPOST("phone_perso", 'alpha'));
|
||||
$object->phone_mobile = trim(GETPOST("phone_mobile", 'alpha'));
|
||||
$object->email = preg_replace('/\s+/', '', GETPOST("member_email", 'alpha'));
|
||||
$object->url = trim(GETPOST('member_url', 'custom', 0, FILTER_SANITIZE_URL));
|
||||
$object->socialnetworks = array();
|
||||
foreach ($socialnetworks as $key => $value) {
|
||||
if (GETPOSTISSET($key) && GETPOST($key, 'alphanohtml') != '') {
|
||||
@ -431,6 +432,7 @@ if (empty($reshook)) {
|
||||
// $facebook=GETPOST("member_facebook", 'alpha');
|
||||
// $linkedin=GETPOST("member_linkedin", 'alpha');
|
||||
$email = preg_replace('/\s+/', '', GETPOST("member_email", 'alpha'));
|
||||
$url = trim(GETPOST('url', 'custom', 0, FILTER_SANITIZE_URL));
|
||||
$login = GETPOST("member_login", 'alphanohtml');
|
||||
$pass = GETPOST("password", 'alpha');
|
||||
$photo = GETPOST("photo", 'alpha');
|
||||
@ -469,6 +471,7 @@ if (empty($reshook)) {
|
||||
// $object->linkedin = $linkedin;
|
||||
|
||||
$object->email = $email;
|
||||
$object->url = $url;
|
||||
$object->login = $login;
|
||||
$object->pass = $pass;
|
||||
$object->birth = $birthdate;
|
||||
@ -537,6 +540,10 @@ if (empty($reshook)) {
|
||||
$langs->load("errors");
|
||||
setEventMessages($langs->trans("ErrorBadEMail", $email), null, 'errors');
|
||||
}
|
||||
if (!empty($object->url) && !isValidUrl($object->url)) {
|
||||
$langs->load("errors");
|
||||
setEventMessages('', $langs->trans("ErrorBadUrl", $object->url), 'errors');
|
||||
}
|
||||
$public = 0;
|
||||
if (isset($public)) {
|
||||
$public = 1;
|
||||
@ -1028,6 +1035,10 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
||||
print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED ? '<span class="fieldrequired">' : '').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED ? '</span>' : '').'</td>';
|
||||
print '<td>'.img_picto('', 'object_email').' <input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(GETPOSTISSET('member_email') ? GETPOST('member_email', 'alpha') : $object->email).'"></td></tr>';
|
||||
|
||||
// Website
|
||||
print '<tr><td>'.$form->editfieldkey('Web', 'member_url', '', $object, 0).'</td>';
|
||||
print '<td>'.img_picto('', 'globe').' <input type="text" class="maxwidth500 widthcentpercentminusx" name="member_url" id="member_url" value="'.$object->url.'"></td></tr>';
|
||||
|
||||
// Address
|
||||
print '<tr><td class="tdtop">'.$langs->trans("Address").'</td><td>';
|
||||
print '<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="2">'.(GETPOSTISSET('address') ?GETPOST('address', 'alphanohtml') : $object->address).'</textarea>';
|
||||
@ -1272,6 +1283,10 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
||||
print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED ? '<span class="fieldrequired">' : '').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED ? '</span>' : '').'</td>';
|
||||
print '<td>'.img_picto('', 'object_email').' <input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(GETPOSTISSET("member_email") ? GETPOST("member_email", '', 2) : $object->email).'"></td></tr>';
|
||||
|
||||
// Website
|
||||
print '<tr><td>'.$form->editfieldkey('Web', 'member_url', GETPOST('member_url', 'alpha'), $object, 0).'</td>';
|
||||
print '<td colspan="3">'.img_picto('', 'globe').' <input type="text" name="member_url" id="member_url" class="maxwidth200onsmartphone maxwidth500 widthcentpercentminusx " value="'.(GETPOSTISSET('member_url') ?GETPOST('member_url', 'alpha') : $object->url).'"></td></tr>';
|
||||
|
||||
// Address
|
||||
print '<tr><td>'.$langs->trans("Address").'</td><td>';
|
||||
print '<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_2.'">'.(GETPOSTISSET("address") ? GETPOST("address", 'alphanohtml', 2) : $object->address).'</textarea>';
|
||||
|
||||
@ -140,6 +140,11 @@ class Adherent extends CommonObject
|
||||
*/
|
||||
public $email;
|
||||
|
||||
/**
|
||||
* @var string url
|
||||
*/
|
||||
public $url;
|
||||
|
||||
/**
|
||||
* @var array array of socialnetworks
|
||||
*/
|
||||
@ -307,6 +312,7 @@ class Adherent extends CommonObject
|
||||
'state_id' => array('type' => 'integer', 'label' => 'State id', 'enabled' => 1, 'visible' => -1, 'position' => 90),
|
||||
'country' => array('type' => 'integer:Ccountry:core/class/ccountry.class.php', 'label' => 'Country', 'enabled' => 1, 'visible' => -1, 'position' => 95),
|
||||
'email' => array('type' => 'varchar(255)', 'label' => 'Email', 'enabled' => 1, 'visible' => -1, 'position' => 100),
|
||||
'url' =>array('type'=>'varchar(255)', 'label'=>'Url', 'enabled'=>1, 'visible'=>-1, 'position'=>110),
|
||||
'socialnetworks' => array('type' => 'text', 'label' => 'Socialnetworks', 'enabled' => 1, 'visible' => -1, 'position' => 105),
|
||||
'phone' => array('type' => 'varchar(30)', 'label' => 'Phone', 'enabled' => 1, 'visible' => -1, 'position' => 115),
|
||||
'phone_perso' => array('type' => 'varchar(30)', 'label' => 'Phone perso', 'enabled' => 1, 'visible' => -1, 'position' => 120),
|
||||
@ -661,6 +667,7 @@ class Adherent extends CommonObject
|
||||
$this->setUpperOrLowerCase();
|
||||
$this->note_public = ($this->note_public ? $this->note_public : $this->note_public);
|
||||
$this->note_private = ($this->note_private ? $this->note_private : $this->note_private);
|
||||
$this->url = $this->url ?clean_url($this->url, 0) : '';
|
||||
|
||||
// Check parameters
|
||||
if (!empty($conf->global->ADHERENT_MAIL_REQUIRED) && !isValidEMail($this->email)) {
|
||||
@ -686,6 +693,7 @@ class Adherent extends CommonObject
|
||||
$sql .= ", country = ".($this->country_id > 0 ? $this->db->escape($this->country_id) : "null");
|
||||
$sql .= ", state_id = ".($this->state_id > 0 ? $this->db->escape($this->state_id) : "null");
|
||||
$sql .= ", email = '".$this->db->escape($this->email)."'";
|
||||
$sql .= ", url = ".(!empty($this->url) ? "'".$this->db->escape($this->url)."'" : "null");
|
||||
$sql .= ", socialnetworks = '".$this->db->escape(json_encode($this->socialnetworks))."'";
|
||||
$sql .= ", phone = ".($this->phone ? "'".$this->db->escape($this->phone)."'" : "null");
|
||||
$sql .= ", phone_perso = ".($this->phone_perso ? "'".$this->db->escape($this->phone_perso)."'" : "null");
|
||||
@ -1298,7 +1306,7 @@ class Adherent extends CommonObject
|
||||
$sql = "SELECT d.rowid, d.ref, d.ref_ext, d.civility as civility_code, d.gender, d.firstname, d.lastname,";
|
||||
$sql .= " d.societe as company, d.fk_soc, d.statut, d.public, d.address, d.zip, d.town, d.note_private,";
|
||||
$sql .= " d.note_public,";
|
||||
$sql .= " d.email, d.socialnetworks, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass, d.pass_crypted,";
|
||||
$sql .= " d.email, d.url, d.socialnetworks, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass, d.pass_crypted,";
|
||||
$sql .= " d.photo, d.fk_adherent_type, d.morphy, d.entity,";
|
||||
$sql .= " d.datec as datec,";
|
||||
$sql .= " d.tms as datem,";
|
||||
@ -1377,6 +1385,7 @@ class Adherent extends CommonObject
|
||||
$this->phone_perso = $obj->phone_perso;
|
||||
$this->phone_mobile = $obj->phone_mobile;
|
||||
$this->email = $obj->email;
|
||||
$this->url = $obj->url;
|
||||
|
||||
$this->socialnetworks = (array) json_decode($obj->socialnetworks, true);
|
||||
|
||||
|
||||
@ -247,6 +247,42 @@ if (empty($reshook)) {
|
||||
}
|
||||
}
|
||||
|
||||
// Create external user
|
||||
if ($massaction == 'createexternaluser' && $user->rights->adherent->creer && $user->rights->user->user->creer) {
|
||||
$tmpmember = new Adherent($db);
|
||||
$error = 0;
|
||||
$nbcreated = 0;
|
||||
|
||||
$db->begin();
|
||||
|
||||
foreach ($toselect as $idtoclose) {
|
||||
$tmpmember->fetch($idtoclose);
|
||||
|
||||
if (!empty($tmpmember->fk_soc)) {
|
||||
$nuser = new User($db);
|
||||
$tmpuser = dol_clone($tmpmember);
|
||||
|
||||
$result = $nuser->create_from_member($tmpuser, $tmpmember->login);
|
||||
|
||||
if ($result < 0 && !count($tmpmember->errors)) {
|
||||
setEventMessages($tmpmember->error, $tmpmember->errors, 'errors');
|
||||
} else {
|
||||
if ($result > 0) {
|
||||
$nbcreated++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
setEventMessages($langs->trans("XExternalUserCreated", $nbcreated), null, 'mesgs');
|
||||
|
||||
$db->commit();
|
||||
} else {
|
||||
$db->rollback();
|
||||
}
|
||||
}
|
||||
|
||||
// Mass actions
|
||||
$objectclass = 'Adherent';
|
||||
$objectlabel = 'Members';
|
||||
@ -555,6 +591,9 @@ if ($user->rights->adherent->supprimer) {
|
||||
if ($user->rights->societe->creer) {
|
||||
$arrayofmassactions['preaffecttag'] = img_picto('', 'category', 'class="pictofixedwidth"').$langs->trans("AffectTag");
|
||||
}
|
||||
if ($user->rights->adherent->creer && $user->rights->user->user->creer) {
|
||||
$arrayofmassactions['createexternaluser'] = img_picto('', 'user', 'class="pictofixedwidth"').$langs->trans("CreateExternalUser");
|
||||
}
|
||||
if (in_array($massaction, array('presend', 'predelete','preaffecttag'))) {
|
||||
$arrayofmassactions = array();
|
||||
}
|
||||
|
||||
558
htdocs/adherents/partnership.php
Normal file
@ -0,0 +1,558 @@
|
||||
<?php
|
||||
/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2021 NextGestion <contact@nextgestion.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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file partnership_card.php
|
||||
* \ingroup partnership
|
||||
* \brief Page to create/edit/view partnership
|
||||
*/
|
||||
|
||||
//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db
|
||||
//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user
|
||||
//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc
|
||||
//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs
|
||||
//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters
|
||||
//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters
|
||||
//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on).
|
||||
//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on)
|
||||
//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data
|
||||
//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu
|
||||
//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php
|
||||
//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library
|
||||
//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too.
|
||||
//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip
|
||||
//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value
|
||||
//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler
|
||||
//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', 1); // The main.inc.php does not make a redirect if not logged, instead show simple error message
|
||||
//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies
|
||||
//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET
|
||||
//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification
|
||||
|
||||
// Load Dolibarr environment
|
||||
$res = 0;
|
||||
// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined)
|
||||
if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) {
|
||||
$res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php";
|
||||
}
|
||||
// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME
|
||||
$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1;
|
||||
while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) {
|
||||
$i--; $j--;
|
||||
}
|
||||
if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) {
|
||||
$res = @include substr($tmp, 0, ($i + 1))."/main.inc.php";
|
||||
}
|
||||
if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) {
|
||||
$res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php";
|
||||
}
|
||||
// Try main.inc.php using relative path
|
||||
if (!$res && file_exists("../main.inc.php")) {
|
||||
$res = @include "../main.inc.php";
|
||||
}
|
||||
if (!$res && file_exists("../../main.inc.php")) {
|
||||
$res = @include "../../main.inc.php";
|
||||
}
|
||||
if (!$res && file_exists("../../../main.inc.php")) {
|
||||
$res = @include "../../../main.inc.php";
|
||||
}
|
||||
if (!$res) {
|
||||
die("Include of main fails");
|
||||
}
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/member.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
|
||||
dol_include_once('/partnership/class/partnership.class.php');
|
||||
dol_include_once('/partnership/lib/partnership.lib.php');
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array("companies","members","partnership", "other"));
|
||||
|
||||
// Get parameters
|
||||
$id = GETPOST('id', 'int');
|
||||
$memberid = GETPOST('rowid', 'int');
|
||||
$ref = GETPOST('ref', 'alpha');
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
$confirm = GETPOST('confirm', 'alpha');
|
||||
$cancel = GETPOST('cancel', 'aZ09');
|
||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'partnershipcard'; // To manage different context of search
|
||||
$backtopage = GETPOST('backtopage', 'alpha');
|
||||
$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
|
||||
//$lineid = GETPOST('lineid', 'int');
|
||||
|
||||
$member = new Adherent($db);
|
||||
if ($memberid > 0) {
|
||||
$member->fetch($memberid);
|
||||
}
|
||||
|
||||
// Initialize technical objects
|
||||
$object = new Partnership($db);
|
||||
$extrafields = new ExtraFields($db);
|
||||
$adht = new AdherentType($db);
|
||||
$diroutputmassaction = $conf->partnership->dir_output.'/temp/massgeneration/'.$user->id;
|
||||
$hookmanager->initHooks(array('partnershipthirdparty', 'globalcard')); // Note that conf->hooks_modules contains array
|
||||
|
||||
// Fetch optionals attributes and labels
|
||||
$extrafields->fetch_name_optionals_label($object->table_element);
|
||||
|
||||
$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
|
||||
|
||||
// Initialize array of search criterias
|
||||
$search_all = GETPOST("search_all", 'alpha');
|
||||
$search = array();
|
||||
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (GETPOST('search_'.$key, 'alpha')) {
|
||||
$search[$key] = GETPOST('search_'.$key, 'alpha');
|
||||
}
|
||||
}
|
||||
|
||||
// Load object
|
||||
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
|
||||
|
||||
$permissiontoread = $user->rights->partnership->read;
|
||||
$permissiontoadd = $user->rights->partnership->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
|
||||
$permissiontodelete = $user->rights->partnership->delete || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT);
|
||||
$permissionnote = $user->rights->partnership->write; // Used by the include of actions_setnotes.inc.php
|
||||
$permissiondellink = $user->rights->partnership->write; // Used by the include of actions_dellink.inc.php
|
||||
$usercanclose = $user->rights->partnership->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
|
||||
$upload_dir = $conf->partnership->multidir_output[isset($object->entity) ? $object->entity : 1];
|
||||
|
||||
|
||||
if ($conf->global->PARTNERSHIP_IS_MANAGED_FOR != 'member') accessforbidden();
|
||||
if (empty($conf->partnership->enabled)) accessforbidden();
|
||||
if (empty($permissiontoread)) accessforbidden();
|
||||
if ($action == 'edit' && empty($permissiontoadd)) accessforbidden();
|
||||
|
||||
$partnershipid = $object->fetch(0, "", $memberid);
|
||||
if (empty($action) && empty($partnershipid)) {
|
||||
$action = 'create';
|
||||
}
|
||||
if (($action == 'update' || $action == 'edit') && $object->status != $object::STATUS_DRAFT) accessforbidden();
|
||||
|
||||
if (empty($memberid) && $object) {
|
||||
$memberid = $object->fk_member;
|
||||
}
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
||||
$parameters = array();
|
||||
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook < 0) {
|
||||
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||
}
|
||||
|
||||
$date_start = dol_mktime(0, 0, 0, GETPOST('date_partnership_startmonth', 'int'), GETPOST('date_partnership_startday', 'int'), GETPOST('date_partnership_startyear', 'int'));
|
||||
$date_end = dol_mktime(0, 0, 0, GETPOST('date_partnership_endmonth', 'int'), GETPOST('date_partnership_endday', 'int'), GETPOST('date_partnership_endyear', 'int'));
|
||||
|
||||
if (empty($reshook)) {
|
||||
$error = 0;
|
||||
|
||||
$backtopage = dol_buildpath('/partnership/partnership.php', 1).'?rowid='.($memberid > 0 ? $memberid : '__ID__');
|
||||
|
||||
$triggermodname = 'PARTNERSHIP_MODIFY'; // Name of trigger action code to execute when we modify record
|
||||
|
||||
if ($action == 'add' && $permissiontoread) {
|
||||
$error = 0;
|
||||
|
||||
$db->begin();
|
||||
|
||||
$now = dol_now();
|
||||
|
||||
if (!$error) {
|
||||
$old_start_date = $object->date_partnership_start;
|
||||
|
||||
$object->fk_member = $memberid;
|
||||
$object->date_partnership_start = (!GETPOST('date_partnership_start')) ? '' : $date_start;
|
||||
$object->date_partnership_end = (!GETPOST('date_partnership_end')) ? '' : $date_end;
|
||||
$object->note_public = GETPOST('note_public', 'restricthtml');
|
||||
$object->date_creation = $now;
|
||||
$object->fk_user_creat = $user->id;
|
||||
$object->entity = $conf->entity;
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
$ret = $extrafields->setOptionalsFromPost(null, $object);
|
||||
if ($ret < 0) {
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$result = $object->create($user);
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
if ($result == -4) {
|
||||
setEventMessages($langs->trans("ErrorRefAlreadyExists"), null, 'errors');
|
||||
} else {
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($error) {
|
||||
$db->rollback();
|
||||
$action = 'create';
|
||||
} else {
|
||||
$db->commit();
|
||||
}
|
||||
} elseif ($action == 'update' && $permissiontoread) {
|
||||
$error = 0;
|
||||
|
||||
$db->begin();
|
||||
|
||||
$now = dol_now();
|
||||
|
||||
if (!$error) {
|
||||
$object->oldcopy = clone $object;
|
||||
|
||||
$old_start_date = $object->date_partnership_start;
|
||||
|
||||
$object->date_partnership_start = (!GETPOST('date_partnership_start')) ? '' : $date_start;
|
||||
$object->date_partnership_end = (!GETPOST('date_partnership_end')) ? '' : $date_end;
|
||||
$object->note_public = GETPOST('note_public', 'restricthtml');
|
||||
$object->fk_user_creat = $user->id;
|
||||
$object->fk_user_modif = $user->id;
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
$ret = $extrafields->setOptionalsFromPost(null, $object);
|
||||
if ($ret < 0) {
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$result = $object->update($user);
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
if ($result == -4) {
|
||||
setEventMessages($langs->trans("ErrorRefAlreadyExists"), null, 'errors');
|
||||
} else {
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($error) {
|
||||
$db->rollback();
|
||||
$action = 'edit';
|
||||
} else {
|
||||
$db->commit();
|
||||
}
|
||||
} elseif ($action == 'confirm_close' || $action == 'update_extras') {
|
||||
include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php';
|
||||
|
||||
header("Location: ".$_SERVER['PHP_SELF']."?rowid=".$memberid);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Actions when linking object each other
|
||||
include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php';
|
||||
}
|
||||
|
||||
$object->fields['fk_member']['visible'] = 0;
|
||||
if ($object->id > 0 && $object->status == $object::STATUS_REFUSED && empty($action)) $object->fields['reason_decline_or_cancel']['visible'] = 1;
|
||||
$object->fields['note_public']['visible'] = 1;
|
||||
|
||||
/*
|
||||
* View
|
||||
*
|
||||
* Put here all code to build page
|
||||
*/
|
||||
|
||||
$form = new Form($db);
|
||||
$formfile = new FormFile($db);
|
||||
|
||||
$title = $langs->trans("Partnership");
|
||||
llxHeader('', $title);
|
||||
|
||||
$form = new Form($db);
|
||||
|
||||
if ($memberid) {
|
||||
$langs->load("members");
|
||||
|
||||
$member = new Adherent($db);
|
||||
$result = $member->fetch($memberid);
|
||||
|
||||
if (!empty($conf->notification->enabled)) {
|
||||
$langs->load("mails");
|
||||
}
|
||||
|
||||
$adht->fetch($object->typeid);
|
||||
|
||||
$head = member_prepare_head($member);
|
||||
|
||||
print dol_get_fiche_head($head, 'partnership', $langs->trans("ThirdParty"), -1, 'user');
|
||||
|
||||
$linkback = '<a href="'.DOL_URL_ROOT.'/adherents/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
|
||||
|
||||
dol_banner_tab($member, 'rowid', $linkback);
|
||||
|
||||
print '<div class="fichecenter">';
|
||||
|
||||
print '<div class="underbanner clearboth"></div>';
|
||||
print '<table class="border centpercent tableforfield">';
|
||||
|
||||
// Login
|
||||
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) {
|
||||
print '<tr><td class="titlefield">'.$langs->trans("Login").' / '.$langs->trans("Id").'</td><td class="valeur">'.$member->login.' </td></tr>';
|
||||
}
|
||||
|
||||
// Type
|
||||
print '<tr><td class="titlefield">'.$langs->trans("Type").'</td><td class="valeur">'.$adht->getNomUrl(1)."</td></tr>\n";
|
||||
|
||||
// Morphy
|
||||
print '<tr><td>'.$langs->trans("MemberNature").'</td><td class="valeur" >'.$member->getmorphylib().'</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Company
|
||||
print '<tr><td>'.$langs->trans("Company").'</td><td class="valeur">'.$member->company.'</td></tr>';
|
||||
|
||||
// Civility
|
||||
print '<tr><td>'.$langs->trans("UserTitle").'</td><td class="valeur">'.$member->getCivilityLabel().' </td>';
|
||||
print '</tr>';
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '</div>';
|
||||
|
||||
print dol_get_fiche_end();
|
||||
|
||||
$params = '';
|
||||
|
||||
print '<br>';
|
||||
} else {
|
||||
dol_print_error('', 'Parameter rowid not defined');
|
||||
}
|
||||
|
||||
// Part to create
|
||||
if ($action == 'create') {
|
||||
print load_fiche_titre($langs->trans("NewObject", $langs->transnoentitiesnoconv("Partnership")), '', '');
|
||||
|
||||
$backtopageforcancel = DOL_URL_ROOT.'/partnership/partnership.php?rowid='.$memberid;
|
||||
|
||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="add">';
|
||||
print '<input type="hidden" name="rowid" value="'.$memberid.'">';
|
||||
print '<input type="hidden" name="fk_member" value="'.$memberid.'">';
|
||||
|
||||
if ($backtopage) {
|
||||
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
||||
}
|
||||
if ($backtopageforcancel) {
|
||||
print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
|
||||
}
|
||||
|
||||
print dol_get_fiche_head(array(), '');
|
||||
|
||||
print '<table class="border centpercent tableforfieldcreate">'."\n";
|
||||
|
||||
// Common attributes
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php';
|
||||
|
||||
// Other attributes
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
|
||||
|
||||
print '</table>'."\n";
|
||||
|
||||
print dol_get_fiche_end();
|
||||
|
||||
print '<div class="center">';
|
||||
print '<input type="submit" class="button" name="add" value="'.dol_escape_htmltag($langs->trans("Validate")).'">';
|
||||
print ' ';
|
||||
// print '<input type="'.($backtopage ? "submit" : "button").'" class="button button-cancel" name="cancel" value="'.dol_escape_htmltag($langs->trans("Cancel")).'"'.($backtopage ? '' : ' onclick="javascript:history.go(-1)"').'>'; // Cancel for create does not post form if we don't know the backtopage
|
||||
print '</div>';
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
|
||||
// Part to edit record
|
||||
if (($partnershipid || $ref) && $action == 'edit') {
|
||||
print load_fiche_titre($langs->trans("Partnership"), '', '');
|
||||
|
||||
$backtopageforcancel = DOL_URL_ROOT.'/partnership/partnership.php?rowid='.$memberid;
|
||||
|
||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="update">';
|
||||
print '<input type="hidden" name="rowid" value="'.$memberid.'">';
|
||||
print '<input type="hidden" name="fk_member" value="'.$memberid.'">';
|
||||
if ($backtopage) {
|
||||
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
||||
}
|
||||
if ($backtopageforcancel) {
|
||||
print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
|
||||
}
|
||||
|
||||
print dol_get_fiche_head();
|
||||
|
||||
print '<table class="border centpercent tableforfieldedit">'."\n";
|
||||
|
||||
// Common attributes
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php';
|
||||
|
||||
// Other attributes
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
|
||||
|
||||
print '</table>';
|
||||
|
||||
print dol_get_fiche_end();
|
||||
|
||||
print '<div class="center"><input type="submit" class="button button-save" name="save" value="'.$langs->trans("Save").'">';
|
||||
print ' <input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||
print '</div>';
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
|
||||
// Part to show record
|
||||
if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
|
||||
print load_fiche_titre($langs->trans("PartnershipDedicatedToThisMember", $langs->transnoentitiesnoconv("Partnership")), '', '');
|
||||
|
||||
$res = $object->fetch_optionals();
|
||||
|
||||
// $head = partnershipPrepareHead($object);
|
||||
// print dol_get_fiche_head($head, 'card', $langs->trans("Partnership"), -1, $object->picto);
|
||||
|
||||
$linkback = '';
|
||||
dol_banner_tab($object, 'id', $linkback, 0, 'rowid', 'ref');
|
||||
|
||||
$formconfirm = '';
|
||||
|
||||
// Close confirmation
|
||||
if ($action == 'close') {
|
||||
// Create an array for form
|
||||
$formquestion = array();
|
||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClose'), $langs->trans('ConfirmClosePartnershipAsk', $object->ref), 'confirm_close', $formquestion, 'yes', 1);
|
||||
}
|
||||
// Reopon confirmation
|
||||
if ($action == 'reopen') {
|
||||
// Create an array for form
|
||||
$formquestion = array();
|
||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToReopon'), $langs->trans('ConfirmReoponAsk', $object->ref), 'confirm_reopen', $formquestion, 'yes', 1);
|
||||
}
|
||||
|
||||
// Refuse confirmatio
|
||||
if ($action == 'refuse') {
|
||||
//Form to close proposal (signed or not)
|
||||
$formquestion = array(
|
||||
array('type' => 'text', 'name' => 'reason_decline_or_cancel', 'label' => $langs->trans("Note"), 'morecss' => 'reason_decline_or_cancel', 'value' => '') // Field to complete private note (not replace)
|
||||
);
|
||||
|
||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ReasonDecline'), $text, 'confirm_refuse', $formquestion, '', 1, 250);
|
||||
}
|
||||
|
||||
// Call Hook formConfirm
|
||||
$parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid);
|
||||
$reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||
if (empty($reshook)) {
|
||||
$formconfirm .= $hookmanager->resPrint;
|
||||
} elseif ($reshook > 0) {
|
||||
$formconfirm = $hookmanager->resPrint;
|
||||
}
|
||||
|
||||
// Print form confirm
|
||||
print $formconfirm;
|
||||
|
||||
|
||||
// Object card
|
||||
// ------------------------------------------------------------
|
||||
$linkback = '<a href="'.dol_buildpath('/partnership/partnership_list.php', 1).'?restore_lastsearch_values=1'.(!empty($memberid) ? '&rowid='.$memberid : '').'">'.$langs->trans("BackToList").'</a>';
|
||||
|
||||
print '<div class="fichecenter">';
|
||||
print '<div class="fichehalfleft">';
|
||||
print '<div class="underbanner clearboth"></div>';
|
||||
print '<table class="border centpercent tableforfield">'."\n";
|
||||
|
||||
// Common attributes
|
||||
//$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just before this field
|
||||
//unset($object->fields['fk_project']); // Hide field already shown in banner
|
||||
//unset($object->fields['fk_member']); // Hide field already shown in banner
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
|
||||
|
||||
// End of subscription date
|
||||
$fadherent = new Adherent($db);
|
||||
$fadherent->fetch($object->fk_member);
|
||||
print '<tr><td>'.$langs->trans("SubscriptionEndDate").'</td><td class="valeur">';
|
||||
if ($fadherent->datefin) {
|
||||
print dol_print_date($fadherent->datefin, 'day');
|
||||
if ($fadherent->hasDelay()) {
|
||||
print " ".img_warning($langs->trans("Late"));
|
||||
}
|
||||
} else {
|
||||
if (!$adht->subscription) {
|
||||
print $langs->trans("SubscriptionNotRecorded");
|
||||
if ($fadherent->statut > 0) {
|
||||
print " ".img_warning($langs->trans("Late")); // Display a delay picto only if it is not a draft and is not canceled
|
||||
}
|
||||
} else {
|
||||
print $langs->trans("SubscriptionNotReceived");
|
||||
if ($fadherent->statut > 0) {
|
||||
print " ".img_warning($langs->trans("Late")); // Display a delay picto only if it is not a draft and is not canceled
|
||||
}
|
||||
}
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Other attributes. Fields from hook formObjectOptions and Extrafields.
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
|
||||
|
||||
print '</table>';
|
||||
print '</div>';
|
||||
|
||||
print '<div class="clearboth"></div>';
|
||||
|
||||
print dol_get_fiche_end();
|
||||
|
||||
// Buttons for actions
|
||||
|
||||
if ($action != 'presend') {
|
||||
print '<div class="tabsAction">'."\n";
|
||||
$parameters = array();
|
||||
$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||
if ($reshook < 0) {
|
||||
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||
}
|
||||
|
||||
if (empty($reshook)) {
|
||||
if ($object->status == $object::STATUS_DRAFT) {
|
||||
print dolGetButtonAction($langs->trans('Modify'), '', 'default', $_SERVER["PHP_SELF"].'?rowid='.$memberid.'&action=edit', '', $permissiontoadd);
|
||||
}
|
||||
|
||||
// Show
|
||||
if ($permissiontoadd) {
|
||||
print dolGetButtonAction($langs->trans('ShowPartnership'), '', 'default', dol_buildpath('/partnership/partnership_card.php', 1).'?id='.$object->id, '', $permissiontoadd);
|
||||
}
|
||||
|
||||
// Cancel
|
||||
if ($permissiontoadd) {
|
||||
if ($object->status == $object::STATUS_ACCEPTED) {
|
||||
print dolGetButtonAction($langs->trans('Cancel'), '', 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=close&token='.newToken(), '', $permissiontoadd);
|
||||
}
|
||||
}
|
||||
}
|
||||
print '</div>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
// End of page
|
||||
llxFooter();
|
||||
$db->close();
|
||||
@ -100,7 +100,7 @@ $hookmanager->initHooks(array('admin'));
|
||||
// Put here declaration of dictionaries properties
|
||||
|
||||
// Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this.
|
||||
$taborder = array(9, 0, 4, 3, 2, 0, 1, 8, 19, 16, 39, 27, 40, 38, 0, 5, 11, 0, 32, 33, 34, 0, 6, 0, 29, 0, 7, 24, 28, 17, 35, 36, 0, 10, 23, 12, 13, 0, 14, 0, 22, 20, 18, 21, 41, 0, 15, 30, 0, 37, 42, 0, 25, 0);
|
||||
$taborder = array(9, 0, 4, 3, 2, 0, 1, 8, 19, 16, 39, 27, 40, 38, 0, 5, 11, 0, 6, 0, 29, 0, 33, 34, 32, 24, 28, 17, 35, 36, 0, 10, 23, 12, 13, 7, 0, 14, 0, 22, 20, 18, 21, 41, 0, 15, 30, 0, 37, 42, 0, 25, 0, 43, 0);
|
||||
|
||||
// Name of SQL tables of dictionaries
|
||||
$tabname = array();
|
||||
@ -146,6 +146,7 @@ $tabname[39] = MAIN_DB_PREFIX."c_prospectcontactlevel";
|
||||
$tabname[40] = MAIN_DB_PREFIX."c_stcommcontact";
|
||||
$tabname[41] = MAIN_DB_PREFIX."c_transport_mode";
|
||||
$tabname[42] = MAIN_DB_PREFIX."c_product_nature";
|
||||
$tabname[43] = MAIN_DB_PREFIX."c_productbatch_qcstatus";
|
||||
|
||||
// Dictionary labels
|
||||
$tablib = array();
|
||||
@ -191,6 +192,7 @@ $tablib[39] = "DictionaryProspectContactLevel";
|
||||
$tablib[40] = "DictionaryProspectContactStatus";
|
||||
$tablib[41] = "DictionaryTransportMode";
|
||||
$tablib[42] = "DictionaryProductNature";
|
||||
$tablib[43] = "DictionaryBatchStatus";
|
||||
|
||||
// Requests to extract data
|
||||
$tabsql = array();
|
||||
@ -236,6 +238,7 @@ $tabsql[39] = "SELECT code, label as libelle, sortorder, active FROM ".MAIN_DB_P
|
||||
$tabsql[40] = "SELECT id as rowid, code, libelle, picto, active FROM ".MAIN_DB_PREFIX."c_stcommcontact";
|
||||
$tabsql[41] = "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_transport_mode";
|
||||
$tabsql[42] = "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_product_nature";
|
||||
$tabsql[43] = "SELECT rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_productbatch_qcstatus";
|
||||
|
||||
// Criteria to sort dictionaries
|
||||
$tabsqlsort = array();
|
||||
@ -281,6 +284,7 @@ $tabsqlsort[39] = "sortorder ASC";
|
||||
$tabsqlsort[40] = "code ASC";
|
||||
$tabsqlsort[41] = "code ASC";
|
||||
$tabsqlsort[42] = "code ASC";
|
||||
$tabsqlsort[43] = "code ASC";
|
||||
|
||||
// Field names in select result for dictionary display
|
||||
$tabfield = array();
|
||||
@ -326,6 +330,7 @@ $tabfield[39] = "code,libelle,sortorder";
|
||||
$tabfield[40] = "code,libelle,picto";
|
||||
$tabfield[41] = "code,label";
|
||||
$tabfield[42] = "code,label";
|
||||
$tabfield[43] = "code,label";
|
||||
|
||||
// Edit field names for editing a record
|
||||
$tabfieldvalue = array();
|
||||
@ -371,6 +376,7 @@ $tabfieldvalue[39] = "code,libelle,sortorder";
|
||||
$tabfieldvalue[40] = "code,libelle,picto";
|
||||
$tabfieldvalue[41] = "code,label";
|
||||
$tabfieldvalue[42] = "code,label";
|
||||
$tabfieldvalue[43] = "code,label";
|
||||
|
||||
// Field names in the table for inserting a record
|
||||
$tabfieldinsert = array();
|
||||
@ -417,6 +423,7 @@ $tabfieldinsert[39] = "code,label,sortorder";
|
||||
$tabfieldinsert[40] = "code,libelle,picto";
|
||||
$tabfieldinsert[41] = "code,label";
|
||||
$tabfieldinsert[42] = "code,label";
|
||||
$tabfieldinsert[43] = "code,label";
|
||||
|
||||
// Rowid name of field depending if field is autoincrement on or off..
|
||||
// Use "" if id field is "rowid" and has autoincrement on
|
||||
@ -464,6 +471,7 @@ $tabrowid[39] = "code";
|
||||
$tabrowid[40] = "id";
|
||||
$tabrowid[41] = "";
|
||||
$tabrowid[42] = "rowid";
|
||||
$tabrowid[43] = "rowid";
|
||||
|
||||
// Condition to show dictionary in setup page
|
||||
$tabcond = array();
|
||||
@ -509,6 +517,7 @@ $tabcond[39] = (!empty($conf->societe->enabled) && empty($conf->global->SOCIETE_
|
||||
$tabcond[40] = (!empty($conf->societe->enabled) && !empty($conf->global->THIRDPARTY_ENABLE_PROSPECTION_ON_ALTERNATIVE_ADRESSES));
|
||||
$tabcond[41] = !empty($conf->intracommreport->enabled);
|
||||
$tabcond[42] = !empty($conf->product->enabled);
|
||||
$tabcond[43] = !empty($conf->product->enabled) && !empty($conf->productbatch->enabled) && $conf->global->MAIN_FEATURES_LEVEL >= 2;
|
||||
|
||||
// List of help for fields
|
||||
$tabhelp = array();
|
||||
@ -554,55 +563,58 @@ $tabhelp[39] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||
$tabhelp[40] = array('code'=>$langs->trans("EnterAnyCode"), 'picto'=>$langs->trans("PictoHelp"));
|
||||
$tabhelp[41] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||
$tabhelp[42] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||
$tabhelp[43] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||
|
||||
// Table to store complete informations (will replace all other table). Key is table name.
|
||||
$tabcomplete = array(
|
||||
'c_forme_juridique'=>array('picto'=>'company'),
|
||||
'c_departements'=>array('picto'=>'country'),
|
||||
'c_regions'=>array('picto'=>'country'),
|
||||
'c_country'=>array('picto'=>'country'),
|
||||
'c_civility'=>array('picto'=>'contact'),
|
||||
'c_actioncomm'=>array('picto'=>'action'),
|
||||
'c_chargesociales'=>array('picto'=>'bill'),
|
||||
'c_typent'=>array('picto'=>'company'),
|
||||
'c_currencies'=>array('picto'=>'multicurrency'),
|
||||
'c_tva'=>array('picto'=>'bill'),
|
||||
'c_type_contact'=>array('picto'=>'contact'),
|
||||
'c_payment_term'=>array('picto'=>'bill'),
|
||||
'c_paiement'=>array('picto'=>'bill'),
|
||||
'c_ecotaxe'=>array('picto'=>'bill'),
|
||||
'c_paper_format'=>array('picto'=>'generic'),
|
||||
'c_prospectlevel'=>array('picto'=>'company'),
|
||||
'c_type_fees'=>array('picto'=>'trip'),
|
||||
'c_effectif'=>array('picto'=>'company'),
|
||||
'c_input_method'=>array('picto'=>'order'),
|
||||
'c_input_reason'=>array('picto'=>'order'),
|
||||
'c_availability'=>array('picto'=>'shipment'),
|
||||
'c_shipment_mode'=>array('picto'=>'shipment'),
|
||||
'c_revenuestamp'=>array('picto'=>'bill'),
|
||||
'c_type_resource'=>array('picto'=>'resource'),
|
||||
'c_type_container'=>array('picto'=>'website'),
|
||||
'c_stcomm'=>array('picto'=>'company'),
|
||||
'c_holiday_types'=>array('picto'=>'holiday'),
|
||||
'c_lead_status'=>array('picto'=>'project'),
|
||||
'c_format_cards'=>array('picto'=>'generic'),
|
||||
'c_hrm_public_holiday'=>array('picto'=>'holiday'),
|
||||
'c_hrm_department'=>array('picto'=>'hrm'),
|
||||
'c_hrm_function'=>array('picto'=>'hrm'),
|
||||
'c_exp_tax_cat'=>array('picto'=>'expensereport'),
|
||||
'c_exp_tax_range'=>array('picto'=>'expensereport'),
|
||||
'c_units'=>array('picto'=>'product'),
|
||||
'c_socialnetworks'=>array('picto'=>'share-alt'),
|
||||
'c_product_nature'=>array('picto'=>'product'),
|
||||
'c_transport_mode'=>array('picto'=>'incoterm'),
|
||||
'c_prospectcontactlevel'=>array('picto'=>'company'),
|
||||
'c_stcommcontact'=>array('picto'=>'company'),
|
||||
'c_product_nature'=>array('picto'=>'product'),
|
||||
'c_productbatch_qcstatus'=>array('picto'=>'batch'),
|
||||
|
||||
);
|
||||
|
||||
// List of check for fields (NOT USED YET)
|
||||
$tabfieldcheck = array();
|
||||
$tabfieldcheck[1] = array();
|
||||
$tabfieldcheck[2] = array();
|
||||
$tabfieldcheck[3] = array();
|
||||
$tabfieldcheck[4] = array();
|
||||
$tabfieldcheck[5] = array();
|
||||
$tabfieldcheck[6] = array();
|
||||
$tabfieldcheck[7] = array();
|
||||
$tabfieldcheck[8] = array();
|
||||
$tabfieldcheck[9] = array();
|
||||
$tabfieldcheck[10] = array();
|
||||
$tabfieldcheck[11] = array();
|
||||
$tabfieldcheck[12] = array();
|
||||
$tabfieldcheck[13] = array();
|
||||
$tabfieldcheck[14] = array();
|
||||
$tabfieldcheck[15] = array();
|
||||
$tabfieldcheck[16] = array();
|
||||
$tabfieldcheck[17] = array();
|
||||
$tabfieldcheck[18] = array();
|
||||
$tabfieldcheck[19] = array();
|
||||
$tabfieldcheck[20] = array();
|
||||
$tabfieldcheck[21] = array();
|
||||
$tabfieldcheck[22] = array();
|
||||
$tabfieldcheck[23] = array();
|
||||
$tabfieldcheck[24] = array();
|
||||
$tabfieldcheck[25] = array();
|
||||
//$tabfieldcheck[26] = array();
|
||||
$tabfieldcheck[27] = array();
|
||||
$tabfieldcheck[28] = array();
|
||||
$tabfieldcheck[29] = array();
|
||||
$tabfieldcheck[30] = array();
|
||||
//$tabfieldcheck[31] = array();
|
||||
$tabfieldcheck[32] = array();
|
||||
$tabfieldcheck[33] = array();
|
||||
$tabfieldcheck[34] = array();
|
||||
$tabfieldcheck[35] = array();
|
||||
$tabfieldcheck[36] = array();
|
||||
$tabfieldcheck[37] = array();
|
||||
$tabfieldcheck[38] = array();
|
||||
$tabfieldcheck[39] = array();
|
||||
$tabfieldcheck[40] = array();
|
||||
$tabfieldcheck[41] = array();
|
||||
$tabfieldcheck[42] = array();
|
||||
|
||||
// Complete all arrays with entries found into modules
|
||||
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabfieldcheck);
|
||||
|
||||
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabcomplete);
|
||||
|
||||
// Defaut sortorder
|
||||
if (empty($sortfield)) {
|
||||
@ -1968,6 +1980,9 @@ if ($id) {
|
||||
} elseif ($value == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_product_nature') {
|
||||
$langs->load("products");
|
||||
$valuetoshow = $langs->trans($obj->{$value});
|
||||
} elseif ($fieldlist[$field] == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_productbatch_qcstatus') {
|
||||
$langs->load("productbatch");
|
||||
$valuetoshow = $langs->trans($obj->{$value});
|
||||
}
|
||||
$class .= ($class ? ' ' : '').'tddict';
|
||||
if ($value == 'note' && $id == 10) {
|
||||
@ -2123,7 +2138,7 @@ if ($id) {
|
||||
print '<table class="noborder centpercent">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td colspan="2">'.$langs->trans("Dictionary").'</td>';
|
||||
print '<td>'.$langs->trans("Table").'</td>';
|
||||
print '<td></td>';
|
||||
print '</tr>';
|
||||
|
||||
$showemptyline = '';
|
||||
@ -2142,18 +2157,26 @@ if ($id) {
|
||||
$value = $tabname[$i];
|
||||
print '<tr class="oddeven"><td width="50%">';
|
||||
if (!empty($tabcond[$i])) {
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$i.'">'.$langs->trans($tablib[$i]).'</a>';
|
||||
$tabnamenoprefix = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabname[$i]);
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$i.'">';
|
||||
if (!empty($tabcomplete[$tabnamenoprefix]['picto'])) {
|
||||
print img_picto('', $tabcomplete[$tabnamenoprefix]['picto'], 'class="pictofixedwidth paddingrightonly"');
|
||||
}
|
||||
print $langs->trans($tablib[$i]);
|
||||
print '</a>';
|
||||
} else {
|
||||
print $langs->trans($tablib[$i]);
|
||||
}
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
/*if (empty($tabcond[$i]))
|
||||
{
|
||||
print info_admin($langs->trans("DictionaryDisabledSinceNoModuleNeedIt"),1);
|
||||
}*/
|
||||
print '<a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?id='.$i.'">';
|
||||
print img_picto('Edit', 'edit', '');
|
||||
print '</a>';
|
||||
print '</td>';
|
||||
print '<td>'.$tabname[$i].'</td></tr>';
|
||||
print '<td class="right">';
|
||||
print $form->textwithpicto('', $langs->trans("Table").': '.$tabname[$i]);
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
$lastlineisempty = false;
|
||||
} else {
|
||||
if (!$lastlineisempty) {
|
||||
|
||||
@ -61,6 +61,8 @@ $arrayofparameters = array(
|
||||
'EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER'=>array('type'=>'emailtemplate:eventorganization_send', 'enabled'=>1),
|
||||
'EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES'=>array('type'=>'emailtemplate:eventorganization_send', 'enabled'=>1),
|
||||
'EVENTORGANIZATION_SECUREKEY'=>array('type'=>'securekey', 'enabled'=>1),
|
||||
'SERVICE_BOOTH_LOCATION'=>array('type'=>'product', 'enabled'=>1),
|
||||
'SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION'=>array('type'=>'product', 'enabled'=>1),
|
||||
);
|
||||
|
||||
$error = 0;
|
||||
@ -277,8 +279,13 @@ if ($action == 'edit') {
|
||||
});';
|
||||
print '</script>';
|
||||
}
|
||||
} elseif ($val['type'] == 'product') {
|
||||
if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) {
|
||||
$selected = (empty($conf->global->$constname) ? '' : $conf->global->$constname);
|
||||
$form->select_produits($selected, $constname, '', 0);
|
||||
}
|
||||
} else {
|
||||
print '<input name="'.$constname.'" class="flat '.(empty($val['css']) ? 'minwidth200' : $val['css']).'" value="'.$conf->global->{$constname}.'">';
|
||||
print '<input name="' . $constname . '" class="flat ' . (empty($val['css']) ? 'minwidth200' : $val['css']) . '" value="' . $conf->global->{$constname} . '">';
|
||||
}
|
||||
print '</td></tr>';
|
||||
}
|
||||
@ -347,6 +354,14 @@ if ($action == 'edit') {
|
||||
} elseif ($conf->global->{$constname}==0) {
|
||||
print $langs->trans("NorProspectNorCustomer");
|
||||
}
|
||||
} elseif ($val['type'] == 'product') {
|
||||
$product = new Product($db);
|
||||
$resprod = $product->fetch($conf->global->{$constname});
|
||||
if ($resprod > 0) {
|
||||
print $product->ref;
|
||||
} elseif ($resprod < 0) {
|
||||
setEventMessages(null, $object->errors, "errors");
|
||||
}
|
||||
} else {
|
||||
print $conf->global->{$constname};
|
||||
}
|
||||
|
||||
@ -403,7 +403,7 @@ print '</tr>';
|
||||
|
||||
// Show bugtrack link
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>';
|
||||
print '<input type="text" name="MAIN_BUGTRACK_ENABLELINK" size="32" value="'.(isset($conf->global->MAIN_BUGTRACK_ENABLELINK) ? $conf->global->MAIN_BUGTRACK_ENABLELINK : '').'">';
|
||||
print '<input type="text" name="MAIN_BUGTRACK_ENABLELINK" value="'.(empty($conf->global->MAIN_BUGTRACK_ENABLELINK) ? '' : $conf->global->MAIN_BUGTRACK_ENABLELINK).'">';
|
||||
print '</td>';
|
||||
print '<td width="20"> </td>';
|
||||
print '</tr>';
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
* Copyright (C) 2011-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
* Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es>
|
||||
* Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2021 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* 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
|
||||
@ -160,19 +160,15 @@ if (empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) {
|
||||
|
||||
$tabhelp = array();
|
||||
$tabhelp[25] = array(
|
||||
'topic'=>$helpsubstit,
|
||||
'topic'=>'<span class="small">'.$helpsubstit.'</span>',
|
||||
'joinfiles'=>$langs->trans('AttachMainDocByDefault'),
|
||||
'content'=>$helpsubstit,
|
||||
'content_lines'=>$helpsubstitforlines,
|
||||
'content'=>'<span class="small">'.$helpsubstit.'</span>',
|
||||
'content_lines'=>'<span class="small">'.$helpsubstitforlines.'</span>',
|
||||
'type_template'=>$langs->trans("TemplateForElement"),
|
||||
'private'=>$langs->trans("TemplateIsVisibleByOwnerOnly"),
|
||||
'position'=>$langs->trans("PositionIntoComboList")
|
||||
);
|
||||
|
||||
// List of check for fields (NOT USED YET)
|
||||
$tabfieldcheck = array();
|
||||
$tabfieldcheck[25] = array();
|
||||
|
||||
|
||||
$elementList = array();
|
||||
|
||||
@ -337,13 +333,13 @@ if (empty($reshook)) {
|
||||
}
|
||||
}
|
||||
|
||||
// Si verif ok et action add, on ajoute la ligne
|
||||
// If previous test is ok action is add, we add the line
|
||||
if ($ok && GETPOST('actionadd')) {
|
||||
// Add new entry
|
||||
$sql = "INSERT INTO ".$tabname[$id]." (";
|
||||
// List of fields
|
||||
$sql .= $tabfieldinsert[$id];
|
||||
$sql .= ",active)";
|
||||
$sql .= ", active, enabled)";
|
||||
$sql .= " VALUES(";
|
||||
|
||||
// List of values
|
||||
@ -394,7 +390,7 @@ if (empty($reshook)) {
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
$sql .= ", 1)";
|
||||
$sql .= ", 1, 1)";
|
||||
|
||||
dol_syslog("actionadd", LOG_DEBUG);
|
||||
$result = $db->query($sql);
|
||||
|
||||
@ -36,12 +36,12 @@ if (!$user->admin) {
|
||||
|
||||
$id = GETPOST('rowid', 'int');
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
$optioncss = GETPOST('optionscss', 'aZ09');
|
||||
|
||||
$langcode = GETPOST('langcode', 'alphanohtml');
|
||||
$transkey = GETPOST('transkey', 'alphanohtml');
|
||||
$transvalue = GETPOST('transvalue', 'restricthtml');
|
||||
|
||||
|
||||
$mode = GETPOST('mode', 'aZ09') ? GETPOST('mode', 'aZ09') : 'searchkey';
|
||||
|
||||
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
|
||||
@ -537,8 +537,8 @@ if ($mode == 'searchkey') {
|
||||
// retrieve rowid
|
||||
$sql = "SELECT rowid";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."overwrite_trans";
|
||||
$sql .= " WHERE transkey = '".$db->escape($key)."'";
|
||||
$sql .= " AND entity IN (".getEntity('overwrite_trans').")";
|
||||
$sql .= " WHERE entity IN (".getEntity('overwrite_trans').")";
|
||||
$sql .= " AND transkey = '".$db->escape($key)."'";
|
||||
dol_syslog("translation::select from table", LOG_DEBUG);
|
||||
$result = $db->query($sql);
|
||||
if ($result) {
|
||||
|
||||
@ -610,7 +610,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
// Back to draft
|
||||
if ($object->status == $object::STATUS_VALIDATED) {
|
||||
if ($permissiontoadd) {
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=setdraft&token='.newToken().'">'.$langs->trans("SetToDraft").'</a>';
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=setdraft&token='.newToken().'">'.$langs->trans("SetToDraft").'</a>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
@ -627,34 +627,34 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
if ($object->status == $object::STATUS_DRAFT) {
|
||||
if ($permissiontoadd) {
|
||||
if (is_array($object->lines) && count($object->lines) > 0) {
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=validate&token='.newToken().'">'.$langs->trans("Validate").'</a>';
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=validate&token='.newToken().'">'.$langs->trans("Validate").'</a>'."\n";
|
||||
} else {
|
||||
$langs->load("errors");
|
||||
print '<a class="butActionRefused" href="" title="'.$langs->trans("ErrorAddAtLeastOneLineFirst").'">'.$langs->trans("Validate").'</a>';
|
||||
print '<a class="butActionRefused" href="" title="'.$langs->trans("ErrorAddAtLeastOneLineFirst").'">'.$langs->trans("Validate").'</a>'."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Re-open
|
||||
if ($permissiontoadd && $object->status == $object::STATUS_CANCELED) {
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=reopen">'.$langs->trans("ReOpen").'</a>';
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=reopen">'.$langs->trans("ReOpen").'</a>'."\n";
|
||||
}
|
||||
|
||||
// Create MO
|
||||
if ($conf->mrp->enabled) {
|
||||
if ($object->status == $object::STATUS_VALIDATED && !empty($user->rights->mrp->write)) {
|
||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/mrp/mo_card.php?action=create&fk_bom='.$object->id.'&backtopageforcancel='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id).'">'.$langs->trans("CreateMO").'</a>';
|
||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/mrp/mo_card.php?action=create&fk_bom='.$object->id.'&backtopageforcancel='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id).'">'.$langs->trans("CreateMO").'</a>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Clone
|
||||
if ($permissiontoadd) {
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=clone&object=bom">'.$langs->trans("ToClone").'</a>';
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=clone&object=bom">'.$langs->trans("ToClone").'</a>'."\n";
|
||||
}
|
||||
|
||||
// Close / Cancel
|
||||
if ($permissiontoadd && $object->status == $object::STATUS_VALIDATED) {
|
||||
print '<a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=close">'.$langs->trans("Disable").'</a>';
|
||||
print '<a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=close">'.$langs->trans("Disable").'</a>'."\n";
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@ -495,20 +495,20 @@ print '<table class="tagtable nobottomiftotal liste'.($moreforfilter ? " listwit
|
||||
// --------------------------------------------------------------------
|
||||
print '<tr class="liste_titre">';
|
||||
foreach ($object->fields as $key => $val) {
|
||||
$cssforfield = (empty($val['css']) ? '' : $val['css']);
|
||||
$cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']);
|
||||
if ($key == 'status') {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'center';
|
||||
} elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'center';
|
||||
} elseif (in_array($val['type'], array('timestamp'))) {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
||||
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID') {
|
||||
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
||||
}
|
||||
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
||||
print '<td class="liste_titre'.($cssforfield ? ' '.$cssforfield : '').'">';
|
||||
if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) {
|
||||
print $form->selectarray('search_'.$key, $val['arrayofkeyval'], $search[$key], $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100', 1);
|
||||
print $form->selectarray('search_'.$key, $val['arrayofkeyval'], $search[$key], $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth150', 1);
|
||||
} elseif (strpos($val['type'], 'integer:') === 0) {
|
||||
print $object->showInputField($val, $key, $search[$key], '', '', 'search_', 'maxwidth150', 1);
|
||||
} elseif (!preg_match('/^(date|timestamp)/', $val['type'])) {
|
||||
@ -543,7 +543,7 @@ foreach ($object->fields as $key => $val) {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'center';
|
||||
} elseif (in_array($val['type'], array('timestamp'))) {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
||||
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID') {
|
||||
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
||||
}
|
||||
if (!empty($arrayfields['t.'.$key]['checked'])) {
|
||||
@ -601,7 +601,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
|
||||
}
|
||||
|
||||
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'status') {
|
||||
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'status' && empty($val['arrayofkeyval'])) {
|
||||
$cssforfield .= ($cssforfield ? ' ' : '').'right';
|
||||
}
|
||||
if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) {
|
||||
|
||||
@ -97,7 +97,7 @@ class BOM extends CommonObject
|
||||
'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>5),
|
||||
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'noteditable'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of BOM", 'showoncombobox'=>'1',),
|
||||
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'autofocusoncreate'=>1),
|
||||
'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth150', 'csslist'=>'minwidth150'),
|
||||
'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth150', 'csslist'=>'minwidth150 center'),
|
||||
//'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>-1, 'position'=>32, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing')),
|
||||
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'picto'=>'product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp', 'css'=>'maxwidth500'),
|
||||
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,),
|
||||
|
||||
@ -222,14 +222,23 @@ if (empty($reshook)) {
|
||||
$onlinepaymentenabled++;
|
||||
}
|
||||
if ($onlinepaymentenabled && !empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
||||
$substitutionarray['__ONLINEPAYMENTLINK_MEMBER__'] = getHtmlOnlinePaymentLink('member', $obj->source_id);
|
||||
$substitutionarray['__ONLINEPAYMENTLINK_DONATION__'] = getHtmlOnlinePaymentLink('donation', $obj->source_id);
|
||||
$substitutionarray['__ONLINEPAYMENTLINK_ORDER__'] = getHtmlOnlinePaymentLink('order', $obj->source_id);
|
||||
$substitutionarray['__ONLINEPAYMENTLINK_INVOICE__'] = getHtmlOnlinePaymentLink('invoice', $obj->source_id);
|
||||
$substitutionarray['__ONLINEPAYMENTLINK_CONTRACTLINE__'] = getHtmlOnlinePaymentLink('contractline', $obj->source_id);
|
||||
|
||||
$substitutionarray['__SECUREKEYPAYMENT__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2);
|
||||
if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
|
||||
$substitutionarray['__SECUREKEYPAYMENT_MEMBER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_DONATION__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_ORDER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_INVOICE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_CONTRACTLINE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2);
|
||||
} else {
|
||||
$substitutionarray['__SECUREKEYPAYMENT_MEMBER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$obj->source_id, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_MEMBER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'member'.$obj->source_id, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_DONATION__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'donation'.$obj->source_id, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_ORDER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'order'.$obj->source_id, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_INVOICE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'invoice'.$obj->source_id, 2);
|
||||
$substitutionarray['__SECUREKEYPAYMENT_CONTRACTLINE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'contractline'.$obj->source_id, 2);
|
||||
|
||||
@ -1680,6 +1680,27 @@ class Account extends CommonObject
|
||||
$this->owner_address = 'Owner address';
|
||||
$this->country_id = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function used to replace a thirdparty id with another one.
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
* @param int $origin_id Old thirdparty id
|
||||
* @param int $dest_id New thirdparty id
|
||||
* @return bool
|
||||
*/
|
||||
public static function replaceThirdparty($db, $origin_id, $dest_id)
|
||||
{
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."bank_url SET url_id = ".((int) $dest_id)." WHERE url_id = ".((int) $origin_id)." AND type='company'";
|
||||
|
||||
if (!$db->query($sql)) {
|
||||
//if ($ignoreerrors) return true; // TODO Not enough. If there is A-B on kept thirdarty and B-C on old one, we must get A-B-C after merge. Not A-B.
|
||||
//$this->errors = $db->lasterror();
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -4912,8 +4912,9 @@ class Facture extends CommonInvoice
|
||||
$nbMailSend = 0;
|
||||
$errorsMsg = array();
|
||||
|
||||
$langs->load("bills");
|
||||
|
||||
if (empty($conf->facture->enabled)) { // Should not happen. If module disabled, cron job should not be visible.
|
||||
$langs->load("bills");
|
||||
$this->output .= $langs->trans('ModuleNotEnabled', $langs->transnoentitiesnoconv("Facture"));
|
||||
return 0;
|
||||
}
|
||||
@ -4926,9 +4927,12 @@ class Facture extends CommonInvoice
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
|
||||
$formmail = new FormMail($this->db);
|
||||
|
||||
$now = dol_now();
|
||||
$tmpidate = dol_get_first_hour(dol_time_plus_duree($now, $nbdays, 'd'), 'gmt');
|
||||
|
||||
$tmpinvoice = new Facture($this->db);
|
||||
|
||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||
@ -4941,16 +4945,18 @@ class Facture extends CommonInvoice
|
||||
$sql .= ", ".MAIN_DB_PREFIX."c_paiement as cp";
|
||||
}
|
||||
$sql .= " WHERE f.paye = 0";
|
||||
$sql .= " AND f.date_lim_reglement = '".$this->db->idate(dol_get_first_hour(dol_time_plus_duree($now, -1 * $nbdays, 'd'), 'gmt'), 'gmt')."'";
|
||||
$sql .= " AND f.date_lim_reglement = '".$this->db->idate($tmpidate, 'gmt')."'";
|
||||
$sql .= " AND f.entity IN (".getEntity('facture').")";
|
||||
if (!empty($paymentmode) && $paymentmode != 'all') {
|
||||
$sql .= " AND f.fk_mode_reglement = cp.id AND cp.code = '".$this->db->escape($paymentmode)."'";
|
||||
}
|
||||
// TODO Add filter to check there is no payment started
|
||||
$sql .= $this->db->order("date_lim_reglement", "ASC");
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
$tmpidate=$this->db->idate(dol_get_first_hour(dol_time_plus_duree($now, -1 * $nbdays, 'd'), 'gmt'), 'gmt');
|
||||
$this->output .= 'Search unpaid invoices with due date = '.$tmpidate.'<br>';
|
||||
|
||||
$stmpidate = dol_print_date($tmpidate, 'day', 'gmt');
|
||||
$this->output .= $langs->trans("SearchUnpaidInvoicesWithDueDate", $stmpidate).'<br>';
|
||||
|
||||
if ($resql) {
|
||||
while ($obj = $this->db->fetch_object($resql)) {
|
||||
@ -4963,6 +4969,7 @@ class Facture extends CommonInvoice
|
||||
$outputlangs = new Translate('', $conf);
|
||||
if ($tmpinvoice->thirdparty->default_lang) {
|
||||
$outputlangs->setDefaultLang($tmpinvoice->thirdparty->default_lang);
|
||||
$outputlangs->loadLangs(array("main", "bills"));
|
||||
} else {
|
||||
$outputlangs = $langs;
|
||||
}
|
||||
@ -4970,8 +4977,8 @@ class Facture extends CommonInvoice
|
||||
// Select email template
|
||||
$arraymessage = $formmail->getEMailTemplate($this->db, 'facture_send', $user, $outputlangs, (is_numeric($template) ? $template : 0), 1, (is_numeric($template) ? '' : $template));
|
||||
if (is_numeric($arraymessage) && $arraymessage <= 0) {
|
||||
$langs->load("bills");
|
||||
$this->output .= $langs->trans('FailedToFindEmailTemplate', $template);
|
||||
$langs->load("errors");
|
||||
$this->output .= $langs->trans('ErrorFailedToFindEmailTemplate', $template);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -4979,15 +4986,17 @@ class Facture extends CommonInvoice
|
||||
$errormesg = '';
|
||||
|
||||
// Make substitution in email content
|
||||
$substitutionarray = getCommonSubstitutionArray($langs, 0, '', $this);
|
||||
$substitutionarray = getCommonSubstitutionArray($outputlangs, 0, '', $tmpinvoice);
|
||||
|
||||
complete_substitutions_array($substitutionarray, $langs, $this);
|
||||
complete_substitutions_array($substitutionarray, $outputlangs, $tmpinvoice);
|
||||
|
||||
// Topic
|
||||
$sendTopic = make_substitutions(empty($arraymessage->topic) ? $outputlangs->transnoentitiesnoconv('InformationMessage') : $arraymessage->topic, $substitutionarray, $outputlangs, 1);
|
||||
|
||||
// Content
|
||||
$sendContent = make_substitutions($langs->trans($arraymessage->content), $substitutionarray);
|
||||
$content = $outputlangs->transnoentitiesnoconv($arraymessage->content);
|
||||
|
||||
//Topic
|
||||
$sendTopic = (!empty($arraymessage->topic)) ? $arraymessage->topic : html_entity_decode($langs->trans('EventReminder'));
|
||||
$sendContent = make_substitutions($content, $substitutionarray, $outputlangs, 1);
|
||||
|
||||
// Recipient
|
||||
$res = $tmpinvoice->fetch_thirdparty();
|
||||
|
||||
@ -44,6 +44,10 @@ if (GETPOST('sendit', 'alpha') && !empty($conf->global->MAIN_UPLOAD_DOC)) {
|
||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("File")), null, 'errors');
|
||||
}
|
||||
}
|
||||
if (preg_match('/__.*__/', $_FILES['userfile']['name'][$key])) {
|
||||
$error++;
|
||||
setEventMessages($langs->trans('ErrorWrongFileName'), null, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
@ -64,7 +68,7 @@ if (GETPOST('sendit', 'alpha') && !empty($conf->global->MAIN_UPLOAD_DOC)) {
|
||||
} elseif (GETPOST('linkit', 'restricthtml') && !empty($conf->global->MAIN_UPLOAD_DOC)) {
|
||||
$link = GETPOST('link', 'alpha');
|
||||
if ($link) {
|
||||
if (substr($link, 0, 7) != 'http://' && substr($link, 0, 8) != 'https://' && substr($link, 0, 7) != 'file://') {
|
||||
if (substr($link, 0, 7) != 'http://' && substr($link, 0, 8) != 'https://' && substr($link, 0, 7) != 'file://' && substr($link, 0, 7) != 'davs://') {
|
||||
$link = 'http://'.$link;
|
||||
}
|
||||
dol_add_file_process($upload_dir, 0, 1, 'userfile', null, $link, '', 0);
|
||||
@ -172,8 +176,11 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') {
|
||||
// We apply dol_string_nohtmltag also to clean file names (this remove duplicate spaces) because
|
||||
// this function is also applied when we upload and when we make try to download file (by the GETPOST(filename, 'alphanohtml') call).
|
||||
$filenameto = dol_string_nohtmltag($filenameto);
|
||||
|
||||
if ($filenamefrom != $filenameto) {
|
||||
if (preg_match('/__.*__/', $filenameto)) {
|
||||
$error++;
|
||||
setEventMessages($langs->trans('ErrorWrongFileName'), null, 'errors');
|
||||
}
|
||||
if (!$error && $filenamefrom != $filenameto) {
|
||||
// Security:
|
||||
// Disallow file with some extensions. We rename them.
|
||||
// Because if we put the documents directory into a directory inside web root (very bad), this allows to execute on demand arbitrary code.
|
||||
|
||||
@ -90,6 +90,9 @@ if (!$error && $massaction == 'confirm_presend') {
|
||||
if ($objecttmp->element == 'expensereport') {
|
||||
$thirdparty = new User($db);
|
||||
}
|
||||
if ($objecttmp->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') {
|
||||
$thirdparty = new Adherent($db);
|
||||
}
|
||||
if ($objecttmp->element == 'holiday') {
|
||||
$thirdparty = new User($db);
|
||||
}
|
||||
@ -107,6 +110,9 @@ if (!$error && $massaction == 'confirm_presend') {
|
||||
if ($objecttmp->element == 'expensereport') {
|
||||
$thirdpartyid = $objecttmp->fk_user_author;
|
||||
}
|
||||
if ($objecttmp->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') {
|
||||
$thirdpartyid = $objecttmp->fk_member;
|
||||
}
|
||||
if ($objecttmp->element == 'holiday') {
|
||||
$thirdpartyid = $objecttmp->fk_user;
|
||||
}
|
||||
@ -250,6 +256,10 @@ if (!$error && $massaction == 'confirm_presend') {
|
||||
$fuser = new User($db);
|
||||
$fuser->fetch($objectobj->fk_user_author);
|
||||
$sendto = $fuser->email;
|
||||
} elseif ($objectobj->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') {
|
||||
$fadherent = new Adherent($db);
|
||||
$fadherent->fetch($objectobj->fk_member);
|
||||
$sendto = $fadherent->email;
|
||||
} elseif ($objectobj->element == 'holiday') {
|
||||
$fuser = new User($db);
|
||||
$fuser->fetch($objectobj->fk_user);
|
||||
|
||||
@ -3820,6 +3820,11 @@ abstract class CommonObject
|
||||
$classpath = 'projet/class';
|
||||
$classfile = 'project';
|
||||
$classname = 'Project';
|
||||
} elseif ($objecttype == 'conferenceorboothattendee') {
|
||||
$classpath = 'eventorganization/class';
|
||||
$classfile = 'conferenceorboothattendee';
|
||||
$classname = 'ConferenceOrBoothAttendee';
|
||||
$module = 'eventorganization';
|
||||
}
|
||||
|
||||
// Here $module, $classfile and $classname are set
|
||||
|
||||
@ -2029,7 +2029,7 @@ class FormFile
|
||||
print '<td class="center">'.dol_print_date($link->datea, "dayhour", "tzuser").'</td>';
|
||||
print '<td class="center"></td>';
|
||||
print '<td class="right">';
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?action=update&linkid='.$link->id.$param.'" class="editfilelink editfielda reposition" >'.img_edit().'</a>'; // id= is included into $param
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?action=update&linkid='.$link->id.$param.'&token='.newToken().'" class="editfilelink editfielda reposition" >'.img_edit().'</a>'; // id= is included into $param
|
||||
if ($permissiontodelete) {
|
||||
print ' <a class="deletefilelink" href="'.$_SERVER['PHP_SELF'].'?action=delete&token='.newToken().'&linkid='.$link->id.$param.'">'.img_delete().'</a>'; // id= is included into $param
|
||||
} else {
|
||||
|
||||
@ -1594,6 +1594,9 @@ class FormMail extends Form
|
||||
if ($conf->adherent->enabled) {
|
||||
$tmparray['__SECUREKEYPAYMENT_MEMBER__'] = 'SecureKeyPAYMENTUniquePerMember';
|
||||
}
|
||||
if ($conf->donation->enabled) {
|
||||
$tmparray['__SECUREKEYPAYMENT_DONATION__'] = 'SecureKeyPAYMENTUniquePerDonation';
|
||||
}
|
||||
if ($conf->facture->enabled) {
|
||||
$tmparray['__SECUREKEYPAYMENT_INVOICE__'] = 'SecureKeyPAYMENTUniquePerInvoice';
|
||||
}
|
||||
@ -1603,6 +1606,23 @@ class FormMail extends Form
|
||||
if ($conf->contrat->enabled) {
|
||||
$tmparray['__SECUREKEYPAYMENT_CONTRACTLINE__'] = 'SecureKeyPAYMENTUniquePerContractLine';
|
||||
}
|
||||
|
||||
//Online payement link
|
||||
if ($conf->adherent->enabled) {
|
||||
$tmparray['__ONLINEPAYMENTLINK_MEMBER__'] = 'OnlinePaymentLinkUniquePerMember';
|
||||
}
|
||||
if ($conf->donation->enabled) {
|
||||
$tmparray['__ONLINEPAYMENTLINK_DONATION__'] = 'OnlinePaymentLinkUniquePerDonation';
|
||||
}
|
||||
if ($conf->facture->enabled) {
|
||||
$tmparray['__ONLINEPAYMENTLINK_INVOICE__'] = 'OnlinePaymentLinkUniquePerInvoice';
|
||||
}
|
||||
if ($conf->commande->enabled) {
|
||||
$tmparray['__ONLINEPAYMENTLINK_ORDER__'] = 'OnlinePaymentLinkUniquePerOrder';
|
||||
}
|
||||
if ($conf->contrat->enabled) {
|
||||
$tmparray['__ONLINEPAYMENTLINK_CONTRACTLINE__'] = 'OnlinePaymentLinkUniquePerContractLine';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* No need to show into tooltip help, option is not enabled
|
||||
|
||||
@ -102,7 +102,7 @@ if (!defined('JS_JQUERY_DISABLE_DROPDOWN')) {
|
||||
var lastopendropdown = null;
|
||||
|
||||
// Click onto the link "link to" or "hamburger", toggle dropdown
|
||||
$(".dropdown dt a").on(\'click\', function () {
|
||||
$(document).on(\'click\', \'.dropdown dt a\', function () {
|
||||
console.log("toggle dropdown dt a");
|
||||
|
||||
//$(this).parent().parent().find(\'dd ul\').slideToggle(\'fast\');
|
||||
|
||||
@ -1189,10 +1189,10 @@ function unActivateModule($value, $requiredby = 1)
|
||||
* @param array $tabrowid Tabrowid
|
||||
* @param array $tabcond Tabcond
|
||||
* @param array $tabhelp Tabhelp
|
||||
* @param array $tabfieldcheck Tabfieldcheck
|
||||
* @param array $tabcomplete Tab complete (will replace all other in future). Key is table name.
|
||||
* @return int 1
|
||||
*/
|
||||
function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tabsql, &$tabsqlsort, &$tabfield, &$tabfieldvalue, &$tabfieldinsert, &$tabrowid, &$tabcond, &$tabhelp, &$tabfieldcheck)
|
||||
function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tabsql, &$tabsqlsort, &$tabfield, &$tabfieldvalue, &$tabfieldinsert, &$tabrowid, &$tabcond, &$tabhelp, &$tabcomplete)
|
||||
{
|
||||
global $db, $modules, $conf, $langs;
|
||||
|
||||
@ -1255,53 +1255,76 @@ function complete_dictionary_with_modules(&$taborder, &$tabname, &$tablib, &$tab
|
||||
if (!empty($objMod->dictionaries)) {
|
||||
//var_dump($objMod->dictionaries['tabname']);
|
||||
$nbtabname = $nbtablib = $nbtabsql = $nbtabsqlsort = $nbtabfield = $nbtabfieldvalue = $nbtabfieldinsert = $nbtabrowid = $nbtabcond = $nbtabfieldcheck = $nbtabhelp = 0;
|
||||
foreach ($objMod->dictionaries['tabname'] as $val) {
|
||||
$tabnamerelwithkey = array();
|
||||
foreach ($objMod->dictionaries['tabname'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $val);
|
||||
$nbtabname++;
|
||||
$taborder[] = max($taborder) + 1;
|
||||
$tabname[] = $val;
|
||||
$tabnamerelwithkey[$key] = $val;
|
||||
$tabcomplete[$tmptablename]['picto'] = $objMod->picto;
|
||||
} // Position
|
||||
foreach ($objMod->dictionaries['tablib'] as $val) {
|
||||
foreach ($objMod->dictionaries['tablib'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtablib++;
|
||||
$tablib[] = $val;
|
||||
$tabcomplete[$tmptablename]['lib'] = $val;
|
||||
}
|
||||
foreach ($objMod->dictionaries['tabsql'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabsql'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabsql++;
|
||||
$tabsql[] = $val;
|
||||
$tabcomplete[$tmptablename]['sql'] = $val;
|
||||
}
|
||||
foreach ($objMod->dictionaries['tabsqlsort'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabsqlsort'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabsqlsort++;
|
||||
$tabsqlsort[] = $val;
|
||||
$tabcomplete[$tmptablename]['sqlsort'] = $val;
|
||||
}
|
||||
foreach ($objMod->dictionaries['tabfield'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabfield'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabfield++;
|
||||
$tabfield[] = $val;
|
||||
$tabcomplete[$tmptablename]['field'] = $val;
|
||||
}
|
||||
foreach ($objMod->dictionaries['tabfieldvalue'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabfieldvalue'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabfieldvalue++;
|
||||
$tabfieldvalue[] = $val;
|
||||
$tabcomplete[$tmptablename]['value'] = $val;
|
||||
}
|
||||
foreach ($objMod->dictionaries['tabfieldinsert'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabfieldinsert'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabfieldinsert++;
|
||||
$tabfieldinsert[] = $val;
|
||||
$tabcomplete[$tmptablename]['fieldinsert'] = $val;
|
||||
}
|
||||
foreach ($objMod->dictionaries['tabrowid'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabrowid'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabrowid++;
|
||||
$tabrowid[] = $val;
|
||||
$tabcomplete[$tmptablename]['rowid'] = $val;
|
||||
}
|
||||
foreach ($objMod->dictionaries['tabcond'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabcond'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabcond++;
|
||||
$tabcond[] = $val;
|
||||
$tabcomplete[$tmptablename]['rowid'] = $val;
|
||||
}
|
||||
if (!empty($objMod->dictionaries['tabhelp'])) {
|
||||
foreach ($objMod->dictionaries['tabhelp'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabhelp'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabhelp++;
|
||||
$tabhelp[] = $val;
|
||||
$tabcomplete[$tmptablename]['help'] = $val;
|
||||
}
|
||||
}
|
||||
if (!empty($objMod->dictionaries['tabfieldcheck'])) {
|
||||
foreach ($objMod->dictionaries['tabfieldcheck'] as $val) {
|
||||
foreach ($objMod->dictionaries['tabfieldcheck'] as $key => $val) {
|
||||
$tmptablename = preg_replace('/'.MAIN_DB_PREFIX.'/', '', $tabnamerelwithkey[$key]);
|
||||
$nbtabfieldcheck++;
|
||||
$tabfieldcheck[] = $val;
|
||||
$tabcomplete[$tmptablename]['fieldcheck'] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2369,42 +2369,23 @@ function dol_print_date($time, $format = '', $tzoutput = 'auto', $outputlangs =
|
||||
*/
|
||||
function dol_getdate($timestamp, $fast = false, $forcetimezone = '')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
if (empty($conf->global->MAIN_USE_OLD_FUNCTIONS_FOR_GETDATE)) {
|
||||
//$datetimeobj = new DateTime('@'.$timestamp);
|
||||
$datetimeobj = new DateTime();
|
||||
$datetimeobj->setTimestamp($timestamp); // Use local PHP server timezone
|
||||
if ($forcetimezone) {
|
||||
$datetimeobj->setTimezone(new DateTimeZone($forcetimezone == 'gmt' ? 'UTC' : $forcetimezone)); // (add timezone relative to the date entered)
|
||||
}
|
||||
$arrayinfo = array(
|
||||
'year'=>((int) date_format($datetimeobj, 'Y')),
|
||||
'mon'=>((int) date_format($datetimeobj, 'm')),
|
||||
'mday'=>((int) date_format($datetimeobj, 'd')),
|
||||
'wday'=>((int) date_format($datetimeobj, 'w')),
|
||||
'yday'=>((int) date_format($datetimeobj, 'z')),
|
||||
'hours'=>((int) date_format($datetimeobj, 'H')),
|
||||
'minutes'=>((int) date_format($datetimeobj, 'i')),
|
||||
'seconds'=>((int) date_format($datetimeobj, 's')),
|
||||
'0'=>$timestamp
|
||||
);
|
||||
} else {
|
||||
// PHP getdate is restricted to the years 1901-2038 on Unix and 1970-2038 on Windows
|
||||
$usealternatemethod = false;
|
||||
if ($timestamp <= 0) {
|
||||
$usealternatemethod = true; // <= 1970
|
||||
}
|
||||
if ($timestamp >= 2145913200) {
|
||||
$usealternatemethod = true; // >= 2038
|
||||
}
|
||||
|
||||
if ($usealternatemethod) {
|
||||
$arrayinfo = adodb_getdate($timestamp, $fast);
|
||||
} else {
|
||||
$arrayinfo = getdate($timestamp);
|
||||
}
|
||||
//$datetimeobj = new DateTime('@'.$timestamp);
|
||||
$datetimeobj = new DateTime();
|
||||
$datetimeobj->setTimestamp($timestamp); // Use local PHP server timezone
|
||||
if ($forcetimezone) {
|
||||
$datetimeobj->setTimezone(new DateTimeZone($forcetimezone == 'gmt' ? 'UTC' : $forcetimezone)); // (add timezone relative to the date entered)
|
||||
}
|
||||
$arrayinfo = array(
|
||||
'year'=>((int) date_format($datetimeobj, 'Y')),
|
||||
'mon'=>((int) date_format($datetimeobj, 'm')),
|
||||
'mday'=>((int) date_format($datetimeobj, 'd')),
|
||||
'wday'=>((int) date_format($datetimeobj, 'w')),
|
||||
'yday'=>((int) date_format($datetimeobj, 'z')),
|
||||
'hours'=>((int) date_format($datetimeobj, 'H')),
|
||||
'minutes'=>((int) date_format($datetimeobj, 'i')),
|
||||
'seconds'=>((int) date_format($datetimeobj, 's')),
|
||||
'0'=>$timestamp
|
||||
);
|
||||
|
||||
return $arrayinfo;
|
||||
}
|
||||
@ -3511,11 +3492,11 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
'1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected',
|
||||
'accountancy', 'account', 'accountline', 'action', 'add', 'address', 'angle-double-down', 'angle-double-up', 'asset',
|
||||
'bank_account', 'barcode', 'bank', 'bill', 'billa', 'billr', 'billd', 'bookmark', 'bom', 'bug', 'building',
|
||||
'cash-register', 'category', 'chart', 'check', 'clock', 'close_title', 'cog', 'collab', 'company', 'contact', 'country', 'contract', 'cron', 'cubes',
|
||||
'cash-register', 'category', 'chart', 'check', 'clock', 'close_title', 'cog', 'collab', 'company', 'contact', 'country', 'contract', 'cron', 'cubes', 'multicurrency',
|
||||
'delete', 'dolly', 'dollyrevert', 'donation', 'download', 'dynamicprice',
|
||||
'edit', 'ellipsis-h', 'email', 'eraser', 'establishment', 'expensereport', 'external-link-alt', 'external-link-square-alt',
|
||||
'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'autofill', 'folder', 'folder-open', 'folder-plus',
|
||||
'globe', 'globe-americas', 'graph', 'grip', 'grip_title', 'group',
|
||||
'generate', 'globe', 'globe-americas', 'graph', 'grip', 'grip_title', 'group',
|
||||
'help', 'holiday',
|
||||
'images', 'incoterm', 'info', 'intervention', 'inventory', 'intracommreport', 'knowledgemanagement',
|
||||
'label', 'language', 'link', 'list', 'listlight', 'loan', 'lot', 'long-arrow-alt-right',
|
||||
@ -3553,7 +3534,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
'donation'=>'file-alt', 'dynamicprice'=>'hand-holding-usd',
|
||||
'setup'=>'cog', 'companies'=>'building', 'products'=>'cube', 'commercial'=>'suitcase', 'invoicing'=>'coins',
|
||||
'accounting'=>'search-dollar', 'category'=>'tag', 'dollyrevert'=>'dolly',
|
||||
'hrm'=>'user-tie', 'incoterm'=>'truck-loading',
|
||||
'generate'=>'plus-square', 'hrm'=>'user-tie', 'incoterm'=>'truck-loading',
|
||||
'margin'=>'calculator', 'members'=>'user-friends', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode',
|
||||
'email'=>'at', 'establishment'=>'building',
|
||||
'edit'=>'pencil-alt', 'graph'=>'chart-line', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'question-circle',
|
||||
@ -4515,7 +4496,7 @@ function dol_print_error($db = '', $error = '', $errors = null)
|
||||
}
|
||||
$langs->loadLangs(array("main", "errors")); // Reload main because language may have been set only on previous line so we have to reload files we need.
|
||||
// This should not happen, except if there is a bug somewhere. Enabled and check log in such case.
|
||||
print 'This website or feature is currently temporarly not available or failed after a technical error.<br><br>This may be due to a maintenance operation. Current status of operation are on next line...<br><br>'."\n";
|
||||
print 'This website or feature is currently temporarly not available or failed after a technical error.<br><br>This may be due to a maintenance operation. Current status of operation ('.dol_print_date(dol_now(), 'dayhourrfc').') are on next line...<br><br>'."\n";
|
||||
print $langs->trans("DolibarrHasDetectedError").'. ';
|
||||
print $langs->trans("YouCanSetOptionDolibarrMainProdToZero");
|
||||
define("MAIN_CORE_ERROR", 1);
|
||||
@ -6664,6 +6645,8 @@ function dol_textishtml($msg, $option = 0)
|
||||
return true;
|
||||
} elseif (preg_match('/<\/textarea/i', $msg)) {
|
||||
return true;
|
||||
} elseif (preg_match('/<(b|em|i|u)>/i', $msg)) {
|
||||
return true;
|
||||
} elseif (preg_match('/<br/i', $msg)) {
|
||||
return true;
|
||||
}
|
||||
@ -6681,9 +6664,7 @@ function dol_textishtml($msg, $option = 0)
|
||||
return true;
|
||||
} elseif (preg_match('/<(br|div|font|li|p|span|strong|table)>/i', $msg)) {
|
||||
return true;
|
||||
} elseif (preg_match('/<(br|div|font|li|p|span|strong|table)\s+[^<>\/]*>/i', $msg)) {
|
||||
return true;
|
||||
} elseif (preg_match('/<(br|div|font|li|p|span|strong|table)\s+[^<>\/]*\/>/i', $msg)) {
|
||||
} elseif (preg_match('/<(br|div|font|li|p|span|strong|table)\s+[^<>\/]*\/?>/i', $msg)) {
|
||||
return true;
|
||||
} elseif (preg_match('/<img\s+[^<>]*src[^<>]*>/i', $msg)) {
|
||||
return true; // must accept <img src="http://example.com/aaa.png" />
|
||||
@ -6828,6 +6809,7 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null,
|
||||
$substitutionarray['__MEMBER_CIVILITY__'] = '__MEMBER_CIVILITY__';
|
||||
$substitutionarray['__MEMBER_FIRSTNAME__'] = '__MEMBER_FIRSTNAME__';
|
||||
$substitutionarray['__MEMBER_LASTNAME__'] = '__MEMBER_LASTNAME__';
|
||||
$substitutionarray['__MEMBER_USER_LOGIN_INFORMATION__'] = 'Login and pass of the external user account';
|
||||
/*$substitutionarray['__MEMBER_NOTE_PUBLIC__'] = '__MEMBER_NOTE_PUBLIC__';
|
||||
$substitutionarray['__MEMBER_NOTE_PRIVATE__'] = '__MEMBER_NOTE_PRIVATE__';*/
|
||||
}
|
||||
@ -6903,6 +6885,7 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null,
|
||||
}
|
||||
$substitutionarray['__MEMBER_FIRSTNAME__'] = (isset($object->firstname) ? $object->firstname : '');
|
||||
$substitutionarray['__MEMBER_LASTNAME__'] = (isset($object->lastname) ? $object->lastname : '');
|
||||
$substitutionarray['__MEMBER_USER_LOGIN_INFORMATION__'] = '';
|
||||
if (method_exists($object, 'getFullName')) {
|
||||
$substitutionarray['__MEMBER_FULLNAME__'] = $object->getFullName($outputlangs);
|
||||
}
|
||||
@ -7220,13 +7203,15 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null,
|
||||
* complete_substitutions_array($substitutionarray, $langs, $thirdparty);
|
||||
* $mesg = make_substitutions($mesg, $substitutionarray, $langs);
|
||||
*
|
||||
* @param string $text Source string in which we must do substitution
|
||||
* @param array $substitutionarray Array with key->val to substitute. Example: array('__MYKEY__' => 'MyVal', ...)
|
||||
* @param Translate $outputlangs Output language
|
||||
* @return string Output string after substitutions
|
||||
* @param string $text Source string in which we must do substitution
|
||||
* @param array $substitutionarray Array with key->val to substitute. Example: array('__MYKEY__' => 'MyVal', ...)
|
||||
* @param Translate $outputlangs Output language
|
||||
* @param int $converttextinhtmlifnecessary 0=Convert only value into HTML if text is already in HTML
|
||||
* 1=Will also convert initial $text into HTML if we try to insert one value that is HTML
|
||||
* @return string Output string after substitutions
|
||||
* @see complete_substitutions_array(), getCommonSubstitutionArray()
|
||||
*/
|
||||
function make_substitutions($text, $substitutionarray, $outputlangs = null)
|
||||
function make_substitutions($text, $substitutionarray, $outputlangs = null, $converttextinhtmlifnecessary = 0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
@ -7238,22 +7223,41 @@ function make_substitutions($text, $substitutionarray, $outputlangs = null)
|
||||
$outputlangs = $langs;
|
||||
}
|
||||
|
||||
// Is initial text HTML or simple text ?
|
||||
$msgishtml = 0;
|
||||
if (dol_textishtml($text, 1)) {
|
||||
$msgishtml = 1;
|
||||
}
|
||||
|
||||
// Make substitution for language keys: __(AnyTranslationKey)__ or __(AnyTranslationKey|langfile)__
|
||||
if (is_object($outputlangs)) {
|
||||
$reg = array();
|
||||
while (preg_match('/__\(([^\)]+)\)__/', $text, $reg)) {
|
||||
$msgishtml = 0;
|
||||
if (dol_textishtml($text, 1)) {
|
||||
$msgishtml = 1;
|
||||
}
|
||||
|
||||
// If key is __(TranslationKey|langfile)__, then force load of langfile.lang
|
||||
$tmp = explode('|', $reg[1]);
|
||||
if (!empty($tmp[1])) {
|
||||
$outputlangs->load($tmp[1]);
|
||||
}
|
||||
|
||||
$text = preg_replace('/__\('.preg_quote($reg[1], '/').'\)__/', $msgishtml ?dol_htmlentitiesbr($outputlangs->transnoentitiesnoconv($reg[1])) : $outputlangs->transnoentitiesnoconv($reg[1]), $text);
|
||||
$value = $outputlangs->transnoentitiesnoconv($reg[1]);
|
||||
|
||||
if (empty($converttextinhtmlifnecessary)) {
|
||||
// convert $newval into HTML is necessary
|
||||
$text = preg_replace('/__\('.preg_quote($reg[1], '/').'\)__/', $msgishtml ? dol_htmlentitiesbr($value) : $value, $text);
|
||||
} else {
|
||||
if (! $msgishtml) {
|
||||
$valueishtml = dol_textishtml($value, 1);
|
||||
|
||||
if ($valueishtml) {
|
||||
$text = dol_htmlentitiesbr($text);
|
||||
$msgishtml = 1;
|
||||
}
|
||||
} else {
|
||||
$value = dol_nl2br("$value");
|
||||
}
|
||||
|
||||
$text = preg_replace('/__\('.preg_quote($reg[1], '/').'\)__/', $value, $text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7261,18 +7265,30 @@ function make_substitutions($text, $substitutionarray, $outputlangs = null)
|
||||
// Must be after the substitution of translation, so if the text of translation contains a string __[xxx]__, it is also converted.
|
||||
$reg = array();
|
||||
while (preg_match('/__\[([^\]]+)\]__/', $text, $reg)) {
|
||||
$msgishtml = 0;
|
||||
if (dol_textishtml($text, 1)) {
|
||||
$msgishtml = 1;
|
||||
}
|
||||
|
||||
$keyfound = $reg[1];
|
||||
if (isASecretKey($keyfound)) {
|
||||
$newval = '*****forbidden*****';
|
||||
$value = '*****forbidden*****';
|
||||
} else {
|
||||
$newval = empty($conf->global->$keyfound) ? '' : $conf->global->$keyfound;
|
||||
$value = empty($conf->global->$keyfound) ? '' : $conf->global->$keyfound;
|
||||
}
|
||||
|
||||
if (empty($converttextinhtmlifnecessary)) {
|
||||
// convert $newval into HTML is necessary
|
||||
$text = preg_replace('/__\['.preg_quote($keyfound, '/').'\]__/', $msgishtml ? dol_htmlentitiesbr($value) : $value, $text);
|
||||
} else {
|
||||
if (! $msgishtml) {
|
||||
$valueishtml = dol_textishtml($value, 1);
|
||||
|
||||
if ($valueishtml) {
|
||||
$text = dol_htmlentitiesbr($text);
|
||||
$msgishtml = 1;
|
||||
}
|
||||
} else {
|
||||
$value = dol_nl2br("$value");
|
||||
}
|
||||
|
||||
$text = preg_replace('/__\['.preg_quote($keyfound, '/').'\]__/', $value, $text);
|
||||
}
|
||||
$text = preg_replace('/__\['.preg_quote($keyfound, '/').'\]__/', $msgishtml ?dol_htmlentitiesbr($newval) : $newval, $text);
|
||||
}
|
||||
|
||||
// Make substitition for array $substitutionarray
|
||||
@ -7285,7 +7301,22 @@ function make_substitutions($text, $substitutionarray, $outputlangs = null)
|
||||
$value = ''; // Protection
|
||||
}
|
||||
|
||||
$text = str_replace("$key", "$value", $text); // We must keep the " to work when value is 123.5 for example
|
||||
if (empty($converttextinhtmlifnecessary)) {
|
||||
$text = str_replace("$key", "$value", $text); // We must keep the " to work when value is 123.5 for example
|
||||
} else {
|
||||
if (! $msgishtml) {
|
||||
$valueishtml = dol_textishtml($value, 1);
|
||||
|
||||
if ($valueishtml) {
|
||||
$text = dol_htmlentitiesbr($text);
|
||||
$msgishtml = 1;
|
||||
}
|
||||
} else {
|
||||
$value = dol_nl2br("$value");
|
||||
}
|
||||
|
||||
$text = str_replace("$key", "$value", $text); // We must keep the " to work when value is 123.5 for example
|
||||
}
|
||||
}
|
||||
|
||||
return $text;
|
||||
@ -7309,18 +7340,7 @@ function complete_substitutions_array(&$substitutionarray, $outputlangs, $object
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
|
||||
// Add a substitution key for each extrafields, using key __EXTRA_XXX__
|
||||
// TODO Remove this. Already available into the getCommonSubstitutionArray used to build the substitution array.
|
||||
/*if (is_object($object) && is_array($object->array_options))
|
||||
{
|
||||
foreach($object->array_options as $key => $val)
|
||||
{
|
||||
$keyshort=preg_replace('/^(options|extra)_/','',$key);
|
||||
$substitutionarray['__EXTRAFIELD_'.$keyshort.'__']=$val;
|
||||
// For backward compatibiliy
|
||||
$substitutionarray['%EXTRA_'.$keyshort.'%']=$val;
|
||||
}
|
||||
}*/
|
||||
// Note: substitution key for each extrafields, using key __EXTRA_XXX__ is already available into the getCommonSubstitutionArray used to build the substitution array.
|
||||
|
||||
// Check if there is external substitution to do, requested by plugins
|
||||
$dirsubstitutions = array_merge(array(), (array) $conf->modules_parts['substitutions']);
|
||||
@ -8365,12 +8385,12 @@ function complete_head_from_modules($conf, $langs, $object, &$head, &$h, $type,
|
||||
|
||||
// No need to make a return $head. Var is modified as a reference
|
||||
if (!empty($hookmanager)) {
|
||||
$parameters = array('object' => $object, 'mode' => $mode, 'head' => $head);
|
||||
$parameters = array('object' => $object, 'mode' => $mode, 'head' => &$head);
|
||||
$reshook = $hookmanager->executeHooks('completeTabsHead', $parameters);
|
||||
if ($reshook > 0) {
|
||||
$head = $hookmanager->resArray;
|
||||
$h = count($head);
|
||||
}
|
||||
$h = count($head);
|
||||
}
|
||||
}
|
||||
|
||||
@ -9366,7 +9386,8 @@ function getDictvalue($tablename, $field, $id, $checkentity = false, $rowidfield
|
||||
|
||||
if (!isset($dictvalues[$tablename])) {
|
||||
$dictvalues[$tablename] = array();
|
||||
$sql = 'SELECT * FROM '.$tablename.' WHERE 1'; // Here select * is allowed as it is generic code and we don't have list of fields
|
||||
|
||||
$sql = 'SELECT * FROM '.$tablename.' WHERE 1 = 1'; // Here select * is allowed as it is generic code and we don't have list of fields
|
||||
if ($checkentity) {
|
||||
$sql .= ' AND entity IN (0,'.getEntity($tablename).')';
|
||||
}
|
||||
@ -9655,6 +9676,7 @@ function dolGetButtonAction($label, $html = '', $actionType = 'default', $url =
|
||||
$class = 'butAction';
|
||||
if ($actionType == 'danger' || $actionType == 'delete') {
|
||||
$class = 'butActionDelete';
|
||||
if (strpos($url, 'token=') === false) $url .= '&token='.newToken();
|
||||
}
|
||||
|
||||
$attr = array(
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
* Copyright (C) 2013 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2020 Abbes Bahfir <bafbes@gmail.com>
|
||||
* Copyright (C) 2021 Waël Almoman <info@almoman.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
|
||||
@ -155,7 +156,7 @@ function getValidOnlinePaymentMethods($paymentmethod = '')
|
||||
}
|
||||
|
||||
/**
|
||||
* Return string with full Url
|
||||
* Return string with full online payment Url
|
||||
*
|
||||
* @param string $type Type of URL ('free', 'order', 'invoice', 'contractline', 'membersubscription' ...)
|
||||
* @param string $ref Ref of object
|
||||
@ -178,6 +179,22 @@ function showOnlinePaymentUrl($type, $ref)
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return string with HTML link for online payment
|
||||
*
|
||||
* @param string $type Type of URL ('free', 'order', 'invoice', 'contractline', 'membersubscription' ...)
|
||||
* @param string $ref Ref of object
|
||||
* @param string $label Text or HTML tag to display, if empty it display the URL
|
||||
* @return string Url string
|
||||
*/
|
||||
function getHtmlOnlinePaymentLink($type, $ref, $label = '')
|
||||
{
|
||||
$url = getOnlinePaymentUrl(0, $type, $ref);
|
||||
$label = $label ? $label : $url;
|
||||
return'<a href="'.$url.'" target="_blank">'.$label.'</a>';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return string with full Url
|
||||
*
|
||||
|
||||
@ -20,10 +20,6 @@
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \class ModeleProductCode
|
||||
* \brief Parent class for product code generators
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/modules/member/modules_member.class.php
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
/* Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||
* Copyright (C) 2019 Maxime Kohlhaas <maxime@atm-consulting.fr>
|
||||
* Copyright (C) 2021 Ferran Marcet <fmarcet@2byte.es>
|
||||
*
|
||||
* 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
|
||||
@ -315,6 +316,142 @@ class modBom extends DolibarrModules
|
||||
$this->export_sql_end[$r] .= ' AND t.entity IN ('.getEntity('bom').')';
|
||||
$r++;
|
||||
/* END MODULEBUILDER EXPORT BILLOFMATERIALS */
|
||||
|
||||
// Imports
|
||||
//--------
|
||||
$r = 0;
|
||||
//Import BOM Header
|
||||
|
||||
$r++;
|
||||
$this->import_code[$r] = 'bom_'.$r;
|
||||
$this->import_label[$r] = 'BillOfMaterials';
|
||||
$this->import_icon[$r] = $this->picto;
|
||||
$this->import_entities_array[$r] = [];
|
||||
$this->import_tables_array[$r] = ['b' => MAIN_DB_PREFIX.'bom_bom', 'extra' => MAIN_DB_PREFIX.'bom_bom_extrafields'];
|
||||
$this->import_tables_creator_array[$r] = ['b' => 'fk_user_creat']; // Fields to store import user id
|
||||
$this->import_fields_array[$r] = [
|
||||
'b.ref' => 'Document Ref*',
|
||||
'b.label' => 'BomLabel*',
|
||||
'b.fk_product' => 'ProductRef*',
|
||||
'b.description' => 'Description',
|
||||
'b.note_public' => 'Note',
|
||||
'b.note_private' => 'NotePrivate',
|
||||
'b.fk_warehouse' => 'WarehouseRef',
|
||||
'b.qty' => 'Qty',
|
||||
'b.efficiency' => 'Efficiency',
|
||||
'b.duration' => 'Duration',
|
||||
'b.date_creation' => 'DateCreation',
|
||||
'b.date_valid' => 'DateValid',
|
||||
'b.fk_user_modif' => 'ModifiedById',
|
||||
'b.fk_user_valid' => 'ValidatedById',
|
||||
'b.model_pdf' => 'Model',
|
||||
'b.status' => 'Status*',
|
||||
'b.bomtype' => 'BomType*'
|
||||
|
||||
];
|
||||
|
||||
// Add extra fields
|
||||
$import_extrafield_sample = [];
|
||||
$sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'bom_bom' AND entity IN (0, ".$conf->entity.")";
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if ($resql) {
|
||||
while ($obj = $this->db->fetch_object($resql)) {
|
||||
$fieldname = 'extra.'.$obj->name;
|
||||
$fieldlabel = ucfirst($obj->label);
|
||||
$this->import_fields_array[$r][$fieldname] = $fieldlabel.($obj->fieldrequired ? '*' : '');
|
||||
$import_extrafield_sample[$fieldname] = $fieldlabel;
|
||||
}
|
||||
}
|
||||
// End add extra fields
|
||||
|
||||
$this->import_fieldshidden_array[$r] = ['extra.fk_object' => 'lastrowid-'.MAIN_DB_PREFIX.'bom_bom'];
|
||||
$this->import_regex_array[$r] = [
|
||||
'b.ref' => '(CPV\d{4}-\d{4}|BOM\d{4}-\d{4}|PROV.{1,32}$)'
|
||||
];
|
||||
|
||||
$this->import_updatekeys_array[$r] = ['b.ref' => 'Ref'];
|
||||
$this->import_convertvalue_array[$r] = [
|
||||
'b.fk_product' => [
|
||||
'rule' => 'fetchidfromref',
|
||||
'file' => '/product/class/product.class.php',
|
||||
'class' => 'Product',
|
||||
'method' => 'fetch',
|
||||
'element' => 'Product'
|
||||
],
|
||||
'b.fk_warehouse' => [
|
||||
'rule' => 'fetchidfromref',
|
||||
'file' => '/product/stock/class/entrepot.class.php',
|
||||
'class' => 'Entrepot',
|
||||
'method' => 'fetch',
|
||||
'element' => 'Warehouse'
|
||||
],
|
||||
'b.fk_user_valid' => [
|
||||
'rule' => 'fetchidfromref',
|
||||
'file' => '/user/class/user.class.php',
|
||||
'class' => 'User',
|
||||
'method' => 'fetch',
|
||||
'element' => 'user'
|
||||
],
|
||||
'b.fk_user_modif' => [
|
||||
'rule' => 'fetchidfromref',
|
||||
'file' => '/user/class/user.class.php',
|
||||
'class' => 'User',
|
||||
'method' => 'fetch',
|
||||
'element' => 'user'
|
||||
],
|
||||
];
|
||||
|
||||
//Import BOM Lines
|
||||
$r++;
|
||||
$this->import_code[$r] = 'bom_lines_'.$r;
|
||||
$this->import_label[$r] = 'BillOfMaterialsLine';
|
||||
$this->import_icon[$r] = $this->picto;
|
||||
$this->import_entities_array[$r] = [];
|
||||
$this->import_tables_array[$r] = ['bd' => MAIN_DB_PREFIX.'bom_bomline', 'extra' => MAIN_DB_PREFIX.'bom_bomline_extrafields'];
|
||||
$this->import_fields_array[$r] = [
|
||||
'bd.fk_bom' => 'Document Ref*',
|
||||
'bd.fk_product' => 'ProductRef',
|
||||
'bd.fk_bom_child' => 'BOMChild',
|
||||
'bd.description' => 'Description',
|
||||
'bd.qty' => 'LineQty',
|
||||
'bd.qty_frozen' => 'LineIsFrozen',
|
||||
'bd.disable_stock_change' => 'Disable Stock Change',
|
||||
'bd.efficiency' => 'Efficiency',
|
||||
'bd.position' => 'LinePosition'
|
||||
];
|
||||
|
||||
// Add extra fields
|
||||
$sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'bom_bomline' AND entity IN (0, ".$conf->entity.")";
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
while ($obj = $this->db->fetch_object($resql)) {
|
||||
$fieldname = 'extra.'.$obj->name;
|
||||
$fieldlabel = ucfirst($obj->label);
|
||||
$this->import_fields_array[$r][$fieldname] = $fieldlabel.($obj->fieldrequired ? '*' : '');
|
||||
}
|
||||
}
|
||||
// End add extra fields
|
||||
|
||||
$this->import_fieldshidden_array[$r] = ['extra.fk_object' => 'lastrowid-'.MAIN_DB_PREFIX.'bom_bomline'];
|
||||
$this->import_regex_array[$r] = [];
|
||||
$this->import_updatekeys_array[$r] = ['bd.fk_bom' => 'BOM Id'];
|
||||
$this->import_convertvalue_array[$r] = [
|
||||
'bd.fk_bom' => [
|
||||
'rule' => 'fetchidfromref',
|
||||
'file' => '/bom/class/bom.class.php',
|
||||
'class' => 'BOM',
|
||||
'method' => 'fetch',
|
||||
'element' => 'bom'
|
||||
],
|
||||
'bd.fk_product' => [
|
||||
'rule' => 'fetchidfromref',
|
||||
'file' => '/product/class/product.class.php',
|
||||
'class' => 'Product',
|
||||
'method' => 'fetch',
|
||||
'element' => 'Product'
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -121,7 +121,7 @@ class modFacture extends DolibarrModules
|
||||
$datestart = dol_mktime(23, 0, 0, $arraydate['mon'], $arraydate['mday'], $arraydate['year']);
|
||||
$this->cronjobs = array(
|
||||
0=>array('label'=>'RecurringInvoices', 'jobtype'=>'method', 'class'=>'compta/facture/class/facture-rec.class.php', 'objectname'=>'FactureRec', 'method'=>'createRecurringInvoices', 'parameters'=>'', 'comment'=>'Generate recurring invoices', 'frequency'=>1, 'unitfrequency'=>3600 * 24, 'priority'=>50, 'status'=>1, 'test'=>'$conf->facture->enabled', 'datestart'=>$datestart),
|
||||
1=>array('label'=>'SendEmailsRemindersOnInvoiceDueDate', 'jobtype'=>'method', 'class'=>'compta/facture/class/facture.class.php', 'objectname'=>'Facture', 'method'=>'sendEmailsRemindersOnInvoiceDueDate', 'parameters'=>"10,all,EmailTemplateCode", 'comment'=>'Send an emails when the unpaid invoices reach a due date + n days. First param is the offset n of days, second parameter is "all" or a payment mode code, last paramater is the code of email template to use (an email template with EmailTemplateCode must exists. the version in the language of the thirdparty will be used in priority).', 'frequency'=>1, 'unitfrequency'=>3600 * 24, 'priority'=>50, 'status'=>0, 'test'=>'$conf->facture->enabled', 'datestart'=>$datestart),
|
||||
1=>array('label'=>'SendEmailsRemindersOnInvoiceDueDate', 'jobtype'=>'method', 'class'=>'compta/facture/class/facture.class.php', 'objectname'=>'Facture', 'method'=>'sendEmailsRemindersOnInvoiceDueDate', 'parameters'=>"10,all,EmailTemplateCode", 'comment'=>'Send an emails when the unpaid invoices reach a due date + n days = today. First param is the offset n of days, second parameter is "all" or a payment mode code, last paramater is the code of email template to use (an email template with EmailTemplateCode must exists. the version in the language of the thirdparty will be used in priority).', 'frequency'=>1, 'unitfrequency'=>3600 * 24, 'priority'=>50, 'status'=>0, 'test'=>'$conf->facture->enabled', 'datestart'=>$datestart),
|
||||
);
|
||||
|
||||
// Permissions
|
||||
|
||||
@ -180,10 +180,10 @@ class modPartnership extends DolibarrModules
|
||||
$tabtoadd = (!empty(getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR')) && getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') ? 'member' : 'thirdparty';
|
||||
|
||||
if ($tabtoadd == 'member') {
|
||||
$this->tabs[] = array('data'=>'member:+partnership:Partnership:partnership@partnership:$user->rights->partnership->read:/partnership/partnership.php?socid=__ID__');
|
||||
$this->tabs[] = array('data'=>'member:+partnership:Partnership:partnership@partnership:$user->rights->partnership->read:/adherents/partnership.php?rowid=__ID__');
|
||||
$fk_mainmenu = "members";
|
||||
} else {
|
||||
$this->tabs[] = array('data'=>'thirdparty:+partnership:Partnership:partnership@partnership:$user->rights->partnership->read:/partnership/partnership.php?socid=__ID__');
|
||||
$this->tabs[] = array('data'=>'thirdparty:+partnership:Partnership:partnership@partnership:$user->rights->partnership->read:/societe/partnership.php?socid=__ID__');
|
||||
$fk_mainmenu = "companies";
|
||||
}
|
||||
|
||||
@ -253,12 +253,12 @@ class modPartnership extends DolibarrModules
|
||||
// Cronjobs (List of cron jobs entries to add when module is enabled)
|
||||
// unit_frequency must be 60 for minute, 3600 for hour, 86400 for day, 604800 for week
|
||||
|
||||
$statusatinstall=0;
|
||||
$arraydate=dol_getdate(dol_now());
|
||||
$datestart=dol_mktime(21, 15, 0, $arraydate['mon'], $arraydate['mday'], $arraydate['year']);
|
||||
|
||||
$this->cronjobs = array(
|
||||
0 => array('priority'=>60, 'label'=>'CancelPartnershipForExpiredMembers', 'jobtype'=>'method', 'class'=>'/partnership/class/partnershiputils.class.php', 'objectname'=>'PartnershipUtils', 'method'=>'doCancelStatusOfPartnership', 'parameters'=>'', 'comment'=>'Cancel status of partnership when subscription is expired + x days.', 'frequency'=>1, 'unitfrequency'=>86400, 'status'=>$statusatinstall, 'test'=>'$conf->partnership->enabled', 'datestart'=>$datestart),
|
||||
0 => array('priority'=>60, 'label'=>'CancelPartnershipForExpiredMembers', 'jobtype'=>'method', 'class'=>'/partnership/class/partnershiputils.class.php', 'objectname'=>'PartnershipUtils', 'method'=>'doCancelStatusOfMemberPartnership', 'parameters'=>'', 'comment'=>'Cancel status of partnership when subscription is expired + x days.', 'frequency'=>1, 'unitfrequency'=>86400, 'status'=>1, 'test'=>'$conf->partnership->enabled', 'datestart'=>$datestart),
|
||||
1 => array('priority'=>61, 'label'=>'CheckDolibarrBacklink', 'jobtype'=>'method', 'class'=>'/partnership/class/partnershiputils.class.php', 'objectname'=>'PartnershipUtils', 'method'=>'doWarningOfPartnershipIfDolibarrBacklinkNotfound', 'parameters'=>'', 'comment'=>'Warning of partnership if Dolibarr backlink not found on partner website.', 'frequency'=>1, 'unitfrequency'=>86400, 'status'=>0, 'test'=>'$conf->partnership->enabled', 'datestart'=>$datestart),
|
||||
);
|
||||
|
||||
// Permissions provided by this module
|
||||
|
||||
@ -198,11 +198,25 @@ class modTakePos extends DolibarrModules
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 50151;
|
||||
$this->rights[$r][1] = 'Use Point Of Sale';
|
||||
$this->rights[$r][1] = 'Use Point Of Sale (record a sale, add products, record payment)';
|
||||
$this->rights[$r][2] = 'a';
|
||||
$this->rights[$r][3] = 0;
|
||||
$this->rights[$r][4] = 'run';
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 50152;
|
||||
$this->rights[$r][1] = 'Can modify added sales lines (prices, discount)';
|
||||
$this->rights[$r][2] = 'a';
|
||||
$this->rights[$r][3] = 0;
|
||||
$this->rights[$r][4] = 'editlines';
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 50153;
|
||||
$this->rights[$r][1] = 'Edit ordered sales lines (useful only when option "Order printers" has been enabled). Allow to edit sales lines even after the order has been printed';
|
||||
$this->rights[$r][2] = 'a';
|
||||
$this->rights[$r][3] = 0;
|
||||
$this->rights[$r][4] = 'editorderedlines';
|
||||
|
||||
|
||||
// Main menu entries
|
||||
$this->menu = array(); // List of menus to add
|
||||
|
||||
@ -231,10 +231,10 @@ class pdf_cornas extends ModelePDFSuppliersOrders
|
||||
$objphoto->fetch($object->lines[$i]->fk_product);
|
||||
|
||||
if (!empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) {
|
||||
$pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/";
|
||||
$pdir = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/";
|
||||
$dir = $conf->product->dir_output.'/'.$pdir;
|
||||
} else {
|
||||
$pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/';
|
||||
$pdir = get_exdir($objphoto->id, 0, 0, 0, $objphoto, 'product');
|
||||
$dir = $conf->product->dir_output.'/'.$pdir;
|
||||
}
|
||||
|
||||
|
||||
@ -246,13 +246,12 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$objphoto->fetch($object->lines[$i]->fk_product);
|
||||
|
||||
if (!empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) {
|
||||
$pdir = get_exdir($object->lines[$i]->fk_product, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/";
|
||||
$pdir = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$object->lines[$i]->fk_product."/photos/";
|
||||
$dir = $conf->product->dir_output.'/'.$pdir;
|
||||
} else {
|
||||
$pdir = get_exdir(0, 2, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/';
|
||||
$pdir = get_exdir($objphoto->id, 0, 0, 0, $objphoto, 'product');
|
||||
$dir = $conf->product->dir_output.'/'.$pdir;
|
||||
}
|
||||
|
||||
$realpath = '';
|
||||
foreach ($objphoto->liste_photos($dir, 1) as $key => $obj) {
|
||||
$filename = $obj['photo'];
|
||||
|
||||
@ -151,6 +151,10 @@ if ($action == 'presend') {
|
||||
$fuser = new User($db);
|
||||
$fuser->fetch($object->fk_user_author);
|
||||
$liste['thirdparty'] = $fuser->getFullName($outputlangs)." <".$fuser->email.">";
|
||||
} elseif ($object->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') {
|
||||
$fadherent = new Adherent($db);
|
||||
$fadherent->fetch($object->fk_member);
|
||||
$liste['member'] = $fadherent->getFullName($outputlangs)." <".$fadherent->email.">";
|
||||
} elseif ($object->element == 'societe') {
|
||||
foreach ($object->thirdparty_and_contact_email_array(1) as $key => $value) {
|
||||
$liste[$key] = $value;
|
||||
|
||||
@ -127,6 +127,10 @@ if ($massaction == 'presend') {
|
||||
$fuser = new User($db);
|
||||
$fuser->fetch($thirdpartyid);
|
||||
$liste['thirdparty'] = $fuser->getFullName($langs)." <".$fuser->email.">";
|
||||
} elseif ($objecttmp->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') {
|
||||
$fadherent = new Adherent($db);
|
||||
$fadherent->fetch($objecttmp->fk_member);
|
||||
$liste['member'] = $fadherent->getFullName($langs)." <".$fadherent->email.">";
|
||||
} else {
|
||||
$soc = new Societe($db);
|
||||
$soc->fetch($thirdpartyid);
|
||||
|
||||
@ -36,10 +36,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/cron.lib.php';
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array('admin', 'cron', 'members'));
|
||||
|
||||
if (!$user->rights->cron->create) {
|
||||
accessforbidden();
|
||||
}
|
||||
|
||||
$id = GETPOST('id', 'int');
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
$confirm = GETPOST('confirm', 'alpha');
|
||||
@ -49,6 +45,12 @@ $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
|
||||
|
||||
$securitykey = GETPOST('securitykey', 'alpha');
|
||||
|
||||
$permissiontoadd = $user->rights->cron->create;
|
||||
|
||||
if (!$user->rights->cron->create) {
|
||||
accessforbidden();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
@ -219,6 +221,30 @@ if ($action == 'inactive') {
|
||||
}
|
||||
}
|
||||
|
||||
// Action clone object
|
||||
if ($action == 'confirm_clone' && $confirm == 'yes' && !empty($permissiontoadd)) {
|
||||
if (1 == 0 && !GETPOST('clone_content') && !GETPOST('clone_receivers')) {
|
||||
setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors');
|
||||
} else {
|
||||
$objectutil = dol_clone($object, 1); // To avoid to denaturate loaded object when setting some properties for clone or if createFromClone modifies the object. We use native clone to keep this->db valid.
|
||||
|
||||
$result = $objectutil->createFromClone($user, (($object->id > 0) ? $object->id : $id));
|
||||
if (is_object($result) || $result > 0) {
|
||||
$newid = 0;
|
||||
if (is_object($result)) {
|
||||
$newid = $result->id;
|
||||
} else {
|
||||
$newid = $result;
|
||||
}
|
||||
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$newid); // Open record of new object
|
||||
exit;
|
||||
} else {
|
||||
setEventMessages($objectutil->error, $objectutil->errors, 'errors');
|
||||
$action = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
@ -230,9 +256,9 @@ $formCron = new FormCron($db);
|
||||
|
||||
llxHeader('', $langs->trans("CronTask"));
|
||||
|
||||
if ($action == 'edit' || empty($action) || $action == 'delete' || $action == 'execute') {
|
||||
$head = cron_prepare_head($object);
|
||||
} elseif ($action == 'create') {
|
||||
$head = cron_prepare_head($object);
|
||||
|
||||
if ($action == 'create') {
|
||||
print load_fiche_titre($langs->trans("CronTask"), '', 'title_setup');
|
||||
}
|
||||
|
||||
@ -259,17 +285,26 @@ if ($conf->use_javascript_ajax) {
|
||||
}
|
||||
|
||||
if ($action == 'delete') {
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id, $langs->trans("CronDelete"), $langs->trans("CronConfirmDelete"), "confirm_delete", '', '', 1);
|
||||
$formconfirm = $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id, $langs->trans("CronDelete"), $langs->trans("CronConfirmDelete"), "confirm_delete", '', '', 1);
|
||||
|
||||
$action = '';
|
||||
}
|
||||
|
||||
if ($action == 'execute') {
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id.'&securitykey='.$securitykey, $langs->trans("CronExecute"), $langs->trans("CronConfirmExecute"), "confirm_execute", '', '', 1);
|
||||
$formconfirm = $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id.'&securitykey='.$securitykey, $langs->trans("CronExecute"), $langs->trans("CronConfirmExecute"), "confirm_execute", '', '', 1);
|
||||
|
||||
$action = '';
|
||||
}
|
||||
|
||||
// Clone confirmation
|
||||
if ($action == 'clone') {
|
||||
// Create an array for form
|
||||
$formquestion = array();
|
||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
|
||||
}
|
||||
|
||||
// Print form confirm
|
||||
print $formconfirm;
|
||||
|
||||
|
||||
/*
|
||||
@ -727,6 +762,8 @@ if (($action == "create") || ($action == "edit")) {
|
||||
if (!$user->rights->cron->create) {
|
||||
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("NotEnoughPermissions")).'">'.$langs->trans("CronStatusActiveBtn").'/'.$langs->trans("CronStatusInactiveBtn").'</a>';
|
||||
} else {
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=clone&token='.newToken().'&id='.$object->id.'">'.$langs->trans("Clone").'</a>';
|
||||
|
||||
if (empty($object->status)) {
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=activate&token='.newToken().'&id='.$object->id.'">'.$langs->trans("CronStatusActiveBtn").'</a>';
|
||||
} else {
|
||||
|
||||
@ -859,6 +859,8 @@ class Cronjob extends CommonObject
|
||||
*/
|
||||
public function createFromClone(User $user, $fromid)
|
||||
{
|
||||
global $langs;
|
||||
|
||||
$error = 0;
|
||||
|
||||
$object = new Cronjob($this->db);
|
||||
@ -868,10 +870,10 @@ class Cronjob extends CommonObject
|
||||
// Load source object
|
||||
$object->fetch($fromid);
|
||||
$object->id = 0;
|
||||
$object->statut = 0;
|
||||
|
||||
// Clear fields
|
||||
// ...
|
||||
$object->status = self::STATUS_DISABLED;
|
||||
$object->label = $langs->trans("CopyOf").' '.$object->label;
|
||||
|
||||
// Create clone
|
||||
$object->context['createfromclone'] = 'createfromclone';
|
||||
@ -883,11 +885,6 @@ class Cronjob extends CommonObject
|
||||
$error++;
|
||||
}
|
||||
|
||||
//if (! $error)
|
||||
//{
|
||||
|
||||
//}
|
||||
|
||||
unset($object->context['createfromclone']);
|
||||
|
||||
// End
|
||||
|
||||
@ -237,7 +237,18 @@ class ConferenceOrBooth extends ActionComm
|
||||
*/
|
||||
public function fetch($id, $ref = null, $ref_ext = '', $email_msgid = '')
|
||||
{
|
||||
global $dolibarr_main_url_root, $dolibarr_main_instance_unique_id, $conf, $langs;
|
||||
|
||||
$result = parent::fetch($id, $ref, $ref_ext, $email_msgid);
|
||||
|
||||
$link_subscription = $dolibarr_main_url_root.'/public/eventorganization/attendee_subscription.php?id='.$id;
|
||||
|
||||
$encodedsecurekey = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$id, 2);
|
||||
$link_subscription .= '&securekey='.urlencode($encodedsecurekey);
|
||||
|
||||
$this->fields['pubregister'] = array('type'=>'url', 'label'=>$langs->trans("PublicAttendeeSubscriptionPage"), 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>1);
|
||||
$this->pubregister = $link_subscription;
|
||||
|
||||
$this->getActionCommFields();
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -493,16 +493,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
//$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just before this field
|
||||
//unset($object->fields['fk_project']); // Hide field already shown in banner
|
||||
//unset($object->fields['fk_soc']); // Hide field already shown in banner
|
||||
global $dolibarr_main_url_root;
|
||||
|
||||
$encodedid = dol_encode($id, $dolibarr_main_instance_unique_id);
|
||||
$link_subscription = $dolibarr_main_url_root.'/public/eventorganization/attendee_subscription.php?id='.$encodedid;
|
||||
|
||||
$encodedsecurekey = dol_encode($conf->global->EVENTORGANIZATION_SECUREKEY.$encodedid, $dolibarr_main_instance_unique_id);
|
||||
$link_subscription .= '&securekey='.urlencode($encodedsecurekey);
|
||||
|
||||
$object->fields['pubregister'] = array('type'=>'url', 'label'=>$langs->trans("PublicAttendeeSubscriptionPage"), 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>1);
|
||||
$object->pubregister = $link_subscription;
|
||||
$keyforbreak='pubregister';
|
||||
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
|
||||
|
||||
@ -39,6 +39,8 @@ if ($conf->categorie->enabled) {
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array("eventorganization", "other"));
|
||||
|
||||
global $dolibarr_main_url_root, $dolibarr_main_instance_unique_id;
|
||||
|
||||
$action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
|
||||
$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists)
|
||||
$show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk actions ?
|
||||
@ -360,6 +362,14 @@ if ($projectid > 0) {
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Link to the vote/register page
|
||||
print '<tr><td>'.$langs->trans("RegisterPage").'</td><td>';
|
||||
$linkregister = $dolibarr_main_url_root.'/public/project/index.php?id='.$project->id;
|
||||
$encodedsecurekey = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$project->id, 2);
|
||||
$linkregister .= '&securekey='.urlencode($encodedsecurekey);
|
||||
print '<a target="_blank" href="'.$linkregister.'">'.$linkregister.'</a>';
|
||||
print '</td></tr>';
|
||||
|
||||
// Other attributes
|
||||
$cols = 2;
|
||||
$objectconf=$object;
|
||||
|
||||
@ -34,7 +34,7 @@ if (!defined('DOL_APPLICATION_TITLE')) {
|
||||
define('DOL_APPLICATION_TITLE', 'Dolibarr');
|
||||
}
|
||||
if (!defined('DOL_VERSION')) {
|
||||
define('DOL_VERSION', '14.0.0-alpha'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c
|
||||
define('DOL_VERSION', '14.0.0-beta'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c
|
||||
}
|
||||
|
||||
if (!defined('EURO')) {
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
-- Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
|
||||
-- Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
|
||||
-- Copyright (C) 2014 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
-- Copyright (C) 2021 Udo Tamm <dev@dolibit.de>
|
||||
--
|
||||
-- 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
|
||||
@ -50,7 +51,7 @@ INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (19
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (20,'SE','SWE','Sweden',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (21,'CI','CIV','Côte d''Ivoire',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (22,'SN','SEN','Senegal',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (23,'AR','ARG','Argentine',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (23,'AR','ARG','Argentina',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (24,'CM','CMR','Cameroun',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (25,'PT','PRT','Portugal',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (26,'SA','SAU','Saudi Arabia',1,0);
|
||||
@ -59,21 +60,21 @@ INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (28
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (29,'SG','SGP','Singapour',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (30,'AF','AFG','Afghanistan',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (31,'AX','ALA','Iles Aland',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (32,'AL','ALB','Albanie',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (32,'AL','ALB','Albania',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (33,'AS','ASM','Samoa américaines',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (34,'AD','AND','Andorre',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (34,'AD','AND','Andorra',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (35,'AO','AGO','Angola',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (36,'AI','AIA','Anguilla',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (37,'AQ','ATA','Antarctique',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (38,'AG','ATG','Antigua-et-Barbuda',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (39,'AM','ARM','Arménie',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (41,'AT','AUT','Autriche',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (39,'AM','ARM','Armenia',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (41,'AT','AUT','Austria',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (42,'AZ','AZE','Azerbaïdjan',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (43,'BS','BHS','Bahamas',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (44,'BH','BHR','Bahreïn',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (45,'BD','BGD','Bangladesh',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (46,'BB','BRB','Barbade',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (47,'BY','BLR','Biélorussie',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (47,'BY','BLR','Belarus',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (48,'BZ','BLZ','Belize',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (49,'BJ','BEN','Bénin',1,0);
|
||||
INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (50,'BM','BMU','Bermudes',1,0);
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
delete from llx_c_action_trigger;
|
||||
-- actions enabled by default (constant created for that) when we enable module agenda
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('COMPANY_CREATE','Third party created','Executed when a third party is created','societe',1);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('COMPANY_MODIFY','Third party update','Executed when you update third party','societe',1);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('COMPANY_DELETE','Third party deleted','Executed when you delete third party','societe',1);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_VALIDATE','Customer proposal validated','Executed when a commercial proposal is validated','propal',2);
|
||||
@ -129,8 +130,9 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MRP_MO_DELETE','MO deleted','Executed when a MO is deleted','mrp',662);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MRP_MO_CANCEL','MO canceled','Executed when a MO is canceled','mrp',663);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_CREATE','Contact address created','Executed when a contact is created','contact',50);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_SENTBYMAIL','Mails sent from third party card','Executed when you send email from contact address record','contact',51);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_DELETE','Contact address deleted','Executed when a contact is deleted','contact',52);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_MODIFY','Contact address update','Executed when a contact is updated','contact',51);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_SENTBYMAIL','Mails sent from third party card','Executed when you send email from contact address record','contact',52);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_DELETE','Contact address deleted','Executed when a contact is deleted','contact',53);
|
||||
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('RECRUITMENTJOBPOSITION_CREATE','Job created','Executed when a job is created','recruitment',7500);
|
||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('RECRUITMENTJOBPOSITION_MODIFY','Job modified','Executed when a job is modified','recruitment',7502);
|
||||
|
||||
@ -35,6 +35,6 @@ INSERT INTO llx_c_email_templates (entity,module,type_template,lang,private,fk_u
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailAskConf', 10, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskConf)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventConfRequestWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailAskBooth', 20, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskBooth)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventBoothRequestWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsBooth', 30, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsBooth)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventBoothSubscriptionWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsEvent', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsEvent)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventEventSubscriptionWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsEvent', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsEvent)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventEventSubscriptionWasReceived)__<br /><br />__(Sincerely)__<br /><br />__MYCOMPANY_NAME__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationMassEmailAttendees', 50, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailAttendees)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventBulkMailToAttendees)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationMassEmailSpeakers', 60, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailSpeakers)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventBulkMailToSpeakers)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
|
||||
28
htdocs/install/mysql/data/llx_c_productbatch_qcstatus.sql
Normal file
@ -0,0 +1,28 @@
|
||||
-- Copyright (C) 2021 Noé Cendrier <noe.cendrier@altairis.fr>
|
||||
--
|
||||
-- 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 <https://www.gnu.org/licenses/>.
|
||||
--
|
||||
--
|
||||
|
||||
--
|
||||
-- Do not place a comment at the end of the line, this file is parsed when
|
||||
-- from the install and all '--' are removed.
|
||||
--
|
||||
-- Ne pas placer de commentaire en fin de ligne, ce fichier est parsé lors
|
||||
-- de l'install et tous les sigles '--' sont supprimés.
|
||||
--
|
||||
|
||||
INSERT INTO llx_c_productbatch_qcstatus (code, label, active) VALUES ('OK', 'InWorkingOrder', 1);
|
||||
INSERT INTO llx_c_productbatch_qcstatus (code, label, active) VALUES ('KO', 'OutOfOrder', 1);
|
||||
|
||||
@ -587,4 +587,5 @@ insert into llx_c_actioncomm (id, code, type, libelle, module, active, position)
|
||||
-- VMYSQL4.3 ALTER TABLE llx_accounting_bookkeeping MODIFY COLUMN montant double(24,8) NULL;
|
||||
-- VPGSQL8.2 ALTER TABLE llx_accounting_bookkeeping ALTER COLUMN montant DROP NOT NULL;
|
||||
|
||||
ALTER TABLE llx_export_model MODIFY COLUMN type varchar(64);
|
||||
|
||||
|
||||
@ -59,11 +59,11 @@ insert into llx_c_actioncomm (id, code, type, libelle, module, active, position)
|
||||
|
||||
UPDATE llx_c_country SET eec = 1 WHERE code IN ('AT','BE','BG','CY','CZ','DE','DK','EE','ES','FI','FR','GR','HR','NL','HU','IE','IM','IT','LT','LU','LV','MC','MT','PL','PT','RO','SE','SK','SI');
|
||||
|
||||
ALTER TABLE llx_export_model MODIFY COLUMN type varchar(64);
|
||||
|
||||
|
||||
-- For v14
|
||||
|
||||
ALTER TABLE llx_export_model MODIFY COLUMN type varchar(64);
|
||||
|
||||
create table llx_accounting_groups_account
|
||||
(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
@ -157,6 +157,18 @@ CREATE TABLE llx_workstation_workstation_usergroup(
|
||||
fk_workstation integer
|
||||
) ENGINE=innodb;
|
||||
|
||||
CREATE TABLE llx_c_producbatch_qcstatus(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL,
|
||||
entity integer NOT NULL DEFAULT 1,
|
||||
code varchar(16) NOT NULL,
|
||||
label varchar(50) NOT NULL,
|
||||
active integer DEFAULT 1 NOT NULL
|
||||
) ENGINE=innodb;
|
||||
|
||||
ALTER TABLE llx_c_productbatch_qcstatus ADD UNIQUE INDEX uk_c_productbatch_qcstatus(code, entity);
|
||||
|
||||
INSERT INTO llx_c_productbatch_qcstatus (code, label, active) VALUES ('OK', 'InWorkingOrder', 1);
|
||||
INSERT INTO llx_c_productbatch_qcstatus (code, label, active) VALUES ('KO', 'OutOfOrder', 1);
|
||||
|
||||
ALTER TABLE llx_product_customer_price ADD COLUMN ref_customer varchar(30);
|
||||
ALTER TABLE llx_product_customer_price_log ADD COLUMN ref_customer varchar(30);
|
||||
@ -187,6 +199,7 @@ ALTER TABLE llx_mrp_production ADD COLUMN origin_type varchar(10) AFTER origin_i
|
||||
|
||||
ALTER TABLE llx_fichinter ADD COLUMN last_main_doc varchar(255) AFTER model_pdf;
|
||||
ALTER TABLE llx_projet ADD COLUMN last_main_doc varchar(255) AFTER model_pdf;
|
||||
ALTER TABLE llx_expensereport ADD COLUMN last_main_doc varchar(255) DEFAULT NULL AFTER model_pdf;
|
||||
|
||||
create table llx_payment_vat
|
||||
(
|
||||
@ -220,7 +233,7 @@ ALTER TABLE llx_tva ALTER COLUMN paye SET DEFAULT 0;
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailAskConf', 10, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskConf)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventConfRequestWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailAskBooth', 20, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskBooth)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventBoothRequestWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsBooth', 30, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsBooth)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventBoothSubscriptionWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsEvent', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsEvent)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventEventSubscriptionWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsEvent', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsEvent)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventEventSubscriptionWasReceived)__<br /><br />__(Sincerely)__<br /><br />__MYCOMPANY_NAME__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationMassEmailAttendees', 50, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailAttendees)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventBulkMailToAttendees)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationMassEmailSpeakers', 60, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailSpeakers)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOrganizationEventBulkMailToSpeakers)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||
|
||||
@ -413,8 +426,9 @@ CREATE TABLE llx_partnership(
|
||||
note_private text,
|
||||
note_public text,
|
||||
last_main_doc varchar(255),
|
||||
count_last_url_check_error integer DEFAULT '0',
|
||||
import_key varchar(14),
|
||||
count_last_url_check_error integer DEFAULT '0',
|
||||
last_check_backlink datetime NULL,
|
||||
import_key varchar(14),
|
||||
model_pdf varchar(255)
|
||||
) ENGINE=innodb;
|
||||
|
||||
@ -435,7 +449,11 @@ create table llx_partnership_extrafields
|
||||
|
||||
ALTER TABLE llx_partnership_extrafields ADD INDEX idx_partnership_fk_object(fk_object);
|
||||
|
||||
INSERT INTO llx_c_email_templates (entity,module,type_template,label,lang,position,topic,joinfiles,content) VALUES (0, 'partnership', 'member', '(AlertStatusPartnershipExpiration)', NULL, 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourMembershipWillSoonExpireTopic)__', 0, '<body>\n <p>Dear __MEMBER_FULLNAME__,<br><br>\n__(YourMembershipWillSoonExpireContent)__</p>\n<br />\n\n __(Sincerely)__ <br />\n __[PARTNERSHIP_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||
INSERT INTO llx_c_email_templates (entity,module,type_template,label,lang,position,topic,joinfiles,content) VALUES (0, 'partnership', 'partnership_send', '(SendingEmailOnPartnershipWillSoonBeCanceled)', '', 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourPartnershipWillSoonBeCanceledTopic)__', 0, '<body>\n <p>Hello,<br><br>\n__(YourPartnershipWillSoonBeCanceledContent)__</p>\n<br />\n\n<br />\n\n __(Sincerely)__ <br />\n __[MAIN_INFO_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||
INSERT INTO llx_c_email_templates (entity,module,type_template,label,lang,position,topic,joinfiles,content) VALUES (0, 'partnership', 'partnership_send', '(SendingEmailOnPartnershipCanceled)', '', 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourPartnershipCanceledTopic)__', 0, '<body>\n <p>Hello,<br><br>\n__(YourPartnershipCanceledContent)__</p>\n<br />\n\n<br />\n\n __(Sincerely)__ <br />\n __[MAIN_INFO_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||
INSERT INTO llx_c_email_templates (entity,module,type_template,label,lang,position,topic,joinfiles,content) VALUES (0, 'partnership', 'partnership_send', '(SendingEmailOnPartnershipRefused)', '', 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourPartnershipRefusedTopic)__', 0, '<body>\n <p>Hello,<br><br>\n__(YourPartnershipRefusedContent)__</p>\n<br />\n\n<br />\n\n __(Sincerely)__ <br />\n __[MAIN_INFO_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||
INSERT INTO llx_c_email_templates (entity,module,type_template,label,lang,position,topic,joinfiles,content) VALUES (0, 'partnership', 'partnership_send', '(SendingEmailOnPartnershipAccepted)', '', 100, '[__[MAIN_INFO_SOCIETE_NOM]__] - __(YourPartnershipAcceptedTopic)__', 0, '<body>\n <p>Hello,<br><br>\n__(YourPartnershipAcceptedContent)__</p>\n<br />\n\n<br />\n\n __(Sincerely)__ <br />\n __[MAIN_INFO_SOCIETE_NOM]__ <br />\n </body>\n');
|
||||
ALTER TABLE llx_adherent ADD COLUMN url varchar(255) NULL AFTER email;
|
||||
ALTER TABLE llx_facture_fourn ADD COLUMN date_closing datetime DEFAULT NULL after date_valid;
|
||||
|
||||
ALTER TABLE llx_facture_fourn ADD COLUMN fk_user_closing integer DEFAULT NULL after fk_user_valid;
|
||||
@ -482,3 +500,9 @@ create table llx_knowledgemanagement_knowledgerecord_extrafields
|
||||
|
||||
-- add default amount by member type
|
||||
ALTER TABLE llx_adherent_type ADD COLUMN amount DOUBLE(24,8) NULL DEFAULT NULL AFTER subscription;
|
||||
|
||||
-- add action trigger
|
||||
INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) VALUES ('COMPANY_MODIFY','Third party update','Executed when you update third party','societe',1);
|
||||
INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) VALUES ('CONTACT_MODIFY','Contact address update','Executed when a contact is updated','contact',51);
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
-- ========================================================================
|
||||
-- Copyright (C) 2021 Noé Cendrier <noe.cendrier@altairis.fr>
|
||||
--
|
||||
-- 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 <https://www.gnu.org/licenses/>.
|
||||
--
|
||||
-- ========================================================================
|
||||
|
||||
ALTER TABLE llx_c_productbatch_qcstatus ADD UNIQUE INDEX uk_c_productbatch_qcstatus(code, entity);
|
||||
26
htdocs/install/mysql/tables/llx_c_productbatch_qcstatus.sql
Normal file
@ -0,0 +1,26 @@
|
||||
-- ========================================================================
|
||||
-- Copyright (C) 2012-2017 Noé Cendrier <noe.cendrier@altairis.fr>
|
||||
--
|
||||
-- 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 2 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_c_productbatch_qcstatus
|
||||
(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
entity integer NOT NULL DEFAULT 1,
|
||||
code varchar(16) NOT NULL,
|
||||
label varchar(50) NOT NULL,
|
||||
active integer DEFAULT 1 NOT NULL
|
||||
)ENGINE=innodb;
|
||||
@ -202,7 +202,7 @@ Docref=Reference
|
||||
LabelAccount=Label account
|
||||
LabelOperation=Label operation
|
||||
Sens=Direction
|
||||
AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you received<br>For an accounting account of a supplier, use Debit to record a payment you make
|
||||
AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you have received<br>For an accounting account of a supplier, use Debit to record a payment you made
|
||||
LetteringCode=Lettering code
|
||||
Lettering=Lettering
|
||||
Codejournal=Journal
|
||||
@ -297,7 +297,7 @@ NoNewRecordSaved=No more record to journalize
|
||||
ListOfProductsWithoutAccountingAccount=List of products not bound to any accounting account
|
||||
ChangeBinding=Change the binding
|
||||
Accounted=Accounted in ledger
|
||||
NotYetAccounted=Not yet accounted in ledger
|
||||
NotYetAccounted=Not yet accounted in the ledger
|
||||
ShowTutorial=Show Tutorial
|
||||
NotReconciled=Not reconciled
|
||||
WarningRecordWithoutSubledgerAreExcluded=Warning, all operations without subledger account defined are filtered and excluded from this view
|
||||
|
||||
@ -64,6 +64,7 @@ RemoveLock=Remove/rename file <b>%s</b> if it exists, to allow usage of the Upda
|
||||
RestoreLock=Restore file <b>%s</b>, with read permission only, to disable any further use of the Update/Install tool.
|
||||
SecuritySetup=Security setup
|
||||
PHPSetup=PHP setup
|
||||
OSSetup=OS setup
|
||||
SecurityFilesDesc=Define here options related to security about uploading files.
|
||||
ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher
|
||||
ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher
|
||||
@ -1159,7 +1160,7 @@ DoNotSuggestPaymentMode=Do not suggest
|
||||
NoActiveBankAccountDefined=No active bank account defined
|
||||
OwnerOfBankAccount=Owner of bank account %s
|
||||
BankModuleNotActive=Bank accounts module not enabled
|
||||
ShowBugTrackLink=Show link "<strong>%s</strong>"
|
||||
ShowBugTrackLink=Define the link "<strong>%s</strong>" (empty to not display this link, 'github' for the link to the Dolibarr project or define directly an url 'https://...')
|
||||
Alerts=Alerts
|
||||
DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for:
|
||||
DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element.
|
||||
@ -1254,6 +1255,7 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from
|
||||
YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP
|
||||
DownloadMoreSkins=More skins to download
|
||||
SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset
|
||||
SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset
|
||||
ShowProfIdInAddress=Show professional id with addresses
|
||||
ShowVATIntaInAddress=Hide intra-Community VAT number with addresses
|
||||
TranslationUncomplete=Partial translation
|
||||
@ -2062,7 +2064,7 @@ UseDebugBar=Use the debug bar
|
||||
DEBUGBAR_LOGS_LINES_NUMBER=Number of last log lines to keep in console
|
||||
WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramaticaly output
|
||||
ModuleActivated=Module %s is activated and slows the interface
|
||||
ModuleActivatedWithTooHighLogLevel=Module %s is activated with a too high logging level (try to use a lower level for better performances)
|
||||
ModuleActivatedWithTooHighLogLevel=Module %s is activated with a too high logging level (try to use a lower level for better performances and security)
|
||||
ModuleSyslogActivatedButLevelNotTooVerbose=Module %s is activated and log level (%s) is correct (not too verbose)
|
||||
IfYouAreOnAProductionSetThis=If you are on a production environment, you should set this property to %s.
|
||||
AntivirusEnabledOnUpload=Antivirus enabled on uploaded files
|
||||
@ -2122,3 +2124,8 @@ IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system co
|
||||
NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good)
|
||||
RecommendedValueIs=Recommended: %s
|
||||
ARestrictedPath=A restricted path
|
||||
CheckForModuleUpdate=Check for external modules updates
|
||||
CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available.
|
||||
ModuleUpdateAvailable=An update is available
|
||||
NoExternalModuleWithUpdate=No updates found for external modules
|
||||
SwaggerDescriptionFile=Swagger API description file (for use with redoc for example)
|
||||
|
||||
@ -109,13 +109,13 @@ SocialContributionPayment=Social/fiscal tax payment
|
||||
BankTransfer=Credit transfer
|
||||
BankTransfers=Credit transfers
|
||||
MenuBankInternalTransfer=Internal transfer
|
||||
TransferDesc=Transfer from one account to another, Dolibarr will write two records (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)
|
||||
TransferDesc=Use internal transfer to transfer from one account to another, the application will write two records: a debit in the source account and a credit in the target account. The same amount, label and date will be used for this transaction.
|
||||
TransferFrom=From
|
||||
TransferTo=To
|
||||
TransferFromToDone=A transfer from <b>%s</b> to <b>%s</b> of <b>%s</b> %s has been recorded.
|
||||
CheckTransmitter=Transmitter
|
||||
CheckTransmitter=Sender
|
||||
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?
|
||||
ConfirmValidateCheckReceipt=Are you sure that you want to submit this check receipt for validation? No changes are possible it's done.
|
||||
DeleteCheckReceipt=Delete this check receipt?
|
||||
ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt?
|
||||
BankChecks=Bank checks
|
||||
@ -128,7 +128,7 @@ ConfirmDeleteTransaction=Are you sure you want to delete this entry?
|
||||
ThisWillAlsoDeleteBankRecord=This will also delete generated bank entry
|
||||
BankMovements=Movements
|
||||
PlannedTransactions=Planned entries
|
||||
Graph=Graphics
|
||||
Graph=Graphs
|
||||
ExportDataset_banque_1=Bank entries and account statement
|
||||
ExportDataset_banque_2=Deposit slip
|
||||
TransactionOnTheOtherAccount=Transaction on the other account
|
||||
@ -142,7 +142,7 @@ AllAccounts=All bank and cash accounts
|
||||
BackToAccount=Back to account
|
||||
ShowAllAccounts=Show for all accounts
|
||||
FutureTransaction=Future transaction. Unable to reconcile.
|
||||
SelectChequeTransactionAndGenerate=Select/filter checks to include in the check deposit receipt and click on "Create".
|
||||
SelectChequeTransactionAndGenerate=Select/filter the checks which are to be included in the check deposit receipt. Then, click on "Create".
|
||||
InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD
|
||||
EventualyAddCategory=Eventually, specify a category in which to classify the records
|
||||
ToConciliate=To reconcile?
|
||||
|
||||
@ -120,7 +120,7 @@ ConvertExcessPaidToReduc=Convert excess paid into available discount
|
||||
EnterPaymentReceivedFromCustomer=Enter payment received from customer
|
||||
EnterPaymentDueToCustomer=Make payment due to customer
|
||||
DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero
|
||||
PriceBase=Price base
|
||||
PriceBase=Base price
|
||||
BillStatus=Invoice status
|
||||
StatusOfGeneratedInvoices=Status of generated invoices
|
||||
BillStatusDraft=Draft (needs to be validated)
|
||||
@ -454,7 +454,7 @@ RegulatedOn=Regulated on
|
||||
ChequeNumber=Check N°
|
||||
ChequeOrTransferNumber=Check/Transfer N°
|
||||
ChequeBordereau=Check schedule
|
||||
ChequeMaker=Check/Transfer transmitter
|
||||
ChequeMaker=Check/Transfer sender
|
||||
ChequeBank=Bank of Check
|
||||
CheckBank=Check
|
||||
NetToBePaid=Net to be paid
|
||||
|
||||
@ -46,11 +46,11 @@ BoxMyLastBookmarks=Bookmarks: latest %s
|
||||
BoxOldestExpiredServices=Oldest active expired services
|
||||
BoxLastExpiredServices=Latest %s oldest contacts with active expired services
|
||||
BoxTitleLastActionsToDo=Latest %s actions to do
|
||||
BoxTitleLastContracts=Latest %s modified contracts
|
||||
BoxTitleLastModifiedDonations=Latest %s modified donations
|
||||
BoxTitleLastModifiedExpenses=Latest %s modified expense reports
|
||||
BoxTitleLatestModifiedBoms=Latest %s modified BOMs
|
||||
BoxTitleLatestModifiedMos=Latest %s modified Manufacturing Orders
|
||||
BoxTitleLastContracts=Latest %s contracts which were modified
|
||||
BoxTitleLastModifiedDonations=Latest %s donations which were modified
|
||||
BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified
|
||||
BoxTitleLatestModifiedBoms=Latest %s BOMs which were modified
|
||||
BoxTitleLatestModifiedMos=Latest %s Manufacturing Orders which were modified
|
||||
BoxTitleLastOutstandingBillReached=Customers with maximum outstanding exceeded
|
||||
BoxGlobalActivity=Global activity (invoices, proposals, orders)
|
||||
BoxGoodCustomers=Good customers
|
||||
|
||||
@ -41,7 +41,8 @@ Floor=Floor
|
||||
AddTable=Add table
|
||||
Place=Place
|
||||
TakeposConnectorNecesary='TakePOS Connector' required
|
||||
OrderPrinters=Order printers
|
||||
OrderPrinters=Add a button to send the order to some given printers, without payment (for example to send an order to a kitchen)
|
||||
NotAvailableWithBrowserPrinter=Not available when printer for receipt is set to browser:
|
||||
SearchProduct=Search product
|
||||
Receipt=Receipt
|
||||
Header=Header
|
||||
@ -56,8 +57,9 @@ Paymentnumpad=Type of Pad to enter payment
|
||||
Numberspad=Numbers Pad
|
||||
BillsCoinsPad=Coins and banknotes Pad
|
||||
DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr
|
||||
TakeposNeedsCategories=TakePOS needs product categories to work
|
||||
OrderNotes=Order Notes
|
||||
TakeposNeedsCategories=TakePOS needs at least one product categorie to work
|
||||
TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS needs at least 1 product category under the category <b>%s</b> to work
|
||||
OrderNotes=Can add some notes to each ordered items
|
||||
CashDeskBankAccountFor=Default account to use for payments in
|
||||
NoPaimementModesDefined=No paiment mode defined in TakePOS configuration
|
||||
TicketVatGrouped=Group VAT by rate in tickets|receipts
|
||||
@ -82,7 +84,7 @@ InvoiceIsAlreadyValidated=Invoice is already validated
|
||||
NoLinesToBill=No lines to bill
|
||||
CustomReceipt=Custom Receipt
|
||||
ReceiptName=Receipt Name
|
||||
ProductSupplements=Product Supplements
|
||||
ProductSupplements=Manage supplements of products
|
||||
SupplementCategory=Supplement category
|
||||
ColorTheme=Color theme
|
||||
Colorful=Colorful
|
||||
@ -92,7 +94,7 @@ Browser=Browser
|
||||
BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser.
|
||||
TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud.
|
||||
PrintMethod=Print method
|
||||
ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud.
|
||||
ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. The server hosting the application can't be in the Cloud (must be able to reach the printers in your network).
|
||||
ByTerminal=By terminal
|
||||
TakeposNumpadUsePaymentIcon=Use icon instead of text on payment buttons of numpad
|
||||
CashDeskRefNumberingModules=Numbering module for POS sales
|
||||
@ -124,3 +126,5 @@ ModuleReceiptPrinterMustBeEnabled=Module Receipt printer must have been enabled
|
||||
AllowDelayedPayment=Allow delayed payment
|
||||
PrintPaymentMethodOnReceipts=Print payment method on tickets|receipts
|
||||
WeighingScale=Weighing scale
|
||||
ShowPriceHT = Display the price excluding tax column
|
||||
ShowPriceHTOnReceipt = Display the price excluding tax column on receipt
|
||||
|
||||
@ -3,20 +3,20 @@ Rubrique=Tag/Category
|
||||
Rubriques=Tags/Categories
|
||||
RubriquesTransactions=Tags/Categories of transactions
|
||||
categories=tags/categories
|
||||
NoCategoryYet=No tag/category of this type created
|
||||
NoCategoryYet=No tag/category of this type has been created
|
||||
In=In
|
||||
AddIn=Add in
|
||||
modify=modify
|
||||
Classify=Classify
|
||||
CategoriesArea=Tags/Categories area
|
||||
ProductsCategoriesArea=Products/Services tags/categories area
|
||||
SuppliersCategoriesArea=Vendors tags/categories area
|
||||
CustomersCategoriesArea=Customers tags/categories area
|
||||
MembersCategoriesArea=Members tags/categories area
|
||||
ContactsCategoriesArea=Contacts tags/categories area
|
||||
AccountsCategoriesArea=Bank accounts tags/categories area
|
||||
ProjectsCategoriesArea=Projects tags/categories area
|
||||
UsersCategoriesArea=Users tags/categories area
|
||||
ProductsCategoriesArea=Product/Service tags/categories area
|
||||
SuppliersCategoriesArea=Vendor tags/categories area
|
||||
CustomersCategoriesArea=Customer tags/categories area
|
||||
MembersCategoriesArea=Member tags/categories area
|
||||
ContactsCategoriesArea=Contact tags/categories area
|
||||
AccountsCategoriesArea=Bank account tags/categories area
|
||||
ProjectsCategoriesArea=Project tags/categories area
|
||||
UsersCategoriesArea=User tags/categories area
|
||||
SubCats=Sub-categories
|
||||
CatList=List of tags/categories
|
||||
CatListAll=List of tags/categories (all types)
|
||||
@ -96,4 +96,4 @@ ChooseCategory=Choose category
|
||||
StocksCategoriesArea=Warehouse Categories
|
||||
ActionCommCategoriesArea=Event Categories
|
||||
WebsitePagesCategoriesArea=Page-Container Categories
|
||||
UseOrOperatorForCategories=Use or operator for categories
|
||||
UseOrOperatorForCategories=Use 'OR' operator for categories
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one.
|
||||
ErrorSetACountryFirst=Set the country first
|
||||
SelectThirdParty=Select a third party
|
||||
ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information?
|
||||
ConfirmDeleteCompany=Are you sure you want to delete this company and all related information?
|
||||
DeleteContact=Delete a contact/address
|
||||
ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information?
|
||||
ConfirmDeleteContact=Are you sure you want to delete this contact and all related information?
|
||||
MenuNewThirdParty=New Third Party
|
||||
MenuNewCustomer=New Customer
|
||||
MenuNewProspect=New Prospect
|
||||
@ -69,7 +69,7 @@ PhoneShort=Phone
|
||||
Skype=Skype
|
||||
Call=Call
|
||||
Chat=Chat
|
||||
PhonePro=Prof. phone
|
||||
PhonePro=Bus. phone
|
||||
PhonePerso=Pers. phone
|
||||
PhoneMobile=Mobile
|
||||
No_Email=Refuse bulk emailings
|
||||
@ -78,7 +78,7 @@ Zip=Zip Code
|
||||
Town=City
|
||||
Web=Web
|
||||
Poste= Position
|
||||
DefaultLang=Language default
|
||||
DefaultLang=Default language
|
||||
VATIsUsed=Sales tax used
|
||||
VATIsUsedWhenSelling=This defines if this third party includes a sale tax or not when it makes an invoice to its own customers
|
||||
VATIsNotUsed=Sales tax is not used
|
||||
@ -331,7 +331,7 @@ CustomerCodeDesc=Customer Code, unique for all customers
|
||||
SupplierCodeDesc=Vendor Code, unique for all vendors
|
||||
RequiredIfCustomer=Required if third party is a customer or prospect
|
||||
RequiredIfSupplier=Required if third party is a vendor
|
||||
ValidityControledByModule=Validity controlled by module
|
||||
ValidityControledByModule=Validity controlled by the module
|
||||
ThisIsModuleRules=Rules for this module
|
||||
ProspectToContact=Prospect to contact
|
||||
CompanyDeleted=Company "%s" deleted from database.
|
||||
@ -439,12 +439,12 @@ ListSuppliersShort=List of Vendors
|
||||
ListProspectsShort=List of Prospects
|
||||
ListCustomersShort=List of Customers
|
||||
ThirdPartiesArea=Third Parties/Contacts
|
||||
LastModifiedThirdParties=Latest %s modified Third Parties
|
||||
UniqueThirdParties=Total of Third Parties
|
||||
LastModifiedThirdParties=Latest %s Third Parties which were modified
|
||||
UniqueThirdParties=Total number of Third Parties
|
||||
InActivity=Open
|
||||
ActivityCeased=Closed
|
||||
ThirdPartyIsClosed=Third party is closed
|
||||
ProductsIntoElements=List of products/services into %s
|
||||
ProductsIntoElements=List of products/services mapped to %s
|
||||
CurrentOutstandingBill=Current outstanding bill
|
||||
OutstandingBill=Max. for outstanding bill
|
||||
OutstandingBillReached=Max. for outstanding bill reached
|
||||
@ -454,7 +454,7 @@ LeopardNumRefModelDesc=The code is free. This code can be modified at any time.
|
||||
ManagingDirectors=Manager(s) name (CEO, director, president...)
|
||||
MergeOriginThirdparty=Duplicate third party (third party you want to delete)
|
||||
MergeThirdparties=Merge third parties
|
||||
ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one? All linked objects (invoices, orders, ...) will be moved to current third party, then the third party will be deleted.
|
||||
ConfirmMergeThirdparties=Are you sure you want to merge the chosen third party with the current one? All linked objects (invoices, orders, ...) will be moved to the current third party, after which the chosen third party will be deleted.
|
||||
ThirdpartiesMergeSuccess=Third parties have been merged
|
||||
SaleRepresentativeLogin=Login of sales representative
|
||||
SaleRepresentativeFirstname=First name of sales representative
|
||||
|
||||
@ -135,7 +135,7 @@ NewCheckReceipt=New discount
|
||||
NewCheckDeposit=New check deposit
|
||||
NewCheckDepositOn=Create receipt for deposit on account: %s
|
||||
NoWaitingChecks=No checks awaiting deposit.
|
||||
DateChequeReceived=Check reception date
|
||||
DateChequeReceived=Check receiving date
|
||||
NbOfCheques=No. of checks
|
||||
PaySocialContribution=Pay a social/fiscal tax
|
||||
PayVAT=Pay a VAT declaration
|
||||
|
||||
@ -42,6 +42,6 @@ ExtraFieldsEcmFiles=Extrafields Ecm Files
|
||||
ExtraFieldsEcmDirectories=Extrafields Ecm Directories
|
||||
ECMSetup=ECM Setup
|
||||
GenerateImgWebp=Duplicate all images with another version with .webp format
|
||||
ConfirmGenerateImgWebp=If you confirm, you will generate an image in .webp format for all images currently into this folder and its subfolder...
|
||||
ConfirmGenerateImgWebp=If you confirm, you will generate an image in .webp format for all images currently into this folder (subfolders are not included)...
|
||||
ConfirmImgWebpCreation=Confirm all images duplication
|
||||
SucessConvertImgWebp=Images successfully duplicated
|
||||
|
||||
@ -4,9 +4,9 @@
|
||||
NoErrorCommitIsDone=No error, we commit
|
||||
# Errors
|
||||
ErrorButCommitIsDone=Errors found but we validate despite this
|
||||
ErrorBadEMail=Email %s is wrong
|
||||
ErrorBadMXDomain=Email %s seems wrong (domain has no valid MX record)
|
||||
ErrorBadUrl=Url %s is wrong
|
||||
ErrorBadEMail=Email %s is incorrect
|
||||
ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record)
|
||||
ErrorBadUrl=Url %s is incorrect
|
||||
ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing.
|
||||
ErrorRefAlreadyExists=Reference <b>%s</b> already exists.
|
||||
ErrorLoginAlreadyExists=Login %s already exists.
|
||||
@ -46,8 +46,8 @@ ErrorWrongDate=Date is not correct!
|
||||
ErrorFailedToWriteInDir=Failed to write in directory %s
|
||||
ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s)
|
||||
ErrorUserCannotBeDelete=User cannot be deleted. Maybe it is associated to Dolibarr entities.
|
||||
ErrorFieldsRequired=Some required fields were not filled.
|
||||
ErrorSubjectIsRequired=The email topic is required
|
||||
ErrorFieldsRequired=Some required fields have been left blank.
|
||||
ErrorSubjectIsRequired=The email subject is required
|
||||
ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter <b>safe_mode</b> is enabled on this PHP, check that Dolibarr php files owns to web server user (or group).
|
||||
ErrorNoMailDefinedForThisUser=No mail defined for this user
|
||||
ErrorSetupOfEmailsNotComplete=Setup of emails is not complete
|
||||
@ -226,6 +226,7 @@ ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container <strong>%s</strong
|
||||
ErrorDuringChartLoad=Error when loading chart of accounts. If few accounts were not loaded, you can still enter them manually.
|
||||
ErrorBadSyntaxForParamKeyForContent=Bad syntax for param keyforcontent. Must have a value starting with %s or %s
|
||||
ErrorVariableKeyForContentMustBeSet=Error, the constant with name %s (with text content to show) or %s (with external url to show) must be set.
|
||||
ErrorURLMustEndWith=URL %s must end %s
|
||||
ErrorURLMustStartWithHttp=URL %s must start with http:// or https://
|
||||
ErrorHostMustNotStartWithHttp=Host name %s must NOT start with http:// or https://
|
||||
ErrorNewRefIsAlreadyUsed=Error, the new reference is already used
|
||||
@ -296,3 +297,4 @@ WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connec
|
||||
WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here.
|
||||
ErrorActionCommPropertyUserowneridNotDefined=User's owner is required
|
||||
ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary
|
||||
CheckVersionFail=Version check fail
|
||||
|
||||
101
htdocs/langs/am_ET/eventorganization.lang
Normal file
@ -0,0 +1,101 @@
|
||||
# Copyright (C) 2021 Florian Henry <florian.henry@scopen.fr>
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# Generic
|
||||
#
|
||||
ModuleEventOrganizationName = Event Organization
|
||||
EventOrganizationDescription = Event Organization through Module Project
|
||||
EventOrganizationDescriptionLong= Manage Event organization for conference, attendees, speaker, and attendees, with public subcription page
|
||||
#
|
||||
# Menu
|
||||
#
|
||||
EventOrganizationMenuLeft = Organized events
|
||||
EventOrganizationConferenceOrBoothMenuLeft = Conference Or Booth
|
||||
|
||||
#
|
||||
# Admin page
|
||||
#
|
||||
EventOrganizationSetup = Event Organization setup
|
||||
Settings = Settings
|
||||
EventOrganizationSetupPage = Event Organization setup page
|
||||
EVENTORGANIZATION_TASK_LABEL = Label of tasks to create automatically when project is validated
|
||||
EVENTORGANIZATION_TASK_LABELTooltip = When you validate an organized event, some tasks can be automatically created in the project<br><br>For example: <br>Send Call for Conference<br>Send Call for Booth<br>Receive call for conferences<br>Receive call for Booth<br>Open subscriptions to events for attendees<br>Send remind of event to speakers<br>Send remind of event to Booth hoster<br>Send remind of event to attendees
|
||||
EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties automatically created when someone suggests a conference
|
||||
EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a subscription to a booth has been paid.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a subscription to an event has been paid.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers
|
||||
EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category
|
||||
EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type
|
||||
|
||||
#
|
||||
# Object
|
||||
#
|
||||
EventOrganizationConfOrBooth= Conference Or Booth
|
||||
ManageOrganizeEvent = Manage event organisation
|
||||
ConferenceOrBooth = Conference Or Booth
|
||||
ConferenceOrBoothTab = Conference Or Booth
|
||||
AmountOfSubscriptionPaid = Amount of subscription paid
|
||||
DateSubscription = Date of subscription
|
||||
ConferenceOrBoothAttendee = Conference Or Booth Attendee
|
||||
|
||||
#
|
||||
# Template Mail
|
||||
#
|
||||
YourOrganizationEventConfRequestWasReceived = Your request for conference was received
|
||||
YourOrganizationEventBoothRequestWasReceived = Your request for booth was received
|
||||
EventOrganizationEmailAskConf = Request for conference
|
||||
EventOrganizationEmailAskBooth = Request for booth
|
||||
EventOrganizationEmailSubsBooth = Subscription for booth
|
||||
EventOrganizationEmailSubsEvent = Subscription for an event
|
||||
EventOrganizationMassEmailAttendees = Communication to attendees
|
||||
EventOrganizationMassEmailSpeakers = Communication to speakers
|
||||
|
||||
#
|
||||
# Event
|
||||
#
|
||||
AllowUnknownPeopleSuggestConf=Allow unknown people to suggest conferences
|
||||
AllowUnknownPeopleSuggestConfHelp=Allow unknown people to suggest conferences
|
||||
AllowUnknownPeopleSuggestBooth=Allow unknown people to suggest booth
|
||||
AllowUnknownPeopleSuggestBoothHelp=Allow unknown people to suggest booth
|
||||
PriceOfRegistration=Price of registration
|
||||
PriceOfRegistrationHelp=Price of registration
|
||||
PriceOfBooth=Subscription price to stand a booth
|
||||
PriceOfBoothHelp=Subscription price to stand a booth
|
||||
EventOrganizationICSLink=Link ICS for events
|
||||
ConferenceOrBoothInformation=Conference Or Booth informations
|
||||
Attendees = Attendees
|
||||
EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference
|
||||
#
|
||||
# Status
|
||||
#
|
||||
EvntOrgDraft = Draft
|
||||
EvntOrgSuggested = Suggested
|
||||
EvntOrgConfirmed = Confirmed
|
||||
EvntOrgNotQualified = Not Qualified
|
||||
EvntOrgDone = Done
|
||||
EvntOrgCancelled = Cancelled
|
||||
#
|
||||
# Public page
|
||||
#
|
||||
PublicAttendeeSubscriptionPage = Public link of registration to a conference
|
||||
MissingOrBadSecureKey = The security key is invalid or missing
|
||||
EvntOrgWelcomeMessage = This form allows you to register as a new participant to the conference
|
||||
EvntOrgStartDuration = This conference starts on
|
||||
EvntOrgEndDuration = and ends on
|
||||
55
htdocs/langs/am_ET/knowledgemanagement.lang
Normal file
@ -0,0 +1,55 @@
|
||||
# Copyright (C) 2021 SuperAdmin
|
||||
#
|
||||
# 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 .
|
||||
|
||||
#
|
||||
# Generic
|
||||
#
|
||||
|
||||
# Module label 'ModuleKnowledgeManagementName'
|
||||
ModuleKnowledgeManagementName = Knowledge Management System
|
||||
# Module description 'ModuleKnowledgeManagementDesc'
|
||||
ModuleKnowledgeManagementDesc=Manage a Knowledge Management (KM) or Help-Desk base
|
||||
|
||||
#
|
||||
# Admin page
|
||||
#
|
||||
KnowledgeManagementSetup = Knowledge Management System setup
|
||||
Settings = Settings
|
||||
KnowledgeManagementSetupPage = Knowledge Management System setup page
|
||||
|
||||
|
||||
#
|
||||
# About page
|
||||
#
|
||||
About = About
|
||||
KnowledgeManagementAbout = About Knowledge Management
|
||||
KnowledgeManagementAboutPage = Knowledge Management about page
|
||||
|
||||
#
|
||||
# Sample page
|
||||
#
|
||||
KnowledgeManagementArea = Knowledge Management
|
||||
|
||||
|
||||
#
|
||||
# Menu
|
||||
#
|
||||
MenuKnowledgeRecord = Knowledge base
|
||||
ListOfArticles = List of articles
|
||||
NewKnowledgeRecord = New article
|
||||
ValidateReply = Validate solution
|
||||
KnowledgeRecords = Articles
|
||||
KnowledgeRecord = Article
|
||||
KnowledgeRecordExtraFields = Extrafields for Article
|
||||
@ -15,7 +15,7 @@ MailToUsers=To user(s)
|
||||
MailCC=Copy to
|
||||
MailToCCUsers=Copy to users(s)
|
||||
MailCCC=Cached copy to
|
||||
MailTopic=Email topic
|
||||
MailTopic=Email subject
|
||||
MailText=Message
|
||||
MailFile=Attached files
|
||||
MailMessage=Email body
|
||||
@ -131,8 +131,8 @@ NoNotificationsWillBeSent=No automatic email notifications are planned for this
|
||||
ANotificationsWillBeSent=1 automatic notification will be sent by email
|
||||
SomeNotificationsWillBeSent=%s automatic notifications will be sent by email
|
||||
AddNewNotification=Subscribe to a new automatic email notification (target/event)
|
||||
ListOfActiveNotifications=List all active subscriptions (targets/events) for automatic email notification
|
||||
ListOfNotificationsDone=List all automatic email notifications sent
|
||||
ListOfActiveNotifications=List of all active subscriptions (targets/events) for automatic email notification
|
||||
ListOfNotificationsDone=List of all automatic email notifications sent
|
||||
MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing.
|
||||
MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter <strong>'%s'</strong> to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature.
|
||||
MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s.
|
||||
|
||||
@ -180,7 +180,7 @@ SaveAndNew=Save and new
|
||||
TestConnection=Test connection
|
||||
ToClone=Clone
|
||||
ConfirmCloneAsk=Are you sure you want to clone the object <b>%s</b>?
|
||||
ConfirmClone=Choose data you want to clone:
|
||||
ConfirmClone=Choose the data you want to clone:
|
||||
NoCloneOptionsSpecified=No data to clone defined.
|
||||
Of=of
|
||||
Go=Go
|
||||
@ -246,7 +246,7 @@ DefaultModel=Default doc template
|
||||
Action=Event
|
||||
About=About
|
||||
Number=Number
|
||||
NumberByMonth=Number by month
|
||||
NumberByMonth=Total reports by month
|
||||
AmountByMonth=Amount by month
|
||||
Numero=Number
|
||||
Limit=Limit
|
||||
@ -341,8 +341,8 @@ KiloBytes=Kilobytes
|
||||
MegaBytes=Megabytes
|
||||
GigaBytes=Gigabytes
|
||||
TeraBytes=Terabytes
|
||||
UserAuthor=User of creation
|
||||
UserModif=User of last update
|
||||
UserAuthor=Ceated by
|
||||
UserModif=Updated by
|
||||
b=b.
|
||||
Kb=Kb
|
||||
Mb=Mb
|
||||
@ -503,9 +503,11 @@ By=By
|
||||
From=From
|
||||
FromDate=From
|
||||
FromLocation=From
|
||||
at=at
|
||||
to=to
|
||||
To=to
|
||||
ToDate=to
|
||||
ToLocation=to
|
||||
at=at
|
||||
and=and
|
||||
or=or
|
||||
Other=Other
|
||||
@ -843,7 +845,7 @@ XMoreLines=%s line(s) hidden
|
||||
ShowMoreLines=Show more/less lines
|
||||
PublicUrl=Public URL
|
||||
AddBox=Add box
|
||||
SelectElementAndClick=Select an element and click %s
|
||||
SelectElementAndClick=Select an element and click on %s
|
||||
PrintFile=Print File %s
|
||||
ShowTransaction=Show entry on bank account
|
||||
ShowIntervention=Show intervention
|
||||
@ -854,8 +856,8 @@ Denied=Denied
|
||||
ListOf=List of %s
|
||||
ListOfTemplates=List of templates
|
||||
Gender=Gender
|
||||
Genderman=Man
|
||||
Genderwoman=Woman
|
||||
Genderman=Male
|
||||
Genderwoman=Female
|
||||
Genderother=Other
|
||||
ViewList=List view
|
||||
ViewGantt=Gantt view
|
||||
@ -1129,3 +1131,4 @@ ConfirmAffectTagQuestion=Are you sure you want to affect tags to the %s selected
|
||||
CategTypeNotFound=No tag type found for type of records
|
||||
CopiedToClipboard=Copied to clipboard
|
||||
InformationOnLinkToContract=This amount is only the total of all the lines of the contract. No notion of time is taken into consideration.
|
||||
ConfirmCancel=Are you sure you want to cancel
|
||||
|
||||
@ -15,7 +15,7 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: <b>%s</b>, logi
|
||||
ErrorUserPermissionAllowsToLinksToItselfOnly=For security reasons, you must be granted permissions to edit all users to be able to link a member to a user that is not yours.
|
||||
SetLinkToUser=Link to a Dolibarr user
|
||||
SetLinkToThirdParty=Link to a Dolibarr third party
|
||||
MembersCards=Members business cards
|
||||
MembersCards=Business cards for members
|
||||
MembersList=List of members
|
||||
MembersListToValid=List of draft members (to be validated)
|
||||
MembersListValid=List of valid members
|
||||
@ -32,7 +32,7 @@ MembersWithSubscriptionToReceive=Members with subscription to receive
|
||||
MembersWithSubscriptionToReceiveShort=Subscription to receive
|
||||
DateSubscription=Subscription date
|
||||
DateEndSubscription=Subscription end date
|
||||
EndSubscription=End subscription
|
||||
EndSubscription=Subscription Ends
|
||||
SubscriptionId=Subscription id
|
||||
WithoutSubscription=Without subscription
|
||||
MemberId=Member id
|
||||
@ -83,10 +83,10 @@ WelcomeEMail=Welcome email
|
||||
SubscriptionRequired=Subscription required
|
||||
DeleteType=Delete
|
||||
VoteAllowed=Vote allowed
|
||||
Physical=Physical
|
||||
Moral=Moral
|
||||
MorAndPhy=Moral and Physical
|
||||
Reenable=Reenable
|
||||
Physical=Individual
|
||||
Moral=Corporation
|
||||
MorAndPhy=Corporation and Individual
|
||||
Reenable=Re-Enable
|
||||
ExcludeMember=Exclude a member
|
||||
ConfirmExcludeMember=Are you sure you want to exclude this member ?
|
||||
ResiliateMember=Terminate a member
|
||||
@ -175,32 +175,32 @@ MembersStatisticsByCountries=Members statistics by country
|
||||
MembersStatisticsByState=Members statistics by state/province
|
||||
MembersStatisticsByTown=Members statistics by town
|
||||
MembersStatisticsByRegion=Members statistics by region
|
||||
NbOfMembers=Number of members
|
||||
NbOfActiveMembers=Number of current active members
|
||||
NbOfMembers=Total number of members
|
||||
NbOfActiveMembers=Total number of current active members
|
||||
NoValidatedMemberYet=No validated members found
|
||||
MembersByCountryDesc=This screen show you statistics on members by countries. Graphic depends however on Google online graph service and is available only if an internet connection is is working.
|
||||
MembersByStateDesc=This screen show you statistics on members by state/provinces/canton.
|
||||
MembersByTownDesc=This screen show you statistics on members by town.
|
||||
MembersByCountryDesc=This screen shows you the statistics of members by countries. Graphs and charts depend on the availability of the Google online graph service as well as on the availability of a working internet connection.
|
||||
MembersByStateDesc=This screen show you statistics of members by state/provinces/canton.
|
||||
MembersByTownDesc=This screen show you statistics of members by town.
|
||||
MembersByNature=This screen show you statistics of members by nature.
|
||||
MembersByRegion=This screen show you statistics of members by region.
|
||||
MembersStatisticsDesc=Choose statistics you want to read...
|
||||
MenuMembersStats=Statistics
|
||||
LastMemberDate=Latest member date
|
||||
LastMemberDate=Latest membership date
|
||||
LatestSubscriptionDate=Latest subscription date
|
||||
MemberNature=Nature of member
|
||||
MembersNature=Nature of members
|
||||
Public=Information are public
|
||||
MemberNature=Nature of the member
|
||||
MembersNature=Nature of the members
|
||||
Public=Information is public
|
||||
NewMemberbyWeb=New member added. Awaiting approval
|
||||
NewMemberForm=New member form
|
||||
SubscriptionsStatistics=Statistics on subscriptions
|
||||
SubscriptionsStatistics=Subscriptions statistics
|
||||
NbOfSubscriptions=Number of subscriptions
|
||||
AmountOfSubscriptions=Amount of subscriptions
|
||||
AmountOfSubscriptions=Amount collected from subscriptions
|
||||
TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation)
|
||||
DefaultAmount=Default amount of subscription
|
||||
CanEditAmount=Visitor can choose/edit amount of its subscription
|
||||
MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page
|
||||
ByProperties=By nature
|
||||
MembersStatisticsByProperties=Members statistics by nature
|
||||
MembersByNature=This screen show you statistics on members by nature.
|
||||
MembersByRegion=This screen show you statistics on members by region.
|
||||
VATToUseForSubscriptions=VAT rate to use for subscriptions
|
||||
NoVatOnSubscription=No VAT for subscriptions
|
||||
ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s
|
||||
|
||||
@ -85,7 +85,7 @@ 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 (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update).<br><br>Using a negative value means field is not shown by default on list but can be selected for viewing).<br><br>It can be an expression, for example:<br>preg_match('/public/', $_SERVER['PHP_SELF'])?0:1<br>($user->rights->holiday->define_holiday ? 1 : 0)
|
||||
DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.<br/>Currently, known compatibles PDF models are : eratosthene (order), espadon (ship), sponge (invoices), cyan (propal/quotation), cornas (supplier order)<br/><br/><strong>For document :</strong><br/>0 = not displayed <br/>1 = display<br/>2 = display only if not empty<br/><br/><strong>For document lines :</strong><br/>0 = not displayed <br/>1 = displayed in a column<br/>3 = display in line description column after the description<br/>4 = display in description column after the description only if not empty
|
||||
DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.<br>Currently, known compatibles PDF models are : eratosthene (order), espadon (ship), sponge (invoices), cyan (propal/quotation), cornas (supplier order)<br><br><strong>For document :</strong><br>0 = not displayed <br>1 = display<br>2 = display only if not empty<br><br><strong>For document lines :</strong><br>0 = not displayed <br>1 = displayed in a column<br>3 = display in line description column after the description<br>4 = display in description column after the description only if not empty
|
||||
DisplayOnPdf=Display on PDF
|
||||
IsAMeasureDesc=Can the value of field be cumulated to get a total into list? (Examples: 1 or 0)
|
||||
SearchAllDesc=Is the field used to make a search from the quick search tool? (Examples: 1 or 0)
|
||||
|
||||
@ -183,7 +183,7 @@ EnableGDLibraryDesc=Install or enable GD library on your PHP installation to use
|
||||
ProfIdShortDesc=<b>Prof Id %s</b> is an information depending on third party country.<br>For example, for country <b>%s</b>, it's code <b>%s</b>.
|
||||
DolibarrDemo=Dolibarr ERP/CRM demo
|
||||
StatsByNumberOfUnits=Statistics for sum of qty of products/services
|
||||
StatsByNumberOfEntities=Statistics in number of referring entities (no. of invoice, or order...)
|
||||
StatsByNumberOfEntities=Statistics for number of referring entities (no. of invoices, or orders...)
|
||||
NumberOfProposals=Number of proposals
|
||||
NumberOfCustomerOrders=Number of sales orders
|
||||
NumberOfCustomerInvoices=Number of customer invoices
|
||||
@ -289,4 +289,4 @@ PopuProp=Products/Services by popularity in Proposals
|
||||
PopuCom=Products/Services by popularity in Orders
|
||||
ProductStatistics=Products/Services Statistics
|
||||
NbOfQtyInOrders=Qty in orders
|
||||
SelectTheTypeOfObjectToAnalyze=Select the type of object to analyze...
|
||||
SelectTheTypeOfObjectToAnalyze=Select an object to view its statistics...
|
||||
|
||||
56
htdocs/langs/am_ET/partnership.lang
Normal file
@ -0,0 +1,56 @@
|
||||
# Copyright (C) 2021 NextGestion <contact@nextgestion.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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# Generic
|
||||
#
|
||||
ModulePartnershipName = Partnership management
|
||||
PartnershipDescription = Module Partnership management
|
||||
PartnershipDescriptionLong= Module Partnership management
|
||||
|
||||
#
|
||||
# Menu
|
||||
#
|
||||
NewPartnership = New Partnership
|
||||
ListOfPartnerships = List of partnership
|
||||
|
||||
#
|
||||
# Admin page
|
||||
#
|
||||
PartnershipSetup = Partnership setup
|
||||
PartnershipAbout = About Partnership
|
||||
PartnershipAboutPage = Partnership about page
|
||||
|
||||
|
||||
#
|
||||
# Object
|
||||
#
|
||||
DatePartnershipStart=Start date
|
||||
DatePartnershipEnd=End date
|
||||
|
||||
#
|
||||
# Template Mail
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# Status
|
||||
#
|
||||
PartnershipDraft = Draft
|
||||
PartnershipAccepted = Accepted
|
||||
PartnershipRefused = Refused
|
||||
PartnershipCanceled = Canceled
|
||||
|
||||
PartnershipManagedFor=Partners are
|
||||
@ -28,8 +28,8 @@ SerialNumberAlreadyInUse=Serial number %s is already used for product %s
|
||||
TooManyQtyForSerialNumber=You can only have one product %s for serial number %s
|
||||
BatchLotNumberingModules=Options for automatic generation of batch products managed by lots
|
||||
BatchSerialNumberingModules=Options for automatic generation of batch products managed by serial numbers
|
||||
ManageLotMask=Custom mask
|
||||
CustomMasks=Adds an option to define mask in the product card
|
||||
LotProductTooltip=Adds an option in the product card to define a dedicated batch number mask
|
||||
SNProductTooltip=Adds an option in the product card to define a dedicated serial number mask
|
||||
QtyToAddAfterBarcodeScan=Qty to add for each barcode/lot/serial scanned
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ ServicesOnSaleOnly=Services for sale only
|
||||
ServicesOnPurchaseOnly=Services for purchase only
|
||||
ServicesNotOnSell=Services not for sale and not for purchase
|
||||
ServicesOnSellAndOnBuy=Services for sale and for purchase
|
||||
LastModifiedProductsAndServices=Latest %s modified products/services
|
||||
LastModifiedProductsAndServices=Latest %s products/services which were modified
|
||||
LastRecordedProducts=Latest %s recorded products
|
||||
LastRecordedServices=Latest %s recorded services
|
||||
CardProduct0=Product
|
||||
@ -73,12 +73,12 @@ SellingPrice=Selling price
|
||||
SellingPriceHT=Selling price (excl. tax)
|
||||
SellingPriceTTC=Selling price (inc. tax)
|
||||
SellingMinPriceTTC=Minimum Selling price (inc. tax)
|
||||
CostPriceDescription=This price field (excl. tax) can be used to store the average amount this product costs to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost.
|
||||
CostPriceDescription=This price field (excl. tax) can be used to capture the average amount this product costs to your company. It may be any price you calculate yourself, for example, from the average buying price plus average production and distribution cost.
|
||||
CostPriceUsage=This value could be used for margin calculation.
|
||||
SoldAmount=Sold amount
|
||||
PurchasedAmount=Purchased amount
|
||||
NewPrice=New price
|
||||
MinPrice=Min. sell price
|
||||
MinPrice=Min. selling price
|
||||
EditSellingPriceLabel=Edit selling price label
|
||||
CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount.
|
||||
ContractStatusClosed=Closed
|
||||
@ -157,11 +157,11 @@ ListServiceByPopularity=List of services by popularity
|
||||
Finished=Manufactured product
|
||||
RowMaterial=Raw Material
|
||||
ConfirmCloneProduct=Are you sure you want to clone product or service <b>%s</b>?
|
||||
CloneContentProduct=Clone all main information of product/service
|
||||
CloneContentProduct=Clone all main information of the product/service
|
||||
ClonePricesProduct=Clone prices
|
||||
CloneCategoriesProduct=Clone tags/categories linked
|
||||
CloneCompositionProduct=Clone virtual product/service
|
||||
CloneCombinationsProduct=Clone product variants
|
||||
CloneCategoriesProduct=Clone linked tags/categories
|
||||
CloneCompositionProduct=Clone virtual products/services
|
||||
CloneCombinationsProduct=Clone the product variants
|
||||
ProductIsUsed=This product is used
|
||||
NewRefForClone=Ref. of new product/service
|
||||
SellingPrices=Selling prices
|
||||
@ -170,12 +170,12 @@ CustomerPrices=Customer prices
|
||||
SuppliersPrices=Vendor prices
|
||||
SuppliersPricesOfProductsOrServices=Vendor prices (of products or services)
|
||||
CustomCode=Customs|Commodity|HS code
|
||||
CountryOrigin=Origin country
|
||||
RegionStateOrigin=Region origin
|
||||
StateOrigin=State|Province origin
|
||||
Nature=Nature of product (material/finished)
|
||||
CountryOrigin=Country of origin
|
||||
RegionStateOrigin=Region of origin
|
||||
StateOrigin=State|Province of origin
|
||||
Nature=Nature of product (raw/manufactured)
|
||||
NatureOfProductShort=Nature of product
|
||||
NatureOfProductDesc=Raw material or finished product
|
||||
NatureOfProductDesc=Raw material or manufactured product
|
||||
ShortLabel=Short label
|
||||
Unit=Unit
|
||||
p=u.
|
||||
|
||||
@ -10,19 +10,19 @@ PrivateProject=Project contacts
|
||||
ProjectsImContactFor=Projects for which I am explicitly a contact
|
||||
AllAllowedProjects=All project I can read (mine + public)
|
||||
AllProjects=All projects
|
||||
MyProjectsDesc=This view is limited to projects you are a contact for
|
||||
MyProjectsDesc=This view is limited to the projects that you are a contact for
|
||||
ProjectsPublicDesc=This view presents all projects you are allowed to read.
|
||||
TasksOnProjectsPublicDesc=This view presents all tasks on projects you are allowed to read.
|
||||
ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read.
|
||||
ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything).
|
||||
TasksOnProjectsDesc=This view presents all tasks on all projects (your user permissions grant you permission to view everything).
|
||||
MyTasksDesc=This view is limited to projects or tasks you are a contact for
|
||||
MyTasksDesc=This view is limited to the projects or tasks that you are a contact for
|
||||
OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible).
|
||||
ClosedProjectsAreHidden=Closed projects are not visible.
|
||||
TasksPublicDesc=This view presents all projects and tasks you are allowed to read.
|
||||
TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything).
|
||||
AllTaskVisibleButEditIfYouAreAssigned=All tasks for qualified projects are visible, but you can enter time only for task assigned to selected user. Assign task if you need to enter time on it.
|
||||
OnlyYourTaskAreVisible=Only tasks assigned to you are visible. Assign task to yourself if it is not visible and you need to enter time on it.
|
||||
OnlyYourTaskAreVisible=Only tasks assigned to you are visible. If you need to enter time on a task and if the task is not visible here, then you need to assign the task to yourself.
|
||||
ImportDatasetTasks=Tasks of projects
|
||||
ProjectCategories=Project tags/categories
|
||||
NewProject=New project
|
||||
@ -202,7 +202,7 @@ ResourceNotAssignedToTheTask=Not assigned to the task
|
||||
NoUserAssignedToTheProject=No users assigned to this project
|
||||
TimeSpentBy=Time spent by
|
||||
TasksAssignedTo=Tasks assigned to
|
||||
AssignTaskToMe=Assign task to me
|
||||
AssignTaskToMe=Assign task to myself
|
||||
AssignTaskToUser=Assign task to %s
|
||||
SelectTaskToAssign=Select task to assign...
|
||||
AssignTask=Assign
|
||||
|
||||
@ -72,5 +72,5 @@ YourCandidatureAnswerMessage=Thanks you for your application.<br>...
|
||||
JobClosedTextCandidateFound=The job position is closed. The position has been filled.
|
||||
JobClosedTextCanceled=The job position is closed.
|
||||
ExtrafieldsJobPosition=Complementary attributes (job positions)
|
||||
ExtrafieldsCandidatures=Complementary attributes (job applications)
|
||||
ExtrafieldsApplication=Complementary attributes (job applications)
|
||||
MakeOffer=Make an offer
|
||||
|
||||
@ -43,7 +43,7 @@ ConfirmValidateSending=Are you sure you want to validate this shipment with refe
|
||||
ConfirmCancelSending=Are you sure you want to cancel this shipment?
|
||||
DocumentModelMerou=Merou A5 model
|
||||
WarningNoQtyLeftToSend=Warning, no products waiting to be shipped.
|
||||
StatsOnShipmentsOnlyValidated=Statistics conducted on shipments only validated. Date used is date of validation of shipment (planed delivery date is not always known).
|
||||
StatsOnShipmentsOnlyValidated=Statistics are only for validated shipments. Date used is the date of validation of shipment (planned delivery date is not always known)
|
||||
DateDeliveryPlanned=Planned date of delivery
|
||||
RefDeliveryReceipt=Ref delivery receipt
|
||||
StatusReceipt=Status delivery receipt
|
||||
|
||||
@ -91,7 +91,7 @@ NoPredefinedProductToDispatch=No predefined products for this object. So no disp
|
||||
DispatchVerb=Dispatch
|
||||
StockLimitShort=Limit for alert
|
||||
StockLimit=Stock limit for alert
|
||||
StockLimitDesc=(empty) means no warning.<br>0 can be used for a warning as soon as stock is empty.
|
||||
StockLimitDesc=(empty) means no warning.<br>0 can be used to trigger a warning as soon as the stock is empty.
|
||||
PhysicalStock=Physical Stock
|
||||
RealStock=Real Stock
|
||||
RealStockDesc=Physical/real stock is the stock currently in the warehouses.
|
||||
|
||||
@ -12,6 +12,7 @@ PasswordChangedTo=Password changed to: %s
|
||||
SubjectNewPassword=Your new password for %s
|
||||
GroupRights=Group permissions
|
||||
UserRights=User permissions
|
||||
Credentials=Credentials
|
||||
UserGUISetup=User Display Setup
|
||||
DisableUser=Disable
|
||||
DisableAUser=Disable a user
|
||||
@ -105,7 +106,7 @@ UseTypeFieldToChange=Use field Type to change
|
||||
OpenIDURL=OpenID URL
|
||||
LoginUsingOpenID=Use OpenID to login
|
||||
WeeklyHours=Hours worked (per week)
|
||||
ExpectedWorkedHours=Expected worked hours per week
|
||||
ExpectedWorkedHours=Expected hours worked per week
|
||||
ColorUser=Color of the user
|
||||
DisabledInMonoUserMode=Disabled in maintenance mode
|
||||
UserAccountancyCode=User accounting code
|
||||
@ -115,7 +116,7 @@ DateOfEmployment=Employment date
|
||||
DateEmployment=Employment
|
||||
DateEmploymentstart=Employment Start Date
|
||||
DateEmploymentEnd=Employment End Date
|
||||
RangeOfLoginValidity=Date range of login validity
|
||||
RangeOfLoginValidity=Access validity date range
|
||||
CantDisableYourself=You can't disable your own user record
|
||||
ForceUserExpenseValidator=Force expense report validator
|
||||
ForceUserHolidayValidator=Force leave request validator
|
||||
|
||||
@ -140,8 +140,8 @@ DefineListOfAltLanguagesInWebsiteProperties=Define list of all available languag
|
||||
GenerateSitemaps=Generate website sitemap file
|
||||
ConfirmGenerateSitemaps=If you confirm, you will erase the existing sitemap file...
|
||||
ConfirmSitemapsCreation=Confirm sitemap generation
|
||||
SitemapGenerated=Sitemap Generated
|
||||
SitemapGenerated=Sitemap file <b>%s</b> generated
|
||||
ImportFavicon=Favicon
|
||||
ErrorFaviconType=Favicon must be png
|
||||
ErrorFaviconSize=Favicon must be of size 32x32
|
||||
FaviconTooltip=Upload an image which needs to be a png of 32x32
|
||||
ErrorFaviconSize=Favicon must be sized 16x16, 32x32 or 64x64
|
||||
FaviconTooltip=Upload an image which needs to be a png (16x16, 32x32 or 64x64)
|
||||
|
||||
2
htdocs/langs/ar_EG/accountancy.lang
Normal file
@ -0,0 +1,2 @@
|
||||
# Dolibarr language file - Source file is en_US - accountancy
|
||||
ACCOUNTANCY_COMBO_FOR_AUX=Enable combo list for subsidiary account (may be slow if you have a lot of third parties)
|
||||
@ -46,7 +46,6 @@ Module40Name=موردين
|
||||
Module700Name=تبرعات
|
||||
Module1780Name=الأوسمة/التصنيفات
|
||||
Permission81=قراءة أوامر الشراء
|
||||
ShowBugTrackLink=Show link "<strong>%s</strong>"
|
||||
MailToSendInvoice=فواتير العميل
|
||||
MailToSendSupplierOrder=أوامر الشراء
|
||||
MailToSendSupplierInvoice=فواتير المورد
|
||||
|
||||
2
htdocs/langs/ar_EG/cron.lang
Normal file
@ -0,0 +1,2 @@
|
||||
# Dolibarr language file - Source file is en_US - cron
|
||||
CronTaskInactive=This job is disabled
|
||||
2
htdocs/langs/ar_EG/eventorganization.lang
Normal file
@ -0,0 +1,2 @@
|
||||
# Dolibarr language file - Source file is en_US - eventorganization
|
||||
EvntOrgDraft =مسودة
|
||||
@ -21,7 +21,6 @@ FormatDateHourTextShort=%b %d, %Y, %I:%M %p
|
||||
FormatDateHourText=%B %d, %Y, %I:%M %p
|
||||
Closed2=مقفول
|
||||
CloseAs=اضبط الحالة على
|
||||
NumberByMonth=الرقم بالشهر
|
||||
RefSupplier=المرجع. مورد
|
||||
CommercialProposalsShort=عروض تجارية
|
||||
Refused=مرفوض
|
||||
|
||||
4
htdocs/langs/ar_EG/partnership.lang
Normal file
@ -0,0 +1,4 @@
|
||||
# Dolibarr language file - Source file is en_US - partnership
|
||||
PartnershipDraft =مسودة
|
||||
PartnershipAccepted =مقبول
|
||||
PartnershipRefused =مرفوض
|
||||
@ -202,7 +202,7 @@ Docref=Reference
|
||||
LabelAccount=Label account
|
||||
LabelOperation=Label operation
|
||||
Sens=Direction
|
||||
AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you received<br>For an accounting account of a supplier, use Debit to record a payment you make
|
||||
AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you have received<br>For an accounting account of a supplier, use Debit to record a payment you made
|
||||
LetteringCode=Lettering code
|
||||
Lettering=Lettering
|
||||
Codejournal=Journal
|
||||
@ -297,7 +297,7 @@ NoNewRecordSaved=No more record to journalize
|
||||
ListOfProductsWithoutAccountingAccount=List of products not bound to any accounting account
|
||||
ChangeBinding=Change the binding
|
||||
Accounted=Accounted in ledger
|
||||
NotYetAccounted=Not yet accounted in ledger
|
||||
NotYetAccounted=Not yet accounted in the ledger
|
||||
ShowTutorial=Show Tutorial
|
||||
NotReconciled=Not reconciled
|
||||
WarningRecordWithoutSubledgerAreExcluded=Warning, all operations without subledger account defined are filtered and excluded from this view
|
||||
|
||||
@ -64,6 +64,7 @@ RemoveLock=Remove/rename file <b>%s</b> if it exists, to allow usage of the Upda
|
||||
RestoreLock=Restore file <b>%s</b>, with read permission only, to disable any further use of the Update/Install tool.
|
||||
SecuritySetup=Security setup
|
||||
PHPSetup=PHP setup
|
||||
OSSetup=OS setup
|
||||
SecurityFilesDesc=Define here options related to security about uploading files.
|
||||
ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher
|
||||
ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher
|
||||
@ -1159,7 +1160,7 @@ DoNotSuggestPaymentMode=Do not suggest
|
||||
NoActiveBankAccountDefined=No active bank account defined
|
||||
OwnerOfBankAccount=Owner of bank account %s
|
||||
BankModuleNotActive=Bank accounts module not enabled
|
||||
ShowBugTrackLink=Show link "<strong>%s</strong>"
|
||||
ShowBugTrackLink=Define the link "<strong>%s</strong>" (empty to not display this link, 'github' for the link to the Dolibarr project or define directly an url 'https://...')
|
||||
Alerts=Alerts
|
||||
DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for:
|
||||
DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element.
|
||||
@ -1254,6 +1255,7 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from
|
||||
YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP
|
||||
DownloadMoreSkins=More skins to download
|
||||
SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset
|
||||
SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset
|
||||
ShowProfIdInAddress=Show professional id with addresses
|
||||
ShowVATIntaInAddress=Hide intra-Community VAT number with addresses
|
||||
TranslationUncomplete=Partial translation
|
||||
@ -2062,7 +2064,7 @@ UseDebugBar=Use the debug bar
|
||||
DEBUGBAR_LOGS_LINES_NUMBER=Number of last log lines to keep in console
|
||||
WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramaticaly output
|
||||
ModuleActivated=Module %s is activated and slows the interface
|
||||
ModuleActivatedWithTooHighLogLevel=Module %s is activated with a too high logging level (try to use a lower level for better performances)
|
||||
ModuleActivatedWithTooHighLogLevel=Module %s is activated with a too high logging level (try to use a lower level for better performances and security)
|
||||
ModuleSyslogActivatedButLevelNotTooVerbose=Module %s is activated and log level (%s) is correct (not too verbose)
|
||||
IfYouAreOnAProductionSetThis=If you are on a production environment, you should set this property to %s.
|
||||
AntivirusEnabledOnUpload=Antivirus enabled on uploaded files
|
||||
@ -2122,3 +2124,8 @@ IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system co
|
||||
NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good)
|
||||
RecommendedValueIs=Recommended: %s
|
||||
ARestrictedPath=A restricted path
|
||||
CheckForModuleUpdate=Check for external modules updates
|
||||
CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available.
|
||||
ModuleUpdateAvailable=An update is available
|
||||
NoExternalModuleWithUpdate=No updates found for external modules
|
||||
SwaggerDescriptionFile=Swagger API description file (for use with redoc for example)
|
||||
|
||||
@ -109,13 +109,13 @@ SocialContributionPayment=Social/fiscal tax payment
|
||||
BankTransfer=Credit transfer
|
||||
BankTransfers=Credit transfers
|
||||
MenuBankInternalTransfer=Internal transfer
|
||||
TransferDesc=Transfer from one account to another, Dolibarr will write two records (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)
|
||||
TransferDesc=Use internal transfer to transfer from one account to another, the application will write two records: a debit in the source account and a credit in the target account. The same amount, label and date will be used for this transaction.
|
||||
TransferFrom=From
|
||||
TransferTo=To
|
||||
TransferFromToDone=A transfer from <b>%s</b> to <b>%s</b> of <b>%s</b> %s has been recorded.
|
||||
CheckTransmitter=Transmitter
|
||||
CheckTransmitter=Sender
|
||||
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?
|
||||
ConfirmValidateCheckReceipt=Are you sure that you want to submit this check receipt for validation? No changes are possible it's done.
|
||||
DeleteCheckReceipt=Delete this check receipt?
|
||||
ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt?
|
||||
BankChecks=Bank checks
|
||||
@ -128,7 +128,7 @@ ConfirmDeleteTransaction=Are you sure you want to delete this entry?
|
||||
ThisWillAlsoDeleteBankRecord=This will also delete generated bank entry
|
||||
BankMovements=Movements
|
||||
PlannedTransactions=Planned entries
|
||||
Graph=Graphics
|
||||
Graph=Graphs
|
||||
ExportDataset_banque_1=Bank entries and account statement
|
||||
ExportDataset_banque_2=Deposit slip
|
||||
TransactionOnTheOtherAccount=Transaction on the other account
|
||||
@ -142,7 +142,7 @@ AllAccounts=All bank and cash accounts
|
||||
BackToAccount=Back to account
|
||||
ShowAllAccounts=Show for all accounts
|
||||
FutureTransaction=Future transaction. Unable to reconcile.
|
||||
SelectChequeTransactionAndGenerate=Select/filter checks to include in the check deposit receipt and click on "Create".
|
||||
SelectChequeTransactionAndGenerate=Select/filter the checks which are to be included in the check deposit receipt. Then, click on "Create".
|
||||
InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD
|
||||
EventualyAddCategory=Eventually, specify a category in which to classify the records
|
||||
ToConciliate=To reconcile?
|
||||
|
||||
@ -120,7 +120,7 @@ ConvertExcessPaidToReduc=Convert excess paid into available discount
|
||||
EnterPaymentReceivedFromCustomer=Enter payment received from customer
|
||||
EnterPaymentDueToCustomer=Make payment due to customer
|
||||
DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero
|
||||
PriceBase=Price base
|
||||
PriceBase=Base price
|
||||
BillStatus=Invoice status
|
||||
StatusOfGeneratedInvoices=Status of generated invoices
|
||||
BillStatusDraft=Draft (needs to be validated)
|
||||
@ -454,7 +454,7 @@ RegulatedOn=Regulated on
|
||||
ChequeNumber=Check N°
|
||||
ChequeOrTransferNumber=Check/Transfer N°
|
||||
ChequeBordereau=Check schedule
|
||||
ChequeMaker=Check/Transfer transmitter
|
||||
ChequeMaker=Check/Transfer sender
|
||||
ChequeBank=Bank of Check
|
||||
CheckBank=Check
|
||||
NetToBePaid=Net to be paid
|
||||
|
||||
@ -46,11 +46,11 @@ BoxMyLastBookmarks=Bookmarks: latest %s
|
||||
BoxOldestExpiredServices=Oldest active expired services
|
||||
BoxLastExpiredServices=Latest %s oldest contacts with active expired services
|
||||
BoxTitleLastActionsToDo=Latest %s actions to do
|
||||
BoxTitleLastContracts=Latest %s modified contracts
|
||||
BoxTitleLastModifiedDonations=Latest %s modified donations
|
||||
BoxTitleLastModifiedExpenses=Latest %s modified expense reports
|
||||
BoxTitleLatestModifiedBoms=Latest %s modified BOMs
|
||||
BoxTitleLatestModifiedMos=Latest %s modified Manufacturing Orders
|
||||
BoxTitleLastContracts=Latest %s contracts which were modified
|
||||
BoxTitleLastModifiedDonations=Latest %s donations which were modified
|
||||
BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified
|
||||
BoxTitleLatestModifiedBoms=Latest %s BOMs which were modified
|
||||
BoxTitleLatestModifiedMos=Latest %s Manufacturing Orders which were modified
|
||||
BoxTitleLastOutstandingBillReached=Customers with maximum outstanding exceeded
|
||||
BoxGlobalActivity=Global activity (invoices, proposals, orders)
|
||||
BoxGoodCustomers=Good customers
|
||||
|
||||
@ -41,7 +41,8 @@ Floor=Floor
|
||||
AddTable=Add table
|
||||
Place=Place
|
||||
TakeposConnectorNecesary='TakePOS Connector' required
|
||||
OrderPrinters=Order printers
|
||||
OrderPrinters=Add a button to send the order to some given printers, without payment (for example to send an order to a kitchen)
|
||||
NotAvailableWithBrowserPrinter=Not available when printer for receipt is set to browser:
|
||||
SearchProduct=Search product
|
||||
Receipt=Receipt
|
||||
Header=Header
|
||||
@ -58,7 +59,7 @@ BillsCoinsPad=Coins and banknotes Pad
|
||||
DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr
|
||||
TakeposNeedsCategories=TakePOS needs at least one product categorie to work
|
||||
TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS needs at least 1 product category under the category <b>%s</b> to work
|
||||
OrderNotes=Order Notes
|
||||
OrderNotes=Can add some notes to each ordered items
|
||||
CashDeskBankAccountFor=Default account to use for payments in
|
||||
NoPaimementModesDefined=No paiment mode defined in TakePOS configuration
|
||||
TicketVatGrouped=Group VAT by rate in tickets|receipts
|
||||
@ -83,7 +84,7 @@ InvoiceIsAlreadyValidated=Invoice is already validated
|
||||
NoLinesToBill=No lines to bill
|
||||
CustomReceipt=Custom Receipt
|
||||
ReceiptName=Receipt Name
|
||||
ProductSupplements=Product Supplements
|
||||
ProductSupplements=Manage supplements of products
|
||||
SupplementCategory=Supplement category
|
||||
ColorTheme=Color theme
|
||||
Colorful=Colorful
|
||||
@ -93,7 +94,7 @@ Browser=Browser
|
||||
BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser.
|
||||
TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud.
|
||||
PrintMethod=Print method
|
||||
ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. Cannot print from the cloud.
|
||||
ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. The server hosting the application can't be in the Cloud (must be able to reach the printers in your network).
|
||||
ByTerminal=By terminal
|
||||
TakeposNumpadUsePaymentIcon=Use icon instead of text on payment buttons of numpad
|
||||
CashDeskRefNumberingModules=Numbering module for POS sales
|
||||
|
||||
@ -3,20 +3,20 @@ Rubrique=Tag/Category
|
||||
Rubriques=Tags/Categories
|
||||
RubriquesTransactions=Tags/Categories of transactions
|
||||
categories=tags/categories
|
||||
NoCategoryYet=No tag/category of this type created
|
||||
NoCategoryYet=No tag/category of this type has been created
|
||||
In=In
|
||||
AddIn=Add in
|
||||
modify=modify
|
||||
Classify=Classify
|
||||
CategoriesArea=Tags/Categories area
|
||||
ProductsCategoriesArea=Products/Services tags/categories area
|
||||
SuppliersCategoriesArea=Vendors tags/categories area
|
||||
CustomersCategoriesArea=Customers tags/categories area
|
||||
MembersCategoriesArea=Members tags/categories area
|
||||
ContactsCategoriesArea=Contacts tags/categories area
|
||||
AccountsCategoriesArea=Bank accounts tags/categories area
|
||||
ProjectsCategoriesArea=Projects tags/categories area
|
||||
UsersCategoriesArea=Users tags/categories area
|
||||
ProductsCategoriesArea=Product/Service tags/categories area
|
||||
SuppliersCategoriesArea=Vendor tags/categories area
|
||||
CustomersCategoriesArea=Customer tags/categories area
|
||||
MembersCategoriesArea=Member tags/categories area
|
||||
ContactsCategoriesArea=Contact tags/categories area
|
||||
AccountsCategoriesArea=Bank account tags/categories area
|
||||
ProjectsCategoriesArea=Project tags/categories area
|
||||
UsersCategoriesArea=User tags/categories area
|
||||
SubCats=Sub-categories
|
||||
CatList=List of tags/categories
|
||||
CatListAll=List of tags/categories (all types)
|
||||
@ -96,4 +96,4 @@ ChooseCategory=Choose category
|
||||
StocksCategoriesArea=Warehouse Categories
|
||||
ActionCommCategoriesArea=Event Categories
|
||||
WebsitePagesCategoriesArea=Page-Container Categories
|
||||
UseOrOperatorForCategories=Use or operator for categories
|
||||
UseOrOperatorForCategories=Use 'OR' operator for categories
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one.
|
||||
ErrorSetACountryFirst=Set the country first
|
||||
SelectThirdParty=Select a third party
|
||||
ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information?
|
||||
ConfirmDeleteCompany=Are you sure you want to delete this company and all related information?
|
||||
DeleteContact=Delete a contact/address
|
||||
ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information?
|
||||
ConfirmDeleteContact=Are you sure you want to delete this contact and all related information?
|
||||
MenuNewThirdParty=New Third Party
|
||||
MenuNewCustomer=New Customer
|
||||
MenuNewProspect=New Prospect
|
||||
@ -69,7 +69,7 @@ PhoneShort=Phone
|
||||
Skype=Skype
|
||||
Call=Call
|
||||
Chat=Chat
|
||||
PhonePro=Prof. phone
|
||||
PhonePro=Bus. phone
|
||||
PhonePerso=Pers. phone
|
||||
PhoneMobile=Mobile
|
||||
No_Email=Refuse bulk emailings
|
||||
@ -78,7 +78,7 @@ Zip=Zip Code
|
||||
Town=City
|
||||
Web=Web
|
||||
Poste= Position
|
||||
DefaultLang=Language default
|
||||
DefaultLang=Default language
|
||||
VATIsUsed=Sales tax used
|
||||
VATIsUsedWhenSelling=This defines if this third party includes a sale tax or not when it makes an invoice to its own customers
|
||||
VATIsNotUsed=Sales tax is not used
|
||||
@ -331,7 +331,7 @@ CustomerCodeDesc=Customer Code, unique for all customers
|
||||
SupplierCodeDesc=Vendor Code, unique for all vendors
|
||||
RequiredIfCustomer=Required if third party is a customer or prospect
|
||||
RequiredIfSupplier=Required if third party is a vendor
|
||||
ValidityControledByModule=Validity controlled by module
|
||||
ValidityControledByModule=Validity controlled by the module
|
||||
ThisIsModuleRules=Rules for this module
|
||||
ProspectToContact=Prospect to contact
|
||||
CompanyDeleted=Company "%s" deleted from database.
|
||||
@ -439,12 +439,12 @@ ListSuppliersShort=List of Vendors
|
||||
ListProspectsShort=List of Prospects
|
||||
ListCustomersShort=List of Customers
|
||||
ThirdPartiesArea=Third Parties/Contacts
|
||||
LastModifiedThirdParties=Latest %s modified Third Parties
|
||||
UniqueThirdParties=Total of Third Parties
|
||||
LastModifiedThirdParties=Latest %s Third Parties which were modified
|
||||
UniqueThirdParties=Total number of Third Parties
|
||||
InActivity=Open
|
||||
ActivityCeased=Closed
|
||||
ThirdPartyIsClosed=Third party is closed
|
||||
ProductsIntoElements=List of products/services into %s
|
||||
ProductsIntoElements=List of products/services mapped to %s
|
||||
CurrentOutstandingBill=Current outstanding bill
|
||||
OutstandingBill=Max. for outstanding bill
|
||||
OutstandingBillReached=Max. for outstanding bill reached
|
||||
@ -454,7 +454,7 @@ LeopardNumRefModelDesc=The code is free. This code can be modified at any time.
|
||||
ManagingDirectors=Manager(s) name (CEO, director, president...)
|
||||
MergeOriginThirdparty=Duplicate third party (third party you want to delete)
|
||||
MergeThirdparties=Merge third parties
|
||||
ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one? All linked objects (invoices, orders, ...) will be moved to current third party, then the third party will be deleted.
|
||||
ConfirmMergeThirdparties=Are you sure you want to merge the chosen third party with the current one? All linked objects (invoices, orders, ...) will be moved to the current third party, after which the chosen third party will be deleted.
|
||||
ThirdpartiesMergeSuccess=Third parties have been merged
|
||||
SaleRepresentativeLogin=Login of sales representative
|
||||
SaleRepresentativeFirstname=First name of sales representative
|
||||
|
||||