Merge branch 'develop' of github.com:Dolibarr/dolibarr into develop
This commit is contained in:
commit
3a23feefdf
40
ChangeLog
40
ChangeLog
@ -1,6 +1,9 @@
|
||||
--------------------------------------------------------------
|
||||
English Dolibarr ChangeLog
|
||||
--------------------------------------------------------------
|
||||
***** ChangeLog for 3.4.2 compared to 3.4.1 *****
|
||||
Fix: Bad rounding on margin calculations and display.
|
||||
Fix: Option drop table into backup was broken.
|
||||
|
||||
***** ChangeLog for 3.5 compared to 3.4.* *****
|
||||
For users:
|
||||
@ -8,7 +11,7 @@ For users:
|
||||
- New: More options to select status of users into select user list.
|
||||
- New: [ task #862 ] Add ODT on shipments.
|
||||
- New: [ task #149 ] Add # of notes and attachments in tabs.
|
||||
- New: Can edit customer ref at eny time.
|
||||
- New: Can edit customer ref at any time.
|
||||
- New: [ task #877 ] Reorganize menus.
|
||||
- New: [ task #858 ] Holiday module: note on manual holiday assignation.
|
||||
- New: [ task #892 ] Add hidden option in thirdparty customer/supplier module to hide non active
|
||||
@ -18,10 +21,10 @@ For users:
|
||||
- New: Add script export-bank-receipts.php
|
||||
- New: Add option "filter=bank" onto script rebuild_merge_pdf.php to merge PDF that
|
||||
has one payment on a specific bank account.*
|
||||
- New: [ task #901 ] Add Extrafeild on Fiche Inter.
|
||||
- New: [ task #901 ] Add Extrafield on Fiche Inter.
|
||||
- New: Show process id in all command line scripts.
|
||||
- New: Module mailman can subscribe/unsubscribe to ML according to categories or type of member.
|
||||
- New: Add object_hour and object_date_rfc as substitution tag for opendocument generation.
|
||||
- New: Add object_hour and object_date_rfc as substitution tag for open document generation.
|
||||
- New: Add options to send an email when paypal or paybox payment is done.
|
||||
- New: Clone product/service composition.
|
||||
- New: [ task #926 ] Add extrafield feature on order lines.
|
||||
@ -31,17 +34,17 @@ For users:
|
||||
- New: Add a cron module to define scheduled jobs.
|
||||
- New: Add new graphical boxes (customer and supplier invoices and orders per month).
|
||||
- New: [ task #286 ] Enhance rounding function of prices to allow round of sum instead of sum of rounding.
|
||||
- New: Can add an event automatically when a projet is create.
|
||||
- New: Can add an event automatically when a project is create.
|
||||
- New: Add option MAIN_GENERATE_DOCUMENT_WITH_PICTURE.
|
||||
- New: Add option excludethirdparties and onlythirdparties into merge pdf scripts.
|
||||
- New: [ task #925 ] Add ODT document generation for Tasks in project module.
|
||||
- New: [ task #924 ] Add numbering rule on task.
|
||||
- New: [ task #165 ] Add import/export of multiprices.
|
||||
- New: Add Maghreb regions and departments.
|
||||
- New: A more responsive desgin for statistic box of home page.
|
||||
- New: A more responsive design for statistic box of home page.
|
||||
- New: [ task #1005 ] Adapting to Spanish legislation bill numbering
|
||||
- New: [ task #1011 ] Now supplier order and invoice deal with payment terms and mode.
|
||||
- New: [ task #1014 ] Add option to recursivly add parent category.
|
||||
- New: [ task #1014 ] Add option to recursively add parent category.
|
||||
- New: [ task #1016 ] Can define a specific numbering for deposits.
|
||||
- New: [ task #918 ] Stock replenishment.
|
||||
- New : Add pdf link into supplier invoice list and supplier order list.
|
||||
@ -58,7 +61,7 @@ For users:
|
||||
- New: Add hidden option MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS.
|
||||
- New: Can send an email from thirdparty card.
|
||||
- New: Can cancel holidays that were previously validated.
|
||||
- New: Can choose contact on event (action com) creation, and filtred by thirdparty.
|
||||
- New: Can choose contact on event (action com) creation, and filtered by thirdparty.
|
||||
- New: Add hidden option MAIN_FORCE_DEFAULT_STATE_ID.
|
||||
- New: Add page to make mass stock movement.
|
||||
- New: Add field oustanding limit into thirdparty properties.
|
||||
@ -70,9 +73,12 @@ For users:
|
||||
- Fix: [ bug #1022 ] correct margin calculation for credit notes.
|
||||
- Fix: Better management of using ajax for upload form (to solve problem when enabling ajax jquery multifile upload in some cases).
|
||||
|
||||
New experimental module:
|
||||
- New: [ task #157 ] Add a Skype button (adherents / third parties / contacts)
|
||||
|
||||
For translators:
|
||||
- Qual: Normalized sort order of all languages files with english reference files.
|
||||
- New: Add language code files for South Africa, France new caledonia, Vietnam.
|
||||
- Qual: Normalized sort order of all languages files with English reference files.
|
||||
- New: Add language code files for South Africa, France new Caledonia, Vietnam.
|
||||
- New: Translate string for email to change password.
|
||||
|
||||
For developers:
|
||||
@ -90,14 +96,14 @@ For developers:
|
||||
key to use a specific language file.
|
||||
- New: Make some changes to allow usage of several alternative $dolibarr_main_url_root variables.
|
||||
- Qual: All nowrap properties are now using CSS class nowrap.
|
||||
- Qual: Move hardcoded code of module mailmanspip into trigger.
|
||||
- New: Into POST forms, if you can add a parameter DOL_AUTOSET_COOKIE with a vlue that is list name,
|
||||
- Qual: Move hard coded code of module mailmanspip into trigger.
|
||||
- New: Into POST forms, if you can add a parameter DOL_AUTOSET_COOKIE with a value that is list name,
|
||||
separated by a coma, of other POST parameters, Dolibarr will automatically save this parameters
|
||||
into user cookies.
|
||||
- New: Add hook addHomeSetup.
|
||||
- New: Add trigger CATEGORY_LINK and CATEGORY_UNLINK.
|
||||
- New: A trigger can return an array of error strings instead of one error string.
|
||||
- New: Add method to use a dictionnary as a combo box.
|
||||
- New: Add method to use a dictionary as a combo box.
|
||||
- New: Add update method for web service product.
|
||||
- Fix also several bugs with old code.
|
||||
|
||||
@ -113,11 +119,11 @@ be replaced by a "return 0";
|
||||
Goal is to fix old compatibility code that does not match hook specifications:
|
||||
http://wiki.dolibarr.org/index.php/Hooks_system
|
||||
|
||||
2) If you implemented hook printTopRightMenu, check that output does not include '<td>' tags anymore.
|
||||
2) If you implemented hook printTopRightMenu, check that output does not include '<td>' tags any more.
|
||||
All content added must be tagged by a '<div>' with css class="login_block_elem"
|
||||
|
||||
3) Some methods object->addline used a first parameter that was object->id, some not. Of course
|
||||
this was not a good pratice, since object->id is already known, there is no need to provide id as
|
||||
this was not a good practice, since object->id is already known, there is no need to provide id as
|
||||
parameter. All methods addline in this case were modified to remove this parameter.
|
||||
|
||||
4) Method ->classer_facturee() is deprecated. It must be replace with ->classifyBilled().
|
||||
@ -132,18 +138,18 @@ Fix: Reordering supplier products in list by supplier or supplier ref was crashi
|
||||
Fix: [ bug #1029 ] Tulip numbering mask
|
||||
Fix: Supplier invoice and supplier order are not displayed into object link into agenda event card
|
||||
Fix: [ bug #1033 ] SUPPLIER REF disappeared
|
||||
Fix: update extrafield do not display immediatly after update
|
||||
Fix: update extrafield do not display immediately after update
|
||||
Fix: Fix bug with canvas thirdparty
|
||||
Fix: [ bug #1037 ] Consumption> Supplier invoices related
|
||||
Fix: User group name do not display in card (view or edit mode)
|
||||
Fix: Link "Show all supplier invoice" on suplier card not working
|
||||
Fix: Link "Show all supplier invoice" on supplier card not working
|
||||
Fix: [ bug #1039 ] Pre-defined invoices conversion
|
||||
Fix: If only service module is activated, it's impossible to delete service
|
||||
Fix: [ bug #1043 ] Bad interventions ref numbering
|
||||
Fix: Mailing module : if an email is already in destinaires list all other email from selector was not inserted
|
||||
Fix: Localtaxes balance not showing
|
||||
Fix: Intervention box links to contracts id
|
||||
Fix: Compatiblity with multicompany module
|
||||
Fix: Compatibility with multicompany module
|
||||
Fix: Edit propal line was losing product supplier price id
|
||||
Fix: Delete linked element to supplier invoice when deleted
|
||||
Fix: [ bug #1061 ] Bad info shipped products
|
||||
|
||||
@ -123,6 +123,6 @@ Voici un liste de fonctionnalites pas encore gérées par Dolibarr:
|
||||
- Dolibarr ne gère qu'une seule monnaie à la fois (mono-devise).
|
||||
- Dolibarr ne gère en standard qu'une société/institution/association mère (mono-société). Pour en gérer plusieurs (comme vos filiales), il faut, soit faire plusieurs installations de Dolibarr, soit installer le module MultiCompany qui permet de gérer n société/institutions/associations dans une seule instance par une isolation logique des données.
|
||||
- Dolibarr ne contient pas de module de Gestion de la paie.
|
||||
- Les taches du module de gestion de projets n'ont pas de dépendance entre elle.
|
||||
- Les tâches du module de gestion de projets n'ont pas de dépendance entre elle.
|
||||
- Dolibarr ne contient pas de Webmail.
|
||||
- Dolibarr ne fait pas le café (pas encore).
|
||||
|
||||
@ -1,4 +1,18 @@
|
||||
dolibarr (3.5.0) unstable; urgency=low
|
||||
dolibarr (3.5.0-1) unstable; urgency=low
|
||||
|
||||
[ Laurent Destailleur (eldy) ]
|
||||
* New upstream release.
|
||||
|
||||
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100
|
||||
|
||||
dolibarr (3.4.1-3) unstable; urgency=low
|
||||
|
||||
[ Laurent Destailleur (eldy) ]
|
||||
* Maintenance release.
|
||||
|
||||
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100
|
||||
|
||||
dolibarr (3.4.0-3) unstable; urgency=low
|
||||
|
||||
[ Laurent Destailleur (eldy) ]
|
||||
* New upstream release.
|
||||
|
||||
@ -263,7 +263,7 @@ print '<br>';
|
||||
|
||||
|
||||
/*
|
||||
* Edition des variables globales non rattache a un theme specifique
|
||||
* Edition des variables globales non rattachées à un theme specifique
|
||||
*/
|
||||
$constantes=array(
|
||||
'ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT',
|
||||
|
||||
@ -65,6 +65,7 @@ class Adherent extends CommonObject
|
||||
var $country;
|
||||
|
||||
var $email;
|
||||
var $skype;
|
||||
var $phone;
|
||||
var $phone_perso;
|
||||
var $phone_mobile;
|
||||
@ -430,6 +431,7 @@ class Adherent extends CommonObject
|
||||
$sql.= ", country=".($this->country_id>0?"'".$this->country_id."'":"null");
|
||||
$sql.= ", state_id=".($this->state_id>0?"'".$this->state_id."'":"null");
|
||||
$sql.= ", email='".$this->email."'";
|
||||
$sql.= ", skype='".$this->skype."'";
|
||||
$sql.= ", phone=" .($this->phone?"'".$this->db->escape($this->phone)."'":"null");
|
||||
$sql.= ", phone_perso=" .($this->phone_perso?"'".$this->db->escape($this->phone_perso)."'":"null");
|
||||
$sql.= ", phone_mobile=" .($this->phone_mobile?"'".$this->db->escape($this->phone_mobile)."'":"null");
|
||||
@ -526,6 +528,7 @@ class Adherent extends CommonObject
|
||||
$luser->societe_id=$this->societe;
|
||||
|
||||
$luser->email=$this->email;
|
||||
$luser->skype=$this->skype;
|
||||
$luser->office_phone=$this->phone;
|
||||
$luser->user_mobile=$this->phone_mobile;
|
||||
|
||||
@ -564,6 +567,7 @@ class Adherent extends CommonObject
|
||||
$lthirdparty->zip=$this->zip;
|
||||
$lthirdparty->town=$this->town;
|
||||
$lthirdparty->email=$this->email;
|
||||
$lthirdparty->skype=$this->skype;
|
||||
$lthirdparty->phone=$this->phone;
|
||||
$lthirdparty->state_id=$this->state_id;
|
||||
$lthirdparty->country_id=$this->country_id;
|
||||
@ -1047,7 +1051,7 @@ class Adherent extends CommonObject
|
||||
global $langs;
|
||||
|
||||
$sql = "SELECT d.rowid, d.ref_ext, d.civilite, d.firstname, d.lastname, d.societe as company, d.fk_soc, d.statut, d.public, d.address, d.zip, d.town, d.note,";
|
||||
$sql.= " d.email, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass,";
|
||||
$sql.= " d.email, d.skype, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass,";
|
||||
$sql.= " d.photo, d.fk_adherent_type, d.morphy, d.entity,";
|
||||
$sql.= " d.datec as datec,";
|
||||
$sql.= " d.tms as datem,";
|
||||
@ -1115,6 +1119,7 @@ class Adherent extends CommonObject
|
||||
$this->phone_perso = $obj->phone_perso;
|
||||
$this->phone_mobile = $obj->phone_mobile;
|
||||
$this->email = $obj->email;
|
||||
$this->skype = $obj->skype;
|
||||
|
||||
$this->photo = $obj->photo;
|
||||
$this->statut = $obj->statut;
|
||||
@ -1782,6 +1787,7 @@ class Adherent extends CommonObject
|
||||
$this->country = 'France';
|
||||
$this->morphy = 1;
|
||||
$this->email = 'specimen@specimen.com';
|
||||
$this->skype = 'tom.hanson';
|
||||
$this->phone = '0999999999';
|
||||
$this->phone_perso = '0999999998';
|
||||
$this->phone_mobile = '0999999997';
|
||||
@ -1853,6 +1859,7 @@ class Adherent extends CommonObject
|
||||
if ($this->town && ! empty($conf->global->LDAP_MEMBER_FIELD_TOWN)) $info[$conf->global->LDAP_MEMBER_FIELD_TOWN] = $this->town;
|
||||
if ($this->country_code && ! empty($conf->global->LDAP_MEMBER_FIELD_COUNTRY)) $info[$conf->global->LDAP_MEMBER_FIELD_COUNTRY] = $this->country_code;
|
||||
if ($this->email && ! empty($conf->global->LDAP_MEMBER_FIELD_MAIL)) $info[$conf->global->LDAP_MEMBER_FIELD_MAIL] = $this->email;
|
||||
if ($this->skype && ! empty($conf->global->LDAP_MEMBER_FIELD_SKYPE)) $info[$conf->global->LDAP_MEMBER_FIELD_SKYPE] = $this->skype;
|
||||
if ($this->phone && ! empty($conf->global->LDAP_MEMBER_FIELD_PHONE)) $info[$conf->global->LDAP_MEMBER_FIELD_PHONE] = $this->phone;
|
||||
if ($this->phone_perso && ! empty($conf->global->LDAP_MEMBER_FIELD_PHONE_PERSO)) $info[$conf->global->LDAP_MEMBER_FIELD_PHONE_PERSO] = $this->phone_perso;
|
||||
if ($this->phone_mobile && ! empty($conf->global->LDAP_MEMBER_FIELD_MOBILE)) $info[$conf->global->LDAP_MEMBER_FIELD_MOBILE] = $this->phone_mobile;
|
||||
|
||||
@ -285,6 +285,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
|
||||
$object->phone_perso = trim($_POST["phone_perso"]);
|
||||
$object->phone_mobile= trim($_POST["phone_mobile"]);
|
||||
$object->email = trim($_POST["email"]);
|
||||
$object->skype = trim($_POST["skype"]);
|
||||
$object->birth = $birthdate;
|
||||
|
||||
$object->typeid = $_POST["typeid"];
|
||||
@ -413,6 +414,7 @@ if ($action == 'add' && $user->rights->adherent->creer)
|
||||
$phone=$_POST["phone"];
|
||||
$phone_perso=$_POST["phone_perso"];
|
||||
$phone_mobile=$_POST["phone_mobile"];
|
||||
$skype=$_POST["member_skype"];
|
||||
$email=$_POST["member_email"];
|
||||
$login=$_POST["member_login"];
|
||||
$pass=$_POST["password"];
|
||||
@ -437,6 +439,7 @@ if ($action == 'add' && $user->rights->adherent->creer)
|
||||
$object->phone = $phone;
|
||||
$object->phone_perso = $phone_perso;
|
||||
$object->phone_mobile= $phone_mobile;
|
||||
$object->skype = $skype;
|
||||
$object->email = $email;
|
||||
$object->login = $login;
|
||||
$object->pass = $pass;
|
||||
@ -844,6 +847,12 @@ else
|
||||
// Tel mobile
|
||||
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(GETPOST('phone_mobile','alpha')?GETPOST('phone_mobile','alpha'):$object->phone_mobile).'"></td></tr>';
|
||||
|
||||
// Skype
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="member_skype" size="40" value="'.(GETPOST('member_skype','alpha')?GETPOST('member_skype','alpha'):$object->skype).'"></td></tr>';
|
||||
}
|
||||
|
||||
// Birthday
|
||||
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
|
||||
$form->select_date(($object->naiss ? $object->naiss : -1),'naiss','','',1,'formsoc');
|
||||
@ -1080,6 +1089,11 @@ else
|
||||
// Tel mobile
|
||||
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(isset($_POST["phone_mobile"])?$_POST["phone_mobile"]:$object->phone_mobile).'"></td></tr>';
|
||||
|
||||
// Skype
|
||||
if (! empty($conf->skype->enabled)) {
|
||||
print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="skype" size="40" value="'.(isset($_POST["skype"])?$_POST["skype"]:$object->skype).'"></td></tr>';
|
||||
}
|
||||
|
||||
// Birthday
|
||||
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
|
||||
$form->select_date(($object->birth ? $object->birth : -1),'birth','','',1,'formsoc');
|
||||
@ -1398,6 +1412,9 @@ else
|
||||
// Tel mobile
|
||||
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td class="valeur">'.dol_print_phone($object->phone_mobile,$object->country_code,0,$object->fk_soc,1).'</td></tr>';
|
||||
|
||||
// Skype
|
||||
print '<tr><td>'.$langs->trans("Skype").'</td><td class="valeur">'.dol_print_skype($object->skype,0,$object->fk_soc,1).'</td></tr>';
|
||||
|
||||
// Birthday
|
||||
print '<tr><td>'.$langs->trans("Birthday").'</td><td class="valeur">'.dol_print_date($object->birth,'day').'</td></tr>';
|
||||
|
||||
|
||||
@ -220,11 +220,10 @@ $form=new Form($db);
|
||||
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
||||
print_fiche_titre($langs->trans("InterventionsSetup"),$linkback,'setup');
|
||||
|
||||
print "<br>";
|
||||
|
||||
$head=fichinter_admin_prepare_head();
|
||||
|
||||
dol_fiche_head($head, 'ficheinter', $langs->trans("ModuleSetup"));
|
||||
dol_fiche_head($head, 'ficheinter', $langs->trans("Interventions"), 0, 'intervention');
|
||||
|
||||
// Interventions numbering model
|
||||
|
||||
|
||||
@ -61,6 +61,7 @@ if ($action == 'setvalue' && $user->admin)
|
||||
if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_PHONE',GETPOST("fieldphone"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_HOMEPHONE',GETPOST("fieldhomephone"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_MOBILE',GETPOST("fieldmobile"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_SKYPE',GETPOST("fieldskype"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_FAX',GETPOST("fieldfax"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_ADDRESS',GETPOST("fieldaddress"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_ZIP',GETPOST("fieldzip"),'chaine',0,'',$conf->entity)) $error++;
|
||||
@ -214,6 +215,14 @@ print '</td><td>'.$langs->trans("LDAPFieldMobileExample").'</td>';
|
||||
print '<td align="right"><input type="radio" name="key" value="LDAP_CONTACT_FIELD_MOBILE"'.($conf->global->LDAP_KEY_CONTACTS && $conf->global->LDAP_KEY_CONTACTS==$conf->global->LDAP_CONTACT_FIELD_MOBILE?' checked="checked"':'')."></td>";
|
||||
print '</tr>';
|
||||
|
||||
// Skype
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldSkype").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldskype" value="'.$conf->global->LDAP_CONTACT_FIELD_SKYPE.'">';
|
||||
print '</td><td>'.$langs->trans("LDAPFieldSkypeExample").'</td>';
|
||||
print '<td align="right"><input type="radio" name="key" value="LDAP_CONTACT_FIELD_SKYPE"'.($conf->global->LDAP_KEY_CONTACTS && $conf->global->LDAP_KEY_CONTACTS==$conf->global->LDAP_CONTACT_FIELD_SKYPE?' checked="checked"':'')."></td>";
|
||||
print '</tr>';
|
||||
|
||||
// Fax
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldFax").'</td><td>';
|
||||
|
||||
@ -65,6 +65,7 @@ if ($action == 'setvalue' && $user->admin)
|
||||
if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_PHONE',GETPOST("fieldphone"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_PHONE_PERSO',GETPOST("fieldphoneperso"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_MOBILE',GETPOST("fieldmobile"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_SKYPE',GETPOST("fieldskype"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_FAX',GETPOST("fieldfax"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_ADDRESS',GETPOST("fieldaddress"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_ZIP',GETPOST("fieldzip"),'chaine',0,'',$conf->entity)) $error++;
|
||||
@ -255,6 +256,14 @@ print '</td><td>'.$langs->trans("LDAPFieldMobileExample").'</td>';
|
||||
print '<td align="right"> </td>';
|
||||
print '</tr>';
|
||||
|
||||
// Skype
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldSkype").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldskype" value="'.$conf->global->LDAP_MEMBER_FIELD_SKYPE.'">';
|
||||
print '</td><td>'.$langs->trans("LDAPFieldSkypeExample").'</td>';
|
||||
print '<td align="right"> </td>';
|
||||
print '</tr>';
|
||||
|
||||
// Fax
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldFax").'</td><td>';
|
||||
|
||||
@ -63,6 +63,7 @@ if ($action == 'setvalue' && $user->admin)
|
||||
if (! dolibarr_set_const($db, 'LDAP_FIELD_MAIL',GETPOST("fieldmail"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_FIELD_PHONE',GETPOST("fieldphone"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_FIELD_MOBILE',GETPOST("fieldmobile"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_FIELD_SKYPE',GETPOST("fieldskype"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_FIELD_FAX',GETPOST("fieldfax"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_FIELD_DESCRIPTION',GETPOST("fielddescription"),'chaine',0,'',$conf->entity)) $error++;
|
||||
if (! dolibarr_set_const($db, 'LDAP_FIELD_SID',GETPOST("fieldsid"),'chaine',0,'',$conf->entity)) $error++;
|
||||
@ -240,6 +241,14 @@ print '</td><td>'.$langs->trans("LDAPFieldMobileExample").'</td>';
|
||||
print '<td align="right"><input type="radio" name="key" value="LDAP_FIELD_MOBILE"'.(($conf->global->LDAP_KEY_USERS && $conf->global->LDAP_KEY_USERS==$conf->global->LDAP_FIELD_MOBILE)?' checked="checked"':'')."></td>";
|
||||
print '</tr>';
|
||||
|
||||
// Skype
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldSkype").'</td><td>';
|
||||
print '<input size="25" type="text" name="fieldskype" value="'.$conf->global->LDAP_FIELD_SKYPE.'">';
|
||||
print '</td><td>'.$langs->trans("LDAPFieldSkypeExample").'</td>';
|
||||
print '<td align="right"><input type="radio" name="key" value="LDAP_FIELD_SKYPE"'.(($conf->global->LDAP_KEY_USERS && $conf->global->LDAP_KEY_USERS==$conf->global->LDAP_FIELD_SKYPE)?' checked="checked"':'')."></td>";
|
||||
print '</tr>';
|
||||
|
||||
// Fax
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldFax").'</td><td>';
|
||||
@ -383,6 +392,7 @@ if (function_exists("ldap_connect"))
|
||||
$conf->global->LDAP_FIELD_PASSWORD_CRYPTED,
|
||||
$conf->global->LDAP_FIELD_PHONE,
|
||||
$conf->global->LDAP_FIELD_FAX,
|
||||
$conf->global->LDAP_FIELD_SKYPE,
|
||||
$conf->global->LDAP_FIELD_MOBILE,
|
||||
$conf->global->LDAP_FIELD_MAIL,
|
||||
$conf->global->LDAP_FIELD_TITLE,
|
||||
|
||||
@ -219,7 +219,7 @@ print $langs->trans("BackupDescY").'<br><br>';
|
||||
<fieldset><legend> <input type="checkbox" name="sql_structure"
|
||||
value="structure" id="checkbox_sql_structure" checked="checked" /> <label
|
||||
for="checkbox_sql_structure"> <?php echo $langs->trans('ExportStructure') ?></label> </legend> <input
|
||||
type="checkbox" name="drop" value="1" id="checkbox_dump_drop" /> <label
|
||||
type="checkbox" name="drop"<?php echo ((! isset($_GET["drop"]) && ! isset($_POST["drop"])) || GETPOST('drop'))?' checked="checked"':''; ?> id="checkbox_dump_drop" /> <label
|
||||
for="checkbox_dump_drop"><?php echo $langs->trans("AddDropTable"); ?></label><br>
|
||||
</fieldset>
|
||||
|
||||
@ -274,7 +274,7 @@ print $langs->trans("BackupDescY").'<br><br>';
|
||||
|
||||
<br>
|
||||
<fieldset><legend><?php echo $langs->trans('ExportStructure') ?></legend> <input
|
||||
type="checkbox" name="nobin_drop" value="1" id="checkbox_dump_drop" /> <label
|
||||
type="checkbox" name="nobin_drop"<?php echo ((! isset($_GET["nobin_drop"]) && ! isset($_POST["nobin_drop"])) || GETPOST('nobin_drop'))?' checked="checked"':''; ?> id="checkbox_dump_drop" /> <label
|
||||
for="checkbox_dump_drop"><?php echo $langs->trans("AddDropTable"); ?></label><br>
|
||||
</fieldset>
|
||||
|
||||
@ -433,4 +433,4 @@ print '<br>';
|
||||
llxFooter();
|
||||
|
||||
$db->close();
|
||||
?>
|
||||
?>
|
||||
|
||||
@ -134,7 +134,8 @@ if ($what == 'mysql')
|
||||
if (GETPOST("drop_database")) $param.=" --add-drop-database";
|
||||
if (GETPOST("sql_structure"))
|
||||
{
|
||||
if (GETPOST("drop")) $param.=" --add-drop-table";
|
||||
if (GETPOST("drop")) $param.=" --add-drop-table=TRUE";
|
||||
else $param.=" --add-drop-table=FALSE";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -70,7 +70,21 @@ if (preg_match('/del_(.*)/',$action,$reg))
|
||||
dol_print_error($db);
|
||||
}
|
||||
}
|
||||
//Set hide closed customer into combox or select
|
||||
if ($action == 'sethideinactiveuser')
|
||||
{
|
||||
$status = GETPOST('status','alpha');
|
||||
|
||||
if (dolibarr_set_const($db, "USER_HIDE_INACTIVE_IN_COMBOBOX",$status,'chaine',0,'',$conf->entity) > 0)
|
||||
{
|
||||
header("Location: ".$_SERVER["PHP_SELF"]);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* View
|
||||
@ -121,6 +135,27 @@ else
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
/*
|
||||
// USER_USE_SEARCH_TO_SELECT
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
print '<td>'.$langs->trans("HideClosedUserComboBox").'</td>';
|
||||
print '<td align="center" width="20"> </td>';
|
||||
if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX))
|
||||
{
|
||||
print '<td align="center" width="100"><a href="'.$_SERVER['PHP_SELF'].'?action=sethideinactiveuser&status=0">';
|
||||
print img_picto($langs->trans("Activated"),'switch_on');
|
||||
print '</a></td>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<td align="center" width="100"><a href="'.$_SERVER['PHP_SELF'].'?action=sethideinactiveuser&status=1">';
|
||||
print img_picto($langs->trans("Disabled"),'switch_off');
|
||||
print '</a></td>';
|
||||
}
|
||||
print '</tr>';
|
||||
*/
|
||||
|
||||
print '</table>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
@ -93,7 +93,7 @@ if (GETPOST('sendit') && ! empty($conf->global->MAIN_UPLOAD_DOC))
|
||||
if ($action == 'delete')
|
||||
{
|
||||
$upload_dir = $conf->agenda->dir_output.'/'.dol_sanitizeFileName($objectid);
|
||||
$file = $upload_dir . '/' . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
|
||||
$file = $upload_dir . '/' . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
|
||||
$ret=dol_delete_file($file,0,0,0,$act);
|
||||
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
|
||||
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
|
||||
* Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -196,9 +197,8 @@ if ($id > 0)
|
||||
|
||||
|
||||
print '<div class="fichecenter"><div class="fichehalfleft">';
|
||||
//print '<table width="100%" class="notopnoleftnoright">';
|
||||
//print '<tr><td valign="top" class="notopnoleft">';
|
||||
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
print '<tr><td width="30%">'.$langs->trans("ThirdPartyName").'</td><td width="70%" colspan="3">';
|
||||
@ -267,6 +267,12 @@ if ($id > 0)
|
||||
// Fax
|
||||
print '<td>'.$langs->trans('Fax').'</td><td style="min-width: 25%;">'.dol_print_phone($object->fax,$object->country_code,0,$object->id,'AC_FAX').'</td></tr>';
|
||||
|
||||
// Skype
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
print '<td>'.$langs->trans('Skype').'</td><td colspan="3">'.dol_print_skype($object->skype,0,$object->id,'AC_SKYPE').'</td></tr>';
|
||||
}
|
||||
|
||||
// Assujeti a TVA ou pas
|
||||
print '<tr>';
|
||||
print '<td class="nowrap">'.$langs->trans('VATIsUsed').'</td><td colspan="3">';
|
||||
@ -452,7 +458,7 @@ if ($id > 0)
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("UserNotLinkedToMember");
|
||||
print $langs->trans("ThirdpartyNotLinkedToMember");
|
||||
}
|
||||
print '</td>';
|
||||
print "</tr>\n";
|
||||
@ -462,8 +468,6 @@ if ($id > 0)
|
||||
|
||||
|
||||
print '</div><div class="fichehalfright"><div class="ficheaddleft">';
|
||||
//print "</td>\n";
|
||||
//print '<td valign="top" width="50%" class="notopnoleftnoright">';
|
||||
|
||||
|
||||
// Nbre max d'elements des petites listes
|
||||
@ -800,8 +804,6 @@ if ($id > 0)
|
||||
|
||||
print '</div></div></div>';
|
||||
print '<div style="clear:both"></div>';
|
||||
//print "</td></tr>";
|
||||
//print "</table>";
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
@ -507,7 +507,7 @@ if ($object->fetch($id) >= 0)
|
||||
if ($obj->statut==-1) print $langs->trans("MailingStatusError").' '.img_error();
|
||||
if ($obj->statut==1) print $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4');
|
||||
if ($obj->statut==2) print $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6');
|
||||
if ($obj->statut==3) print $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8');
|
||||
if ($obj->statut==3) print $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut5');
|
||||
print '</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
|
||||
@ -100,7 +100,7 @@ $hookmanager->initHooks(array('propalcard'));
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
*/
|
||||
|
||||
$parameters=array('socid'=>$socid);
|
||||
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||
@ -131,7 +131,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes')
|
||||
}
|
||||
}
|
||||
|
||||
// Suppression de la propale
|
||||
// Delete proposal
|
||||
else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->propal->supprimer)
|
||||
{
|
||||
$result=$object->delete($user);
|
||||
@ -436,9 +436,7 @@ else if ($action == 'setstatut' && $user->rights->propal->cloturer && ! GETPOST(
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Add file in email form
|
||||
*/
|
||||
// Add file in email form
|
||||
if (GETPOST('addfile'))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
@ -451,9 +449,7 @@ if (GETPOST('addfile'))
|
||||
$action='presend';
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove file in email form
|
||||
*/
|
||||
// Remove file in email form
|
||||
if (GETPOST('removedfile'))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
@ -469,7 +465,7 @@ if (GETPOST('removedfile'))
|
||||
|
||||
/*
|
||||
* Send mail
|
||||
*/
|
||||
*/
|
||||
if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! GETPOST('cancel'))
|
||||
{
|
||||
$langs->load('mails');
|
||||
@ -637,7 +633,7 @@ else if ($action == "setabsolutediscount" && $user->rights->propal->creer)
|
||||
}
|
||||
}
|
||||
|
||||
//Ajout d'une ligne produit dans la propale
|
||||
// Add line
|
||||
else if ($action == "addline" && $user->rights->propal->creer)
|
||||
{
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
@ -1163,14 +1159,11 @@ else if ($action == 'update_extras')
|
||||
{
|
||||
// Fill array 'array_options' with data from update form
|
||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute'));
|
||||
if($ret < 0) $error++;
|
||||
|
||||
if($ret < 0) {
|
||||
$error++;
|
||||
$action = 'edit_extras';
|
||||
}
|
||||
|
||||
if(!$error) {
|
||||
if (! $error)
|
||||
{
|
||||
// Actions on extra fields (by external module or standard code)
|
||||
// FIXME le hook fait double emploi avec le trigger !!
|
||||
$hookmanager->initHooks(array('propaldao'));
|
||||
@ -1178,17 +1171,16 @@ else if ($action == 'update_extras')
|
||||
$reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||
if (empty($reshook))
|
||||
{
|
||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||
$result=$object->insertExtraFields();
|
||||
if ($result < 0)
|
||||
{
|
||||
$result=$object->insertExtraFields();
|
||||
if ($result < 0)
|
||||
{
|
||||
$error++;
|
||||
}
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
else if ($reshook < 0) $error++;
|
||||
}
|
||||
|
||||
if ($error) $action = 'edit_extras';
|
||||
}
|
||||
|
||||
if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->propal->creer)
|
||||
@ -1254,7 +1246,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->propal->
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
*/
|
||||
|
||||
llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos');
|
||||
|
||||
@ -1422,7 +1414,7 @@ if ($action == 'create')
|
||||
|
||||
/*
|
||||
* Combobox pour la fonction de copie
|
||||
*/
|
||||
*/
|
||||
|
||||
if (empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE))
|
||||
{
|
||||
@ -1521,7 +1513,7 @@ else
|
||||
{
|
||||
/*
|
||||
* Show object in view mode
|
||||
*/
|
||||
*/
|
||||
|
||||
$soc = new Societe($db);
|
||||
$soc->fetch($object->socid);
|
||||
@ -1615,13 +1607,12 @@ else
|
||||
print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', '');
|
||||
print '</td></tr>';
|
||||
|
||||
// Ref client
|
||||
// Ref customer
|
||||
print '<tr><td>';
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td class="nowrap">';
|
||||
print $langs->trans('RefCustomer').'</td>';
|
||||
print '<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=refclient&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('RefCustomer')).'</a></td>';
|
||||
print '</td>';
|
||||
if ($action != 'refclient' && ! empty($object->brouillon)) print '<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=refclient&id='.$object->id.'">'.img_edit($langs->trans('Modify')).'</a></td>';
|
||||
print '</td>';
|
||||
print '</tr></table>';
|
||||
print '</td><td colspan="5">';
|
||||
if ($user->rights->propal->creer && $action == 'refclient')
|
||||
@ -1639,6 +1630,7 @@ else
|
||||
}
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Company
|
||||
print '<tr><td>'.$langs->trans('Company').'</td><td colspan="5">'.$soc->getNomUrl(1).'</td>';
|
||||
print '</tr>';
|
||||
@ -1897,20 +1889,12 @@ else
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
// Other attributes
|
||||
// Other attributes (TODO Move this into an include)
|
||||
$res=$object->fetch_optionals($object->id,$extralabels);
|
||||
$parameters=array('colspan' => ' colspan="3"');
|
||||
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
|
||||
if (empty($reshook) && ! empty($extrafields->attribute_label))
|
||||
{
|
||||
if ($action == 'edit_extras')
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
}
|
||||
|
||||
foreach($extrafields->attribute_label as $key=>$label)
|
||||
{
|
||||
if ($action == 'edit_extras') {
|
||||
@ -1933,35 +1917,28 @@ else
|
||||
$value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$db->jdate($object->array_options['options_'.$key]);
|
||||
}
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->propal->creer)
|
||||
if ($action == 'edit_extras' && $user->rights->propal->creer && GETPOST('attribute') == $key)
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="attribute" value="'.$key.'">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
print $extrafields->showInputField($key,$value);
|
||||
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print $extrafields->showOutputField($key,$value);
|
||||
if ($object->statut == 0 && $user->rights->propal->creer) print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras&attribute='.$key.'">'.img_picto('','edit').' '.$langs->trans('Modify').'</a>';
|
||||
}
|
||||
print '</td></tr>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
if(count($extrafields->attribute_label) > 0) {
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->propal->creer)
|
||||
{
|
||||
print '<tr><td></td><td colspan="5">';
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
print '</td></tr>';
|
||||
|
||||
}
|
||||
else {
|
||||
if ($object->statut == 0 && $user->rights->propal->creer)
|
||||
{
|
||||
print '<tr><td></td><td><a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras">'.img_picto('','edit').' '.$langs->trans('Modify').'</a></td></tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Amount HT
|
||||
@ -2024,7 +2001,7 @@ else
|
||||
|
||||
/*
|
||||
* Lines
|
||||
*/
|
||||
*/
|
||||
|
||||
if (! empty($conf->use_javascript_ajax) && $object->statut == 0)
|
||||
{
|
||||
@ -2077,7 +2054,7 @@ else
|
||||
{
|
||||
/*
|
||||
* Formulaire cloture (signe ou non)
|
||||
*/
|
||||
*/
|
||||
$form_close = '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="post">';
|
||||
$form_close.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
$form_close.= '<table class="border" width="100%">';
|
||||
@ -2105,7 +2082,7 @@ else
|
||||
|
||||
/*
|
||||
* Boutons Actions
|
||||
*/
|
||||
*/
|
||||
if ($action != 'presend')
|
||||
{
|
||||
print '<div class="tabsAction">';
|
||||
@ -2216,7 +2193,7 @@ else
|
||||
|
||||
/*
|
||||
* Documents generes
|
||||
*/
|
||||
*/
|
||||
$filename=dol_sanitizeFileName($object->ref);
|
||||
$filedir=$conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref);
|
||||
$urlsource=$_SERVER["PHP_SELF"]."?id=".$object->id;
|
||||
|
||||
@ -1710,7 +1710,7 @@ class Propal extends CommonObject
|
||||
{
|
||||
if ($statut == 2)
|
||||
{
|
||||
// Classe la societe rattachee comme client
|
||||
// Classe la société rattachée comme client
|
||||
$soc=new Societe($this->db);
|
||||
$soc->id = $this->socid;
|
||||
$result=$soc->set_as_client();
|
||||
|
||||
@ -141,8 +141,8 @@ if (! $sortorder) $sortorder='DESC';
|
||||
$limit = $conf->liste_limit;
|
||||
|
||||
|
||||
$sql = 'SELECT s.rowid, s.nom, s.town, s.client, s.code_client';
|
||||
$sql.= 'p.rowid as propalid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,';
|
||||
$sql = 'SELECT s.rowid, s.nom, s.town, s.client, s.code_client,';
|
||||
$sql.= ' p.rowid as propalid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,';
|
||||
if (! $user->rights->societe->client->voir && ! $socid) $sql .= " sc.fk_soc, sc.fk_user,";
|
||||
$sql.= ' u.login';
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p';
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
/**
|
||||
* \file htdocs/commande/document.php
|
||||
* \ingroup order
|
||||
* \brief Page de gestion des documents attachees a une commande
|
||||
* \brief Documents setup page attached to an order
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
|
||||
@ -1179,12 +1179,11 @@ else if ($action == 'update_extras')
|
||||
{
|
||||
// Fill array 'array_options' with data from update form
|
||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute'));
|
||||
if($ret < 0) $error++;
|
||||
|
||||
if($ret < 0)
|
||||
$error++;
|
||||
|
||||
if(!$error) {
|
||||
if (! $error)
|
||||
{
|
||||
// Actions on extra fields (by external module or standard code)
|
||||
// FIXME le hook fait double emploi avec le trigger !!
|
||||
$hookmanager->initHooks(array('orderdao'));
|
||||
@ -1192,22 +1191,16 @@ else if ($action == 'update_extras')
|
||||
$reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||
if (empty($reshook))
|
||||
{
|
||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||
$result=$object->insertExtraFields();
|
||||
if ($result < 0)
|
||||
{
|
||||
$result=$object->insertExtraFields();
|
||||
if ($result < 0)
|
||||
{
|
||||
$error++;
|
||||
}
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
else if ($reshook < 0) $error++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$action = 'edit_extras';
|
||||
}
|
||||
|
||||
|
||||
if ($error) $action = 'edit_extras';
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2208,20 +2201,12 @@ else
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
// Other attributes
|
||||
// Other attributes (TODO Move this into an include)
|
||||
$res=$object->fetch_optionals($object->id,$extralabels);
|
||||
$parameters=array('colspan' => ' colspan="3"');
|
||||
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
|
||||
if (empty($reshook) && ! empty($extrafields->attribute_label))
|
||||
{
|
||||
if ($action == 'edit_extras')
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
}
|
||||
|
||||
foreach($extrafields->attribute_label as $key=>$label)
|
||||
{
|
||||
if ($action == 'edit_extras') {
|
||||
@ -2244,35 +2229,27 @@ else
|
||||
$value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$db->jdate($object->array_options['options_'.$key]);
|
||||
}
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->commande->creer)
|
||||
if ($action == 'edit_extras' && $user->rights->commande->creer && GETPOST('attribute') == $key)
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="attribute" value="'.$key.'">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
print $extrafields->showInputField($key,$value);
|
||||
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print $extrafields->showOutputField($key,$value);
|
||||
if ($object->statut == 0 && $user->rights->commande->creer) print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras&attribute='.$key.'">'.img_picto('','edit').' '.$langs->trans('Modify').'</a>';
|
||||
}
|
||||
print '</td></tr>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
if(count($extrafields->attribute_label) > 0) {
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->commande->creer)
|
||||
{
|
||||
print '<tr><td></td><td colspan="5">';
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
print '</td></tr>';
|
||||
|
||||
}
|
||||
else {
|
||||
if ($object->statut == 0 && $user->rights->commande->creer)
|
||||
{
|
||||
print '<tr><td></td><td><a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras">'.img_picto('','edit').' '.$langs->trans('Modify').'</a></td></tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$rowspan=4;
|
||||
|
||||
@ -1926,11 +1926,11 @@ if ($action == 'update_extras')
|
||||
{
|
||||
// Fill array 'array_options' with data from add form
|
||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||
if($ret < 0)
|
||||
$error++;
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute'));
|
||||
if ($ret < 0) $error++;
|
||||
|
||||
if(!$error) {
|
||||
if (! $error)
|
||||
{
|
||||
// Actions on extra fields (by external module or standard code)
|
||||
// FIXME le hook fait double emploi avec le trigger !!
|
||||
$hookmanager->initHooks(array('invoicedao'));
|
||||
@ -1938,22 +1938,16 @@ if ($action == 'update_extras')
|
||||
$reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||
if (empty($reshook))
|
||||
{
|
||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||
$result=$object->insertExtraFields();
|
||||
if ($result < 0)
|
||||
{
|
||||
$result=$object->insertExtraFields();
|
||||
if ($result < 0)
|
||||
{
|
||||
$error++;
|
||||
}
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
else if ($reshook < 0) $error++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$action = 'edit_extras';
|
||||
}
|
||||
|
||||
|
||||
if ($error) $action = 'edit_extras';
|
||||
}
|
||||
|
||||
|
||||
@ -3413,21 +3407,13 @@ else if ($id > 0 || ! empty($ref))
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
// Other attributes
|
||||
// Other attributes (TODO Move this into an include)
|
||||
$res=$object->fetch_optionals($object->id,$extralabels);
|
||||
$parameters=array('colspan' => ' colspan="2"');
|
||||
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
|
||||
if (empty($reshook) && ! empty($extrafields->attribute_label))
|
||||
{
|
||||
|
||||
if ($action == 'edit_extras')
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
}
|
||||
|
||||
foreach($extrafields->attribute_label as $key=>$label)
|
||||
{
|
||||
if ($action == 'edit_extras') {
|
||||
@ -3450,35 +3436,27 @@ else if ($id > 0 || ! empty($ref))
|
||||
$value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$db->jdate($object->array_options['options_'.$key]);
|
||||
}
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->facture->creer)
|
||||
if ($action == 'edit_extras' && $user->rights->facture->creer && GETPOST('attribute') == $key)
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="attribute" value="'.$key.'">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
print $extrafields->showInputField($key,$value);
|
||||
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print $extrafields->showOutputField($key,$value);
|
||||
if ($object->statut == 0 && $user->rights->facture->creer) print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras&attribute='.$key.'">'.img_picto('','edit').' '.$langs->trans('Modify').'</a>';
|
||||
}
|
||||
print '</td></tr>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
if(count($extrafields->attribute_label) > 0) {
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->facture->creer)
|
||||
{
|
||||
print '<tr><td></td><td colspan="5">';
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
print '</td></tr>';
|
||||
|
||||
}
|
||||
else {
|
||||
if ($object->statut == 0 && $user->rights->facture->creer)
|
||||
{
|
||||
print '<tr><td></td><td><a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras">'.img_picto('','edit').' '.$langs->trans('Modify').'</a></td></tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print '</table><br>';
|
||||
|
||||
@ -146,7 +146,9 @@ if ($action == 'create')
|
||||
/* ************************************************************************** */
|
||||
if ($action == 'edit' && ! empty($attrname))
|
||||
{
|
||||
print "<br>";
|
||||
$langs->load("members");
|
||||
|
||||
print "<br>";
|
||||
print_titre($langs->trans("FieldEdition", $attrname));
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php';
|
||||
|
||||
@ -1,37 +1,37 @@
|
||||
<?php
|
||||
/* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
|
||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||
* Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2013 Cedric Gross <c.gross@kreiz-it.fr>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
|
||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||
* Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2013 Cedric Gross <c.gross@kreiz-it.fr>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/compta/facture/class/facture.class.php
|
||||
* \ingroup facture
|
||||
* \brief File of class to manage invoices
|
||||
*/
|
||||
* \ingroup facture
|
||||
* \brief File of class to manage invoices
|
||||
*/
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/class/commoninvoice.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT .'/product/class/product.class.php';
|
||||
|
||||
@ -96,6 +96,7 @@ report_header($nom,$nomlink,$period,$periodlink,$description,$builddate,$exportl
|
||||
$p = explode(":", $conf->global->MAIN_INFO_SOCIETE_COUNTRY);
|
||||
$idpays = $p[0];
|
||||
|
||||
|
||||
$sql = "SELECT f.rowid, f.ref_supplier, f.type, f.datef, f.libelle,";
|
||||
$sql.= " fd.total_ttc, fd.tva_tx, fd.total_ht, fd.tva as total_tva, fd.product_type, fd.localtax1_tx, fd.localtax2_tx, fd.total_localtax1, fd.total_localtax2,";
|
||||
$sql.= " s.rowid as socid, s.nom as name, s.code_compta_fournisseur,";
|
||||
@ -111,6 +112,9 @@ if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.t
|
||||
else $sql.= " AND f.type IN (0,1,2,3)";
|
||||
if ($date_start && $date_end) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'";
|
||||
|
||||
// TODO Find a better trick to avoid problem with some mysql installations
|
||||
if (in_array($db->type, array('mysql', 'mysqli'))) $db->query('SET SQL_BIG_SELECTS=1');
|
||||
|
||||
dol_syslog("sql=".$sql);
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
|
||||
@ -116,6 +116,9 @@ $sql.= " AND fd.product_type IN (0,1)";
|
||||
if ($date_start && $date_end) $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'";
|
||||
$sql.= " ORDER BY f.rowid";
|
||||
|
||||
// TODO Find a better trick to avoid problem with some mysql installations
|
||||
if (in_array($db->type, array('mysql', 'mysqli'))) $db->query('SET SQL_BIG_SELECTS=1');
|
||||
|
||||
dol_syslog("sql=".$sql);
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
|
||||
@ -26,10 +26,8 @@
|
||||
|
||||
|
||||
/**
|
||||
* \class LignePrelevement
|
||||
* \brief Classe permettant la gestion des prelevements
|
||||
* Class to manage withdrawals
|
||||
*/
|
||||
|
||||
class LignePrelevement
|
||||
{
|
||||
var $id;
|
||||
|
||||
@ -297,20 +297,7 @@ if ($id > 0)
|
||||
}
|
||||
|
||||
// Type
|
||||
print "<tr><td>".$langs->trans("Type")."</td><td>".$object->type_libelle."</td><td>".$langs->trans("Payments")."</td></tr>";
|
||||
|
||||
// Period end date
|
||||
print "<tr><td>".$langs->trans("PeriodEndDate")."</td>";
|
||||
print "<td>";
|
||||
if ($action == 'edit')
|
||||
{
|
||||
print $form->select_date($object->periode, 'period', 0, 0, 0, 'charge', 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
print dol_print_date($object->periode,"day");
|
||||
}
|
||||
print "</td>";
|
||||
print "<tr><td>".$langs->trans("Type")."</td><td>".$object->type_libelle."</td>";
|
||||
|
||||
$rowspan=5;
|
||||
print '<td rowspan="'.$rowspan.'" valign="top">';
|
||||
@ -337,8 +324,8 @@ if ($id > 0)
|
||||
$i = 0; $total = 0;
|
||||
echo '<table class="nobordernopadding" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Date").'</td><td>'.$langs->trans("Type").'</td>';
|
||||
print '<td align="right">'.$langs->trans("Amount").'</td><td> </td></tr>';
|
||||
print '<td>'.$langs->trans("Payments").'</td><td>'.$langs->trans("Type").'</td>';
|
||||
print '<td align="right">'.$langs->trans("Amount").'</td><td> </td></tr>';
|
||||
|
||||
$var=True;
|
||||
while ($i < $num)
|
||||
@ -349,12 +336,12 @@ if ($id > 0)
|
||||
print '<a href="'.DOL_URL_ROOT.'/compta/payment_sc/fiche.php?id='.$objp->rowid.'">'.img_object($langs->trans("Payment"),"payment").'</a> ';
|
||||
print dol_print_date($db->jdate($objp->dp),'day')."</td>\n";
|
||||
print "<td>".$objp->paiement_type.' '.$objp->num_paiement."</td>\n";
|
||||
print '<td align="right">'.price($objp->amount)."</td><td> ".$langs->trans("Currency".$conf->currency)."</td>\n";
|
||||
print '<td align="right">'.price($objp->amount)."</td><td> ".$langs->trans("Currency".$conf->currency)."</td>\n";
|
||||
print "</tr>";
|
||||
$totalpaye += $objp->amount;
|
||||
$i++;
|
||||
}
|
||||
|
||||
|
||||
if ($object->paye == 0)
|
||||
{
|
||||
print "<tr><td colspan=\"2\" align=\"right\">".$langs->trans("AlreadyPaid")." :</td><td align=\"right\"><b>".price($totalpaye)."</b></td><td> ".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
|
||||
@ -376,6 +363,19 @@ if ($id > 0)
|
||||
|
||||
print "</tr>";
|
||||
|
||||
// Period end date
|
||||
print "<tr><td>".$langs->trans("PeriodEndDate")."</td>";
|
||||
print "<td>";
|
||||
if ($action == 'edit')
|
||||
{
|
||||
print $form->select_date($object->periode, 'period', 0, 0, 0, 'charge', 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
print dol_print_date($object->periode,"day");
|
||||
}
|
||||
print "</td></tr>";
|
||||
|
||||
// Due date
|
||||
if ($action == 'edit')
|
||||
{
|
||||
@ -393,8 +393,6 @@ if ($id > 0)
|
||||
// Status
|
||||
print '<tr><td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4).'</td></tr>';
|
||||
|
||||
print '<tr><td colspan="2"> </td></tr>';
|
||||
|
||||
print '</table>';
|
||||
|
||||
if ($action == 'edit')
|
||||
|
||||
@ -5,7 +5,8 @@
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerker@telenet.be>
|
||||
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -58,10 +59,11 @@ class Contact extends CommonObject
|
||||
var $country; // Label of country
|
||||
|
||||
var $socid; // fk_soc
|
||||
var $statut; // 0=brouillon, 1=4=actif, 5=inactif
|
||||
var $statut; // 0=inactif, 1=actif
|
||||
|
||||
var $code;
|
||||
var $email;
|
||||
var $skype;
|
||||
var $phone_pro;
|
||||
var $phone_perso;
|
||||
var $phone_mobile;
|
||||
@ -125,6 +127,7 @@ class Contact extends CommonObject
|
||||
$sql.= ", firstname";
|
||||
$sql.= ", fk_user_creat";
|
||||
$sql.= ", priv";
|
||||
$sql.= ", statut";
|
||||
$sql.= ", canvas";
|
||||
$sql.= ", entity";
|
||||
$sql.= ", import_key";
|
||||
@ -136,6 +139,7 @@ class Contact extends CommonObject
|
||||
$sql.= "'".$this->db->escape($this->firstname)."',";
|
||||
$sql.= " ".($user->id > 0 ? "'".$user->id."'":"null").",";
|
||||
$sql.= " ".$this->priv.",";
|
||||
$sql.= " ".$this->statut.",";
|
||||
$sql.= " ".(! empty($this->canvas)?"'".$this->canvas."'":"null").",";
|
||||
$sql.= " ".$conf->entity.",";
|
||||
$sql.= " ".(! empty($this->import_key)?"'".$this->import_key."'":"null");
|
||||
@ -224,11 +228,13 @@ class Contact extends CommonObject
|
||||
$this->phone_perso=trim($this->phone_perso);
|
||||
$this->phone_mobile=trim($this->phone_mobile);
|
||||
$this->jabberid=trim($this->jabberid);
|
||||
$this->skype=trim($this->skype);
|
||||
$this->fax=trim($this->fax);
|
||||
$this->zip=(empty($this->zip)?'':$this->zip);
|
||||
$this->town=(empty($this->town)?'':$this->town);
|
||||
$this->country_id=($this->country_id > 0?$this->country_id:$this->country_id);
|
||||
$this->state_id=($this->state_id > 0?$this->state_id:$this->fk_departement);
|
||||
if (empty($this->statut)) $this->statut = 0;
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
@ -246,6 +252,7 @@ class Contact extends CommonObject
|
||||
$sql .= ", poste='".$this->db->escape($this->poste)."'";
|
||||
$sql .= ", fax='".$this->db->escape($this->fax)."'";
|
||||
$sql .= ", email='".$this->db->escape($this->email)."'";
|
||||
$sql .= ", skype='".$this->db->escape($this->skype)."'";
|
||||
$sql .= ", note_private = ".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null");
|
||||
$sql .= ", note_public = ".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null");
|
||||
$sql .= ", phone = ".(isset($this->phone_pro)?"'".$this->db->escape($this->phone_pro)."'":"null");
|
||||
@ -253,6 +260,7 @@ class Contact extends CommonObject
|
||||
$sql .= ", phone_mobile = ".(isset($this->phone_mobile)?"'".$this->db->escape($this->phone_mobile)."'":"null");
|
||||
$sql .= ", jabberid = ".(isset($this->jabberid)?"'".$this->db->escape($this->jabberid)."'":"null");
|
||||
$sql .= ", priv = '".$this->priv."'";
|
||||
$sql .= ", statut = ".$this->statut;
|
||||
$sql .= ", fk_user_modif=".($user->id > 0 ? "'".$user->id."'":"NULL");
|
||||
$sql .= ", default_lang=".($this->default_lang?"'".$this->default_lang."'":"NULL");
|
||||
$sql .= ", no_email=".($this->no_email?"'".$this->no_email."'":"0");
|
||||
@ -375,6 +383,7 @@ class Contact extends CommonObject
|
||||
if ($this->phone_perso && ! empty($conf->global->LDAP_CONTACT_FIELD_HOMEPHONE)) $info[$conf->global->LDAP_CONTACT_FIELD_HOMEPHONE] = $this->phone_perso;
|
||||
if ($this->phone_mobile && ! empty($conf->global->LDAP_CONTACT_FIELD_MOBILE)) $info[$conf->global->LDAP_CONTACT_FIELD_MOBILE] = $this->phone_mobile;
|
||||
if ($this->fax && ! empty($conf->global->LDAP_CONTACT_FIELD_FAX)) $info[$conf->global->LDAP_CONTACT_FIELD_FAX] = $this->fax;
|
||||
if ($this->skype && ! empty($conf->global->LDAP_CONTACT_FIELD_SKYPE)) $info[$conf->global->LDAP_CONTACT_FIELD_SKYPE] = $this->skype;
|
||||
if ($this->note_private && ! empty($conf->global->LDAP_CONTACT_FIELD_DESCRIPTION)) $info[$conf->global->LDAP_CONTACT_FIELD_DESCRIPTION] = $this->note_private;
|
||||
if ($this->email && ! empty($conf->global->LDAP_CONTACT_FIELD_MAIL)) $info[$conf->global->LDAP_CONTACT_FIELD_MAIL] = $this->email;
|
||||
|
||||
@ -490,7 +499,7 @@ class Contact extends CommonObject
|
||||
$sql.= " c.fk_pays as country_id,";
|
||||
$sql.= " c.fk_departement,";
|
||||
$sql.= " c.birthday,";
|
||||
$sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid,";
|
||||
$sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid, c.skype,";
|
||||
$sql.= " c.priv, c.note_private, c.note_public, c.default_lang, c.no_email, c.canvas,";
|
||||
$sql.= " c.import_key,";
|
||||
$sql.= " p.libelle as country, p.code as country_code,";
|
||||
@ -545,6 +554,7 @@ class Contact extends CommonObject
|
||||
|
||||
$this->email = $obj->email;
|
||||
$this->jabberid = $obj->jabberid;
|
||||
$this->skype = $obj->skype;
|
||||
$this->priv = $obj->priv;
|
||||
$this->mail = $obj->email;
|
||||
|
||||
@ -933,45 +943,35 @@ class Contact extends CommonObject
|
||||
|
||||
if ($mode == 0)
|
||||
{
|
||||
if ($statut==0) return $langs->trans('StatusContactDraft');
|
||||
elseif ($statut==1) return $langs->trans('StatusContactValidated');
|
||||
elseif ($statut==4) return $langs->trans('StatusContactValidated');
|
||||
elseif ($statut==5) return $langs->trans('StatusContactValidated');
|
||||
if ($statut==0) return $langs->trans('Disabled');
|
||||
elseif ($statut==1) return $langs->trans('Enabled');
|
||||
}
|
||||
elseif ($mode == 1)
|
||||
{
|
||||
if ($statut==0) return $langs->trans('StatusContactDraftShort');
|
||||
elseif ($statut==1) return $langs->trans('StatusContactValidatedShort');
|
||||
elseif ($statut==4) return $langs->trans('StatusContactValidatedShort');
|
||||
elseif ($statut==5) return $langs->trans('StatusContactValidatedShort');
|
||||
if ($statut==0) return $langs->trans('Disabled');
|
||||
elseif ($statut==1) return $langs->trans('Enabled');
|
||||
}
|
||||
elseif ($mode == 2)
|
||||
{
|
||||
if ($statut==0) return img_picto($langs->trans('StatusContactDraftShort'),'statut0').' '.$langs->trans('StatusContactDraft');
|
||||
elseif ($statut==1) return img_picto($langs->trans('StatusContactValidatedShort'),'statut1').' '.$langs->trans('StatusContactValidated');
|
||||
elseif ($statut==4) return img_picto($langs->trans('StatusContactValidatedShort'),'statut4').' '.$langs->trans('StatusContactValidated');
|
||||
elseif ($statut==5) return img_picto($langs->trans('StatusContactValidatedShort'),'statut5').' '.$langs->trans('StatusContactValidated');
|
||||
if ($statut==0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled');
|
||||
elseif ($statut==1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled');
|
||||
|
||||
}
|
||||
elseif ($mode == 3)
|
||||
{
|
||||
if ($statut==0) return img_picto($langs->trans('StatusContactDraft'),'statut0');
|
||||
elseif ($statut==1) return img_picto($langs->trans('StatusContactValidated'),'statut1');
|
||||
elseif ($statut==4) return img_picto($langs->trans('StatusContactValidated'),'statut4');
|
||||
elseif ($statut==5) return img_picto($langs->trans('StatusContactValidated'),'statut5');
|
||||
if ($statut==0) return img_picto($langs->trans('Disabled'),'statut5');
|
||||
elseif ($statut==1) return img_picto($langs->trans('Enabled'),'statut4');
|
||||
|
||||
}
|
||||
elseif ($mode == 4)
|
||||
{
|
||||
if ($statut==0) return img_picto($langs->trans('StatusContactDraft'),'statut0').' '.$langs->trans('StatusContactDraft');
|
||||
elseif ($statut==1) return img_picto($langs->trans('StatusContactValidated'),'statut1').' '.$langs->trans('StatusContactValidated');
|
||||
elseif ($statut==4) return img_picto($langs->trans('StatusContactValidated'),'statut4').' '.$langs->trans('StatusContactValidated');
|
||||
elseif ($statut==5) return img_picto($langs->trans('StatusContactValidated'),'statut5').' '.$langs->trans('StatusContactValidated');
|
||||
if ($statut==0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('StatusContactDraft');
|
||||
elseif ($statut==1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled');
|
||||
}
|
||||
elseif ($mode == 5)
|
||||
{
|
||||
if ($statut==0) return '<span class="hideonsmartphone">'.$langs->trans('StatusContactDraftShort').' </span>'.img_picto($langs->trans('StatusContactDraftShort'),'statut0');
|
||||
elseif ($statut==1) return '<span class="hideonsmartphone">'.$langs->trans('StatusContactValidatedShort').' </span>'.img_picto($langs->trans('StatusContactValidatedShort'),'statut1');
|
||||
elseif ($statut==4) return '<span class="hideonsmartphone">'.$langs->trans('StatusContactValidatedShort').' </span>'.img_picto($langs->trans('StatusContactValidatedShort'),'statut4');
|
||||
elseif ($statut==5) return '<span class="hideonsmartphone">'.$langs->trans('StatusContactValidatedShort').' </span>'.img_picto($langs->trans('StatusContactValidatedShort'),'statut5');
|
||||
if ($statut==0) return '<span class="hideonsmartphone">'.$langs->trans('Disabled').' </span>'.img_picto($langs->trans('Disabled'),'statut5');
|
||||
elseif ($statut==1) return '<span class="hideonsmartphone">'.$langs->trans('Enabled').' </span>'.img_picto($langs->trans('Enabled'),'statut4');
|
||||
}
|
||||
|
||||
}
|
||||
@ -1031,6 +1031,7 @@ class Contact extends CommonObject
|
||||
$this->country_code = 'FR';
|
||||
$this->country = 'France';
|
||||
$this->email = 'specimen@specimen.com';
|
||||
$this->skype = 'tom.hanson';
|
||||
|
||||
$this->phone_pro = '0909090901';
|
||||
$this->phone_perso = '0909090902';
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -168,16 +169,18 @@ if (empty($reshook))
|
||||
$object->town = $_POST["town"];
|
||||
$object->country_id = $_POST["country_id"];
|
||||
$object->state_id = $_POST["state_id"];
|
||||
$object->skype = $_POST["skype"];
|
||||
$object->email = $_POST["email"];
|
||||
$object->phone_pro = $_POST["phone_pro"];
|
||||
$object->phone_perso = $_POST["phone_perso"];
|
||||
$object->phone_mobile = $_POST["phone_mobile"];
|
||||
$object->fax = $_POST["fax"];
|
||||
$object->jabberid = $_POST["jabberid"];
|
||||
$object->no_email = $_POST["no_email"];
|
||||
$object->no_email = $_POST["no_email"];
|
||||
$object->priv = $_POST["priv"];
|
||||
$object->note_public = GETPOST("note_public");
|
||||
$object->note_private = GETPOST("note_private");
|
||||
$object->statut = 1; //Defult status to Actif
|
||||
|
||||
// Note: Correct date should be completed with location to have exact GM time of birth.
|
||||
$object->birthday = dol_mktime(0,0,0,$_POST["birthdaymonth"],$_POST["birthdayday"],$_POST["birthdayyear"]);
|
||||
@ -267,6 +270,7 @@ if (empty($reshook))
|
||||
$object->country_id = $_POST["country_id"];
|
||||
|
||||
$object->email = $_POST["email"];
|
||||
$object->skype = $_POST["skype"];
|
||||
$object->phone_pro = $_POST["phone_pro"];
|
||||
$object->phone_perso = $_POST["phone_perso"];
|
||||
$object->phone_mobile = $_POST["phone_mobile"];
|
||||
@ -513,7 +517,7 @@ else
|
||||
print '<td>'.$langs->trans("No_Email").'</td><td>'.$form->selectyesno('no_email',(isset($_POST["no_email"])?$_POST["no_email"]:$object->no_email), 1).'</td>';
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
print '<td colspan="2"> </td>';
|
||||
}
|
||||
print '</tr>';
|
||||
@ -521,6 +525,12 @@ else
|
||||
// Instant message and no email
|
||||
print '<tr><td>'.$langs->trans("IM").'</td><td colspan="3"><input name="jabberid" type="text" size="50" maxlength="80" value="'.(isset($_POST["jabberid"])?$_POST["jabberid"]:$object->jabberid).'"></td></tr>';
|
||||
|
||||
// Skype
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
print '<tr><td>'.$langs->trans("Skype").'</td><td colspan="3"><input name="skype" type="text" size="50" maxlength="80" value="'.(isset($_POST["skype"])?$_POST["skype"]:$object->skype).'"></td></tr>';
|
||||
}
|
||||
|
||||
// Visibility
|
||||
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">';
|
||||
$selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate"));
|
||||
@ -711,7 +721,7 @@ else
|
||||
print '</tr>';
|
||||
|
||||
// Jabberid
|
||||
print '<tr><td>Jabberid</td><td><input name="jabberid" type="text" size="40" maxlength="80" value="'.(isset($_POST["jabberid"])?$_POST["jabberid"]:$object->jabberid).'"></td>';
|
||||
print '<tr><td>'.$langs->trans("Jabberid").'</td><td><input name="jabberid" type="text" size="40" maxlength="80" value="'.(isset($_POST["jabberid"])?$_POST["jabberid"]:$object->jabberid).'"></td>';
|
||||
if (! empty($conf->mailing->enabled))
|
||||
{
|
||||
print '<td>'.$langs->trans("No_Email").'</td><td>'.$form->selectyesno('no_email',(isset($_POST["no_email"])?$_POST["no_email"]:$object->no_email), 1).'</td>';
|
||||
@ -721,7 +731,13 @@ else
|
||||
print '<td colspan="2"> </td>';
|
||||
}
|
||||
print '</tr>';
|
||||
|
||||
|
||||
// Skype
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
print '<tr><td>'.$langs->trans("Skype").'</td><td><input name="skype" type="text" size="40" maxlength="80" value="'.(isset($_POST["skype"])?$_POST["skype"]:$object->skype).'"></td></tr>';
|
||||
}
|
||||
|
||||
// Visibility
|
||||
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">';
|
||||
$selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate"));
|
||||
@ -934,6 +950,12 @@ else
|
||||
print '<td colspan="2"> </td>';
|
||||
}
|
||||
print '</tr>';
|
||||
|
||||
// Skype
|
||||
if (!empty($conf->skype->enabled))
|
||||
{
|
||||
print '<tr><td>'.$langs->trans("Skype").'</td><td colspan="3">'.dol_print_skype($object->skype,0,$object->fk_soc,1).'</td></tr>';
|
||||
}
|
||||
|
||||
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td colspan="3">';
|
||||
print $object->LibPubPriv($object->priv);
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2013 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -48,6 +49,7 @@ $search_phonepro=GETPOST("search_phonepro");
|
||||
$search_phonemob=GETPOST("search_phonemob");
|
||||
$search_fax=GETPOST("search_fax");
|
||||
$search_email=GETPOST("search_email");
|
||||
$search_skype=GETPOST("search_skype");
|
||||
$search_priv=GETPOST("search_priv");
|
||||
$search_categ = GETPOST("search_categ",'int');
|
||||
$search_statut=GETPOST("search_statut");
|
||||
@ -99,6 +101,7 @@ if (GETPOST('button_removefilter'))
|
||||
$search_phonemob="";
|
||||
$search_fax="";
|
||||
$search_email="";
|
||||
$search_skype="";
|
||||
$search_priv="";
|
||||
$sall="";
|
||||
}
|
||||
@ -117,7 +120,7 @@ $form=new Form($db);
|
||||
$formother=new FormOther($db);
|
||||
|
||||
$sql = "SELECT s.rowid as socid, s.nom as name,";
|
||||
$sql.= " p.rowid as cidp, p.lastname as lastname, p.statut, p.firstname, p.poste, p.email,";
|
||||
$sql.= " p.rowid as cidp, p.lastname as lastname, p.statut, p.firstname, p.poste, p.email, p.skype,";
|
||||
$sql.= " p.phone, p.phone_mobile, p.fax, p.fk_pays, p.priv, p.tms,";
|
||||
$sql.= " cp.code as country_code";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as p";
|
||||
@ -185,6 +188,10 @@ if (strlen($search_email)) // filtre sur l'email
|
||||
{
|
||||
$sql .= " AND p.email LIKE '%".$db->escape($search_email)."%'";
|
||||
}
|
||||
if (strlen($search_skype)) // filtre sur skype
|
||||
{
|
||||
$sql .= " AND p.skype LIKE '%".$db->escape($search_skype)."%'";
|
||||
}
|
||||
if ($type == "o") // filtre sur type
|
||||
{
|
||||
$sql .= " AND p.fk_soc IS NULL";
|
||||
@ -281,9 +288,10 @@ if ($result)
|
||||
print_liste_field_titre($langs->trans("PhoneMobile"),$_SERVER["PHP_SELF"],"p.phone_mob", $begin, $param, '', $sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("Fax"),$_SERVER["PHP_SELF"],"p.fax", $begin, $param, '', $sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("EMail"),$_SERVER["PHP_SELF"],"p.email", $begin, $param, '', $sortfield,$sortorder);
|
||||
if (! empty($conf->skype->enabled)) { print_liste_field_titre($langs->trans("Skype"),$_SERVER["PHP_SELF"],"p.skype", $begin, $param, '', $sortfield,$sortorder); }
|
||||
print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"p.tms", $begin, $param, 'align="center"', $sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("ContactVisibility"),$_SERVER["PHP_SELF"],"p.priv", $begin, $param, 'align="center"', $sortfield,$sortorder);
|
||||
|
||||
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"p.statut", $begin, $param, 'align="center"', $sortfield,$sortorder);
|
||||
print '<td class="liste_titre"> </td>';
|
||||
print "</tr>\n";
|
||||
|
||||
@ -316,11 +324,18 @@ if ($result)
|
||||
print '<td class="liste_titre">';
|
||||
print '<input class="flat" type="text" name="search_email" size="8" value="'.$search_email.'">';
|
||||
print '</td>';
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
print '<td class="liste_titre">';
|
||||
print '<input class="flat" type="text" name="search_skype" size="8" value="'.$search_skype.'">';
|
||||
print '</td>';
|
||||
}
|
||||
print '<td class="liste_titre"> </td>';
|
||||
print '<td class="liste_titre" align="center">';
|
||||
$selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate"));
|
||||
print $form->selectarray('search_priv',$selectarray,$search_priv,1);
|
||||
print '</td>';
|
||||
print '<td class="liste_titre"> </td>';
|
||||
print '<td class="liste_titre" align="right">';
|
||||
print '<input type="image" value="button_search" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||
print ' ';
|
||||
@ -332,10 +347,8 @@ if ($result)
|
||||
while ($i < min($num,$limit))
|
||||
{
|
||||
$obj = $db->fetch_object($result);
|
||||
|
||||
if ($obj->statut == 1)
|
||||
{
|
||||
$var=!$var;
|
||||
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
|
||||
// Name
|
||||
@ -343,6 +356,7 @@ if ($result)
|
||||
$contactstatic->lastname=$obj->lastname;
|
||||
$contactstatic->firstname='';
|
||||
$contactstatic->id=$obj->cidp;
|
||||
$contactstatic->statut=$obj->statut;
|
||||
print $contactstatic->getNomUrl(1,'',20);
|
||||
print '</td>';
|
||||
|
||||
@ -376,12 +390,17 @@ if ($result)
|
||||
print '<td>'.dol_print_phone($obj->fax,$obj->country_code,$obj->cidp,$obj->socid,'AC_TEL').'</td>';
|
||||
// EMail
|
||||
print '<td>'.dol_print_email($obj->email,$obj->cidp,$obj->socid,'AC_EMAIL',18).'</td>';
|
||||
|
||||
// Skype
|
||||
if (! empty($conf->skype->enabled)) { print '<td>'.dol_print_skype($obj->skype,$obj->cidp,$obj->socid,'AC_SKYPE',18).'</td>'; }
|
||||
|
||||
// Date
|
||||
print '<td align="center">'.dol_print_date($db->jdate($obj->tms),"day").'</td>';
|
||||
|
||||
// Private/Public
|
||||
print '<td align="center">'.$contactstatic->LibPubPriv($obj->priv).'</td>';
|
||||
|
||||
// Status
|
||||
print '<td align="center">'.$contactstatic->getLibStatut(3).'</td>';
|
||||
|
||||
// Links Add action and Export vcard
|
||||
print '<td align="right">';
|
||||
@ -392,7 +411,6 @@ if ($result)
|
||||
print '</a></td>';
|
||||
|
||||
print "</tr>\n";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
|
||||
@ -87,7 +87,7 @@ if ($action == 'add')
|
||||
$mesg[]=$langs->trans("ErrorNoValueForRadioType");
|
||||
$action = 'create';
|
||||
}
|
||||
if (((GETPOST('type')=='radio') || (GETPOST('type')=='checkbox') || (GETPOST('type')=='radio')) && GETPOST('param'))
|
||||
if (((GETPOST('type')=='radio') || (GETPOST('type')=='checkbox')) && GETPOST('param'))
|
||||
{
|
||||
// Construct array for parameter (value of select list)
|
||||
$parameters = GETPOST('param');
|
||||
@ -124,11 +124,22 @@ if ($action == 'add')
|
||||
$default_value = GETPOST('default_value');
|
||||
$parameters = GETPOST('param');
|
||||
$parameters_array = explode("\r\n",$parameters);
|
||||
foreach($parameters_array as $param_ligne)
|
||||
//In sellist we have only one line and it can have come to do SQL expression
|
||||
if (GETPOST('type')=='sellist') {
|
||||
foreach($parameters_array as $param_ligne)
|
||||
{
|
||||
$params['options'] = array($parameters=>null);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
list($key,$value) = explode(',',$param_ligne);
|
||||
$params['options'][$key] = $value;
|
||||
}
|
||||
//Esle it's separated key/value and coma list
|
||||
foreach($parameters_array as $param_ligne)
|
||||
{
|
||||
list($key,$value) = explode(',',$param_ligne);
|
||||
$params['options'][$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$result=$extrafields->addExtraField($_POST['attrname'],$_POST['label'],$_POST['type'],$_POST['pos'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$default_value,$params);
|
||||
if ($result > 0)
|
||||
@ -215,7 +226,7 @@ if ($action == 'update')
|
||||
$mesg[]=$langs->trans("ErrorNoValueForRadioType");
|
||||
$action = 'edit';
|
||||
}
|
||||
if (((GETPOST('type')=='radio') || (GETPOST('type')=='checkbox') || (GETPOST('type')=='radio')) && GETPOST('param'))
|
||||
if (((GETPOST('type')=='radio') || (GETPOST('type')=='checkbox')) && GETPOST('param'))
|
||||
{
|
||||
// Construct array for parameter (value of select list)
|
||||
$parameters = GETPOST('param');
|
||||
@ -251,10 +262,21 @@ if ($action == 'update')
|
||||
// Construct array for parameter (value of select list)
|
||||
$parameters = GETPOST('param');
|
||||
$parameters_array = explode("\r\n",$parameters);
|
||||
foreach($parameters_array as $param_ligne)
|
||||
//In sellist we have only one line and it can have come to do SQL expression
|
||||
if (GETPOST('type')=='sellist') {
|
||||
foreach($parameters_array as $param_ligne)
|
||||
{
|
||||
$params['options'] = array($parameters=>null);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
list($key,$value) = explode(',',$param_ligne);
|
||||
$params['options'][$key] = $value;
|
||||
//Esle it's separated key/value and coma list
|
||||
foreach($parameters_array as $param_ligne)
|
||||
{
|
||||
list($key,$value) = explode(',',$param_ligne);
|
||||
$params['options'][$key] = $value;
|
||||
}
|
||||
}
|
||||
$result=$extrafields->update($_POST['attrname'],$_POST['label'],$_POST['type'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$pos,$params);
|
||||
if ($result > 0)
|
||||
|
||||
@ -3,7 +3,9 @@
|
||||
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||
* Copyright (C) 2011-2012 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||
* Copyright (C) 2011-2012 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -2043,6 +2045,7 @@ abstract class CommonObject
|
||||
|
||||
/**
|
||||
* Function to get extra fields of a member into $this->array_options
|
||||
* This method is in most cases called by method fetch of objects but you can call it separately.
|
||||
*
|
||||
* @param int $rowid Id of line
|
||||
* @param array $optionsArray Array resulting of call of extrafields->fetch_name_optionals_label()
|
||||
@ -2136,10 +2139,12 @@ abstract class CommonObject
|
||||
*/
|
||||
function insertExtraFields()
|
||||
{
|
||||
global $langs;
|
||||
global $conf,$langs;
|
||||
|
||||
$error=0;
|
||||
|
||||
if (! empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return 0; // For avoid conflicts if trigger used
|
||||
|
||||
if (! empty($this->array_options))
|
||||
{
|
||||
// Check parameters
|
||||
@ -2243,7 +2248,7 @@ abstract class CommonObject
|
||||
|
||||
$out = '';
|
||||
|
||||
if(count($extrafields->attribute_label) > 0)
|
||||
if (count($extrafields->attribute_label) > 0)
|
||||
{
|
||||
$out .= "\n";
|
||||
$out .= '<!-- showOptionalsInput --> ';
|
||||
@ -3194,14 +3199,14 @@ abstract class CommonObject
|
||||
}
|
||||
}
|
||||
if ($marginInfos['pa_products'] > 0)
|
||||
$marginInfos['margin_rate_products'] = 100 * round($marginInfos['margin_on_products'] / $marginInfos['pa_products'],5);
|
||||
$marginInfos['margin_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pa_products'];
|
||||
if ($marginInfos['pv_products'] > 0)
|
||||
$marginInfos['mark_rate_products'] = 100 * round($marginInfos['margin_on_products'] / $marginInfos['pv_products'],5);
|
||||
$marginInfos['mark_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pv_products'];
|
||||
|
||||
if ($marginInfos['pa_services'] > 0)
|
||||
$marginInfos['margin_rate_services'] = 100 * round($marginInfos['margin_on_services'] / $marginInfos['pa_services'],5);
|
||||
$marginInfos['margin_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pa_services'];
|
||||
if ($marginInfos['pv_services'] > 0)
|
||||
$marginInfos['mark_rate_services'] = 100 * round($marginInfos['margin_on_services'] / $marginInfos['pv_services'],5);
|
||||
$marginInfos['mark_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pv_services'];
|
||||
|
||||
// if credit note, margin = -1 * (abs(selling_price) - buying_price)
|
||||
if ($marginInfos['pv_total'] < 0)
|
||||
@ -3209,9 +3214,9 @@ abstract class CommonObject
|
||||
else
|
||||
$marginInfos['total_margin'] = $marginInfos['pv_total'] - $marginInfos['pa_total'];
|
||||
if ($marginInfos['pa_total'] > 0)
|
||||
$marginInfos['total_margin_rate'] = 100 * round($marginInfos['total_margin'] / $marginInfos['pa_total'],5);
|
||||
$marginInfos['total_margin_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pa_total'];
|
||||
if ($marginInfos['pv_total'] > 0)
|
||||
$marginInfos['total_mark_rate'] = 100 * round($marginInfos['total_margin'] / $marginInfos['pv_total'],5);
|
||||
$marginInfos['total_mark_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pv_total'];
|
||||
|
||||
return $marginInfos;
|
||||
}
|
||||
@ -3230,6 +3235,8 @@ abstract class CommonObject
|
||||
|
||||
if (! $user->rights->margins->liretous) return;
|
||||
|
||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
|
||||
$marginInfo = $this->getMarginInfos($force_price);
|
||||
|
||||
print '<table class="noborder" width="100%">';
|
||||
@ -3249,34 +3256,34 @@ abstract class CommonObject
|
||||
//if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) {
|
||||
print '<tr class="impair">';
|
||||
print '<td>'.$langs->trans('MarginOnProducts').'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pv_products']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pa_products']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['margin_on_products']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pv_products'], null, null, null, null, $rounding).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>';
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'n/a':price($marginInfo['margin_rate_products']).'%').'</td>';
|
||||
print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'n/a':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>';
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'n/a':price($marginInfo['mark_rate_products']).'%').'</td>';
|
||||
print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'n/a':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>';
|
||||
print '</tr>';
|
||||
print '<tr class="pair">';
|
||||
print '<td>'.$langs->trans('MarginOnServices').'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pv_services']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pa_services']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['margin_on_services']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pv_services'], null, null, null, null, $rounding).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pa_services'], null, null, null, null, $rounding).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>';
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'n/a':price($marginInfo['margin_rate_services']).'%').'</td>';
|
||||
print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'n/a':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>';
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'n/a':price($marginInfo['mark_rate_services']).'%').'</td>';
|
||||
print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'n/a':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>';
|
||||
print '</tr>';
|
||||
//}
|
||||
print '<tr class="impair">';
|
||||
print '<td>'.$langs->trans('TotalMargin').'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pv_total']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pa_total']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['total_margin']).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pv_total'], null, null, null, null, $rounding).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['pa_total'], null, null, null, null, $rounding).'</td>';
|
||||
print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>';
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'n/a':price($marginInfo['total_margin_rate']).'%').'</td>';
|
||||
print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'n/a':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>';
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'n/a':price($marginInfo['total_mark_rate']).'%').'</td>';
|
||||
print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'n/a':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>';
|
||||
print '</tr>';
|
||||
print '</table>';
|
||||
}
|
||||
|
||||
@ -688,36 +688,53 @@ class ExtraFields
|
||||
{
|
||||
$param_list=array_keys($param['options']);
|
||||
$InfoFieldList = explode(":", $param_list[0]);
|
||||
// 0 : tableName
|
||||
// 1 : label field name
|
||||
// 2 : key fields name (if differ of rowid)
|
||||
// 3 : key field parent (for dependent lists)
|
||||
// 4 : where clause filter on column or table extrafield, syntax field='value' or extra.field=value
|
||||
$keyList=(empty($InfoFieldList[2])?'rowid':$InfoFieldList[2].' as rowid');
|
||||
|
||||
// 0 1 : tableName
|
||||
// 1 2 : label field name Nom du champ contenant le libelle
|
||||
// 2 3 : key fields name (if differ of rowid)
|
||||
// 3 4 : key field parent (for dependent lists)
|
||||
|
||||
$keyList='rowid';
|
||||
|
||||
if (count($InfoFieldList)>=3)
|
||||
$keyList=$InfoFieldList[2].' as rowid';
|
||||
if (count($InfoFieldList)>=4) {
|
||||
if (count($InfoFieldList) > 3 && ! empty($InfoFieldList[3]))
|
||||
{
|
||||
list($parentName, $parentField) = explode('|', $InfoFieldList[3]);
|
||||
$keyList.= ', '.$parentField;
|
||||
}
|
||||
if (count($InfoFieldList) > 4 && ! empty($InfoFieldList[4]))
|
||||
{
|
||||
if (strpos($InfoFieldList[4], 'extra.') !== false)
|
||||
{
|
||||
$keyList='main.'.$InfoFieldList[2].' as rowid';
|
||||
} else {
|
||||
$keyList=$InfoFieldList[2].' as rowid';
|
||||
}
|
||||
}
|
||||
|
||||
$fields_label = explode('|',$InfoFieldList[1]);
|
||||
if(is_array($fields_label)) {
|
||||
$keyList .=', ';
|
||||
$keyList .= implode(', ', $fields_label);
|
||||
}
|
||||
|
||||
$fields_label = explode('|',$InfoFieldList[1]);
|
||||
if(is_array($fields_label)) {
|
||||
if (is_array($fields_label))
|
||||
{
|
||||
$keyList .=', ';
|
||||
$keyList .= implode(', ', $fields_label);
|
||||
}
|
||||
|
||||
$sqlwhere='';
|
||||
$sql = 'SELECT '.$keyList;
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0];
|
||||
//$sql.= ' WHERE entity = '.$conf->entity;
|
||||
if (!empty($InfoFieldList[4]))
|
||||
{
|
||||
//We have to join on extrafield table
|
||||
if (strpos($InfoFieldList[4], 'extra')!==false)
|
||||
{
|
||||
$sql.= ' as main, '.MAIN_DB_PREFIX .$InfoFieldList[0].'_extrafields as extra';
|
||||
$sqlwhere.= ' AND extra.fk_object=main.'.$InfoFieldList[2]. ' AND '.$InfoFieldList[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
$sqlwhere.= ' AND '.$InfoFieldList[4];
|
||||
}
|
||||
}
|
||||
if (in_array($InfoFieldList[0],array('tablewithentity'))) $sqlwhere.= ' AND entity = '.$conf->entity; // Some tables may have field, some other not. For the moment we disable it.
|
||||
$sql.=preg_replace('/^ AND /','',$sqlwhere);
|
||||
//print $sql;
|
||||
|
||||
dol_syslog(get_class($this).'::showInputField type=sellist sql='.$sql);
|
||||
@ -789,6 +806,9 @@ class ExtraFields
|
||||
}
|
||||
$this->db->free($resql);
|
||||
}
|
||||
else {
|
||||
print 'Error in request '.$sql.' '.$this->db->lasterror().'. Check setup of extra parameters.<br>';
|
||||
}
|
||||
}
|
||||
$out.='</select>';
|
||||
}
|
||||
@ -987,13 +1007,14 @@ class ExtraFields
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill array_options array for object by extrafields value (using for data send by forms)
|
||||
* Fill array_options property of object by extrafields value (using for data sent by forms)
|
||||
*
|
||||
* @param array $extralabels $array of extrafields
|
||||
* @param object &$object object
|
||||
* @param object &$object Object
|
||||
* @param string $onlykey Only following key is filled
|
||||
* @return int 1 if array_options set / 0 if no value
|
||||
*/
|
||||
function setOptionalsFromPost($extralabels,&$object)
|
||||
function setOptionalsFromPost($extralabels,&$object,$onlykey='')
|
||||
{
|
||||
global $_POST, $langs;
|
||||
$nofillrequired='';// For error when required field left blank
|
||||
@ -1004,6 +1025,8 @@ class ExtraFields
|
||||
// Get extra fields
|
||||
foreach ($extralabels as $key => $value)
|
||||
{
|
||||
if (! empty($onlykey) && $key != $onlykey) continue;
|
||||
|
||||
$key_type = $this->attribute_type[$key];
|
||||
if($this->attribute_required[$key] && !GETPOST("options_$key",2))
|
||||
{
|
||||
|
||||
@ -975,6 +975,7 @@ class Form
|
||||
}
|
||||
$sql.= " WHERE sp.entity IN (".getEntity('societe', 1).")";
|
||||
if ($socid > 0) $sql.= " AND sp.fk_soc=".$socid;
|
||||
if (! empty($conf->global->CONTACT_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND sp.statut<>0 ";
|
||||
$sql.= " ORDER BY sp.lastname ASC";
|
||||
|
||||
dol_syslog(get_class($this)."::select_contacts sql=".$sql);
|
||||
@ -1141,6 +1142,7 @@ class Form
|
||||
if (! empty($user->societe_id)) $sql.= " AND u.fk_societe = ".$user->societe_id;
|
||||
if (is_array($exclude) && $excludeUsers) $sql.= " AND u.rowid NOT IN ('".$excludeUsers."')";
|
||||
if (is_array($include) && $includeUsers) $sql.= " AND u.rowid IN ('".$includeUsers."')";
|
||||
if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND u.statut<>0 ";
|
||||
$sql.= " ORDER BY u.lastname ASC";
|
||||
|
||||
dol_syslog(get_class($this)."::select_dolusers sql=".$sql);
|
||||
@ -3662,7 +3664,7 @@ class Form
|
||||
* @param string $typehour if 'select' then input hour and input min is a combo, if 'text' input hour is in text and input min is a combo
|
||||
* @return void
|
||||
*/
|
||||
function select_duration($prefix,$iSecond='',$disabled=0,$typehour='select')
|
||||
function select_duration($prefix, $iSecond='', $disabled=0, $typehour='select')
|
||||
{
|
||||
global $langs;
|
||||
|
||||
@ -3678,7 +3680,7 @@ class Form
|
||||
if ($typehour=='select')
|
||||
{
|
||||
print '<select class="flat" name="'.$prefix.'hour"'.($disabled?' disabled="disabled"':'').'>';
|
||||
for ($hour = 0; $hour < 24; $hour++)
|
||||
for ($hour = 0; $hour < 25; $hour++) // For a duration, we allow 24 hours
|
||||
{
|
||||
print '<option value="'.$hour.'"';
|
||||
if ($hourSelected == $hour)
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
/* Copyright (c) 2008-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (c) 2010 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (c) 2013 Charles-Fr BENKE <charles.fr@benke.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
|
||||
@ -137,17 +138,17 @@ class FormFile
|
||||
$out .= ' ('.$langs->trans("UploadDisabled").')';
|
||||
}
|
||||
$out .= "</td></tr>";
|
||||
|
||||
|
||||
if ($savingdocmask)
|
||||
{
|
||||
$out .= '<tr>';
|
||||
if (! empty($options)) $out .= '<td>'.$options.'</td>';
|
||||
$out .= '<td valign="middle" class="nowrap">';
|
||||
$out .= '<input type="checkbox" checked="checked" name="savingdocmask" value="'.dol_escape_js($savingdocmask).'"> '.$langs->trans("SaveUploadedFileWithMask", preg_replace('/__file__/',$langs->transnoentitiesnoconv("OriginFileName"),$savingdocmask), $langs->transnoentitiesnoconv("OriginFileName"));
|
||||
$out .= '<input type="checkbox" checked="checked" name="savingdocmask" value="'.dol_escape_js($savingdocmask).'"> '.$langs->trans("SaveUploadedFileWithMask", preg_replace('/__file__/',$langs->transnoentitiesnoconv("OriginFileName"),$savingdocmask), $langs->transnoentitiesnoconv("OriginFileName"));
|
||||
$out .= '</td>';
|
||||
$out .= '</tr>';
|
||||
$out .= '</tr>';
|
||||
}
|
||||
|
||||
|
||||
$out .= "</table>";
|
||||
|
||||
$out .= '</form>';
|
||||
@ -662,12 +663,13 @@ class FormFile
|
||||
* @param int $permtodelete Permission to delete
|
||||
* @param int $useinecm Change output for use in ecm module
|
||||
* @param string $textifempty Text to show if filearray is empty ('NoFileFound' if not defined)
|
||||
* @param int $maxlength Maximum length of file name shown
|
||||
* @param int $maxlength Maximum length of file name shown
|
||||
* @param string $title Title before list
|
||||
* @param string $url Full url to use for click links ('' = autodetect)
|
||||
* @param int $showrelpart 0=Show only filename (default), 1=Show first level 1 dir
|
||||
* @return int <0 if KO, nb of files shown if OK
|
||||
*/
|
||||
function list_of_documents($filearray,$object,$modulepart,$param='',$forcedownload=0,$relativepath='',$permtodelete=1,$useinecm=0,$textifempty='',$maxlength=0,$title='',$url='')
|
||||
function list_of_documents($filearray,$object,$modulepart,$param='',$forcedownload=0,$relativepath='',$permtodelete=1,$useinecm=0,$textifempty='',$maxlength=0,$title='',$url='', $showrelpart=0)
|
||||
{
|
||||
global $user, $conf, $langs, $hookmanager;
|
||||
global $bc;
|
||||
@ -732,8 +734,15 @@ class FormFile
|
||||
print '<a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart='.$modulepart;
|
||||
if ($forcedownload) print '&attachment=1';
|
||||
if (! empty($object->entity)) print '&entity='.$object->entity;
|
||||
print '&file='.urlencode($relativepath.$file['name']).'">';
|
||||
//print '&file='.urlencode($relativepath.$file['name']).'">';
|
||||
if ($file['level1name'] <> $object->id)
|
||||
$filepath=urlencode($object->id.'/'.$file['level1name'].'/'.$file['name']);
|
||||
else
|
||||
$filepath=urlencode($object->id.'/'.$file['name']);
|
||||
print '&file='.$filepath.'">';
|
||||
|
||||
print img_mime($file['name'],$file['name'].' ('.dol_print_size($file['size'],0,0).')').' ';
|
||||
if ($showrelpart == 1) print $file['level1name'].'/';
|
||||
print dol_trunc($file['name'],$maxlength,'middle');
|
||||
print '</a>';
|
||||
print "</td>\n";
|
||||
@ -753,7 +762,14 @@ class FormFile
|
||||
// ($param must start with &)
|
||||
print '<td align="right">';
|
||||
if ($useinecm) print '<a href="'.DOL_URL_ROOT.'/ecm/docfile.php?urlfile='.urlencode($file['name']).$param.'" class="editfilelink" rel="'.urlencode($file['name']).$param.'">'.img_view().'</a> ';
|
||||
if ($permtodelete) print '<a href="'.(($useinecm && ! empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS))?'#':$url.'?action=delete&urlfile='.urlencode($file['name']).$param).'" class="deletefilelink" rel="'.urlencode($file['name']).$param.'">'.img_delete().'</a>';
|
||||
if ($permtodelete)
|
||||
{
|
||||
if ($file['level1name'] <> $object->id)
|
||||
$filepath=urlencode($file['level1name'].'/'.$file['name']);
|
||||
else
|
||||
$filepath=urlencode($file['name']);
|
||||
print '<a href="'.(($useinecm && ! empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS))?'#':$url.'?action=delete&urlfile='.$filepath.$param).'" class="deletefilelink" rel="'.$filepath.$param.'">'.img_delete().'</a>';
|
||||
}
|
||||
else print ' ';
|
||||
print "</td>";
|
||||
print "</tr>\n";
|
||||
|
||||
@ -78,7 +78,8 @@ class Ldap
|
||||
var $name;
|
||||
var $firstname;
|
||||
var $login;
|
||||
var $phone;
|
||||
var $phone;
|
||||
var $skype;
|
||||
var $fax;
|
||||
var $mail;
|
||||
var $mobile;
|
||||
@ -127,6 +128,7 @@ class Ldap
|
||||
$this->attr_firstname = $conf->global->LDAP_FIELD_FIRSTNAME;
|
||||
$this->attr_mail = $conf->global->LDAP_FIELD_MAIL;
|
||||
$this->attr_phone = $conf->global->LDAP_FIELD_PHONE;
|
||||
$this->attr_skype = $conf->global->LDAP_FIELD_SKYPE;
|
||||
$this->attr_fax = $conf->global->LDAP_FIELD_FAX;
|
||||
$this->attr_mobile = $conf->global->LDAP_FIELD_MOBILE;
|
||||
}
|
||||
@ -1172,6 +1174,7 @@ class Ldap
|
||||
$this->firstname = $this->convToOutputCharset($result[0][$this->attr_firstname][0],$this->ldapcharset);
|
||||
$this->login = $this->convToOutputCharset($result[0][$this->attr_login][0],$this->ldapcharset);
|
||||
$this->phone = $this->convToOutputCharset($result[0][$this->attr_phone][0],$this->ldapcharset);
|
||||
$this->skype = $this->convToOutputCharset($result[0][$this->attr_skype][0],$this->ldapcharset);
|
||||
$this->fax = $this->convToOutputCharset($result[0][$this->attr_fax][0],$this->ldapcharset);
|
||||
$this->mail = $this->convToOutputCharset($result[0][$this->attr_mail][0],$this->ldapcharset);
|
||||
$this->mobile = $this->convToOutputCharset($result[0][$this->attr_mobile][0],$this->ldapcharset);
|
||||
|
||||
@ -555,6 +555,11 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
print '<td>'.$langs->trans("PhoneMobile").'</td>';
|
||||
print '<td>'.$langs->trans("Fax").'</td>';
|
||||
print '<td>'.$langs->trans("EMail").'</td>';
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
$colspan++;
|
||||
print '<td>'.$langs->trans("Skype").'</td>';
|
||||
}
|
||||
print '<td>'.$langs->trans("Status").'</td>';
|
||||
print "<td> </td>";
|
||||
if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create)
|
||||
@ -570,7 +575,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
print "</tr>";
|
||||
|
||||
|
||||
$sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays, p.poste, p.phone, p.phone_mobile, p.fax, p.email, p.statut ";
|
||||
$sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays, p.poste, p.phone, p.phone_mobile, p.fax, p.email, p.skype, p.statut ";
|
||||
$sql .= ", p.civilite, p.address, p.zip, p.town";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p";
|
||||
$sql .= " WHERE p.fk_soc = ".$object->id;
|
||||
@ -614,6 +619,12 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
print '<td>';
|
||||
print dol_print_email($obj->email,$obj->rowid,$object->id,'AC_EMAIL');
|
||||
print '</td>';
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
print '<td>';
|
||||
print dol_print_skype($obj->skype,$obj->rowid,$object->id,'AC_SKYPE');
|
||||
print '</td>';
|
||||
}
|
||||
|
||||
if ($obj->statut==0) print '<td>'.$langs->trans('Disabled').' </span>'.img_picto($langs->trans('StatusContactDraftShort'),'statut0').'</td>';
|
||||
elseif ($obj->statut==1) print '<td>'.$langs->trans('Enabled').' </span>'.img_picto($langs->trans('StatusContactValidatedShort'),'statut1').'</td>';
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
|
||||
* Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -1185,6 +1186,48 @@ function dol_print_email($email,$cid=0,$socid=0,$addlink=0,$max=64,$showinvalid=
|
||||
return $newemail;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show Skype link
|
||||
*
|
||||
* @param string $skype Skype to show (only skype, without 'Name of recipient' before)
|
||||
* @param int $cid Id of contact if known
|
||||
* @param int $socid Id of third party if known
|
||||
* @param int $addlink 0=no link to create action
|
||||
* @param int $max Max number of characters to show
|
||||
* @return string HTML Link
|
||||
*/
|
||||
function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64)
|
||||
{
|
||||
global $conf,$user,$langs;
|
||||
|
||||
$newskype=$skype;
|
||||
|
||||
if (empty($skype)) return ' ';
|
||||
|
||||
if (! empty($addlink))
|
||||
{
|
||||
$newskype='<a href="skype:';
|
||||
$newskype.=dol_trunc($skype,$max);
|
||||
$newskype.='" alt="'.$langs->trans("Call").' '.$skype.'" title="'.$langs->trans("Call").' '.$skype.'">';
|
||||
$newskype.='<img src="../theme/'.$conf->theme.'/img/object_skype.png" border="0"> ';
|
||||
$newskype.=dol_trunc($skype,$max);
|
||||
$newskype.='</a>';
|
||||
|
||||
if (($cid || $socid) && ! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create)
|
||||
{
|
||||
$type='AC_SKYPE'; $link='';
|
||||
if (! empty($conf->global->AGENDA_ADDACTIONFORSKYPE)) $link='<a href="'.DOL_URL_ROOT.'/comm/action/fiche.php?action=create&backtopage=1&actioncode='.$type.'&contactid='.$cid.'&socid='.$socid.'">'.img_object($langs->trans("AddAction"),"calendar").'</a>';
|
||||
$newskype='<table class="nobordernopadding"><tr><td>'.$newskype.' </td><td> '.$link.'</td></tr></table>';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$langs->load("errors");
|
||||
$newskype.=img_warning($langs->trans("ErrorBadSkype",$skype));
|
||||
}
|
||||
return $newskype;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format phone numbers according to country
|
||||
*
|
||||
|
||||
@ -205,13 +205,15 @@ function dol_print_object_info($object)
|
||||
print $langs->trans("CreatedBy").': ';
|
||||
if (is_object($object->user_creation))
|
||||
{
|
||||
print $object->user_creation->getNomUrl(1);
|
||||
if ($object->user_creation->id) print $object->user_creation->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
else
|
||||
{
|
||||
$userstatic=new User($db);
|
||||
$userstatic->fetch($object->user_creation);
|
||||
print $userstatic->getNomUrl(1);
|
||||
if ($userstatic->id) print $userstatic->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
print '<br>';
|
||||
}
|
||||
@ -230,13 +232,15 @@ function dol_print_object_info($object)
|
||||
print $langs->trans("ModifiedBy").': ';
|
||||
if (is_object($object->user_modification))
|
||||
{
|
||||
print $object->user_modification->getNomUrl(1);
|
||||
if ($object->user_modification->id) print $object->user_modification->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
else
|
||||
{
|
||||
$userstatic=new User($db);
|
||||
$userstatic->fetch($object->user_modification);
|
||||
print $userstatic->getNomUrl(1);
|
||||
if ($userstatic->id) print $userstatic->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
print '<br>';
|
||||
}
|
||||
@ -255,13 +259,15 @@ function dol_print_object_info($object)
|
||||
print $langs->trans("ValidatedBy").': ';
|
||||
if (is_object($object->user_validation))
|
||||
{
|
||||
print $object->user_validation->getNomUrl(1);
|
||||
if ($object->user_validation->id) print $object->user_validation->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
else
|
||||
{
|
||||
$userstatic=new User($db);
|
||||
$userstatic->fetch($object->user_validation);
|
||||
print $userstatic->getNomUrl(1);
|
||||
if ($userstatic->id) print $userstatic->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
print '<br>';
|
||||
}
|
||||
@ -280,13 +286,15 @@ function dol_print_object_info($object)
|
||||
print $langs->trans("ApprovedBy").': ';
|
||||
if (is_object($object->user_approve))
|
||||
{
|
||||
print $object->user_approve->getNomUrl(1);
|
||||
if ($object->user_approve->id) print $object->user_approve->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
else
|
||||
{
|
||||
$userstatic=new User($db);
|
||||
$userstatic->fetch($object->user_approve);
|
||||
print $userstatic->getNomUrl(1);
|
||||
if ($userstatic->id) print $userstatic->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
print '<br>';
|
||||
}
|
||||
@ -305,13 +313,15 @@ function dol_print_object_info($object)
|
||||
print $langs->trans("ClosedBy").': ';
|
||||
if (is_object($object->user_cloture))
|
||||
{
|
||||
print $object->user_cloture->getNomUrl(1);
|
||||
if ($object->user_cloture->id) print $object->user_cloture->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
else
|
||||
{
|
||||
$userstatic=new User($db);
|
||||
$userstatic->fetch($object->user_cloture);
|
||||
print $userstatic->getNomUrl(1);
|
||||
if ($userstatic->id) print $userstatic->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
print '<br>';
|
||||
}
|
||||
@ -330,13 +340,15 @@ function dol_print_object_info($object)
|
||||
print $langs->trans("ConciliatedBy").': ';
|
||||
if (is_object($object->user_rappro))
|
||||
{
|
||||
print $object->user_rappro->getNomUrl(1);
|
||||
if ($object->user_rappro->id) print $object->user_rappro->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
else
|
||||
{
|
||||
$userstatic=new User($db);
|
||||
$userstatic->fetch($object->user_rappro);
|
||||
print $userstatic->getNomUrl(1);
|
||||
if ($userstatic->id) print $userstatic->getNomUrl(1);
|
||||
else print $langs->trans("Unknown");
|
||||
}
|
||||
print '<br>';
|
||||
}
|
||||
|
||||
@ -1,28 +1,28 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
/* Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2010 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2011 Juanjo Menent <jmenent@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
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* or see http://www.gnu.org/
|
||||
*/
|
||||
* Copyright (C) 2011 Juanjo Menent <jmenent@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
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* or see http://www.gnu.org/
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/lib/project.lib.php
|
||||
* \brief Functions used by project module
|
||||
* \ingroup project
|
||||
*/
|
||||
*/
|
||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||
|
||||
|
||||
@ -473,19 +473,24 @@ function projectLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksr
|
||||
print '</td>';
|
||||
|
||||
// Planned Workload
|
||||
print '<td align="center">';
|
||||
if ($lines[$i]->planned_workload) print convertSecondToTime($lines[$i]->planned_workload,'all');
|
||||
print '<td align="right">';
|
||||
if ($lines[$i]->planned_workload) print convertSecondToTime($lines[$i]->planned_workload,'allhourmin');
|
||||
else print '--:--';
|
||||
print '</td>';
|
||||
|
||||
// Progress
|
||||
// Progress declared %
|
||||
print '<td align="right">';
|
||||
print $lines[$i]->progress.' %';
|
||||
print '</td>';
|
||||
|
||||
// Time spent
|
||||
print '<td align="right">';
|
||||
if ($lines[$i]->duration) print convertSecondToTime($lines[$i]->duration,'all');
|
||||
if ($lines[$i]->duration)
|
||||
{
|
||||
print '<a href="'.DOL_URL_ROOT.'/projet/tasks/time.php?id='.$lines[$i]->id.'">';
|
||||
print convertSecondToTime($lines[$i]->duration,'allhourmin');
|
||||
print '</a>';
|
||||
}
|
||||
else print '--:--';
|
||||
print "</td>\n";
|
||||
|
||||
|
||||
@ -77,6 +77,11 @@ function dol_decode($chain)
|
||||
*/
|
||||
function dol_hash($chain,$type=0)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
// Salt value
|
||||
if (! empty($conf->global->MAIN_SECURITY_SALT)) $chain=$conf->global->MAIN_SECURITY_SALT.$chain;
|
||||
|
||||
if ($type == 1) return sha1($chain);
|
||||
else if ($type == 2) return sha1(md5($chain));
|
||||
else return md5($chain);
|
||||
|
||||
@ -116,7 +116,7 @@ function build_calfile($format,$title,$desc,$events_array,$outputfile)
|
||||
LOCATION:
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:Tache 1 heure
|
||||
SUMMARY:Tâche 1 heure
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
|
||||
@ -132,7 +132,7 @@ function build_calfile($format,$title,$desc,$events_array,$outputfile)
|
||||
LOCATION:
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:Tache 1 jour
|
||||
SUMMARY:Tâche 1 jour
|
||||
TRANSP:TRANSPARENT
|
||||
END:VEVENT
|
||||
*/
|
||||
|
||||
@ -125,28 +125,28 @@ class modProjet extends DolibarrModules
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 41; // id de la permission
|
||||
$this->rights[$r][1] = "Lire les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission
|
||||
$this->rights[$r][1] = "Lire les projets et tâches (partagés ou dont je suis contact)"; // libelle de la permission
|
||||
$this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
|
||||
$this->rights[$r][3] = 1; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'lire';
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 42; // id de la permission
|
||||
$this->rights[$r][1] = "Creer/modifier les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission
|
||||
$this->rights[$r][1] = "Creer/modifier les projets et tâches (partagés ou dont je suis contact)"; // libelle de la permission
|
||||
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
|
||||
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'creer';
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 44; // id de la permission
|
||||
$this->rights[$r][1] = "Supprimer les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission
|
||||
$this->rights[$r][1] = "Supprimer les projets et tâches (partagés ou dont je suis contact)"; // libelle de la permission
|
||||
$this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour)
|
||||
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'supprimer';
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 141; // id de la permission
|
||||
$this->rights[$r][1] = "Lire tous les projets et taches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission
|
||||
$this->rights[$r][1] = "Lire tous les projets et tâches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission
|
||||
$this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
|
||||
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'all';
|
||||
@ -154,7 +154,7 @@ class modProjet extends DolibarrModules
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 142; // id de la permission
|
||||
$this->rights[$r][1] = "Creer/modifier tous les projets et taches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission
|
||||
$this->rights[$r][1] = "Creer/modifier tous les projets et tâches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission
|
||||
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
|
||||
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'all';
|
||||
@ -162,7 +162,7 @@ class modProjet extends DolibarrModules
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 144; // id de la permission
|
||||
$this->rights[$r][1] = "Supprimer tous les projets et taches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission
|
||||
$this->rights[$r][1] = "Supprimer tous les projets et tâches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission
|
||||
$this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour)
|
||||
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'all';
|
||||
|
||||
136
htdocs/core/modules/modSkype.class.php
Normal file
136
htdocs/core/modules/modSkype.class.php
Normal file
@ -0,0 +1,136 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \defgroup Skype Module Skype
|
||||
* \brief Add a skype button.
|
||||
* \file htdocs/core/modules/modSkype.class.php
|
||||
* \ingroup Skype
|
||||
* \brief Description and activation file for module Skype
|
||||
*/
|
||||
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
|
||||
|
||||
/**
|
||||
* Class to describe a Cron module
|
||||
*/
|
||||
class modSkype extends DolibarrModules
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor. Define names, constants, directories, boxes, permissions
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
*/
|
||||
function __construct($db)
|
||||
{
|
||||
global $langs,$conf;
|
||||
|
||||
$this->db = $db;
|
||||
$this->numero = 3100;
|
||||
|
||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||
// It is used to group modules in module setup page
|
||||
$this->family = "crm";
|
||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||
$this->description = "Enable Skype button into contact";
|
||||
$this->version = 'experimental'; // 'experimental' or 'dolibarr' or version
|
||||
// Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase)
|
||||
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
|
||||
// Where to store the module in setup page (0=common,1=interface,2=others,3=very specific)
|
||||
$this->special = 2;
|
||||
// Name of image file used for this module.
|
||||
$this->picto='skype';
|
||||
|
||||
// Data directories to create when module is enabled
|
||||
$this->dirs = array();
|
||||
|
||||
// Config pages
|
||||
//-------------
|
||||
$this->config_page_url = array();
|
||||
|
||||
// Dependancies
|
||||
//-------------
|
||||
$this->hidden = ! empty($conf->global->SKYPE_MODULE_DISABLED); // A condition to disable module
|
||||
$this->depends = array('modSociete'); // List of modules id that must be enabled if this module is enabled
|
||||
$this->requiredby = array(); // List of modules id to disable if this one is disabled
|
||||
$this->conflictwith = array(); // List of modules id this module is in conflict with
|
||||
$this->langfiles = array();
|
||||
|
||||
// Constantes
|
||||
//-----------
|
||||
|
||||
|
||||
// New pages on tabs
|
||||
// -----------------
|
||||
$this->tabs = array();
|
||||
|
||||
// Boxes
|
||||
//------
|
||||
$this->boxes = array();
|
||||
|
||||
// Permissions
|
||||
//------------
|
||||
$this->rights = array(); // Permission array used by this module
|
||||
$this->rights_class = 'skype';
|
||||
$r=0;
|
||||
|
||||
$this->rights[$r][0] = 3101;
|
||||
$this->rights[$r][1] = 'View skype link';
|
||||
$this->rights[$r][3] = 1;
|
||||
$this->rights[$r][4] = 'view';
|
||||
$r++;
|
||||
|
||||
// Main menu entries
|
||||
//------------------
|
||||
$this->menu = array();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function called when module is enabled.
|
||||
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
|
||||
* It also creates data directories
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function init($options='')
|
||||
{
|
||||
// Prevent pb of modules not correctly disabled
|
||||
//$this->remove($options);
|
||||
|
||||
return $this->_init($sql,$options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function called when module is disabled.
|
||||
* Remove from database constants, boxes and permissions from Dolibarr database.
|
||||
* Data directories are not deleted
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function remove($options='')
|
||||
{
|
||||
$sql = array();
|
||||
|
||||
return $this->_remove($sql,$options);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@ -25,8 +25,9 @@ if (GETPOST('dol_optimize_smallscreen')) $conf->dol_optimize_smallscreen=1;
|
||||
if (GETPOST('dol_no_mouse_hover')) $conf->dol_no_mouse_hover=1;
|
||||
if (GETPOST('dol_use_jmobile')) $conf->dol_use_jmobile=1;
|
||||
|
||||
$arrayofjs=array('/core/js/dst.js'); // Javascript code on logon page only to detect user tz, dst_observed, dst_first, dst_second
|
||||
print top_htmlhead('',$langs->trans('Login').' '.$title,0,0,$arrayofjs);
|
||||
$arrayofjs=array('/core/js/dst.js'); // Javascript code on logon page only to detect user tz, dst_observed, dst_first, dst_second
|
||||
$titleofloginpage=$langs->trans('Login').' '.$title; // title is defined by dol_loginfunction in security2.lib.php
|
||||
print top_htmlhead('',$titleofloginpage,0,0,$arrayofjs);
|
||||
?>
|
||||
<!-- BEGIN PHP TEMPLATE LOGIN.TPL.PHP -->
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/* Copyright (C) 2010-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2010-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||
* Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -121,14 +121,15 @@
|
||||
<?php }
|
||||
|
||||
if (! empty($conf->margin->enabled) && empty($user->societe_id)) {
|
||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
?>
|
||||
<td align="right" class="nowrap"><?php $coldisplay++; ?><?php echo price($line->pa_ht); ?></td>
|
||||
<?php if (! empty($conf->global->DISPLAY_MARGIN_RATES) && $user->rights->margins->liretous) {?>
|
||||
<td align="right" class="nowrap"><?php $coldisplay++; ?><?php echo (($line->pa_ht == 0)?'n/a':price($line->marge_tx).'%'); ?></td>
|
||||
<td align="right" class="nowrap"><?php $coldisplay++; ?><?php echo (($line->pa_ht == 0)?'n/a':price($line->marge_tx, null, null, null, null, $rounding).'%'); ?></td>
|
||||
<?php
|
||||
}
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES) && $user->rights->margins->liretous) {?>
|
||||
<td align="right" class="nowrap"><?php $coldisplay++; ?><?php echo price($line->marque_tx).'%'; ?></td>
|
||||
<td align="right" class="nowrap"><?php $coldisplay++; ?><?php echo price($line->marque_tx, null, null, null, null, $rounding).'%'; ?></td>
|
||||
<?php } } ?>
|
||||
|
||||
<?php if ($line->special_code == 3) { ?>
|
||||
|
||||
@ -120,7 +120,7 @@ if ($action=='add')
|
||||
$object->unitfrequency=GETPOST('unitfrequency','int');
|
||||
$object->frequency=$object->unitfrequency * GETPOST('nbfrequency','int');
|
||||
|
||||
//Ajout de la tache cron
|
||||
//Add cron task
|
||||
$result = $object->create($user);
|
||||
|
||||
// test du Resultat de la requete
|
||||
@ -154,7 +154,7 @@ if ($action=='update')
|
||||
$object->unitfrequency=GETPOST('unitfrequency','int');
|
||||
$object->frequency=$object->unitfrequency * GETPOST('nbfrequency','int');
|
||||
|
||||
//Ajout de la tache cron
|
||||
//Add cron task
|
||||
$result = $object->update($user);
|
||||
|
||||
// test du Resultat de la requete
|
||||
@ -172,7 +172,7 @@ if ($action=='activate')
|
||||
{
|
||||
$object->status=1;
|
||||
|
||||
//Ajout de la tache cron
|
||||
//Add cron task
|
||||
$result = $object->update($user);
|
||||
|
||||
// test du Resultat de la requete
|
||||
@ -189,7 +189,7 @@ if ($action=='activate')
|
||||
if ($action=='inactive')
|
||||
{
|
||||
$object->status=0;
|
||||
//Ajout de la tache cron
|
||||
//Add cron task
|
||||
$result = $object->update($user);
|
||||
|
||||
// test du Resultat de la requete
|
||||
|
||||
@ -79,7 +79,7 @@ if (!empty($search_label))
|
||||
// Delete jobs
|
||||
if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->cron->delete){
|
||||
|
||||
//Delete de la tache cron
|
||||
//Delete cron task
|
||||
$object = new Cronjob($db);
|
||||
$object->id=$id;
|
||||
$result = $object->delete($user);
|
||||
|
||||
@ -569,7 +569,7 @@ class Expedition extends CommonObject
|
||||
if (preg_match('/^[\(]?PROV/i', $this->ref))
|
||||
{
|
||||
// On renomme repertoire ($this->ref = ancienne ref, $numfa = nouvelle ref)
|
||||
// afin de ne pas perdre les fichiers attaches
|
||||
// in order not to lose the attached files
|
||||
$oldref = dol_sanitizeFileName($this->ref);
|
||||
$newref = dol_sanitizeFileName($numref);
|
||||
$dirsource = $conf->expedition->dir_output.'/sending/'.$oldref;
|
||||
|
||||
@ -71,7 +71,7 @@ print_fiche_titre($langs->trans("InterventionsSetup"),$linkback,'setup');
|
||||
|
||||
$head=fichinter_admin_prepare_head();
|
||||
|
||||
dol_fiche_head($head, 'attributes', $langs->trans("Ficheinter"), 0, 'fichinter');
|
||||
dol_fiche_head($head, 'attributes', $langs->trans("Interventions"), 0, 'intervention');
|
||||
|
||||
|
||||
print $langs->trans("DefineHereComplementaryAttributes",$textobject).'<br>'."\n";
|
||||
|
||||
@ -607,9 +607,9 @@ class Fichinter extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* Information sur l'objet fiche intervention
|
||||
* Load information on object
|
||||
*
|
||||
* @param int $id Id de la fiche d'intervention
|
||||
* @param int $id Id of object
|
||||
* @return void
|
||||
*/
|
||||
function info($id)
|
||||
@ -625,13 +625,12 @@ class Fichinter extends CommonObject
|
||||
$sql.= " WHERE f.rowid = ".$id;
|
||||
$sql.= " AND f.entity = ".$conf->entity;
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
|
||||
if ($result)
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
if ($this->db->num_rows($result))
|
||||
if ($this->db->num_rows($resql))
|
||||
{
|
||||
$obj = $this->db->fetch_object($result);
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$this->id = $obj->rowid;
|
||||
|
||||
@ -649,7 +648,7 @@ class Fichinter extends CommonObject
|
||||
$this->user_validation = $vuser;
|
||||
}
|
||||
}
|
||||
$this->db->free($result);
|
||||
$this->db->free($resql);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -1,29 +1,29 @@
|
||||
<?php
|
||||
/* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/fichinter/fiche.php
|
||||
* \brief Fichier fiche intervention
|
||||
* \ingroup ficheinter
|
||||
*/
|
||||
* \brief Fichier fiche intervention
|
||||
* \ingroup ficheinter
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
|
||||
@ -79,16 +79,22 @@ $object = new Fichinter($db);
|
||||
$extrafields = new ExtraFields($db);
|
||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||
|
||||
// Load object
|
||||
if ($id > 0 || ! empty($ref))
|
||||
{
|
||||
$ret=$object->fetch($id, $ref);
|
||||
if ($ret > 0) $ret=$object->fetch_thirdparty();
|
||||
if ($ret < 0) dol_print_error('',$object->error);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
*/
|
||||
|
||||
if ($action == 'confirm_validate' && $confirm == 'yes' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$object->fetch_thirdparty();
|
||||
|
||||
$result = $object->setValid($user);
|
||||
if ($result >= 0)
|
||||
{
|
||||
@ -114,9 +120,6 @@ if ($action == 'confirm_validate' && $confirm == 'yes' && $user->rights->fichein
|
||||
|
||||
else if ($action == 'confirm_modify' && $confirm == 'yes' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$object->fetch_thirdparty();
|
||||
|
||||
$result = $object->setDraft($user);
|
||||
if ($result >= 0)
|
||||
{
|
||||
@ -309,8 +312,6 @@ else if ($action == 'add' && $user->rights->ficheinter->creer)
|
||||
|
||||
else if ($action == 'update' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
|
||||
$object->socid = $socid;
|
||||
$object->fk_project = GETPOST('projectid','int');
|
||||
$object->fk_contrat = GETPOST('contratid','int');
|
||||
@ -326,11 +327,9 @@ else if ($action == 'update' && $user->rights->ficheinter->creer)
|
||||
|
||||
/*
|
||||
* Build doc
|
||||
*/
|
||||
*/
|
||||
else if ($action == 'builddoc' && $user->rights->ficheinter->creer) // En get ou en post
|
||||
{
|
||||
$object->fetch($id);
|
||||
$object->fetch_thirdparty();
|
||||
$object->fetch_lines();
|
||||
|
||||
// Save last template used to generate document
|
||||
@ -357,25 +356,21 @@ else if ($action == 'builddoc' && $user->rights->ficheinter->creer) // En get ou
|
||||
// Remove file in doc form
|
||||
else if ($action == 'remove_file')
|
||||
{
|
||||
if ($object->fetch($id))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
|
||||
$object->fetch_thirdparty();
|
||||
$object->fetch_thirdparty();
|
||||
|
||||
$langs->load("other");
|
||||
$upload_dir = $conf->ficheinter->dir_output;
|
||||
$file = $upload_dir . '/' . GETPOST('file');
|
||||
$ret=dol_delete_file($file,0,0,0,$object);
|
||||
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
|
||||
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
|
||||
}
|
||||
$langs->load("other");
|
||||
$upload_dir = $conf->ficheinter->dir_output;
|
||||
$file = $upload_dir . '/' . GETPOST('file');
|
||||
$ret=dol_delete_file($file,0,0,0,$object);
|
||||
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
|
||||
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
|
||||
}
|
||||
|
||||
// Set into a project
|
||||
else if ($action == 'classin' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result=$object->setProject(GETPOST('projectid','int'));
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
@ -383,15 +378,12 @@ else if ($action == 'classin' && $user->rights->ficheinter->creer)
|
||||
// Set into a contract
|
||||
else if ($action == 'setcontrat' && $user->rights->contrat->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result=$object->set_contrat($user,GETPOST('contratid','int'));
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->ficheinter->supprimer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$object->fetch_thirdparty();
|
||||
$result=$object->delete($user);
|
||||
if ($result<0) {
|
||||
setEventMessage($object->error,'errors');
|
||||
@ -403,19 +395,16 @@ else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->fich
|
||||
|
||||
else if ($action == 'setdescription' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result=$object->set_description($user,GETPOST('description'));
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
else if ($action == 'setnote_public' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_public'), ENT_QUOTES),'_public');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
else if ($action == 'setnote_private' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES), '_private');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
@ -433,13 +422,15 @@ else if ($action == "addline" && $user->rights->ficheinter->creer)
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Duration")).'</div>';
|
||||
$error++;
|
||||
}
|
||||
if (GETPOST('durationhour','int') >= 24 && GETPOST('durationmin','int') > 0)
|
||||
{
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorValueTooHigh").'</div>';
|
||||
$error++;
|
||||
}
|
||||
if (! $error)
|
||||
{
|
||||
$db->begin();
|
||||
|
||||
$ret=$object->fetch($id);
|
||||
$object->fetch_thirdparty();
|
||||
|
||||
$desc=GETPOST('np_desc');
|
||||
$date_intervention = dol_mktime(GETPOST('dihour','int'), GETPOST('dimin','int'), 0, GETPOST('dimonth','int'), GETPOST('diday','int'), GETPOST('diyear','int'));
|
||||
$duration = convertTime2Seconds(GETPOST('durationhour','int'), GETPOST('durationmin','int'));
|
||||
@ -482,7 +473,6 @@ else if ($action == "addline" && $user->rights->ficheinter->creer)
|
||||
// Classify Billed
|
||||
else if ($action == 'classifybilled' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result=$object->setBilled();
|
||||
if ($result > 0)
|
||||
{
|
||||
@ -582,8 +572,6 @@ else if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->
|
||||
|
||||
else if ($action == 'up' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$object->fetch_thirdparty();
|
||||
$object->line_up(GETPOST('line_id','int'));
|
||||
|
||||
// Define output language
|
||||
@ -603,8 +591,6 @@ else if ($action == 'up' && $user->rights->ficheinter->creer)
|
||||
|
||||
else if ($action == 'down' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$object->fetch_thirdparty();
|
||||
$object->line_down(GETPOST('line_id','int'));
|
||||
|
||||
// Define output language
|
||||
@ -661,159 +647,148 @@ if ($action == 'send' && ! GETPOST('cancel','alpha') && (empty($conf->global->MA
|
||||
{
|
||||
$langs->load('mails');
|
||||
|
||||
if ($object->fetch($id) > 0)
|
||||
if (GETPOST('sendto','alpha'))
|
||||
{
|
||||
$object->fetch_thirdparty();
|
||||
|
||||
if (GETPOST('sendto','alpha'))
|
||||
// Le destinataire a ete fourni via le champ libre
|
||||
$sendto = GETPOST('sendto','alpha');
|
||||
$sendtoid = 0;
|
||||
}
|
||||
elseif (GETPOST('receiver','alpha') != '-1')
|
||||
{
|
||||
// Recipient was provided from combo list
|
||||
if (GETPOST('receiver','alpha') == 'thirdparty') // Id of third party
|
||||
{
|
||||
// Le destinataire a ete fourni via le champ libre
|
||||
$sendto = GETPOST('sendto','alpha');
|
||||
$sendto = $object->client->email;
|
||||
$sendtoid = 0;
|
||||
}
|
||||
elseif (GETPOST('receiver','alpha') != '-1')
|
||||
else // Id du contact
|
||||
{
|
||||
// Recipient was provided from combo list
|
||||
if (GETPOST('receiver','alpha') == 'thirdparty') // Id of third party
|
||||
$sendto = $object->client->contact_get_property(GETPOST('receiver'),'email');
|
||||
$sendtoid = GETPOST('receiver','alpha');
|
||||
}
|
||||
}
|
||||
|
||||
if (dol_strlen($sendto))
|
||||
{
|
||||
$langs->load("commercial");
|
||||
|
||||
$from = GETPOST('fromname','alpha') . ' <' . GETPOST('frommail','alpha') .'>';
|
||||
$replyto = GETPOST('replytoname','alpha'). ' <' . GETPOST('replytomail','alpha').'>';
|
||||
$message = GETPOST('message');
|
||||
$sendtocc = GETPOST('sendtocc','alpha');
|
||||
$deliveryreceipt = GETPOST('deliveryreceipt','alpha');
|
||||
|
||||
if ($action == 'send')
|
||||
{
|
||||
if (strlen(GETPOST('subject','alphs'))) $subject = GETPOST('subject','alpha');
|
||||
else $subject = $langs->transnoentities('Intervention').' '.$object->ref;
|
||||
$actiontypecode='AC_OTH_AUTO';
|
||||
$actionmsg = $langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto.".\n";
|
||||
if ($message)
|
||||
{
|
||||
$sendto = $object->client->email;
|
||||
$sendtoid = 0;
|
||||
}
|
||||
else // Id du contact
|
||||
{
|
||||
$sendto = $object->client->contact_get_property(GETPOST('receiver'),'email');
|
||||
$sendtoid = GETPOST('receiver','alpha');
|
||||
$actionmsg.=$langs->transnoentities('MailTopic').": ".$subject."\n";
|
||||
$actionmsg.=$langs->transnoentities('TextUsedInTheMessageBody').":\n";
|
||||
$actionmsg.=$message;
|
||||
}
|
||||
$actionmsg2=$langs->transnoentities('Action'.$actiontypecode);
|
||||
}
|
||||
|
||||
if (dol_strlen($sendto))
|
||||
// Create form object
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
|
||||
$formmail = new FormMail($db);
|
||||
|
||||
$attachedfiles=$formmail->get_attached_files();
|
||||
$filepath = $attachedfiles['paths'];
|
||||
$filename = $attachedfiles['names'];
|
||||
$mimetype = $attachedfiles['mimes'];
|
||||
|
||||
// Envoi de la propal
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
|
||||
$mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt,-1);
|
||||
if ($mailfile->error)
|
||||
{
|
||||
$langs->load("commercial");
|
||||
|
||||
$from = GETPOST('fromname','alpha') . ' <' . GETPOST('frommail','alpha') .'>';
|
||||
$replyto = GETPOST('replytoname','alpha'). ' <' . GETPOST('replytomail','alpha').'>';
|
||||
$message = GETPOST('message');
|
||||
$sendtocc = GETPOST('sendtocc','alpha');
|
||||
$deliveryreceipt = GETPOST('deliveryreceipt','alpha');
|
||||
|
||||
if ($action == 'send')
|
||||
$mesg='<div class="error">'.$mailfile->error.'</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$result=$mailfile->sendfile();
|
||||
if ($result)
|
||||
{
|
||||
if (strlen(GETPOST('subject','alphs'))) $subject = GETPOST('subject','alpha');
|
||||
else $subject = $langs->transnoentities('Intervention').' '.$object->ref;
|
||||
$actiontypecode='AC_OTH_AUTO';
|
||||
$actionmsg = $langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto.".\n";
|
||||
if ($message)
|
||||
{
|
||||
$actionmsg.=$langs->transnoentities('MailTopic').": ".$subject."\n";
|
||||
$actionmsg.=$langs->transnoentities('TextUsedInTheMessageBody').":\n";
|
||||
$actionmsg.=$message;
|
||||
$mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2));
|
||||
setEventMessage($mesg);
|
||||
$error=0;
|
||||
|
||||
// Initialisation donnees
|
||||
$object->sendtoid = $sendtoid;
|
||||
$object->actiontypecode = $actiontypecode;
|
||||
$object->actionmsg = $actionmsg;
|
||||
$object->actionmsg2 = $actionmsg2;
|
||||
$object->fk_element = $object->id;
|
||||
$object->elementtype = $object->element;
|
||||
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($db);
|
||||
$result=$interface->run_triggers('FICHINTER_SENTBYMAIL',$object,$user,$langs,$conf);
|
||||
if ($result < 0) {
|
||||
$error++; $this->errors=$interface->errors;
|
||||
}
|
||||
$actionmsg2=$langs->transnoentities('Action'.$actiontypecode);
|
||||
}
|
||||
// Fin appel triggers
|
||||
|
||||
// Create form object
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
|
||||
$formmail = new FormMail($db);
|
||||
|
||||
$attachedfiles=$formmail->get_attached_files();
|
||||
$filepath = $attachedfiles['paths'];
|
||||
$filename = $attachedfiles['names'];
|
||||
$mimetype = $attachedfiles['mimes'];
|
||||
|
||||
// Envoi de la propal
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
|
||||
$mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt,-1);
|
||||
if ($mailfile->error)
|
||||
{
|
||||
$mesg='<div class="error">'.$mailfile->error.'</div>';
|
||||
if ($error)
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Redirect here
|
||||
// This avoid sending mail twice if going out and then back to page
|
||||
header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$result=$mailfile->sendfile();
|
||||
if ($result)
|
||||
$langs->load("other");
|
||||
$mesg='<div class="error">';
|
||||
if ($mailfile->error)
|
||||
{
|
||||
$mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2));
|
||||
setEventMessage($mesg);
|
||||
$error=0;
|
||||
|
||||
// Initialisation donnees
|
||||
$object->sendtoid = $sendtoid;
|
||||
$object->actiontypecode = $actiontypecode;
|
||||
$object->actionmsg = $actionmsg;
|
||||
$object->actionmsg2 = $actionmsg2;
|
||||
$object->fk_element = $object->id;
|
||||
$object->elementtype = $object->element;
|
||||
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($db);
|
||||
$result=$interface->run_triggers('FICHINTER_SENTBYMAIL',$object,$user,$langs,$conf);
|
||||
if ($result < 0) {
|
||||
$error++; $this->errors=$interface->errors;
|
||||
}
|
||||
// Fin appel triggers
|
||||
|
||||
if ($error)
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Redirect here
|
||||
// This avoid sending mail twice if going out and then back to page
|
||||
header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$langs->load("other");
|
||||
$mesg='<div class="error">';
|
||||
if ($mailfile->error)
|
||||
{
|
||||
$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
|
||||
$mesg.='<br>'.$mailfile->error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS';
|
||||
}
|
||||
$mesg.='</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$langs->load("other");
|
||||
$mesg='<div class="error">'.$langs->trans('ErrorMailRecipientIsEmpty').' !</div>';
|
||||
dol_syslog('Recipient email is empty');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$langs->load("other");
|
||||
$mesg='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Intervention")).'</div>';
|
||||
dol_syslog('Impossible de lire les donnees de l\'intervention. Le fichier intervention n\'a peut-etre pas ete genere.');
|
||||
}
|
||||
$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
|
||||
$mesg.='<br>'.$mailfile->error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS';
|
||||
}
|
||||
$mesg.='</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$langs->load("other");
|
||||
$mesg='<div class="error">'.$langs->trans('ErrorMailRecipientIsEmpty').' !</div>';
|
||||
dol_syslog('Recipient email is empty');
|
||||
}
|
||||
|
||||
$action='presend';
|
||||
}
|
||||
|
||||
else if ($action == 'update_extras')
|
||||
{
|
||||
$object->fetch($id);
|
||||
// Fill array 'array_options' with data from update form
|
||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||
|
||||
// Actions on extra fields (by external module or standard code)
|
||||
// FIXME le hook fait double emploi avec le trigger !!
|
||||
$hookmanager->initHooks(array('interventiondao'));
|
||||
$parameters=array('id'=>$object->id);
|
||||
$reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||
if (empty($reshook))
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute'));
|
||||
if ($ret < 0) $error++;
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||
// Actions on extra fields (by external module or standard code)
|
||||
// FIXME le hook fait double emploi avec le trigger !!
|
||||
$hookmanager->initHooks(array('interventiondao'));
|
||||
$parameters=array('id'=>$object->id);
|
||||
$reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||
if (empty($reshook))
|
||||
{
|
||||
$result=$object->insertExtraFields();
|
||||
if ($result < 0)
|
||||
@ -821,16 +796,16 @@ else if ($action == 'update_extras')
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
else if ($reshook < 0) $error++;
|
||||
}
|
||||
else if ($reshook < 0) $error++;
|
||||
|
||||
if ($error) $action = 'edit_extras';
|
||||
}
|
||||
|
||||
if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->ficheinter->creer)
|
||||
{
|
||||
if ($action == 'addcontact')
|
||||
{
|
||||
$result = $object->fetch($id);
|
||||
|
||||
if ($result > 0 && $id > 0)
|
||||
{
|
||||
$contactid = (GETPOST('userid','int') ? GETPOST('userid','int') : GETPOST('contactid','int'));
|
||||
@ -859,20 +834,12 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->ficheint
|
||||
// bascule du statut d'un contact
|
||||
else if ($action == 'swapstatut')
|
||||
{
|
||||
if ($object->fetch($id))
|
||||
{
|
||||
$result=$object->swapContactStatus(GETPOST('ligne','int'));
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
$result=$object->swapContactStatus(GETPOST('ligne','int'));
|
||||
}
|
||||
|
||||
// Efface un contact
|
||||
else if ($action == 'deletecontact')
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result = $object->delete_contact(GETPOST('lineid','int'));
|
||||
|
||||
if ($result >= 0)
|
||||
@ -901,8 +868,8 @@ if ($action == 'create')
|
||||
{
|
||||
/*
|
||||
* Mode creation
|
||||
* Creation d'une nouvelle fiche d'intervention
|
||||
*/
|
||||
* Creation d'une nouvelle fiche d'intervention
|
||||
*/
|
||||
|
||||
$soc=new Societe($db);
|
||||
|
||||
@ -1285,19 +1252,11 @@ else if ($id > 0 || ! empty($ref))
|
||||
// Statut
|
||||
print '<tr><td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4).'</td></tr>';
|
||||
|
||||
// Other attributes
|
||||
// Other attributes (TODO Move this into an include)
|
||||
$parameters=array('colspan' => ' colspan="3"');
|
||||
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
|
||||
if (empty($reshook) && ! empty($extrafields->attribute_label))
|
||||
{
|
||||
if ($action == 'edit_extras')
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formfichinter">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
}
|
||||
|
||||
foreach($extrafields->attribute_label as $key=>$label)
|
||||
{
|
||||
if ($action == 'edit_extras') {
|
||||
@ -1319,35 +1278,27 @@ else if ($id > 0 || ! empty($ref))
|
||||
{
|
||||
$value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$db->jdate($object->array_options['options_'.$key]);
|
||||
}
|
||||
if ($action == 'edit_extras' && $user->rights->ficheinter->creer)
|
||||
if ($action == 'edit_extras' && $user->rights->ficheinter->creer && GETPOST('attribute') == $key)
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formfichinter">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="attribute" value="'.$key.'">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
print $extrafields->showInputField($key,$value);
|
||||
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print $extrafields->showOutputField($key,$value);
|
||||
if ($object->statut == 0 && $user->rights->ficheinter->creer) print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras&attribute='.$key.'">'.img_picto('','edit').' '.$langs->trans('Modify').'</a>';
|
||||
}
|
||||
print '</td></tr>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
if(count($extrafields->attribute_label) > 0) {
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
print '<tr><td></td><td colspan="3">';
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
print '</form>';
|
||||
print '</td></tr>';
|
||||
|
||||
}
|
||||
else {
|
||||
if ($object->statut == 0 && $user->rights->ficheinter->creer)
|
||||
{
|
||||
print '<tr><td></td><td><a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit_extras">'.img_picto('','edit').' '.$langs->trans('Modify').'</a></td></tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print "</table><br>";
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2009-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2009-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -31,32 +31,36 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/fichinter.lib.php';
|
||||
$langs->load('companies');
|
||||
$langs->load("interventions");
|
||||
|
||||
$fichinterid = GETPOST('id','int');
|
||||
$id = GETPOST('id','int');
|
||||
|
||||
// Security check
|
||||
if ($user->societe_id) $socid=$user->societe_id;
|
||||
$result = restrictedArea($user, 'ficheinter', $fichinterid, 'fichinter');
|
||||
|
||||
$object = new Fichinter($db);
|
||||
|
||||
if ($id > 0)
|
||||
{
|
||||
$object->fetch($id);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
* View
|
||||
*/
|
||||
|
||||
llxHeader();
|
||||
|
||||
$fichinter = new Fichinter($db);
|
||||
$fichinter->fetch($fichinterid);
|
||||
|
||||
$societe = new Societe($db);
|
||||
$societe->fetch($fichinter->socid);
|
||||
$societe->fetch($object->socid);
|
||||
|
||||
$head = fichinter_prepare_head($fichinter);
|
||||
$head = fichinter_prepare_head($object);
|
||||
dol_fiche_head($head, 'info', $langs->trans('InterventionCard'), 0, 'intervention');
|
||||
|
||||
$fichinter->info($fichinter->id);
|
||||
$object->info($object->id);
|
||||
|
||||
print '<table width="100%"><tr><td>';
|
||||
dol_print_object_info($fichinter);
|
||||
dol_print_object_info($object);
|
||||
print '</td></tr></table>';
|
||||
|
||||
print '</div>';
|
||||
|
||||
@ -355,7 +355,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
if (preg_match('/^[\(]?PROV/i', $this->ref))
|
||||
{
|
||||
// On renomme repertoire ($this->ref = ancienne ref, $num = nouvelle ref)
|
||||
// afin de ne pas perdre les fichiers attaches
|
||||
// in order not to lose the attached files
|
||||
$oldref = dol_sanitizeFileName($this->ref);
|
||||
$newref = dol_sanitizeFileName($num);
|
||||
$dirsource = $conf->fournisseur->dir_output.'/commande/'.$oldref;
|
||||
|
||||
@ -897,7 +897,7 @@ class FactureFournisseur extends CommonInvoice
|
||||
if (preg_match('/^[\(]?PROV/i', $this->ref))
|
||||
{
|
||||
// On renomme repertoire facture ($this->ref = ancienne ref, $num = nouvelle ref)
|
||||
// afin de ne pas perdre les fichiers attaches
|
||||
// in order not to lose the attached files
|
||||
$facref = dol_sanitizeFileName($this->ref);
|
||||
$snumfa = dol_sanitizeFileName($num);
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
/**
|
||||
* \file htdocs/fourn/commande/document.php
|
||||
* \ingroup supplier
|
||||
* \brief Page de gestion des documents attachees a une commande fournisseur
|
||||
* \brief Page de gestion des documents attaches a une commande fournisseur
|
||||
*/
|
||||
|
||||
require '../../main.inc.php';
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
/**
|
||||
* \file htdocs/fourn/facture/document.php
|
||||
* \ingroup facture, fournisseur
|
||||
* \brief Page de gestion des documents attachees a une facture fournisseur
|
||||
* \brief Page de gestion des documents attaches a une facture fournisseur
|
||||
*/
|
||||
|
||||
require '../../main.inc.php';
|
||||
|
||||
@ -99,8 +99,6 @@ if ($object->fetch($id))
|
||||
|
||||
|
||||
print '<div class="fichecenter"><div class="fichehalfleft">';
|
||||
//print '<table width="100%" class="notopnoleftnoright">';
|
||||
//print '<tr><td valign="top" width="50%" class="notopnoleft">';
|
||||
|
||||
print '<table width="100%" class="border">';
|
||||
print '<tr><td width="30%">'.$langs->trans("ThirdPartyName").'</td><td width="70%" colspan="3">';
|
||||
@ -263,7 +261,7 @@ if ($object->fetch($id))
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("UserNotLinkedToMember");
|
||||
print $langs->trans("ThirdpartyNotLinkedToMember");
|
||||
}
|
||||
print '</td>';
|
||||
print "</tr>\n";
|
||||
@ -273,7 +271,6 @@ if ($object->fetch($id))
|
||||
|
||||
|
||||
print '</div><div class="fichehalfright"><div class="ficheaddleft">';
|
||||
//print '</td><td valign="top" width="50%" class="notopnoleftnoright">';
|
||||
|
||||
|
||||
$var=true;
|
||||
@ -428,8 +425,6 @@ if ($object->fetch($id))
|
||||
|
||||
print '</div></div></div>';
|
||||
print '<div style="clear:both"></div>';
|
||||
//print '</td></tr>';
|
||||
//print '</table>' . "\n";
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
@ -53,6 +53,13 @@
|
||||
position: absolute;
|
||||
top: 0; /* #8656 */
|
||||
cursor: default;
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
/* prevent horizontal scrollbar */
|
||||
overflow-x: hidden;
|
||||
/* add padding to account for vertical scrollbar */
|
||||
padding-right: 20px;
|
||||
|
||||
}
|
||||
|
||||
/* workarounds */
|
||||
|
||||
@ -316,3 +316,24 @@ create table llx_contrat_extrafields
|
||||
-- add outstanding bill
|
||||
ALTER TABLE llx_societe ADD outstanding_limit double(24,8) DEFAULT NULL AFTER mode_reglement_supplier;
|
||||
|
||||
UPDATE llx_const SET name='COMPANY_DONOTSEARCH_ANYWHERE' WHERE name='SOCIETE_DONOTSEARCH_ANYWHERE';
|
||||
|
||||
--Task 172
|
||||
create table llx_actioncomm_resources
|
||||
(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
fk_actioncomm integer NOT NULL,
|
||||
element_type varchar(50) NOT NULL,
|
||||
fk_element integer NOT NULL,
|
||||
answer_status varchar(50) NULL,
|
||||
mandatory smallint,
|
||||
transparent smallint
|
||||
) ENGINE=innodb;
|
||||
ALTER TABLE llx_actioncomm_resources ADD UNIQUE INDEX idx_actioncomm_resources_idx1 (fk_actioncomm, element_type, fk_element);
|
||||
ALTER TABLE llx_actioncomm_resources ADD INDEX idx_actioncomm_resources_fk_element (fk_element);
|
||||
|
||||
-- Task 157
|
||||
ALTER TABLE llx_user ADD skype VARCHAR(255) AFTER job;
|
||||
ALTER TABLE llx_socpeople ADD skype VARCHAR(255) AFTER jabberid;
|
||||
ALTER TABLE llx_societe ADD skype VARCHAR(255) AFTER email;
|
||||
ALTER TABLE llx_adherent ADD skype VARCHAR(255) AFTER email;
|
||||
|
||||
25
htdocs/install/mysql/tables/llx_actioncomm_resources.key.sql
Normal file
25
htdocs/install/mysql/tables/llx_actioncomm_resources.key.sql
Normal file
@ -0,0 +1,25 @@
|
||||
-- ============================================================================
|
||||
-- Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or modify
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
-- the Free Software Foundation; either version 3 of the License, or
|
||||
-- (at your option) any later version.
|
||||
--
|
||||
-- This program is distributed in the hope that it will be useful,
|
||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-- GNU General Public License for more details.
|
||||
--
|
||||
-- You should have received a copy of the GNU General Public License
|
||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
--
|
||||
-- ============================================================================
|
||||
|
||||
|
||||
ALTER TABLE llx_actioncomm_resources ADD UNIQUE INDEX idx_actioncomm_resources_idx1 (fk_actioncomm, element_type, fk_element);
|
||||
ALTER TABLE llx_actioncomm_resources ADD INDEX idx_actioncomm_resources_fk_element (fk_element);
|
||||
|
||||
-- Pas de contraite sur fk_source et fk_target car pointe sur differentes tables
|
||||
|
||||
32
htdocs/install/mysql/tables/llx_actioncomm_resources.sql
Normal file
32
htdocs/install/mysql/tables/llx_actioncomm_resources.sql
Normal file
@ -0,0 +1,32 @@
|
||||
-- ============================================================================
|
||||
-- Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or modify
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
-- the Free Software Foundation; either version 3 of the License, or
|
||||
-- (at your option) any later version.
|
||||
--
|
||||
-- This program is distributed in the hope that it will be useful,
|
||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-- GNU General Public License for more details.
|
||||
--
|
||||
-- You should have received a copy of the GNU General Public License
|
||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
--
|
||||
-- ============================================================================
|
||||
-- Table used for relations between elements of different types:
|
||||
-- invoice-propal, propal-order, etc...
|
||||
-- ============================================================================
|
||||
|
||||
create table llx_actioncomm_resources
|
||||
(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
fk_actioncomm integer NOT NULL,
|
||||
element_type varchar(50) NOT NULL,
|
||||
fk_element integer NOT NULL,
|
||||
answer_status varchar(50) NULL,
|
||||
mandatory smallint,
|
||||
transparent smallint
|
||||
) ENGINE=innodb;
|
||||
@ -45,6 +45,7 @@ create table llx_adherent
|
||||
state_id integer,
|
||||
country integer,
|
||||
email varchar(255),
|
||||
skype varchar(255),
|
||||
phone varchar(30),
|
||||
phone_perso varchar(30),
|
||||
phone_mobile varchar(30),
|
||||
|
||||
@ -49,6 +49,7 @@ create table llx_societe
|
||||
fax varchar(20), -- fax number
|
||||
url varchar(255), --
|
||||
email varchar(128), --
|
||||
skype varchar(255), --
|
||||
fk_effectif integer DEFAULT 0, --
|
||||
fk_typent integer DEFAULT 0, --
|
||||
fk_forme_juridique integer DEFAULT 0, -- juridical status
|
||||
|
||||
@ -42,6 +42,7 @@ create table llx_socpeople
|
||||
fax varchar(30),
|
||||
email varchar(255),
|
||||
jabberid varchar(255),
|
||||
skype varchar(255),
|
||||
no_email smallint NOT NULL DEFAULT 0,
|
||||
priv smallint NOT NULL DEFAULT 0,
|
||||
fk_user_creat integer DEFAULT 0, -- user qui a creel'enregistrement
|
||||
@ -51,5 +52,5 @@ create table llx_socpeople
|
||||
default_lang varchar(6),
|
||||
canvas varchar(32), -- type of canvas if used (null by default)
|
||||
import_key varchar(14),
|
||||
statut tinyint
|
||||
statut tinyint DEFAULT 1 NOT NULL
|
||||
)ENGINE=innodb;
|
||||
|
||||
@ -41,6 +41,7 @@ create table llx_user
|
||||
fk_state integer DEFAULT 0, --
|
||||
fk_country integer DEFAULT 0, --
|
||||
job varchar(128),
|
||||
skype varchar(255),
|
||||
office_phone varchar(20),
|
||||
office_fax varchar(20),
|
||||
user_mobile varchar(20),
|
||||
|
||||
@ -49,7 +49,7 @@ Dictionnary=Речници
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=Изключване на JavaScript и Ajax функции
|
||||
ConfirmAjax=Използвайте Аякс потвърждение изскачащи прозорци
|
||||
UseSearchToSelectCompany=Използвайте Автоматично завършване на полета, за да изберете трети страни (вместо да използвате списъчно поле). <br><br> Също така, ако имате голям брой трети страни (> 100 000), можете да увеличите скоростта чрез създаване на постоянна SOCIETE_DONOTSEARCH_ANYWHERE 1 в Setup->. Търсене след това ще бъдат ограничени до началото на низ.
|
||||
UseSearchToSelectCompany=Използвайте Автоматично завършване на полета, за да изберете трети страни (вместо да използвате списъчно поле). <br><br> Също така, ако имате голям брой трети страни (> 100 000), можете да увеличите скоростта чрез създаване на постоянна COMPANY_DONOTSEARCH_ANYWHERE 1 в Setup->. Търсене след това ще бъдат ограничени до началото на низ.
|
||||
ActivityStateToSelectCompany= Добавяне на филтър опция за показване / скриване на thirdparties, които в момента са в дейност или е престанала
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=Филтрите за търсене опции
|
||||
|
||||
@ -49,7 +49,7 @@ ErrorReservedTypeSystemSystemAuto=L'ús del tipus 'system' i 'systemauto' està
|
||||
ErrorCodeCantContainZero=El codi no pot contenir el valor 0
|
||||
DisableJavascript=Desactivar les funcions Javascript
|
||||
ConfirmAjax=Utilitzar els popups de confirmació Ajax
|
||||
UseSearchToSelectCompany=Utilitzar un formulari de cerca per buscar tercers (en comptes de llista desplegable)<br><br>Tingueu en compte que si té un gran nombre de productes o serveis (> 100 000), pot millorar el rendiment mitjançant la constant SOCIETE_DONOTSEARCH_ANYWHERE a 1 a Configuració-> Varis. La recerca es limitarà llavors a l'inici de la cadena.
|
||||
UseSearchToSelectCompany=Utilitzar un formulari de cerca per buscar tercers (en comptes de llista desplegable)<br><br>Tingueu en compte que si té un gran nombre de productes o serveis (> 100 000), pot millorar el rendiment mitjançant la constant COMPANY_DONOTSEARCH_ANYWHERE a 1 a Configuració-> Varis. La recerca es limitarà llavors a l'inici de la cadena.
|
||||
ActivityStateToSelectCompany= Afegir un filtre en la recerca per mostrar/ocultar els tercers en actiu o que hagin deixat d'exercir
|
||||
UseSearchToSelectContact=Utilitzar un formulari de cerca (en lloc d'una llista desplegable). <br> Tingueu en compte que si té un gran nombre de contactes (> 100 000), pot millorar el rendiment mitjançant la constant CONTACT_DONOTSEARCH_ANYWHERE a 1 a Configuració-> Diversos. La recerca es limitarà llavors a l'inici de la cadena.
|
||||
SearchFilter=Opcions filtres de cerca
|
||||
|
||||
@ -49,7 +49,7 @@ ErrorReservedTypeSystemSystemAuto=Hodnota "systém" a "systemauto
|
||||
ErrorCodeCantContainZero=Kód může obsahovat hodnotu 0
|
||||
DisableJavascript=Zakázat JavaScript a Ajax funkce
|
||||
ConfirmAjax=Použití Ajax potvrzení vyskakovací okna
|
||||
UseSearchToSelectCompany=Používejte automatické doplňování polí vybrat třetí strany (namísto použití pole se seznamem). <br><br> Také, pokud máte velký počet třetích stran (> 100 000), můžete zvýšit rychlost nastavením konstantní SOCIETE_DONOTSEARCH_ANYWHERE na 1 v Nastavení-> Ostatní. Vyhledávání pak bude omezen na začátek řetězce.
|
||||
UseSearchToSelectCompany=Používejte automatické doplňování polí vybrat třetí strany (namísto použití pole se seznamem). <br><br> Také, pokud máte velký počet třetích stran (> 100 000), můžete zvýšit rychlost nastavením konstantní COMPANY_DONOTSEARCH_ANYWHERE na 1 v Nastavení-> Ostatní. Vyhledávání pak bude omezen na začátek řetězce.
|
||||
ActivityStateToSelectCompany= Přidat možnost filtru pro zobrazení / skrytí thirdparties, které jsou v současné době v činnosti nebo přestal ji
|
||||
UseSearchToSelectContact=Používejte automatické doplňování polí vyberte kontakt (namísto použití pole se seznamem). <br><br> Také, pokud máte velký počet třetích stran (> 100 000), můžete zvýšit rychlost nastavením konstantní CONTACT_DONOTSEARCH_ANYWHERE na 1 v Nastavení-> Ostatní. Vyhledávání pak bude omezen na začátek řetězce.
|
||||
SearchFilter=Hledat filtry možnosti
|
||||
|
||||
@ -49,7 +49,7 @@ ErrorReservedTypeSystemSystemAuto=Αξία «system» και «systemauto» γι
|
||||
ErrorCodeCantContainZero=Κώδικας δεν μπορεί να περιέχει την τιμή 0
|
||||
DisableJavascript=Απενεργοποίηση συναρτήσεων JavaScript και Ajax
|
||||
ConfirmAjax=Χρήση διαλόγων επιβεβαίωσης Ajax
|
||||
UseSearchToSelectCompany=Χρήση φόρμας αναζήτησης για επιλογή εταιρίας (αντί χρήσης πλαισίων λίστας). Αν έχετε μεγάλο αριθμό στοιχείων (>100000) μπορείτε να αυξήσετε την ταχύτητα θέτοντας την μεταβλητή SOCIETE_DONOTSEARCH_ANYWHERE σε 1 στο μενού Ρυθμίσεις -> Άλλες Ρυθμίσεις
|
||||
UseSearchToSelectCompany=Χρήση φόρμας αναζήτησης για επιλογή εταιρίας (αντί χρήσης πλαισίων λίστας). Αν έχετε μεγάλο αριθμό στοιχείων (>100000) μπορείτε να αυξήσετε την ταχύτητα θέτοντας την μεταβλητή COMPANY_DONOTSEARCH_ANYWHERE σε 1 στο μενού Ρυθμίσεις -> Άλλες Ρυθμίσεις
|
||||
ActivityStateToSelectCompany= Προσθέστε μια επιλογή φίλτρου για εμφάνιση / απόκρυψη τρίτα μέρη τα οποία βρίσκονται σε λειτουργία ή έχει παύσει
|
||||
UseSearchToSelectContact=Χρησιμοποιήστε τα πεδία αυτόματης συμπλήρωσης για να επιλέξετε επαφή (αντί να χρησιμοποιήσετε ένα πλαίσιο λίστας).<br><br>Επίσης, αν έχετε ένα μεγάλο αριθμό τρίτων (> 100 000), μπορείτε να αυξήσετε την ταχύτητα με τη σταθερή CONTACT_DONOTSEARCH_ANYWHERE στο 1 στην Εγκατάσταση->Άλλα. Η αναζήτηση μετά θα περιορίζεται απο την έναρξη της συμβολοσειράς.
|
||||
SearchFilter=Αναζήτηση επιλογές φίλτρων
|
||||
|
||||
@ -49,7 +49,7 @@ ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is re
|
||||
ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=Disable JavaScript and Ajax functions
|
||||
ConfirmAjax=Use Ajax confirmation popups
|
||||
UseSearchToSelectCompany=Use autocompletion fields to choose third parties (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant SOCIETE_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
UseSearchToSelectCompany=Use autocompletion fields to choose third parties (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it
|
||||
UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=Search filters options
|
||||
@ -368,7 +368,7 @@ ExtrafieldRadio=Radio button
|
||||
ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
|
||||
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>...
|
||||
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>...
|
||||
ExtrafieldParamHelpsellist=Parameters list have come from table<br><br> for exemple : <br>c_typent:libelle:id<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column
|
||||
ExtrafieldParamHelpsellist=Parameters list have come from table<br><br> for exemple : <br>c_typent:libelle:id::filter<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter <br> filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)
|
||||
LibraryToBuildPDF=Library used to build PDF
|
||||
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
|
||||
LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (vat is not applied on local tax)<br>2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)<br>3 : local tax apply on products without vat (vat is not applied on local tax)<br>4 : local tax apply on products before vat (vat is calculated on amount + localtax)<br>5 : local tax apply on services without vat (vat is not applied on local tax)<br>6 : local tax apply on services before vat (vat is calculated on amount + localtax)
|
||||
@ -487,6 +487,8 @@ Module2700Desc= Use online Gravatar service (www.gravatar.com) to show photo of
|
||||
Module2800Desc=FTP Client
|
||||
Module2900Name= GeoIPMaxmind
|
||||
Module2900Desc= GeoIP Maxmind conversions capabilities
|
||||
Module3100Name= Skype
|
||||
Module3100Desc= Add a Skype button into card of adherents / third parties / contacts
|
||||
Module5000Name=Multi-company
|
||||
Module5000Desc=Allows you to manage multiple companies
|
||||
Module6000Name=Workflow
|
||||
@ -972,6 +974,8 @@ ExtraFieldsThirdParties=Complementary attributes (thirdparty)
|
||||
ExtraFieldsContacts=Complementary attributes (contact/address)
|
||||
ExtraFieldsMember=Complementary attributes (member)
|
||||
ExtraFieldsMemberType=Complementary attributes (member type)
|
||||
ExtraFieldsCustomerOrders=Complementary attributes (orders)
|
||||
ExtraFieldsCustomerInvoices=Complementary attributes (invoices)
|
||||
ExtraFieldsSupplierOrders=Complementary attributes (orders)
|
||||
ExtraFieldsSupplierInvoices=Complementary attributes (invoices)
|
||||
ExtraFieldsProject=Complementary attributes (projects)
|
||||
@ -1003,6 +1007,7 @@ BrowserIsKO=You are using the web browser %s. This browser is known to be a bad
|
||||
XDebugInstalled=XDebug est chargé.
|
||||
XCacheInstalled=XCache is loaded.
|
||||
AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink
|
||||
FieldEdition=Edition of field %s
|
||||
##### Module password generation
|
||||
PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase.
|
||||
PasswordGenerationNone=Do not suggest any generated password. Password must be type in manually.
|
||||
|
||||
@ -66,6 +66,8 @@ Country=Country
|
||||
CountryCode=Country code
|
||||
CountryId=Country id
|
||||
Phone=Phone
|
||||
Skype=Skype
|
||||
Call=Call
|
||||
PhonePro=Prof. phone
|
||||
PhonePerso=Pers. phone
|
||||
PhoneMobile=Mobile
|
||||
|
||||
@ -8,6 +8,7 @@ Members=Members
|
||||
MemberAccount=Member login
|
||||
ShowMember=Show member card
|
||||
UserNotLinkedToMember=User not linked to a member
|
||||
ThirdpartyNotLinkedToMember=Third-party not linked to a member
|
||||
MembersTickets=Members Tickets
|
||||
FundationMembers=Foundation members
|
||||
Attributs=Attributes
|
||||
@ -118,7 +119,6 @@ LastMembers=Last %s members
|
||||
LastMembersModified=Last %s modified members
|
||||
LastSubscriptionsModified=Last %s modified subscriptions
|
||||
AttributeName=Attribute name
|
||||
FieldEdition=Edition of field %s
|
||||
String=String
|
||||
Text=Text
|
||||
Int=Int
|
||||
|
||||
@ -49,7 +49,7 @@ ErrorReservedTypeSystemSystemAuto=El uso del tipo 'system' y 'systemauto' está
|
||||
ErrorCodeCantContainZero=El código no puede contener el valor 0
|
||||
DisableJavascript=Desactivar las funciones Javascript
|
||||
ConfirmAjax=Utilizar los popups de confirmación Ajax
|
||||
UseSearchToSelectCompany=Utilizar un formulario de búsqueda para buscar terceros (en vez de lista desplegable)<br><br>Tenga en cuenta que si tiene un gran número de productos o servicios (>100 000), puede mejorar el rendimiento mediante la constante SOCIETE_DONOTSEARCH_ANYWHERE a 1 en Configuración->Varios. La búsqueda se limitará entonces al inicio de la cadena.
|
||||
UseSearchToSelectCompany=Utilizar un formulario de búsqueda para buscar terceros (en vez de lista desplegable)<br><br>Tenga en cuenta que si tiene un gran número de productos o servicios (>100 000), puede mejorar el rendimiento mediante la constante COMPANY_DONOTSEARCH_ANYWHERE a 1 en Configuración->Varios. La búsqueda se limitará entonces al inicio de la cadena.
|
||||
ActivityStateToSelectCompany= Agregar un filtro en la búsqueda para mostrar/ocultar los terceros en activo o que hayan dejado de ejercer
|
||||
UseSearchToSelectContact=Utilizar un formulario de búsqueda (en vez de una lista desplegable).<br>Tenga en cuenta que si tiene un gran número de contactos (>100 000), puede mejorar el rendimiento mediante la constante CONTACT_DONOTSEARCH_ANYWHERE a 1 en Configuración->Varios. La búsqueda se limitará entonces al inicio de la cadena.
|
||||
SearchFilter=Opciones filtros de búsqueda
|
||||
|
||||
@ -49,7 +49,7 @@ DictionnarySetup=Dictionary setup
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=Keela JavaScript ja Ajax funktsioonid
|
||||
ConfirmAjax=Kasuta Ajax kinnituse hüpikaknad
|
||||
UseSearchToSelectCompany=Kasuta sõnalõpetusteks väljad valida kolmandate isikute (selle asemel loendiboksis). <br><br> Samuti kui teil on suur hulk kolmandaid isikuid (> 100 000), saate suurendada kiirust, millega pidev SOCIETE_DONOTSEARCH_ANYWHERE kuni 1 aasta Setup-> Teised. Otsi siis piirdub algus string.
|
||||
UseSearchToSelectCompany=Kasuta sõnalõpetusteks väljad valida kolmandate isikute (selle asemel loendiboksis). <br><br> Samuti kui teil on suur hulk kolmandaid isikuid (> 100 000), saate suurendada kiirust, millega pidev COMPANY_DONOTSEARCH_ANYWHERE kuni 1 aasta Setup-> Teised. Otsi siis piirdub algus string.
|
||||
ActivityStateToSelectCompany= Lisa filter võimalus näidata / peita thirdparties mis on praegu tegevust või lõpetas ta
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=Otsi filtrite valikud
|
||||
|
||||
@ -49,7 +49,7 @@ ErrorReservedTypeSystemSystemAuto=Erreur, les valeurs 'system' et 'systemauto' s
|
||||
ErrorCodeCantContainZero=Erreur, le code ne peut contenir la valeur 0
|
||||
DisableJavascript=Désactiver les fonctions Javascript et Ajax
|
||||
ConfirmAjax=Utiliser les fenêtres de confirmation Ajax
|
||||
UseSearchToSelectCompany=Utiliser un champ avec autocomplétion pour choisir un tiers (plutôt qu'une liste déroulante).<br><br>Notez que si vous avez un nombre important de tiers (> 100 000), vous pouvez améliorer les performances en définissant la constante SOCIETE_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limitée au début de la chaîne.
|
||||
UseSearchToSelectCompany=Utiliser un champ avec autocomplétion pour choisir un tiers (plutôt qu'une liste déroulante).<br><br>Notez que si vous avez un nombre important de tiers (> 100 000), vous pouvez améliorer les performances en définissant la constante COMPANY_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limitée au début de la chaîne.
|
||||
ActivityStateToSelectCompany= Ajouter une option de filtrage lors des recherches pour afficher/masquer les tiers en exercice ou ayant cessé d'exercer
|
||||
UseSearchToSelectContact=Utiliser un champ avec autocomplétion pour choisir un contact (plutôt qu'une liste déroulante).<br><br>Notez que si vous avez un nombre important de contacts (> 100 000), vous pouvez améliorer les performances en définissant la constante CONTACT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limitée au début de la chaîne.
|
||||
SearchFilter=Options des filtres de recherche
|
||||
@ -368,7 +368,7 @@ ExtrafieldRadio=Bouton radio
|
||||
ExtrafieldParamHelpselect=La liste doit être de la forme clef,valeur<br><br> par exemple : <br>1,valeur1<br>2,valeur2<br>3,valeur3<br>...<br><br>Pour que la liste soit dépendante d'une autre :<br>1,valeur1|code_liste_parent:clef_parent<br>2,valeur2|code_liste_parent:clef_parent
|
||||
ExtrafieldParamHelpcheckbox=La liste doit être de la forme clef,valeur<br><br> par exemple : <br>1,valeur1<br>2,valeur2<br>3,valeur3<br>...
|
||||
ExtrafieldParamHelpradio=La liste doit être de la forme clef,valeur<br><br> par exemple : <br>1,valeur1<br>2,valeur2<br>3,valeur3<br>...
|
||||
ExtrafieldParamHelpsellist=La liste vient d'une table<br><br> par exemple : <br>c_typent:libelle:id<br><br>Pour que la liste soit dépendante d'une autre :<br>c_typent:libelle:id:code_liste_parent|colonne_parent
|
||||
ExtrafieldParamHelpsellist=La liste vient d'une table<br><br> par exemple : <br>c_typent:libelle:id::filter<br><br>Pour que la liste soit dépendante d'une autre :<br>c_typent:libelle:id:code_liste_parent|colonne_parent:filter<br> filter peux être un test simple active=1 pour ne proposer que les valeur active<br> si vous voulez faire un filtre sur des attributs supplémentaires utiliser la syntax extra.champ=...(où champ est la code de l'attribut supplémentaire)
|
||||
LibraryToBuildPDF=Bibliothèque utilisée pour la génération des PDF
|
||||
WarningUsingFPDF=Attention : votre fichier <b>conf.php</b> contient la directive <b>dolibarr_pdf_force_fpdf=1</b>. Cela signifie que vous utilisez la librairie FPDF pour générer vos fichiers PDF. Cette librairie est ancienne et ne couvre pas de nombreuses fonctionnalités (Unicode, transparence des images, langues cyrilliques, arabes ou asiatiques...), aussi vous pouvez rencontrer des problèmes durant la génération des PDF.<br>Pour résoudre cela et avoir une prise en charge complète de PDF, vous pouvez télécharger la <a href="http://www.tcpdf.org/" target="_blank">bibliothèque TCPDF</a> puis commenter ou supprimer la ligne <b>$dolibarr_pdf_force_fpdf=1</b>, et ajouter à la place <b>$dolibarr_lib_TCPDF_PATH='chemin_vers_TCPDF'</b>
|
||||
LocalTaxDesc=Certains pays appliquent 2 voire 3 taux sur chaque ligne de facture. Si c'est le cas, choisissez le type du deuxième et troisième taux et sa valeur. Les types possibles sont:<br>1 : taxe locale sur les produits et services hors tva (la tva n'est pas appliquée sur la taxe locale)<br>2 : taxe locale sur les produits et services avant tva (la tva est appliquée sur le montant + la taxe locale)<br>3 : taxe locale uniquement sur les produits hors tva (la tva n'est pas appliquée sur la taxe locale)<br>4 : taxe locale uniquement sur les produits avant tva (la tva est appliquée sur le montant + la taxe locale)<br>5 : taxe locale uniquement sur les services hors tva (la tva n'est pas appliquée sur la taxe locale)<br>6 : taxe locale uniquement sur les service avant tva (la tva est appliquée sur le montant + la taxe locale)
|
||||
@ -972,7 +972,10 @@ ExtraFieldsThirdParties=Attributs supplémentaires (tiers)
|
||||
ExtraFieldsContacts=Attributs supplémentaires (contacts/adresses)
|
||||
ExtraFieldsMember=Attributs supplémentaires (adhérents)
|
||||
ExtraFieldsMemberType=Attributs supplémentaires (type d'adhérents)
|
||||
ExtraFieldsCustomerOrders=Attributs supplémentaires (commandes)
|
||||
ExtraFieldsCustomerInvoices=Attributs supplémentaires (factures)
|
||||
ExtraFieldsSupplierOrders=Attributs supplémentaires (commandes)
|
||||
ExtraFieldsCustomerInvoices=Attributs supplémentaires (factures clients)
|
||||
ExtraFieldsSupplierInvoices=Attributs supplémentaires (factures)
|
||||
ExtraFieldsProject=Attributs supplémentaires (projets)
|
||||
ExtraFieldsProjectTask=Attributs supplémentaires (tâches)
|
||||
@ -1015,6 +1018,7 @@ EncryptedPasswordInDatabase=Permettre le chiffrement des mots de passe dans la b
|
||||
DisableForgetPasswordLinkOnLogonPage=Ne pas afficher le lien "Mot de passe oublié" sur la page de connexion
|
||||
UsersSetup=Configuration du module utilisateurs
|
||||
UserMailRequired=Email requis pour créer un nouvel utilisateur
|
||||
FieldEdition=Édition du champ %s
|
||||
##### Company setup #####
|
||||
CompanySetup=Configuration du module Tiers
|
||||
CompanyCodeChecker=Modèle de génération et contrôle des codes tiers (clients/fournisseurs)
|
||||
@ -1467,8 +1471,8 @@ TestGeoIPResult=Test de conversion IP -> Pays
|
||||
ProjectsNumberingModules=Modèles de numérotation des références projets
|
||||
ProjectsSetup=Configuration du module Projets
|
||||
ProjectsModelModule=Modèles de document de rapport projets
|
||||
TasksNumberingModules=Modèles de numérotation des références taches
|
||||
TaskModelModule=Modèles de document de rapport taches
|
||||
TasksNumberingModules=Modèles de numérotation des références tâches
|
||||
TaskModelModule=Modèles de document de rapport tâches
|
||||
##### ECM (GED) #####
|
||||
ECMSetup = Configuration du module GED
|
||||
ECMAutoTree = L'arborescence automatique est disponible
|
||||
|
||||
@ -68,7 +68,7 @@ CronPriority=Priorité
|
||||
CronLabel=Description
|
||||
CronNbRun=Nb. exec.
|
||||
CronEach=Tous les
|
||||
JobFinished=Tache lancée et terminée
|
||||
JobFinished=Tâche lancée et terminée
|
||||
|
||||
#
|
||||
#Page card
|
||||
|
||||
@ -8,6 +8,7 @@ Members=Adhérents
|
||||
MemberAccount=Login adhérent
|
||||
ShowMember=Afficher fiche adhérent
|
||||
UserNotLinkedToMember=Utilisateur non lié à un adhérent
|
||||
ThirdpartyNotLinkedToMember=Tiers non lié à un adhérent
|
||||
MembersTickets=Étiquettes d'adhérents
|
||||
FundationMembers=Membres de l'association
|
||||
Attributs=Attributs
|
||||
@ -118,7 +119,6 @@ LastMembers=Les %s derniers adhérents
|
||||
LastMembersModified=Les %s derniers adhérents modifiés
|
||||
LastSubscriptionsModified=Les %s dernières adhésions modifiées
|
||||
AttributeName=Nom de l'attribut
|
||||
FieldEdition=Édition du champ %s
|
||||
String=Chaîne
|
||||
Text=Texte long
|
||||
Int=Numérique
|
||||
|
||||
@ -49,7 +49,7 @@ DictionnarySetup=הגדרת מילון
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=בטל פונקציונליות של JavaScript ו Ajax
|
||||
ConfirmAjax=השתמש קופצים אייאקס אישור
|
||||
UseSearchToSelectCompany=להשתמש בשדות השלמה אוטומטית לבחור צדדים שלישיים (ולא באמצעות תיבת רשימה). <br><br> גם אם יש לך מספר רב של צדדים שלישיים (> 100 000), תוכל להגדיל את המהירות על ידי הגדרת SOCIETE_DONOTSEARCH_ANYWHERE מתמיד 1 בהתקנת-> אחר. חיפוש לאחר מכן ניתן יהיה להתחיל מוגבל של מחרוזת.
|
||||
UseSearchToSelectCompany=להשתמש בשדות השלמה אוטומטית לבחור צדדים שלישיים (ולא באמצעות תיבת רשימה). <br><br> גם אם יש לך מספר רב של צדדים שלישיים (> 100 000), תוכל להגדיל את המהירות על ידי הגדרת COMPANY_DONOTSEARCH_ANYWHERE מתמיד 1 בהתקנת-> אחר. חיפוש לאחר מכן ניתן יהיה להתחיל מוגבל של מחרוזת.
|
||||
ActivityStateToSelectCompany= הוספת אפשרות סינון להראות / להסתיר thirdparties שהם כיום בפעילות או חדל זה
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=מסננים אפשרויות חיפוש
|
||||
|
||||
@ -49,7 +49,7 @@ DictionnarySetup=Szótár beállítási
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=Disable JavaScript és Ajax funkciókkal
|
||||
ConfirmAjax=Használja Ajax visszaigazolást popup
|
||||
UseSearchToSelectCompany=Használja az automata kiegészítés mezőket választani harmadik fél (helyett egy lista). <br><br> Akkor is, ha van egy nagy számú harmadik felek (> 100 000), akkor a sebesség növelése azáltal, hogy állandó SOCIETE_DONOTSEARCH_ANYWHERE 1. Beállítás-> Egyéb. Keresés csak ezután kezdeni a húr.
|
||||
UseSearchToSelectCompany=Használja az automata kiegészítés mezőket választani harmadik fél (helyett egy lista). <br><br> Akkor is, ha van egy nagy számú harmadik felek (> 100 000), akkor a sebesség növelése azáltal, hogy állandó COMPANY_DONOTSEARCH_ANYWHERE 1. Beállítás-> Egyéb. Keresés csak ezután kezdeni a húr.
|
||||
ActivityStateToSelectCompany= Hozzáadása lehetőséget, hogy a szűrő / elrejtése thirdparties, amelyek jelenleg a tevékenység megszűnt, vagy azt
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=Keresés szűrők lehetőségek
|
||||
|
||||
@ -49,7 +49,7 @@ DictionnarySetup=辞書のセットアップ
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=JavaScriptとAjaxの機能を無効にする
|
||||
ConfirmAjax=Ajaxの確認のポップアップを使用して、
|
||||
UseSearchToSelectCompany=第三者が(代わりにリストボックスを使用)を選択するオートコンプリートフィールドを使用します。 <br><br>あなたがサードパーティの多数(> 100,000)を持っている場合にも、セットアップ - >その他1に定数SOCIETE_DONOTSEARCH_ANYWHEREを設定することにより、速度を上げることができます。検索は、文字列の先頭に制限されます。
|
||||
UseSearchToSelectCompany=第三者が(代わりにリストボックスを使用)を選択するオートコンプリートフィールドを使用します。 <br><br>あなたがサードパーティの多数(> 100,000)を持っている場合にも、セットアップ - >その他1に定数COMPANY_DONOTSEARCH_ANYWHEREを設定することにより、速度を上げることができます。検索は、文字列の先頭に制限されます。
|
||||
ActivityStateToSelectCompany= 活動に現在thirdparties表示/非表示切り替えフィルタオプションを追加したり、それを停止している
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=検索フィルタのオプション
|
||||
|
||||
@ -49,7 +49,7 @@ VersionLastUpgrade=최종 버전 업그레이드
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
# DisableJavascript=Disable JavaScript and Ajax functions
|
||||
# ConfirmAjax=Use Ajax confirmation popups
|
||||
# UseSearchToSelectCompany=Use autocompletion fields to choose third parties (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant SOCIETE_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
# UseSearchToSelectCompany=Use autocompletion fields to choose third parties (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
# ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
# SearchFilter=Search filters options
|
||||
|
||||
@ -46,7 +46,7 @@ ErrorDecimalLargerThanAreForbidden = Fout, een nauwkeurigheid van meer dan <b>%s
|
||||
DictionnarySetup = Woordenlijsten
|
||||
DisableJavascript = Schakel JavaScript en Ajax-functies uit
|
||||
ConfirmAjax = Gebruik Ajax bevestiging popups
|
||||
UseSearchToSelectCompany = Gebruik velden die automatisch aanvullen om een bedrijf te kiezen (in plaats van een drop-down lijst).<br><br>In geval van een zeer groot aantal derde partijen (> 100 000), kan de snelheid verhoogt worden door de waarde SOCIETE_DONOTSEARCH_ANYWHERE op 1 te zetten in Home->Configuratie->Andere Instellingen.
|
||||
UseSearchToSelectCompany = Gebruik velden die automatisch aanvullen om een bedrijf te kiezen (in plaats van een drop-down lijst).<br><br>In geval van een zeer groot aantal derde partijen (> 100 000), kan de snelheid verhoogt worden door de waarde COMPANY_DONOTSEARCH_ANYWHERE op 1 te zetten in Home->Configuratie->Andere Instellingen.
|
||||
ActivityStateToSelectCompany = Voeg een filter optie toe om derde partijen te tonen/verbergen die momenteel actief zijn of gestopt zijn
|
||||
SearchFilter = Opties voor de zoekfilters
|
||||
NumberOfKeyToSearch = Aantal karakters om de zoekactie te starten: %s
|
||||
|
||||
@ -49,7 +49,7 @@ DictionnarySetup=Constanten
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=Schakel JavaScript en AJAX-functionaliteit uit
|
||||
ConfirmAjax=Gebruik AJAX bevestigingspopups
|
||||
UseSearchToSelectCompany=Gebruik 'autocompletion' velden om derde partijen te kiezen (In plaats van een selectielijst).<br><br>Wanneer u een groot aantal derde partijen (meer dan 100.000) heeft, kunt u de snelheid verhogen door de constante SOCIETE_DONOTSEARCH_ANYWHERE op 1 in te stellen in Home->Instellingen->Overige instellingen. Het zoeken wordt dan beperkt tot het begin van een regel.
|
||||
UseSearchToSelectCompany=Gebruik 'autocompletion' velden om derde partijen te kiezen (In plaats van een selectielijst).<br><br>Wanneer u een groot aantal derde partijen (meer dan 100.000) heeft, kunt u de snelheid verhogen door de constante COMPANY_DONOTSEARCH_ANYWHERE op 1 in te stellen in Home->Instellingen->Overige instellingen. Het zoeken wordt dan beperkt tot het begin van een regel.
|
||||
ActivityStateToSelectCompany= Voeg een filter optie voor het tonen / verbergen thirdparties die momenteel in de activiteiten of niet langer het
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=Zoekfilters opties
|
||||
|
||||
@ -50,12 +50,12 @@ SupplierIsInCategories=Klant is eigenaar van de volgende leverancierscategorieë
|
||||
CompanyIsInCustomersCategories=Deze Klant is eigenaar van de volgende afnemers- / prospectencategorieën
|
||||
CompanyIsInSuppliersCategories=Deze Klant is eigenaar van de volgende leverancierscategorieën
|
||||
MemberIsInCategories=Dit lid is eigenaar van de volgende ledencategorieën
|
||||
# ContactIsInCategories=This contact owns to following contacts categories
|
||||
ContactIsInCategories=Dit contact kent de volgende contacts Categorieën
|
||||
ProductHasNoCategory=Dit product / dienst behoort tot geen enkele categorie
|
||||
SupplierHasNoCategory=Deze leverancier behoort tot geen enkele categorie
|
||||
CompanyHasNoCategory=Dit bedrijf behoort tot geen enkele categorie
|
||||
MemberHasNoCategory=Dit lid behoort tot geen enkele categorie
|
||||
# ContactHasNoCategory=This contact is not in any categories
|
||||
ContactHasNoCategory=Dit contact is niet in een Categorieën onderverdeeld
|
||||
ClassifyInCategory=Classificeren naar categorie
|
||||
NoneCategory=Geen
|
||||
# NotCategorized=Without category
|
||||
@ -81,7 +81,7 @@ CustomersCategoriesShort=Afnemerscategorie
|
||||
CustomersProspectsCategoriesShort=Afnemers- / Prospectencategorie
|
||||
ProductsCategoriesShort=Productencategorie
|
||||
MembersCategoriesShort=Ledencategorie
|
||||
# ContactCategoriesShort=Contacts categories
|
||||
ContactCategoriesShort=Contact Categorieën
|
||||
ThisCategoryHasNoProduct=Deze categorie bevat geen producten.
|
||||
ThisCategoryHasNoSupplier=Deze categorie bevat geen enkele leverancier.
|
||||
ThisCategoryHasNoCustomer=Deze categorie bevat geen enkele afnemer.
|
||||
@ -96,7 +96,7 @@ CatSupList=Leverancierscategorieënlijst
|
||||
CatCusList=afnemers- / prospectencategorieënlijst
|
||||
CatProdList=productencategorieënlijst
|
||||
CatMemberList=Ledencategorieënlijst
|
||||
# CatContactList=List of contact categories and contact
|
||||
CatContactList=Lijst van Categorieën van Contacten
|
||||
# CatSupLinks=Links between suppliers and categories
|
||||
# CatCusLinks=Links between customers/prospects and categories
|
||||
# CatProdLinks=Links between products/services and categories
|
||||
|
||||
@ -89,7 +89,7 @@ MailingModuleDescEmailsFromFile=E-mails van een tekstbestand (e-mail;achternaam;
|
||||
MailingModuleDescContactsCategories=Contacten van alle derde partijen (Door categorie)
|
||||
MailingModuleDescDolibarrContractsLinesExpired=Derde partijen met verlopen contractregels
|
||||
MailingModuleDescContactsByCompanyCategory=Contacten van derden (door derden categorie)
|
||||
# MailingModuleDescContactsByCategory=Contacts/addresses of third parties by category
|
||||
MailingModuleDescContactsByCategory=Voeg een contact toe per Categorieën
|
||||
MailingModuleDescMembersCategories=Stichting leden (per categorie)
|
||||
MailingModuleDescContactsByFunction=Contacten van derden (door de positie / functie)
|
||||
|
||||
|
||||
@ -1,51 +1,52 @@
|
||||
# Dolibarr language file - Source file is en_US - marges
|
||||
CHARSET=UTF-8
|
||||
|
||||
# Margin=Margin
|
||||
# Margins=Margins
|
||||
# TotalMargin=Total Margin
|
||||
# MarginOnProducts=Margin / Products
|
||||
# MarginOnServices=Margin / Services
|
||||
# MarginRate=Margin rate
|
||||
# MarkRate=Mark rate
|
||||
# DisplayMarginRates=Display margin rates
|
||||
# DisplayMarkRates=Display mark rates
|
||||
# InputPrice=Input price
|
||||
Margin=Marge
|
||||
Margins=Marges
|
||||
TotalMargin=Marge Totaal
|
||||
MarginOnProducts=Marge / Training
|
||||
MarginOnServices=Marge / Dienst
|
||||
MarginRate=Marge verhouding
|
||||
MarkRate=Markerings verhouding
|
||||
DisplayMarginRates=Toon Marge Verhouding
|
||||
DisplayMarkRates=Toon Markeringsverhouding
|
||||
InputPrice=Voer Prijs in
|
||||
|
||||
# margin=Profit margins management
|
||||
# margesSetup=Profit margins management setup
|
||||
margin=Winst marge management
|
||||
margesSetup=Winst marge management setup
|
||||
|
||||
# MarginDetails=Margin details
|
||||
MarginDetails=Marge details
|
||||
|
||||
# ProductMargins=Product margins
|
||||
# CustomerMargins=Customer margins
|
||||
# AgentMargins=Agent margins
|
||||
ProductMargins=Product marge
|
||||
CustomerMargins=Klant marges
|
||||
AgentMargins=Acc. Manager marges
|
||||
|
||||
ProductService=Product of Dienst
|
||||
# AllProducts=All products and services
|
||||
# ChooseProduct/Service=Choose product or service
|
||||
# CommercialAgent=Commercial agent
|
||||
ProductService=Trainning of Dienst
|
||||
AllProducts=Alle Trainingen en Diensten
|
||||
ChooseProduct/Service=Kies Training of Dienst
|
||||
CommercialAgent=Commerciel Agent
|
||||
|
||||
StartDate=Begindatum
|
||||
EndDate=Einddatum
|
||||
StartDate=Start datum
|
||||
EndDate=Eind datum
|
||||
Launch=Start
|
||||
|
||||
# ForceBuyingPriceIfNull=Force buying price if null
|
||||
# ForceBuyingPriceIfNullDetails=if "ON", margin will be zero on line (buying price = selling price), otherwise ("OFF"), marge will be equal to selling price (buying price = 0)
|
||||
# MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts
|
||||
# UseDiscountAsProduct=As a product
|
||||
# UseDiscountAsService=As a service
|
||||
# UseDiscountOnTotal=On subtotal
|
||||
# MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Defines if a global discount is treated as a product, a service, or only on subtotal for margin calculation.
|
||||
ForceBuyingPriceIfNull=Forceer een inkoopprijs indien null
|
||||
ForceBuyingPriceIfNullDetails=indien "ON", marge wodt nul (inkoopprijs = verkoopprijs), anders("OFF"), marge is gelijk verkoopprijs (inkoopprijs = 0)
|
||||
MARGIN_METHODE_FOR_DISCOUNT=Marge methode voor globale discounts
|
||||
UseDiscountAsProduct=Als een training
|
||||
UseDiscountAsService=Als een dienst
|
||||
UseDiscountOnTotal=Op subtotaal
|
||||
MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Definieert als een globale discount wordt behandelt als een training, een dienst, of alleen een subtotaal voor marge berekening.
|
||||
|
||||
# MARGIN_TYPE=Margin type
|
||||
# MargeBrute=Raw margin
|
||||
# MargeNette=Net margin
|
||||
# MARGIN_TYPE_DETAILS=Raw margin : Selling price - Buying price<br/>Net margin : Selling price - Cost price
|
||||
MARGIN_TYPE=Marge type
|
||||
MargeBrute=Groffe marge
|
||||
MargeNette=Netto marge
|
||||
MARGIN_TYPE_DETAILS=Groffe marge : Verkoopprijs - Inkoopprijs<br/>Netto marge : Verkoopprijs - Kostprijs
|
||||
|
||||
# CostPrice=Cost price
|
||||
# BuyingCost=Cost price
|
||||
# UnitCharges=Unit charges
|
||||
# Charges=Charges
|
||||
CostPrice=Kostprijs
|
||||
BuyingCost=Kostprijs
|
||||
UnitCharges=Unit toeslag
|
||||
Charges=Toeslag
|
||||
|
||||
# AgentContactType=Contact type used for commissioning
|
||||
# AgentContactTypeDetails=Défine what contact type (linked on invoices) will be associated with commercial agents
|
||||
AgentContactType=Contact type used voor commissie
|
||||
AgentContactTypeDetails=Definieer het contact type (gelinked op facturen) wordt geassocieerd met commercieel agent
|
||||
|
||||
@ -49,7 +49,7 @@ DictionnarySetup=Nastavitve slovarja
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=Onemogoči JavaScript in Ajax funkcije
|
||||
ConfirmAjax=Za potrditev uporabi Ajax pojavni meni
|
||||
UseSearchToSelectCompany=Za izbiro podjetja uporabi obrazec za iskanje(namesto polja s seznamom).<br><br>Če je partnerjev zelo veliko (> 100 000), lahko hitrost povišate z nastavitvijo konstante SOCIETE_DONOTSEARCH_ANYWHERE na 1 v Nastavitve->Ostale nastavitve. Iskanje bo s tem omejeno na začetek niza.
|
||||
UseSearchToSelectCompany=Za izbiro podjetja uporabi obrazec za iskanje(namesto polja s seznamom).<br><br>Če je partnerjev zelo veliko (> 100 000), lahko hitrost povišate z nastavitvijo konstante COMPANY_DONOTSEARCH_ANYWHERE na 1 v Nastavitve->Ostale nastavitve. Iskanje bo s tem omejeno na začetek niza.
|
||||
ActivityStateToSelectCompany= Dodaj opcijo filtra za prikaz/skritje partnerjev, ki so trenutno neaktivni ali so prekinili aktivnosti
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=Opcije iskalnega filtra
|
||||
|
||||
@ -49,7 +49,7 @@ ErrorReservedTypeSystemSystemAuto='system' ve 'systemauto' değerleri tip için
|
||||
ErrorCodeCantContainZero=Kod 0 değeri içeremez
|
||||
DisableJavascript=Javascript ve Ajax fonksiyonlarını engelle
|
||||
ConfirmAjax=Açılır Ajax onay pencereleri kullanın
|
||||
UseSearchToSelectCompany=Üçüncü partileri seçmek için (liste kutusu yerine) oto tamamlamalı alanları kullanın.<br><br>Çok sayıda üçüncü parti (>100 000) olsa da Ayarlar->Diğer (Setup->Other) de SOCIETE_DONOTSEARCH_ANYWHERE değişmezini 1 yaparak hızı arttırabilirsiniz. Bundan sonra arama yalnızca dizenin başlangıcı ile sınırlıdır.
|
||||
UseSearchToSelectCompany=Üçüncü partileri seçmek için (liste kutusu yerine) oto tamamlamalı alanları kullanın.<br><br>Çok sayıda üçüncü parti (>100 000) olsa da Ayarlar->Diğer (Setup->Other) de COMPANY_DONOTSEARCH_ANYWHERE değişmezini 1 yaparak hızı arttırabilirsiniz. Bundan sonra arama yalnızca dizenin başlangıcı ile sınırlıdır.
|
||||
ActivityStateToSelectCompany= Halen etkin olan ya da durdmuş olan üçüncü partilerin görünmesi/gizlenmesi bir süzgeç seçeneği ekleyin
|
||||
UseSearchToSelectContact=Kişi seçmek için (liste kutusu yerine) oto tamamlamalı alanları kullanın.<br><br>Çok sayıda üçüncü parti (>100 000) olsa da Ayarlar->Diğer den CONTACT_DONOTSEARCH_ANYWHERE değişmezini 1 yaparak hızı arttırabilirsiniz. Bundan sonra arama yalnızca dizenin başlangıcı ile sınırlı olacaktır.
|
||||
SearchFilter=Arama süzgeçi seçenekleri
|
||||
|
||||
@ -49,7 +49,7 @@ ErrorReservedTypeSystemSystemAuto=Giá trị 'hệ thống' và 'hệ thống t
|
||||
ErrorCodeCantContainZero=Mã lệnh không thể chứa giá trị 0
|
||||
DisableJavascript=Vô hiệu hóa JavaScript và tính năng Ajax
|
||||
ConfirmAjax=Sử dụng popups xác định từ Ajax
|
||||
UseSearchToSelectCompany=Sử dụng các trường tự động bổ sung để chọn các liên kết với các nhà phát triển thứ ba (thay vì danh sách chọn).<br><br>Đồng thời nếu bạn có một số lượng lớn các nhà phát triển thứ ba (>100 000), bạn có thể tăng tốc độ bằng việc thiết lập hằng số SOCIETE_DONOTSEARCH_ANYWHERE thành 1 trong Thiết lập->Khác. Việc tìm kiếm sẽ được giới hạn với những chuỗi bắt đầu.
|
||||
UseSearchToSelectCompany=Sử dụng các trường tự động bổ sung để chọn các liên kết với các nhà phát triển thứ ba (thay vì danh sách chọn).<br><br>Đồng thời nếu bạn có một số lượng lớn các nhà phát triển thứ ba (>100 000), bạn có thể tăng tốc độ bằng việc thiết lập hằng số COMPANY_DONOTSEARCH_ANYWHERE thành 1 trong Thiết lập->Khác. Việc tìm kiếm sẽ được giới hạn với những chuỗi bắt đầu.
|
||||
ActivityStateToSelectCompany= Thêm tùy chọn bộ lọc để ẩn/hiện các nhà phát triển thứ ba hiện đang hoạt động hoặc đã bị xóa
|
||||
UseSearchToSelectContact=Sử dụng trường tự hoàn tất để chọn liên lạc (thay vì sử dụng danh sách chọn).<br><br>Đồng thời nếu bạn có nhiều các phần tiện ích từ bên thứ ba (> 100 000), bạn có thể tắng tốc độ bằng cách thiết lập hằng số CONTACT_DONOTSEARCH_ANYWHERE lên 1 trong Cài đặt->Khác. Tìm kiếm sau đó sẽ giới hạn phần bắt đầu của chuỗi.
|
||||
SearchFilter=Tùy chọn bộ lọc tìm kiếm
|
||||
|
||||
@ -49,9 +49,9 @@ ErrorReservedTypeSystemSystemAuto=类型值 'system' 与 'systemauto' 是系统
|
||||
ErrorCodeCantContainZero=编码不能包含 0
|
||||
DisableJavascript=禁用 JavaScript 和 Ajax 功能
|
||||
ConfirmAjax=使用 Ajax 弹出式确认窗口
|
||||
UseSearchToSelectCompany=使用自动完成栏的方式,来选择第三方(不使用下拉选择框)<br><br>如果你有大于 100000 笔第三方资讯,则可以通过修改SOCIETE_DONOTSEARCH_ANYWHERE 常数为 1 来加快速度。此常数可以在设定->其他设置中设定。这样自动完成功能会被限制为从字首开始依次匹配。
|
||||
UseSearchToSelectCompany=使用自动完成栏的方式,来选择第三方(不使用下拉选择框)<br><br>如果你有大于 100000 笔第三方资讯,则可以通过修改COMPANY_DONOTSEARCH_ANYWHERE 常数为 1 来加快速度。此常数可以在设定->其他设置中设定。这样自动完成功能会被限制为从字首开始依次匹配。
|
||||
ActivityStateToSelectCompany= 添加一个筛选器选项来显示/隐藏当前有往来或已停止往来的客户/供应商。
|
||||
UseSearchToSelectContact=使用自动完成栏的方式,来选择第三方(取代下拉菜单)<br><br>如果你有大于 100000 个第三方,则可以通过修改SOCIETE_DONOTSEARCH_ANYWHERE 常数为 1 来加快速度。此常数可以在设定->其他设置中设定。这样自动完成功能会被限制为从字首开始依次匹配。
|
||||
UseSearchToSelectContact=使用自动完成栏的方式,来选择第三方(取代下拉菜单)<br><br>如果你有大于 100000 个第三方,则可以通过修改COMPANY_DONOTSEARCH_ANYWHERE 常数为 1 来加快速度。此常数可以在设定->其他设置中设定。这样自动完成功能会被限制为从字首开始依次匹配。
|
||||
SearchFilter=搜索过滤选项
|
||||
NumberOfKeyToSearch=触发搜索的字符数量:%s
|
||||
ViewFullDateActions=在第三表中显示全天事件
|
||||
|
||||
@ -49,7 +49,7 @@ DictionnarySetup=設定選項清單
|
||||
# ErrorCodeCantContainZero=Code can't contain value 0
|
||||
DisableJavascript=禁用JavaScript和Ajax功能
|
||||
ConfirmAjax=使用Ajax確認彈出式窗口
|
||||
UseSearchToSelectCompany=使用自動完成欄位資訊的方式,來選擇客戶/供應商(而不是使用清單方式)<br><br>如果你有大於100000筆的客戶/供應商資訊,則可以藉由修改SOCIETE_DONOTSEARCH_ANYWHERE常數為 1 來加快速度。此常數可以在設定->其他設置中設定。 這樣在搜尋的時候會被限制為字串開始輸入時。
|
||||
UseSearchToSelectCompany=使用自動完成欄位資訊的方式,來選擇客戶/供應商(而不是使用清單方式)<br><br>如果你有大於100000筆的客戶/供應商資訊,則可以藉由修改COMPANY_DONOTSEARCH_ANYWHERE常數為 1 來加快速度。此常數可以在設定->其他設置中設定。 這樣在搜尋的時候會被限制為字串開始輸入時。
|
||||
ActivityStateToSelectCompany= 添加一個篩選器的選項,以顯示/隱藏thirdparties,這是在目前的活動或已停止
|
||||
# UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).<br><br>Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
|
||||
SearchFilter=搜尋過濾選項
|
||||
|
||||
@ -168,9 +168,6 @@ if ($result)
|
||||
print_liste_field_titre($langs->trans("MarkRate"),$_SERVER["PHP_SELF"],"","","&agentid=".$agentid,'align="right"',$sortfield,$sortorder);
|
||||
print "</tr>\n";
|
||||
|
||||
$cumul_achat = 0;
|
||||
$cumul_vente = 0;
|
||||
$cumul_qty = 0;
|
||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
|
||||
if ($num > 0)
|
||||
@ -187,13 +184,13 @@ if ($result)
|
||||
|
||||
if ($marge < 0)
|
||||
{
|
||||
$marginRate = ($pa != 0)?-1*(100 * round($marge / $pa, 5)):'' ;
|
||||
$markRate = ($pv != 0)?-1*(100 * round($marge / $pv, 5)):'' ;
|
||||
$marginRate = ($pa != 0)?-1*(100 * $marge / $pa):'' ;
|
||||
$markRate = ($pv != 0)?-1*(100 * $marge / $pv):'' ;
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($pa != 0)?(100 * round($marge / $pa, 5)):'' ;
|
||||
$markRate = ($pv != 0)?(100 * round($marge / $pv, 5)):'' ;
|
||||
$marginRate = ($pa != 0)?(100 * $marge / $pa):'' ;
|
||||
$markRate = ($pv != 0)?(100 * $marge / $pv):'' ;
|
||||
}
|
||||
|
||||
$var=!$var;
|
||||
@ -210,18 +207,16 @@ if ($result)
|
||||
print "<td>".$userstatic->getFullName($langs,0,0,0)."</td>\n";
|
||||
}
|
||||
|
||||
print "<td align=\"right\">".price($pv)."</td>\n";
|
||||
print "<td align=\"right\">".price($pa)."</td>\n";
|
||||
print "<td align=\"right\">".price($marge)."</td>\n";
|
||||
print "<td align=\"right\">".price($pv, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($pa, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($marge, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
$i++;
|
||||
$cumul_achat += round($objp->buying_price, $rounding);
|
||||
$cumul_vente += round($objp->selling_price, $rounding);
|
||||
}
|
||||
}
|
||||
print "</table>";
|
||||
|
||||
@ -210,7 +210,7 @@ if ($result)
|
||||
|
||||
$cumul_achat = 0;
|
||||
$cumul_vente = 0;
|
||||
$cumul_qty = 0;
|
||||
|
||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
|
||||
if ($num > 0)
|
||||
@ -227,13 +227,13 @@ if ($result)
|
||||
|
||||
if ($marge < 0)
|
||||
{
|
||||
$marginRate = ($pa != 0)?-1*(100 * round($marge / $pa, 5)):'' ;
|
||||
$markRate = ($pv != 0)?-1*(100 * round($marge / $pv, 5)):'' ;
|
||||
$marginRate = ($pa != 0)?-1*(100 * $marge / $pa):'' ;
|
||||
$markRate = ($pv != 0)?-1*(100 * $marge / $pv):'' ;
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($pa != 0)?(100 * round($marge / $pa, 5)):'' ;
|
||||
$markRate = ($pv != 0)?(100 * round($marge / $pv, 5)):'' ;
|
||||
$marginRate = ($pa != 0)?(100 * $marge / $pa):'' ;
|
||||
$markRate = ($pv != 0)?(100 * $marge / $pv):'' ;
|
||||
}
|
||||
|
||||
$var=!$var;
|
||||
@ -255,18 +255,18 @@ if ($result)
|
||||
print "<td>".$companystatic->getNomUrl(1,'customer')."</td>\n";
|
||||
}
|
||||
|
||||
print "<td align=\"right\">".price($pv)."</td>\n";
|
||||
print "<td align=\"right\">".price($pa)."</td>\n";
|
||||
print "<td align=\"right\">".price($marge)."</td>\n";
|
||||
print "<td align=\"right\">".price($pv, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($pa, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($marge, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
$i++;
|
||||
$cumul_achat += round($objp->buying_price, $rounding);
|
||||
$cumul_vente += round($objp->selling_price, $rounding);
|
||||
$cumul_achat += $objp->buying_price;
|
||||
$cumul_vente += $objp->selling_price;
|
||||
}
|
||||
}
|
||||
|
||||
@ -275,13 +275,13 @@ if ($result)
|
||||
$totalMargin = $cumul_vente - $cumul_achat;
|
||||
if ($totalMargin < 0)
|
||||
{
|
||||
$marginRate = ($cumul_achat != 0)?-1*(100 * round($totalMargin / $cumul_achat, 5)):'';
|
||||
$markRate = ($cumul_vente != 0)?-1*(100 * round($totalMargin / $cumul_vente, 5)):'';
|
||||
$marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):'';
|
||||
$markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):'';
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($cumul_achat != 0)?(100 * round($totalMargin / $cumul_achat, 5)):'';
|
||||
$markRate = ($cumul_vente != 0)?(100 * round($totalMargin / $cumul_vente, 5)):'';
|
||||
$marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):'';
|
||||
$markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):'';
|
||||
}
|
||||
|
||||
print '<tr '.$bc[$var].' style="border-top: 1px solid #ccc; font-weight: bold">';
|
||||
@ -290,13 +290,13 @@ if ($result)
|
||||
else
|
||||
print '<td>';
|
||||
print $langs->trans('TotalMargin')."</td>";
|
||||
print "<td align=\"right\">".price($cumul_vente)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_achat)."</td>\n";
|
||||
print "<td align=\"right\">".price($totalMargin)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_vente, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_achat, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($totalMargin, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
print "</table>";
|
||||
@ -322,9 +322,9 @@ $(document).ready(function() {
|
||||
$("div.fiche form").submit();
|
||||
});
|
||||
|
||||
$("#totalMargin").html("<?php echo price($totalMargin); ?>");
|
||||
$("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate)."%"); ?>");
|
||||
$("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate)."%"); ?>");
|
||||
$("#totalMargin").html("<?php echo price($totalMargin, null, null, null, null, $rounding); ?>");
|
||||
$("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%"); ?>");
|
||||
$("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%"); ?>");
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -125,10 +125,10 @@ function getMarginInfos($pvht, $remise_percent, $tva_tx, $localtax1_tx, $localta
|
||||
|
||||
// calcul taux marge
|
||||
if ($paht_ret != 0)
|
||||
$marge_tx_ret = round((100 * $marge) / $paht_ret, 3);
|
||||
$marge_tx_ret = (100 * $marge) / $paht_ret;
|
||||
// calcul taux marque
|
||||
if ($pu_ht_remise != 0)
|
||||
$marque_tx_ret = round((100 * $marge) / $pu_ht_remise, 3);
|
||||
$marque_tx_ret = (100 * $marge) / $pu_ht_remise;
|
||||
|
||||
return array($paht_ret, $marge_tx_ret, $marque_tx_ret);
|
||||
}
|
||||
|
||||
@ -215,7 +215,6 @@ if ($result)
|
||||
|
||||
$cumul_achat = 0;
|
||||
$cumul_vente = 0;
|
||||
$cumul_qty = 0;
|
||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
|
||||
if ($num > 0)
|
||||
@ -231,13 +230,13 @@ if ($result)
|
||||
|
||||
if ($marge < 0)
|
||||
{
|
||||
$marginRate = ($pa != 0)?-1*(100 * round($marge / $pa, 5)):'' ;
|
||||
$markRate = ($pv != 0)?-1*(100 * round($marge / $pv, 5)):'' ;
|
||||
$marginRate = ($pa != 0)?-1*(100 * $marge / $pa):'' ;
|
||||
$markRate = ($pv != 0)?-1*(100 * $marge / $pv):'' ;
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($pa != 0)?(100 * round($marge / $pa, 5)):'' ;
|
||||
$markRate = ($pv != 0)?(100 * round($marge / $pv, 5)):'' ;
|
||||
$marginRate = ($pa != 0)?(100 * $marge / $pa):'' ;
|
||||
$markRate = ($pv != 0)?(100 * $marge / $pv):'' ;
|
||||
}
|
||||
|
||||
$var=!$var;
|
||||
@ -261,18 +260,18 @@ if ($result)
|
||||
$text.= ' - '.$objp->label;
|
||||
print "<td>".$product_static->getNomUrl(1)."</td>\n";
|
||||
}
|
||||
print "<td align=\"right\">".price($pv)."</td>\n";
|
||||
print "<td align=\"right\">".price($pa)."</td>\n";
|
||||
print "<td align=\"right\">".price($marge)."</td>\n";
|
||||
print "<td align=\"right\">".price($pv, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($pa, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($marge, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
$i++;
|
||||
$cumul_achat += round($objp->buying_price, $rounding);
|
||||
$cumul_vente += round($objp->selling_price, $rounding);
|
||||
$cumul_achat += $objp->buying_price;
|
||||
$cumul_vente += $objp->selling_price;
|
||||
}
|
||||
|
||||
}
|
||||
@ -282,13 +281,13 @@ if ($result)
|
||||
$totalMargin = $cumul_vente - $cumul_achat;
|
||||
if ($totalMargin < 0)
|
||||
{
|
||||
$marginRate = ($cumul_achat != 0)?-1*(100 * round($totalMargin / $cumul_achat, 5)):'';
|
||||
$markRate = ($cumul_vente != 0)?-1*(100 * round($totalMargin / $cumul_vente, 5)):'';
|
||||
$marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):'';
|
||||
$markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):'';
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($cumul_achat != 0)?(100 * round($totalMargin / $cumul_achat, 5)):'';
|
||||
$markRate = ($cumul_vente != 0)?(100 * round($totalMargin / $cumul_vente, 5)):'';
|
||||
$marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):'';
|
||||
$markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):'';
|
||||
}
|
||||
print '<tr '.$bc[$var].' style="border-top: 1px solid #ccc; font-weight: bold">';
|
||||
if ($id > 0)
|
||||
@ -296,13 +295,13 @@ if ($result)
|
||||
else
|
||||
print '<td>';
|
||||
print $langs->trans('TotalMargin')."</td>";
|
||||
print "<td align=\"right\">".price($cumul_vente)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_achat)."</td>\n";
|
||||
print "<td align=\"right\">".price($totalMargin)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_vente, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_achat, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($totalMargin, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
print "</table>";
|
||||
@ -330,9 +329,9 @@ $(document).ready(function() {
|
||||
$("div.fiche form").submit();
|
||||
});
|
||||
|
||||
$("#totalMargin").html("<?php echo price($totalMargin); ?>");
|
||||
$("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate)."%"); ?>");
|
||||
$("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate)."%"); ?>");
|
||||
$("#totalMargin").html("<?php echo price($totalMargin, null, null, null, null, $rounding); ?>");
|
||||
$("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%"); ?>");
|
||||
$("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%"); ?>");
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -196,13 +196,13 @@ if ($id > 0 || ! empty($ref))
|
||||
|
||||
if ($objp->marge < 0)
|
||||
{
|
||||
$marginRate = ($objp->buying_price != 0)?-1*(100 * round($objp->marge / $objp->buying_price, 5)):'' ;
|
||||
$markRate = ($objp->selling_price != 0)?-1*(100 * round($objp->marge / $objp->selling_price, 5)):'' ;
|
||||
$marginRate = ($objp->buying_price != 0)?-1*(100 * $objp->marge / $objp->buying_price):'' ;
|
||||
$markRate = ($objp->selling_price != 0)?-1*(100 * $objp->marge / $objp->selling_price):'' ;
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($objp->buying_price != 0)?(100 * round($objp->marge / $objp->buying_price, 5)):'' ;
|
||||
$markRate = ($objp->selling_price != 0)?(100 * round($objp->marge / $objp->selling_price, 5)):'' ;
|
||||
$marginRate = ($objp->buying_price != 0)?(100 * $objp->marge / $objp->buying_price):'' ;
|
||||
$markRate = ($objp->selling_price != 0)?(100 * $objp->marge / $objp->selling_price):'' ;
|
||||
}
|
||||
|
||||
print "<tr ".$bc[$var].">";
|
||||
@ -215,19 +215,19 @@ if ($id > 0 || ! empty($ref))
|
||||
print "<td>".$objp->code_client."</td>\n";
|
||||
print "<td align=\"center\">";
|
||||
print dol_print_date($db->jdate($objp->datef),'day')."</td>";
|
||||
print "<td align=\"right\">".price($objp->selling_price)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->buying_price)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->qty)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->marge)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->selling_price, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->buying_price, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->qty, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->marge, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print '<td align="right">'.$invoicestatic->LibStatut($objp->paye,$objp->statut,5).'</td>';
|
||||
print "</tr>\n";
|
||||
$i++;
|
||||
$cumul_achat += round($objp->buying_price, $rounding);
|
||||
$cumul_vente += round($objp->selling_price, $rounding);
|
||||
$cumul_achat += $objp->buying_price;
|
||||
$cumul_vente += $objp->selling_price;
|
||||
$cumul_qty += $objp->qty;
|
||||
}
|
||||
}
|
||||
@ -237,24 +237,24 @@ if ($id > 0 || ! empty($ref))
|
||||
$totalMargin = $cumul_vente - $cumul_achat;
|
||||
if ($totalMargin < 0)
|
||||
{
|
||||
$marginRate = ($cumul_achat != 0)?-1*(100 * round($totalMargin / $cumul_achat, 5)):'';
|
||||
$markRate = ($cumul_vente != 0)?-1*(100 * round($totalMargin / $cumul_vente, 5)):'';
|
||||
$marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):'';
|
||||
$markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):'';
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($cumul_achat != 0)?(100 * round($totalMargin / $cumul_achat, 5)):'';
|
||||
$markRate = ($cumul_vente != 0)?(100 * round($totalMargin / $cumul_vente, 5)):'';
|
||||
$marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):'';
|
||||
$markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):'';
|
||||
}
|
||||
print '<tr '.$bc[$var].' style="border-top: 1px solid #ccc; font-weight: bold">';
|
||||
print '<td colspan=4>'.$langs->trans('TotalMargin')."</td>";
|
||||
print "<td align=\"right\">".price($cumul_vente)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_achat)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_qty)."</td>\n";
|
||||
print "<td align=\"right\">".price($totalMargin)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_vente, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_achat, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_qty, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($totalMargin, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print '<td align="right"> </td>';
|
||||
print "</tr>\n";
|
||||
}
|
||||
@ -278,8 +278,8 @@ $db->close();
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#totalMargin").html("<?php echo price($totalMargin); ?>");
|
||||
$("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate)."%"); ?>");
|
||||
$("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate)."%"); ?>");
|
||||
$("#totalMargin").html("<?php echo price($totalMargin, null, null, null, null, $rounding); ?>");
|
||||
$("#marginRate").html("<?php echo (($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%"); ?>");
|
||||
$("#markRate").html("<?php echo (($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%"); ?>");
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -175,7 +175,7 @@ if ($socid > 0)
|
||||
|
||||
$cumul_achat = 0;
|
||||
$cumul_vente = 0;
|
||||
$cumul_qty = 0;
|
||||
|
||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
|
||||
if ($num > 0)
|
||||
@ -187,13 +187,13 @@ if ($socid > 0)
|
||||
|
||||
if ($objp->marge < 0)
|
||||
{
|
||||
$marginRate = ($objp->buying_price != 0)?-1*(100 * round($objp->marge / $objp->buying_price, 5)):'' ;
|
||||
$markRate = ($objp->selling_price != 0)?-1*(100 * round($objp->marge / $objp->selling_price, 5)):'' ;
|
||||
$marginRate = ($objp->buying_price != 0)?-1*(100 * $objp->marge / $objp->buying_price):'' ;
|
||||
$markRate = ($objp->selling_price != 0)?-1*(100 * $objp->marge / $objp->selling_price):'' ;
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($objp->buying_price != 0)?(100 * round($objp->marge / $objp->buying_price, 5)):'' ;
|
||||
$markRate = ($objp->selling_price != 0)?(100 * round($objp->marge / $objp->selling_price, 5)):'' ;
|
||||
$marginRate = ($objp->buying_price != 0)?(100 * $objp->marge / $objp->buying_price):'' ;
|
||||
$markRate = ($objp->selling_price != 0)?(100 * $objp->marge / $objp->selling_price):'' ;
|
||||
}
|
||||
|
||||
$var=!$var;
|
||||
@ -206,18 +206,18 @@ if ($socid > 0)
|
||||
print "</td>\n";
|
||||
print "<td align=\"center\">";
|
||||
print dol_print_date($db->jdate($objp->datef),'day')."</td>";
|
||||
print "<td align=\"right\">".price($objp->selling_price)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->buying_price)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->marge)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->selling_price, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->buying_price, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($objp->marge, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print '<td align="right">'.$invoicestatic->LibStatut($objp->paye,$objp->statut,5).'</td>';
|
||||
print "</tr>\n";
|
||||
$i++;
|
||||
$cumul_achat += round($objp->buying_price, $rounding);
|
||||
$cumul_vente += round($objp->selling_price, $rounding);
|
||||
$cumul_achat += $objp->buying_price;
|
||||
$cumul_vente += $objp->selling_price;
|
||||
}
|
||||
}
|
||||
|
||||
@ -226,23 +226,23 @@ if ($socid > 0)
|
||||
$totalMargin = $cumul_vente - $cumul_achat;
|
||||
if ($totalMargin < 0)
|
||||
{
|
||||
$marginRate = ($cumul_achat != 0)?-1*(100 * round($totalMargin / $cumul_achat, 5)):'';
|
||||
$markRate = ($cumul_vente != 0)?-1*(100 * round($totalMargin / $cumul_vente, 5)):'';
|
||||
$marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):'';
|
||||
$markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):'';
|
||||
}
|
||||
else
|
||||
{
|
||||
$marginRate = ($cumul_achat != 0)?(100 * round($totalMargin / $cumul_achat, 5)):'';
|
||||
$markRate = ($cumul_vente != 0)?(100 * round($totalMargin / $cumul_vente, 5)):'';
|
||||
$marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):'';
|
||||
$markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):'';
|
||||
}
|
||||
print '<tr '.$bc[$var].' style="border-top: 1px solid #ccc; font-weight: bold">';
|
||||
print '<td colspan=2>'.$langs->trans('TotalMargin')."</td>";
|
||||
print "<td align=\"right\">".price($cumul_vente)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_achat)."</td>\n";
|
||||
print "<td align=\"right\">".price($totalMargin)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_vente, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($cumul_achat, null, null, null, null, $rounding)."</td>\n";
|
||||
print "<td align=\"right\">".price($totalMargin, null, null, null, null, $rounding)."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate)."%")."</td>\n";
|
||||
print "<td align=\"right\">".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."</td>\n";
|
||||
print '<td align="right"> </td>';
|
||||
print "</tr>\n";
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* 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
|
||||
@ -46,6 +47,9 @@ $fieldtype = (! empty($ref) ? 'ref' : 'rowid');
|
||||
if ($user->societe_id) $socid=$user->societe_id;
|
||||
$result=restrictedArea($user,'produit|service',$fieldvalue,'product&product','','',$fieldtype);
|
||||
|
||||
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
|
||||
$hookmanager->initHooks(array('productdocuments'));
|
||||
|
||||
// Get parameters
|
||||
$sortfield = GETPOST("sortfield",'alpha');
|
||||
$sortorder = GETPOST("sortorder",'alpha');
|
||||
@ -68,6 +72,10 @@ if ($id > 0 || ! empty($ref))
|
||||
}
|
||||
$modulepart='produit';
|
||||
|
||||
$parameters=array('id'=>$id);
|
||||
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||
|
||||
|
||||
/*
|
||||
* Action envoie fichier
|
||||
*/
|
||||
@ -106,6 +114,8 @@ if ($object->id)
|
||||
$picto=($object->type==1?'service':'product');
|
||||
dol_fiche_head($head, 'documents', $titre, 0, $picto);
|
||||
|
||||
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
|
||||
|
||||
|
||||
// Construit liste des fichiers
|
||||
$filearray=dol_dir_list($upload_dir,"files",0,'','\.meta$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user