Merge branch 'develop' into dev_projecthtmlform

This commit is contained in:
Florian Henry 2013-06-15 11:56:45 +02:00
commit f2e2815cc1
25 changed files with 646 additions and 436 deletions

View File

@ -23,6 +23,7 @@ For users:
- New: [ task #926 ] Add extrafield feature on order lines - New: [ task #926 ] Add extrafield feature on order lines
- New: [ task #927 ] Add extrafield feature on Proposal lines - New: [ task #927 ] Add extrafield feature on Proposal lines
- New: [ task #928 ] Add extrafield feature on invoice lines - New: [ task #928 ] Add extrafield feature on invoice lines
- New: Add option ADHERENT_LOGIN_NOT_REQUIRED
For translators: For translators:
- Normalized sort order of all languages files with english ref file. - Normalized sort order of all languages files with english ref file.

View File

@ -130,20 +130,17 @@ $var=true;
$form = new Form($db); $form = new Form($db);
// Login/Pass required for members // Login/Pass required for members
if ($conf->global->MAIN_FEATURES_LEVEL > 0) $var=!$var;
{ print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
$var=!$var; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">'; print '<input type="hidden" name="action" value="update">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="constname" value="ADHERENT_LOGIN_NOT_REQUIRED">';
print '<input type="hidden" name="action" value="update">'; print '<tr '.$bc[$var].'><td>'.$langs->trans("AdherentLoginRequired").'</td><td>';
print '<input type="hidden" name="constname" value="ADHERENT_LOGIN_NOT_REQUIRED">'; print $form->selectyesno('constvalue',(! empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)?0:1),1);
print '<tr '.$bc[$var].'><td>'.$langs->trans("AdherentLoginRequired").'</td><td>'; print '</td><td align="center" width="80">';
print $form->selectyesno('constvalue',(! empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)?$conf->global->ADHERENT_LOGIN_NOT_REQUIRED:1),1); print '<input type="submit" class="button" value="'.$langs->trans("Update").'" name="Button">';
print '</td><td align="center" width="80">'; print "</td></tr>\n";
print '<input type="submit" class="button" value="'.$langs->trans("Update").'" name="Button">'; print '</form>';
print "</td></tr>\n";
print '</form>';
}
// Mail required for members // Mail required for members
$var=!$var; $var=!$var;

View File

@ -1838,7 +1838,7 @@ else if ($action == 'print_file' AND $user->rights->printipp->read)
{ {
require_once DOL_DOCUMENT_ROOT.'/core/class/dolprintipp.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolprintipp.class.php';
$printer = new dolPrintIPP($db,$conf->global->PRINTIPP_HOST,$conf->global->PRINTIPP_PORT,$user->login,$conf->global->PRINTIPP_USER,$conf->global->PRINTIPP_PASSWORD); $printer = new dolPrintIPP($db,$conf->global->PRINTIPP_HOST,$conf->global->PRINTIPP_PORT,$user->login,$conf->global->PRINTIPP_USER,$conf->global->PRINTIPP_PASSWORD);
$printer->print_file(GETPOST('file',alpha),GETPOST('printer',alpha)); $printer->print_file(GETPOST('file','alpha'),GETPOST('printer','alpha'));
setEventMessage($langs->trans("FileWasSentToPrinter", GETPOST('file'))); setEventMessage($langs->trans("FileWasSentToPrinter", GETPOST('file')));
$action=''; $action='';
} }

View File

@ -125,8 +125,8 @@ class FactureRec extends Facture
$sql.= ", '".$facsrc->socid."'"; $sql.= ", '".$facsrc->socid."'";
$sql.= ", ".$conf->entity; $sql.= ", ".$conf->entity;
$sql.= ", ".$this->db->idate($now); $sql.= ", ".$this->db->idate($now);
$sql.= ", '".$facsrc->amount."'"; $sql.= ", ".(!empty($facsrc->amount)?$facsrc->amount:'0');
$sql.= ", '".$facsrc->remise."'"; $sql.= ", ".(!empty($facsrc->remise)?$this->remise:'0');
$sql.= ", ".(!empty($this->note_private)?("'".$this->db->escape($this->note_private)."'"):"NULL"); $sql.= ", ".(!empty($this->note_private)?("'".$this->db->escape($this->note_private)."'"):"NULL");
$sql.= ", ".(!empty($this->note_public)?("'".$this->db->escape($this->note_public)."'"):"NULL"); $sql.= ", ".(!empty($this->note_public)?("'".$this->db->escape($this->note_public)."'"):"NULL");
$sql.= ", '".$user->id."'"; $sql.= ", '".$user->id."'";

View File

@ -627,11 +627,11 @@ class ExtraFields
{ {
$tmp=explode(',',$size); $tmp=explode(',',$size);
$newsize=$tmp[0]; $newsize=$tmp[0];
$out='<input type="text" name="options_'.$key.'" size="'.$showsize.'" maxlength="'.$newsize.'" value="'.$value.'"'.($moreparam?$moreparam:'').'>'; $out='<input type="text" class="flat" name="options_'.$key.'" size="'.$showsize.'" maxlength="'.$newsize.'" value="'.$value.'"'.($moreparam?$moreparam:'').'>';
} }
elseif ($type == 'varchar') elseif ($type == 'varchar')
{ {
$out='<input type="text" name="options_'.$key.'" size="'.$showsize.'" maxlength="'.$size.'" value="'.$value.'"'.($moreparam?$moreparam:'').'>'; $out='<input type="text" class="flat" name="options_'.$key.'" size="'.$showsize.'" maxlength="'.$size.'" value="'.$value.'"'.($moreparam?$moreparam:'').'>';
} }
elseif ($type == 'text') elseif ($type == 'text')
{ {
@ -647,30 +647,30 @@ class ExtraFields
} else { } else {
$checked=' value="1" '; $checked=' value="1" ';
} }
$out='<input type="checkbox" name="options_'.$key.'" '.$checked.' '.($moreparam?$moreparam:'').'>'; $out='<input type="checkbox" class="flat" name="options_'.$key.'" '.$checked.' '.($moreparam?$moreparam:'').'>';
} }
elseif ($type == 'mail') elseif ($type == 'mail')
{ {
$out='<input type="text" name="options_'.$key.'" size="32" value="'.$value.'">'; $out='<input type="text" class="flat" name="options_'.$key.'" size="32" value="'.$value.'">';
} }
elseif ($type == 'phone') elseif ($type == 'phone')
{ {
$out='<input type="text" name="options_'.$key.'" size="20" value="'.$value.'">'; $out='<input type="text" class="flat" name="options_'.$key.'" size="20" value="'.$value.'">';
} }
elseif ($type == 'price') elseif ($type == 'price')
{ {
$out='<input type="text" name="options_'.$key.'" size="6" value="'.price($value).'"> '.$langs->getCurrencySymbol($conf->currency); $out='<input type="text" class="flat" name="options_'.$key.'" size="6" value="'.price($value).'"> '.$langs->getCurrencySymbol($conf->currency);
} }
elseif ($type == 'double') elseif ($type == 'double')
{ {
if (!empty($value)) { if (!empty($value)) {
$value=price($value); $value=price($value);
} }
$out='<input type="text" name="options_'.$key.'" size="6" value="'.$value.'"> '; $out='<input type="text" class="flat" name="options_'.$key.'" size="6" value="'.$value.'"> ';
} }
elseif ($type == 'select') elseif ($type == 'select')
{ {
$out='<select name="options_'.$key.'">'; $out='<select class="flat" name="options_'.$key.'">';
foreach ($param['options'] as $key=>$val ) foreach ($param['options'] as $key=>$val )
{ {
$out.='<option value="'.$key.'"'; $out.='<option value="'.$key.'"';
@ -681,7 +681,7 @@ class ExtraFields
} }
elseif ($type == 'sellist') elseif ($type == 'sellist')
{ {
$out='<select name="options_'.$key.'">'; $out='<select class="flat" name="options_'.$key.'">';
$param_list=array_keys($param['options']); $param_list=array_keys($param['options']);
$InfoFieldList = explode(":", $param_list[0]); $InfoFieldList = explode(":", $param_list[0]);
@ -698,7 +698,7 @@ class ExtraFields
$sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0];
//$sql.= ' WHERE entity = '.$conf->entity; //$sql.= ' WHERE entity = '.$conf->entity;
dol_syslog(get_class($this).':showInputField:$type=sellist sql='.$sql); dol_syslog(get_class($this).'::showInputField type=sellist sql='.$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
@ -741,7 +741,7 @@ class ExtraFields
foreach ($param['options'] as $keyopt=>$val ) foreach ($param['options'] as $keyopt=>$val )
{ {
$out.='<input type="checkbox" name="options_'.$key.'[]"'; $out.='<input class="flat" type="checkbox" name="options_'.$key.'[]"';
$out.=' value="'.$keyopt.'"'; $out.=' value="'.$keyopt.'"';
if ((is_array($value_arr)) && in_array($keyopt,$value_arr)) { if ((is_array($value_arr)) && in_array($keyopt,$value_arr)) {
@ -758,7 +758,7 @@ class ExtraFields
$out=''; $out='';
foreach ($param['options'] as $keyopt=>$val ) foreach ($param['options'] as $keyopt=>$val )
{ {
$out.='<input type="radio" name="options_'.$key.'"'; $out.='<input class="flat" type="radio" name="options_'.$key.'"';
$out.=' value="'.$keyopt.'"'; $out.=' value="'.$keyopt.'"';
$out.= ($value==$keyopt?'checked="checked"':''); $out.= ($value==$keyopt?'checked="checked"':'');
$out.='/>'.$val.'<br>'; $out.='/>'.$val.'<br>';
@ -842,7 +842,6 @@ class ExtraFields
if (count($InfoFieldList)==3) if (count($InfoFieldList)==3)
$keyList=$InfoFieldList[2]; $keyList=$InfoFieldList[2];
$sql = 'SELECT '.$InfoFieldList[1]; $sql = 'SELECT '.$InfoFieldList[1];
$sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0];
$sql.= ' WHERE '.$keyList.'=\''.$this->db->escape($value).'\''; $sql.= ' WHERE '.$keyList.'=\''.$this->db->escape($value).'\'';

View File

@ -2040,15 +2040,16 @@ function img_up($alt = 'default', $selected = 0)
* *
* @param string $alt Text to show on alt image * @param string $alt Text to show on alt image
* @param int $selected Selected * @param int $selected Selected
* @param string $options Add more attribute on img tag (For example 'style="float: right"')
* @return string Return img tag * @return string Return img tag
*/ */
function img_left($alt = 'default', $selected = 0) function img_left($alt = 'default', $selected = 0, $options='')
{ {
global $conf, $langs; global $conf, $langs;
if ($alt == 'default') $alt = $langs->trans('Left'); if ($alt == 'default') $alt = $langs->trans('Left');
return img_picto($alt, ($selected ? '1leftarrow_selected.png' : '1leftarrow.png')); return img_picto($alt, ($selected ? '1leftarrow_selected.png' : '1leftarrow.png'), $options);
} }
/** /**
@ -2056,15 +2057,16 @@ function img_left($alt = 'default', $selected = 0)
* *
* @param string $alt Text to show on alt image * @param string $alt Text to show on alt image
* @param int $selected Selected * @param int $selected Selected
* @param string $options Add more attribute on img tag (For example 'style="float: right"')
* @return string Return img tag * @return string Return img tag
*/ */
function img_right($alt = 'default', $selected = 0) function img_right($alt = 'default', $selected = 0, $options='')
{ {
global $conf, $langs; global $conf, $langs;
if ($alt == 'default') $alt = $langs->trans('Right'); if ($alt == 'default') $alt = $langs->trans('Right');
return img_picto($alt, ($selected ? '1rightarrow_selected.png' : '1rightarrow.png')); return img_picto($alt, ($selected ? '1rightarrow_selected.png' : '1rightarrow.png'), $options);
} }
/** /**

View File

@ -301,7 +301,7 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM
// Show menu // Show menu
if (empty($noout)) if (empty($noout))
{ {
$alt=0; $alt=0; $blockvmenuopened=false;
$num=count($menu_array); $num=count($menu_array);
for ($i = 0; $i < $num; $i++) for ($i = 0; $i < $num; $i++)
{ {
@ -311,6 +311,7 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM
$alt++; $alt++;
if (empty($menu_array[$i]['level']) && $showmenu) if (empty($menu_array[$i]['level']) && $showmenu)
{ {
$blockvmenuopened=true;
if (($alt%2==0)) if (($alt%2==0))
{ {
print '<div class="blockvmenuimpair">'."\n"; print '<div class="blockvmenuimpair">'."\n";
@ -344,7 +345,7 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM
$url.='mainmenu='.$mainmenu; $url.='mainmenu='.$mainmenu;
} }
print '<!-- Add menu entry with mainmenu='.$menu_array[$i]['mainmenu'].', leftmenu='.$menu_array[$i]['leftmenu'].', level='.$menu_array[$i]['level'].' -->'."\n"; print '<!-- Process menu entry with mainmenu='.$menu_array[$i]['mainmenu'].', leftmenu='.$menu_array[$i]['leftmenu'].', level='.$menu_array[$i]['level'].' enabled='.$menu_array[$i]['enabled'].' -->'."\n";
// Menu niveau 0 // Menu niveau 0
if ($menu_array[$i]['level'] == 0) if ($menu_array[$i]['level'] == 0)
@ -379,12 +380,12 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM
} }
} }
// If next is a new block or end // If next is a new block or if there is nothing after
if (empty($menu_array[$i+1]['level'])) if (empty($menu_array[$i+1]['level']))
{ {
if ($showmenu) if ($showmenu)
print '<div class="menu_end"></div>'."\n"; print '<div class="menu_end"></div>'."\n";
print "</div>\n"; if ($blockvmenuopened) { print "</div>\n"; $blockvmenuopened=false; }
} }
} }
} }

View File

@ -1269,7 +1269,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
// Show menu // Show menu
if (empty($noout)) if (empty($noout))
{ {
$alt=0; $alt=0; $blockvmenuopened=false;
$num=count($menu_array); $num=count($menu_array);
for ($i = 0; $i < $num; $i++) for ($i = 0; $i < $num; $i++)
{ {
@ -1279,6 +1279,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
$alt++; $alt++;
if (empty($menu_array[$i]['level']) && $showmenu) if (empty($menu_array[$i]['level']) && $showmenu)
{ {
$blockvmenuopened=true;
if (($alt%2==0)) if (($alt%2==0))
{ {
print '<div class="blockvmenuimpair">'."\n"; print '<div class="blockvmenuimpair">'."\n";
@ -1305,7 +1306,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
$url=preg_replace('/__LOGIN__/',$user->login,$url); $url=preg_replace('/__LOGIN__/',$user->login,$url);
$url=preg_replace('/__USERID__/',$user->id,$url); $url=preg_replace('/__USERID__/',$user->id,$url);
print '<!-- Add menu entry with mainmenu='.$menu_array[$i]['mainmenu'].', leftmenu='.$menu_array[$i]['leftmenu'].', level='.$menu_array[$i]['level'].' -->'."\n"; print '<!-- Process menu entry with mainmenu='.$menu_array[$i]['mainmenu'].', leftmenu='.$menu_array[$i]['leftmenu'].', level='.$menu_array[$i]['level'].' enabled='.$menu_array[$i]['enabled'].' -->'."\n";
// Menu niveau 0 // Menu niveau 0
if ($menu_array[$i]['level'] == 0) if ($menu_array[$i]['level'] == 0)
@ -1340,12 +1341,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
} }
} }
// If next is a new block or end // If next is a new block or if there is nothing after
if (empty($menu_array[$i+1]['level'])) if (empty($menu_array[$i+1]['level']))
{ {
if ($showmenu) if ($showmenu)
print '<div class="menu_end"></div>'."\n"; print '<div class="menu_end"></div>'."\n";
print "</div>\n"; if ($blockvmenuopened) { print "</div>\n"; $blockvmenuopened=false; }
} }
} }
} }

View File

@ -179,7 +179,7 @@ class modAdherent extends DolibarrModules
$this->export_TypeFields_array[$r]=array('a.civilite'=>"Text",'a.lastname'=>"Text",'a.firstname'=>"Text",'a.login'=>"Text",'a.morphy'=>'Text','a.societe'=>'Text','a.address'=>"Text",'a.zip'=>"Text",'a.town'=>"Text",'a.country'=>"Text",'a.phone'=>"Text",'a.phone_perso'=>"Text",'a.phone_mobile'=>"Text",'a.email'=>"Text",'a.birth'=>"Date",'a.statut'=>"Status",'a.note'=>"Text",'a.datec'=>'Date','a.datevalid'=>'Date','a.tms'=>'Date','a.datefin'=>'Date','ta.rowid'=>'List:fk_adherent_type:libelle','ta.libelle'=>'Text','c.dateadh'=>'Date','c.cotisation'=>'Number'); $this->export_TypeFields_array[$r]=array('a.civilite'=>"Text",'a.lastname'=>"Text",'a.firstname'=>"Text",'a.login'=>"Text",'a.morphy'=>'Text','a.societe'=>'Text','a.address'=>"Text",'a.zip'=>"Text",'a.town'=>"Text",'a.country'=>"Text",'a.phone'=>"Text",'a.phone_perso'=>"Text",'a.phone_mobile'=>"Text",'a.email'=>"Text",'a.birth'=>"Date",'a.statut'=>"Status",'a.note'=>"Text",'a.datec'=>'Date','a.datevalid'=>'Date','a.tms'=>'Date','a.datefin'=>'Date','ta.rowid'=>'List:fk_adherent_type:libelle','ta.libelle'=>'Text','c.dateadh'=>'Date','c.cotisation'=>'Number');
$this->export_entities_array[$r]=array('a.rowid'=>'member','a.civilite'=>"member",'a.lastname'=>"member",'a.firstname'=>"member",'a.login'=>"member",'a.morphy'=>'member','a.societe'=>'member','a.address'=>"member",'a.zip'=>"member",'a.town'=>"member",'a.country'=>"member",'a.phone'=>"member",'a.phone_perso'=>"member",'a.phone_mobile'=>"member",'a.email'=>"member",'a.birth'=>"member",'a.statut'=>"member",'a.photo'=>"member",'a.note'=>"member",'a.datec'=>'member','a.datevalid'=>'member','a.tms'=>'member','a.datefin'=>'member','ta.rowid'=>'member_type','ta.libelle'=>'member_type','c.rowid'=>'subscription','c.dateadh'=>'subscription','c.cotisation'=>'subscription'); $this->export_entities_array[$r]=array('a.rowid'=>'member','a.civilite'=>"member",'a.lastname'=>"member",'a.firstname'=>"member",'a.login'=>"member",'a.morphy'=>'member','a.societe'=>'member','a.address'=>"member",'a.zip'=>"member",'a.town'=>"member",'a.country'=>"member",'a.phone'=>"member",'a.phone_perso'=>"member",'a.phone_mobile'=>"member",'a.email'=>"member",'a.birth'=>"member",'a.statut'=>"member",'a.photo'=>"member",'a.note'=>"member",'a.datec'=>'member','a.datevalid'=>'member','a.tms'=>'member','a.datefin'=>'member','ta.rowid'=>'member_type','ta.libelle'=>'member_type','c.rowid'=>'subscription','c.dateadh'=>'subscription','c.cotisation'=>'subscription');
// Add extra fields // Add extra fields
$sql="SELECT name, label FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'member' AND entity = ".$conf->entity; $sql="SELECT name, label FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'adherent' AND entity = ".$conf->entity;
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
while ($obj=$this->db->fetch_object($resql)) while ($obj=$this->db->fetch_object($resql))
{ {
@ -212,7 +212,7 @@ class modAdherent extends DolibarrModules
$this->import_tables_creator_array[$r]=array('a'=>'fk_user_author'); // Fields to store import user id $this->import_tables_creator_array[$r]=array('a'=>'fk_user_author'); // Fields to store import user id
$this->import_fields_array[$r]=array('a.civilite'=>"UserTitle",'a.lastname'=>"Lastname*",'a.firstname'=>"Firstname",'a.login'=>"Login*","a.pass"=>"Password","a.fk_adherent_type"=>"MemberType*",'a.morphy'=>'Nature*','a.societe'=>'Company','a.address'=>"Address",'a.zip'=>"Zip",'a.town'=>"Town",'a.country'=>"Country",'a.phone'=>"PhonePro",'a.phone_perso'=>"PhonePerso",'a.phone_mobile'=>"PhoneMobile",'a.email'=>"Email",'a.birth'=>"Birthday",'a.statut'=>"Status*",'a.photo'=>"Photo",'a.note'=>"Note",'a.datec'=>'DateCreation','a.datefin'=>'DateEndSubscription'); $this->import_fields_array[$r]=array('a.civilite'=>"UserTitle",'a.lastname'=>"Lastname*",'a.firstname'=>"Firstname",'a.login'=>"Login*","a.pass"=>"Password","a.fk_adherent_type"=>"MemberType*",'a.morphy'=>'Nature*','a.societe'=>'Company','a.address'=>"Address",'a.zip'=>"Zip",'a.town'=>"Town",'a.country'=>"Country",'a.phone'=>"PhonePro",'a.phone_perso'=>"PhonePerso",'a.phone_mobile'=>"PhoneMobile",'a.email'=>"Email",'a.birth'=>"Birthday",'a.statut'=>"Status*",'a.photo'=>"Photo",'a.note'=>"Note",'a.datec'=>'DateCreation','a.datefin'=>'DateEndSubscription');
// Add extra fields // Add extra fields
$sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'member' AND entity = ".$conf->entity; $sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'adherent' AND entity = ".$conf->entity;
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example) if ($resql) // This can fail when class is used on old database (during migration for example)
{ {

View File

@ -267,33 +267,33 @@ class modSociete extends DolibarrModules
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example) if ($resql) // This can fail when class is used on old database (during migration for example)
{ {
while ($obj=$this->db->fetch_object($resql)) while ($obj=$this->db->fetch_object($resql))
{ {
$fieldname='extra.'.$obj->name; $fieldname='extra.'.$obj->name;
$fieldlabel=ucfirst($obj->label); $fieldlabel=ucfirst($obj->label);
$typeFilter="Text"; $typeFilter="Text";
switch($obj->type) switch($obj->type)
{ {
case 'int': case 'int':
case 'double': case 'double':
case 'price': case 'price':
$typeFilter="Numeric"; $typeFilter="Numeric";
break; break;
case 'date': case 'date':
case 'datetime': case 'datetime':
$typeFilter="Date"; $typeFilter="Date";
break; break;
case 'boolean': case 'boolean':
$typeFilter="Boolean"; $typeFilter="Boolean";
break; break;
case 'sellist': case 'sellist':
$typeFilter="List:".$obj->param; $typeFilter="List:".$obj->param;
break; break;
} }
$this->export_fields_array[$r][$fieldname]=$fieldlabel; $this->export_fields_array[$r][$fieldname]=$fieldlabel;
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter; $this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
$this->export_entities_array[$r][$fieldname]='company'; $this->export_entities_array[$r][$fieldname]='company';
} }
} }
// End add axtra fields // End add axtra fields
$this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_start[$r]='SELECT DISTINCT ';

View File

@ -63,10 +63,12 @@ if((($type == 'select') || ($type == 'checkbox') ||(($type == 'radio'))) && is_a
{ {
if(strlen($key)) if(strlen($key))
{ {
$param_chain .= $key.', '.$value."\n"; $param_chain .= $key.','.$value."\n";
} }
} }
}elseif ($type== 'sellist') { }
elseif ($type== 'sellist')
{
$paramlist=array_keys($param['options']); $paramlist=array_keys($param['options']);
$param_chain = $paramlist[0]; $param_chain = $paramlist[0];
} }

View File

@ -558,7 +558,7 @@ if ($step == 2 && $datatoexport)
{ {
// Selected fields // Selected fields
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=unselectfield&field='.$code.'">'.img_left().'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=unselectfield&field='.$code.'">'.img_left('default', 0, 'style="max-width: 20px"').'</a></td>';
print '<td>'; print '<td>';
//print $text.'-'.$htmltext."<br>"; //print $text.'-'.$htmltext."<br>";
print $form->textwithpicto($text,$htmltext); print $form->textwithpicto($text,$htmltext);
@ -573,7 +573,7 @@ if ($step == 2 && $datatoexport)
print $form->textwithpicto($text,$htmltext); print $form->textwithpicto($text,$htmltext);
//print ' ('.$code.')'; //print ' ('.$code.')';
print '</td>'; print '</td>';
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=selectfield&field='.$code.'">'.img_right().'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=selectfield&field='.$code.'">'.img_right('default', 0, 'style="max-width: 20px"').'</a></td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
} }

View File

@ -63,3 +63,7 @@ create table llx_propaldet_extrafields
ALTER TABLE llx_propaldet_extrafields ADD INDEX idx_propaldet_extrafields (fk_object); ALTER TABLE llx_propaldet_extrafields ADD INDEX idx_propaldet_extrafields (fk_object);
DROP table llx_adherent_options;
DROP table llx_adherent_options_label;

View File

@ -1452,9 +1452,8 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a
if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print "</div><!-- End top layout -->\n"; if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print "</div><!-- End top layout -->\n";
print "<!-- End top horizontal menu -->\n"; print "<!-- End top horizontal menu -->\n\n";
//XXX if (empty($conf->use_javascript_ajax) || empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '<table width="100%" class="notopnoleftnoright" summary="leftmenutable" id="undertopmenu"><tr>';
if (empty($conf->dol_hide_leftmenu) && (empty($conf->use_javascript_ajax) || empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT))) print '<div id="id-container">'; if (empty($conf->dol_hide_leftmenu) && (empty($conf->use_javascript_ajax) || empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT))) print '<div id="id-container">';
} }
@ -1486,7 +1485,6 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me
if (empty($conf->dol_hide_leftmenu)) if (empty($conf->dol_hide_leftmenu))
{ {
if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print "\n".'<div class="ui-layout-west"> <!-- Begin left layout -->'."\n"; if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print "\n".'<div class="ui-layout-west"> <!-- Begin left layout -->'."\n";
//XXX else print '<td class="vmenu" valign="top">';
else print '<div id="id-left">'; else print '<div id="id-left">';
print "\n"; print "\n";
@ -1545,7 +1543,7 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me
// Left column // Left column
print '<!-- Begin left menu -->'."\n"; print '<!-- Begin left menu -->'."\n";
print '<div class="vmenu">'."\n"; print '<div class="vmenu">'."\n\n";
$menumanager->menu_array = $menu_array_before; $menumanager->menu_array = $menu_array_before;
$menumanager->menu_array_after = $menu_array_after; $menumanager->menu_array_after = $menu_array_after;

View File

@ -82,6 +82,42 @@ if ($action == 'convert')
$ret=$objectstatic->fetch($obj->rowid); $ret=$objectstatic->fetch($obj->rowid);
if ($ret > 0) if ($ret > 0)
{ {
$ret=0; $retm=0; $updatelevel1=false;
// Update multiprice
$listofmulti=array_reverse($objectstatic->multiprices, true); // To finish with level 1
foreach ($listofmulti as $level => $multiprices)
{
$price_base_type = $objectstatic->multiprices_base_type[$level]; // Get price_base_type of product/service to keep the same for update
if (empty($price_base_type)) continue; // Discard not defined price levels
if ($price_base_type == 'TTC')
{
$newprice=price2num($objectstatic->multiprices_ttc[$level],'MU'); // Second param must be MU (we want a unit price so 'MU'. If unit price was on 4 decimal, we must keep 4 decimals)
$newminprice=$objectstatic->multiprices_min_ttc[$level];
}
else
{
$newprice=price2num($objectstatic->multiprices[$level],'MU'); // Second param must be MU (we want a unit price so 'MU'. If unit price was on 4 decimal, we must keep 4 decimals)
$newminprice=$objectstatic->multiprices_min[$level];
}
if ($newminprice > $newprice) $newminprice=$newprice;
$newvat=str_replace('*','',$newvatrate);
$newnpr=$objectstatic->multiprices_recuperableonly[$level];
$newlevel=$level;
//print "$objectstatic->id $newprice, $price_base_type, $newvat, $newminprice, $newlevel, $newnpr<br>\n";
$retm=$objectstatic->updatePrice($newprice, $price_base_type, $user, $newvat, $newminprice, $newlevel, $newnpr);
if ($retm < 0)
{
$error++;
break;
}
if ($newlevel == 1) $updatelevel1=true;
}
// Update single price
$price_base_type = $objectstatic->price_base_type; // Get price_base_type of product/service to keep the same for update $price_base_type = $objectstatic->price_base_type; // Get price_base_type of product/service to keep the same for update
if ($price_base_type == 'TTC') if ($price_base_type == 'TTC')
{ {
@ -97,13 +133,14 @@ if ($action == 'convert')
$newvat=str_replace('*','',$newvatrate); $newvat=str_replace('*','',$newvatrate);
$newnpr=$objectstatic->recuperableonly; $newnpr=$objectstatic->recuperableonly;
$newlevel=0; $newlevel=0;
if (! empty($price_base_type) && ! $updatelevel1)
{
//print "$objectstatic->id $newprice, $price_base_type, $newvat, $newminprice, $newlevel, $newnpr<br>\n";
$ret=$objectstatic->updatePrice($newprice, $price_base_type, $user, $newvat, $newminprice, $newlevel, $newnpr);
}
$ret=$objectstatic->updatePrice($objectstatic->id, $newprice, $price_base_type, $user, $newvat, $newminprice, $newlevel, $newnpr); if ($ret < 0 || $retm < 0) $error++;
if ($ret < 0) $error++;
else $nbrecordsmodified++; else $nbrecordsmodified++;
// FIXME Now update all price levels. Call $objectstatic->updatePrice( as many times than exisitng price_level
} }
$i++; $i++;

View File

@ -63,6 +63,7 @@ class Product extends CommonObject
var $multiprices_ttc=array(); var $multiprices_ttc=array();
var $multiprices_base_type=array(); var $multiprices_base_type=array();
var $multiprices_tva_tx=array(); var $multiprices_tva_tx=array();
var $multiprices_recuperableonly=array();
//! Price by quantity arrays //! Price by quantity arrays
var $price_by_qty; var $price_by_qty;
var $prices_by_qty=array(); var $prices_by_qty=array();
@ -227,7 +228,6 @@ class Product extends CommonObject
if (empty($this->status)) $this->status = 0; if (empty($this->status)) $this->status = 0;
if (empty($this->status_buy)) $this->status_buy = 0; if (empty($this->status_buy)) $this->status_buy = 0;
if (empty($this->finished)) $this->finished = 0;
$price_ht=0; $price_ht=0;
$price_ttc=0; $price_ttc=0;
@ -317,7 +317,7 @@ class Product extends CommonObject
$sql.= ", ".$this->status; $sql.= ", ".$this->status;
$sql.= ", ".$this->status_buy; $sql.= ", ".$this->status_buy;
$sql.= ", '".$this->canvas."'"; $sql.= ", '".$this->canvas."'";
$sql.= ", ".$this->finished; $sql.= ", ".((! isset($this->finished) || $this->finished < 0)?'null':$this->finished);
$sql.= ")"; $sql.= ")";
dol_syslog(get_class($this)."::Create sql=".$sql); dol_syslog(get_class($this)."::Create sql=".$sql);
@ -436,7 +436,6 @@ class Product extends CommonObject
if (empty($this->localtax1_tx)) $this->localtax1_tx = 0; if (empty($this->localtax1_tx)) $this->localtax1_tx = 0;
if (empty($this->localtax2_tx)) $this->localtax2_tx = 0; if (empty($this->localtax2_tx)) $this->localtax2_tx = 0;
if (empty($this->finished)) $this->finished = 0;
if (empty($this->country_id)) $this->country_id = 0; if (empty($this->country_id)) $this->country_id = 0;
$this->accountancy_code_buy = trim($this->accountancy_code_buy); $this->accountancy_code_buy = trim($this->accountancy_code_buy);
@ -454,7 +453,7 @@ class Product extends CommonObject
$sql.= ",tosell = " . $this->status; $sql.= ",tosell = " . $this->status;
$sql.= ",tobuy = " . $this->status_buy; $sql.= ",tobuy = " . $this->status_buy;
$sql.= ",finished = " . ($this->finished<0 ? "null" : $this->finished); $sql.= ",finished = " . ((! isset($this->finished) || $this->finished < 0) ? "null" : $this->finished);
$sql.= ",weight = " . ($this->weight!='' ? "'".$this->weight."'" : 'null'); $sql.= ",weight = " . ($this->weight!='' ? "'".$this->weight."'" : 'null');
$sql.= ",weight_units = " . ($this->weight_units!='' ? "'".$this->weight_units."'": 'null'); $sql.= ",weight_units = " . ($this->weight_units!='' ? "'".$this->weight_units."'": 'null');
$sql.= ",length = " . ($this->length!='' ? "'".$this->length."'" : 'null'); $sql.= ",length = " . ($this->length!='' ? "'".$this->length."'" : 'null');
@ -958,7 +957,6 @@ class Product extends CommonObject
/** /**
* Modify price of a product/Service * Modify price of a product/Service
* *
* @param int $id Id of product/service to change
* @param double $newprice New price * @param double $newprice New price
* @param string $newpricebase HT or TTC * @param string $newpricebase HT or TTC
* @param User $user Object user that make change * @param User $user Object user that make change
@ -969,10 +967,12 @@ class Product extends CommonObject
* @param int $newpsq 1 if it has price by quantity * @param int $newpsq 1 if it has price by quantity
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function updatePrice($id, $newprice, $newpricebase, $user, $newvat='',$newminprice='', $level=0, $newnpr=0, $newpsq=0) function updatePrice($newprice, $newpricebase, $user, $newvat='',$newminprice='', $level=0, $newnpr=0, $newpsq=0)
{ {
global $conf,$langs; global $conf,$langs;
$id=$this->id;
dol_syslog(get_class($this)."update_price id=".$id." newprice=".$newprice." newpricebase=".$newpricebase." newminprice=".$newminprice." level=".$level." npr=".$newnpr); dol_syslog(get_class($this)."update_price id=".$id." newprice=".$newprice." newpricebase=".$newpricebase." newminprice=".$newminprice." level=".$level." npr=".$newnpr);
// Clean parameters // Clean parameters
@ -1061,7 +1061,9 @@ class Product extends CommonObject
// Price by quantity // Price by quantity
$this->price_by_qty = $newpsq; $this->price_by_qty = $newpsq;
$this->_log_price($user,$level); $this->_log_price($user,$level); // Save price for level into table product_price
$this->level = $level; // Store level of price edited for trigger
// Appel des triggers // Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
@ -1195,7 +1197,7 @@ class Product extends CommonObject
for ($i=1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) for ($i=1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++)
{ {
$sql = "SELECT price, price_ttc, price_min, price_min_ttc,"; $sql = "SELECT price, price_ttc, price_min, price_min_ttc,";
$sql.= " price_base_type, tva_tx, tosell, price_by_qty, rowid"; $sql.= " price_base_type, tva_tx, tosell, price_by_qty, rowid, recuperableonly";
$sql.= " FROM ".MAIN_DB_PREFIX."product_price"; $sql.= " FROM ".MAIN_DB_PREFIX."product_price";
$sql.= " WHERE price_level=".$i; $sql.= " WHERE price_level=".$i;
$sql.= " AND fk_product = '".$this->id."'"; $sql.= " AND fk_product = '".$this->id."'";
@ -1212,6 +1214,7 @@ class Product extends CommonObject
$this->multiprices_min_ttc[$i]=$result["price_min_ttc"]; $this->multiprices_min_ttc[$i]=$result["price_min_ttc"];
$this->multiprices_base_type[$i]=$result["price_base_type"]; $this->multiprices_base_type[$i]=$result["price_base_type"];
$this->multiprices_tva_tx[$i]=$result["tva_tx"]; $this->multiprices_tva_tx[$i]=$result["tva_tx"];
$this->multiprices_recuperableonly[$i]=$result["recuperableonly"];
// Price by quantity // Price by quantity
$this->prices_by_qty[$i]=$result["price_by_qty"]; $this->prices_by_qty[$i]=$result["price_by_qty"];

View File

@ -313,7 +313,6 @@ if (empty($reshook))
$object->ref = GETPOST('clone_ref'); $object->ref = GETPOST('clone_ref');
$object->status = 0; $object->status = 0;
$object->status_buy = 0; $object->status_buy = 0;
$object->finished = 1;
$object->id = null; $object->id = null;
if ($object->check()) if ($object->check())

View File

@ -88,7 +88,7 @@ if ($action == 'update_price' && ! $_POST["cancel"] && ($user->rights->produit->
$newpsq = empty($newpsq) ? 0 : $newpsq; $newpsq = empty($newpsq) ? 0 : $newpsq;
} }
if ($object->updatePrice($object->id, $newprice, $newpricebase, $user, $newvat, $newprice_min, $level, $newnpr, $newpsq) > 0) if ($object->updatePrice($newprice, $newpricebase, $user, $newvat, $newprice_min, $level, $newnpr, $newpsq) > 0)
{ {
$action = ''; $action = '';
$mesg = '<div class="ok">'.$langs->trans("RecordSaved").'</div>'; $mesg = '<div class="ok">'.$langs->trans("RecordSaved").'</div>';
@ -113,7 +113,7 @@ if ($action == 'activate_price_by_qty') { // Activating product price by quantit
$result = $object->fetch($id); $result = $object->fetch($id);
$level=GETPOST('level'); $level=GETPOST('level');
$object->updatePrice($object->id, 0, $object->price_base_type, $user, $object->tva_tx, 0, $level, $object->tva_npr, 1); $object->updatePrice(0, $object->price_base_type, $user, $object->tva_tx, 0, $level, $object->tva_npr, 1);
} }
if ($action == 'edit_price_by_qty') { // Edition d'un prix par quantité if ($action == 'edit_price_by_qty') { // Edition d'un prix par quantité
@ -424,14 +424,16 @@ else
print '</td></tr>'; print '</td></tr>';
// Price by quantity // Price by quantity
if($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY) { if($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY)
{
print '<tr><td>'.$langs->trans("PriceByQuantity"); print '<tr><td>'.$langs->trans("PriceByQuantity");
if($object->prices_by_qty[0] == 0) { if($object->prices_by_qty[0] == 0) {
print '&nbsp;<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=activate_price_by_qty&level=1">'.$langs->trans("Activate"); print '&nbsp;<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=activate_price_by_qty&level=1">'.$langs->trans("Activate");
} }
print '</td><td>'; print '</td><td>';
if($object->prices_by_qty[0] == 1) { if ($object->prices_by_qty[0] == 1)
{
print '<table width="50%" class="noborder">'; print '<table width="50%" class="noborder">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("PriceByQuantityRange").'</td>'; print '<td>'.$langs->trans("PriceByQuantityRange").'</td>';
@ -440,7 +442,8 @@ else
print '<td align="right">'.$langs->trans("Discount").'</td>'; print '<td align="right">'.$langs->trans("Discount").'</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '</tr>'; print '</tr>';
foreach ($object->prices_by_qty_list[0] as $ii=> $prices) { foreach ($object->prices_by_qty_list[0] as $ii=> $prices)
{
if($action == 'edit_price_by_qty' && $rowid == $prices['rowid'] && ($user->rights->produit->creer || $user->rights->service->creer)) { if($action == 'edit_price_by_qty' && $rowid == $prices['rowid'] && ($user->rights->produit->creer || $user->rights->service->creer)) {
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="POST">'; print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'" method="POST">';
print '<input type="hidden" name="action" value="update_price_by_qty">'; print '<input type="hidden" name="action" value="update_price_by_qty">';
@ -667,8 +670,8 @@ $sql.= " WHERE fk_product = ".$object->id;
$sql.= " AND p.fk_user_author = u.rowid"; $sql.= " AND p.fk_user_author = u.rowid";
if (! empty($socid) && ! empty($conf->global->PRODUIT_MULTIPRICES)) $sql.= " AND p.price_level = ".$soc->price_level; if (! empty($socid) && ! empty($conf->global->PRODUIT_MULTIPRICES)) $sql.= " AND p.price_level = ".$soc->price_level;
$sql.= " ORDER BY p.date_price DESC, p.price_level ASC"; $sql.= " ORDER BY p.date_price DESC, p.price_level ASC";
//$sql .= $db->plimit();
dol_syslog("sql=".$sql);
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
@ -680,7 +683,7 @@ if ($result)
// Il doit au moins y avoir la ligne de prix initial. // Il doit au moins y avoir la ligne de prix initial.
// On l'ajoute donc pour remettre a niveau (pb vieilles versions) // On l'ajoute donc pour remettre a niveau (pb vieilles versions)
$object->updatePrice($object->id, $object->price, $object->price_base_type, $user, $newprice_min); $object->updatePrice($object->price, $object->price_base_type, $user, $newprice_min);
$result = $db->query($sql); $result = $db->query($sql);
$num = $db->num_rows($result); $num = $db->num_rows($result);

View File

@ -1343,7 +1343,6 @@ class Project extends CommonObject
*/ */
function select_element($Tablename) function select_element($Tablename)
{ {
global $db;
$projectkey="fk_projet"; $projectkey="fk_projet";
switch ($Tablename) switch ($Tablename)
@ -1373,25 +1372,27 @@ class Project extends CommonObject
} }
$sql.= " ORDER BY ref DESC"; $sql.= " ORDER BY ref DESC";
dol_syslog("Project.Lib::select_element sql=".$sql); dol_syslog(get_class($this).'::select_element sql='.$sql,LOG_DEBUG);
$resql=$db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
$num = $db->num_rows($resql); $num = $this->db->num_rows($resql);
$i = 0; $i = 0;
if ($num > 0) if ($num > 0)
{ {
$sellist = '<select class="flat" name="elementselect">'; $sellist = '<select class="flat" name="elementselect">';
while ($i < $num) while ($i < $num)
{ {
$obj = $db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
$sellist .='<option value="'.$obj->rowid.'">'.$obj->ref.'</option>'; $sellist .='<option value="'.$obj->rowid.'">'.$obj->ref.'</option>';
$i++; $i++;
} }
$sellist .='</select>'; $sellist .='</select>';
} }
return $sellist ; return $sellist ;
$this->db->free($resql);
} }
} }
@ -1404,8 +1405,8 @@ class Project extends CommonObject
*/ */
function update_element($TableName, $ElementSelectId) function update_element($TableName, $ElementSelectId)
{ {
global $db; $sql="UPDATE ".MAIN_DB_PREFIX.$TableName;
$sql="update ".MAIN_DB_PREFIX.$TableName;
if ($TableName=="actioncomm") if ($TableName=="actioncomm")
{ {
$sql.= " SET fk_project=".$this->id; $sql.= " SET fk_project=".$this->id;
@ -1416,7 +1417,17 @@ class Project extends CommonObject
$sql.= " SET fk_projet=".$this->id; $sql.= " SET fk_projet=".$this->id;
$sql.= " WHERE rowid=".$ElementSelectId; $sql.= " WHERE rowid=".$ElementSelectId;
} }
$resql=$db->query($sql);
dol_syslog(get_class($this)."::update_element sql=" . $sql, LOG_DEBUG);
$resql=$this->db->query($sql);
if (!$resql) {
$this->error=$this->db->lasterror();
dol_syslog(get_class($this)."::update_element error : " . $this->error, LOG_ERR);
return -1;
}else {
return 1;
}
} }
} }

View File

@ -46,8 +46,10 @@ if (! empty($conf->commande->enabled)) $langs->load("orders");
if (! empty($conf->propal->enabled)) $langs->load("propal"); if (! empty($conf->propal->enabled)) $langs->load("propal");
if (! empty($conf->ficheinter->enabled)) $langs->load("interventions"); if (! empty($conf->ficheinter->enabled)) $langs->load("interventions");
$projectid=GETPOST('id'); $projectid=GETPOST('id','int');
$ref=GETPOST('ref'); $ref=GETPOST('ref','alpha');
$action=GETPOST('action','alpha');
if ($projectid == '' && $ref == '') if ($projectid == '' && $ref == '')
{ {
dol_print_error('','Bad parameter'); dol_print_error('','Bad parameter');
@ -62,6 +64,8 @@ if ($ref)
{ {
$project->fetch(0,$ref); $project->fetch(0,$ref);
$projectid=$project->id; $projectid=$project->id;
}else {
$project->fetch($projectid);
} }
// Security check // Security check
@ -82,7 +86,7 @@ $form = new Form($db);
$userstatic=new User($db); $userstatic=new User($db);
$project = new Project($db); $project = new Project($db);
$project->fetch($_GET["id"],$_GET["ref"]); $project->fetch($projectid,$ref);
$project->societe->fetch($project->societe->id); $project->societe->fetch($project->societe->id);
// To verify role of users // To verify role of users
@ -191,7 +195,10 @@ if ($action=="addelement")
{ {
$tablename = GETPOST("tablename"); $tablename = GETPOST("tablename");
$elementselectid = GETPOST("elementselect"); $elementselectid = GETPOST("elementselect");
$project->update_element($tablename, $elementselectid); $result=$project->update_element($tablename, $elementselectid);
if ($result<0) {
setEventMessage($mailchimp->error,'errors');
}
} }
foreach ($listofreferent as $key => $value) foreach ($listofreferent as $key => $value)

View File

@ -469,7 +469,7 @@ foreach($mainmenuusedarray as $val)
/* Login */ /* Login */
form#login { form#login {
margin-top: 70px; margin-top: <?php echo $dol_optimize_smallscreen?'30':'60' ?>px;
margin-bottom: 30px; margin-bottom: 30px;
font-size: 13px; font-size: 13px;
} }
@ -2184,25 +2184,65 @@ div.ecmjqft {
/* JMobile */ /* JMobile */
/* ============================================================================== */ /* ============================================================================== */
li.ui-li-divider .ui-link {
color: #FFF !important;
}
a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-inner:hover {
text-decoration: none !important;
}
.ui-btn-inner {
padding-left: 10px;
padding-right: 10px;
/* white-space: normal; */ /* Warning, enable this break the truncate feature */
}
.ui-select .ui-btn-icon-right .ui-btn-inner {
padding-right: 36px;
}
.fiche .ui-controlgroup {
margin: 0px;
padding-bottom: 0px;
}
div.ui-controlgroup-controls div.tabsElem
{
margin-top: 2px;
}
div.ui-controlgroup-controls div.tabsElem a
{
-moz-box-shadow: 0 -3px 6px rgba(0,0,0,.2);
-webkit-box-shadow: 0 -3px 6px rgba(0,0,0,.2);
box-shadow: 0 -3px 6px rgba(0,0,0,.2);
border: none;
}
a.tab span.ui-btn-inner
{
border: none;
padding: 0;
}
.ui-body-c { .ui-body-c {
border: none; border: none;
text-shadow: none; text-shadow: none;
} }
.ui-link {
div.tabsElem a.ui-btn-corner-all { color: rgb(<?php print $colortext; ?>) !important;
-webkit-border-bottom-left-radius: 0px;
-moz-border-radius-bottomleft: 0px;
border-bottom-left-radius: 0px;
-webkit-border-bottom-right-radius: 0px;
-moz-border-radius-bottomright: 0px;
border-bottom-right-radius: 0px;
} }
.ui-btn-icon-left .ui-icon { a.ui-link {
left: 8px; word-wrap: break-word;
} }
.ui-btn-icon-right .ui-icon {
right: 8px; /* force wrap possible onto field overflow does not works */
.formdoc .ui-btn-inner
{
white-space: normal;
overflow: hidden;
text-overflow: hidden;
}
/* Warning: setting this may make screen not beeing refreshed after a combo selection */
.ui-body-c {
background: #fff;
} }
div.ui-radio div.ui-radio
@ -2216,6 +2256,7 @@ div.ui-radio
position: static; position: static;
} }
<?php <?php
if (is_object($db)) $db->close(); if (is_object($db)) $db->close();
?> ?>

View File

@ -508,7 +508,7 @@ li.tmenu a.tmenudisabled {
/* Login */ /* Login */
form#login { form#login {
margin-top: 70px; margin-top: <?php echo $dol_optimize_smallscreen?'30':'60' ?>px;
margin-bottom: 30px; margin-bottom: 30px;
font-size: 13px; font-size: 13px;
} }
@ -2372,44 +2372,65 @@ div.ecmjqft {
/* JMobile */ /* JMobile */
/* ============================================================================== */ /* ============================================================================== */
li.ui-li-divider .ui-link {
color: #FFF !important;
}
a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-inner:hover {
text-decoration: none !important;
}
.ui-btn-inner { .ui-btn-inner {
padding-left: 10px; padding-left: 10px;
padding-right: 10px; padding-right: 10px;
white-space: normal; /* white-space: normal; */ /* Warning, enable this break the truncate feature */
} }
.ui-select .ui-btn-icon-right .ui-btn-inner {
div.ui-controlgroup padding-right: 36px;
}
.fiche .ui-controlgroup {
margin: 0px;
padding-bottom: 0px;
}
div.ui-controlgroup-controls div.tabsElem
{ {
height: auto; margin-top: 2px;
background-image: none;
} }
div.ui-controlgroup-controls div.tabsElem a
div.ui-controlgroup-controls div.tabsElem, div.ui-controlgroup-controls div.tabsElem a.tab
{ {
height: auto; -moz-box-shadow: 0 -3px 6px rgba(0,0,0,.2);
-webkit-box-shadow: 0 -3px 6px rgba(0,0,0,.2);
box-shadow: 0 -3px 6px rgba(0,0,0,.2);
border: none;
} }
a.tab span.ui-btn-inner a.tab span.ui-btn-inner
{ {
border: none; border: none;
padding: 0; padding: 0;
} }
div.tabs a.tab#active span.ui-btn-inner, div.tabs a.tab#active span.ui-btn-text, div.tabs a.tab span.ui-btn-inner, div.tabs a.tab span.ui-btn-text {
background-image: none;
color: #D45416;
height: auto;
}
.ui-body-c { .ui-body-c {
border: none; border: none;
text-shadow: none; text-shadow: none;
} }
.ui-link {
.ui-btn-icon-left .ui-icon { color: rgb(<?php print $colortext; ?>) !important;
left: 8px;
} }
.ui-btn-icon-right .ui-icon {
right: 8px; a.ui-link {
word-wrap: break-word;
}
/* force wrap possible onto field overflow does not works */
.formdoc .ui-btn-inner
{
white-space: normal;
overflow: hidden;
text-overflow: hidden;
}
/* Warning: setting this may make screen not beeing refreshed after a combo selection */
.ui-body-c {
background: #fff;
} }
div.ui-radio div.ui-radio

View File

@ -579,7 +579,7 @@ foreach($mainmenuusedarray as $val)
/* Login */ /* Login */
form#login { form#login {
margin-top: 70px; margin-top: <?php echo $dol_optimize_smallscreen?'30':'60' ?>px;
margin-bottom: 30px; margin-bottom: 30px;
font-size: 13px; font-size: 13px;
} }
@ -2281,38 +2281,65 @@ div.ecmjqft {
/* JMobile */ /* JMobile */
/* ============================================================================== */ /* ============================================================================== */
.ui-body-c { li.ui-li-divider .ui-link {
color: #FFF !important;
}
a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-inner:hover {
text-decoration: none !important;
}
.ui-btn-inner {
padding-left: 10px;
padding-right: 10px;
/* white-space: normal; */ /* Warning, enable this break the truncate feature */
}
.ui-select .ui-btn-icon-right .ui-btn-inner {
padding-right: 36px;
}
.fiche .ui-controlgroup {
margin: 0px;
padding-bottom: 0px;
}
div.ui-controlgroup-controls div.tabsElem
{
margin-top: 2px;
}
div.ui-controlgroup-controls div.tabsElem a
{
-moz-box-shadow: 0 -3px 6px rgba(0,0,0,.2);
-webkit-box-shadow: 0 -3px 6px rgba(0,0,0,.2);
box-shadow: 0 -3px 6px rgba(0,0,0,.2);
border: none; border: none;
text-shadow: none;
} }
div.ui-controlgroup
{
height: auto;
background-image: none;
}
div.ui-controlgroup-controls div.tabsElem, div.ui-controlgroup-controls div.tabsElem a.tab
{
height: auto;
}
a.tab span.ui-btn-inner a.tab span.ui-btn-inner
{ {
border: none; border: none;
padding: 0; padding: 0;
} }
div.tabs a.tab#active span.ui-btn-inner, div.tabs a.tab#active span.ui-btn-text, div.tabs a.tab span.ui-btn-inner, div.tabs a.tab span.ui-btn-text {
background-image: none; .ui-body-c {
color: #D45416; border: none;
height: auto; text-shadow: none;
}
.ui-link {
color: rgb(<?php print $colortext; ?>) !important;
} }
.ui-btn-icon-left .ui-icon { a.ui-link {
left: 8px; word-wrap: break-word;
} }
.ui-btn-icon-right .ui-icon {
right: 8px; /* force wrap possible onto field overflow does not works */
.formdoc .ui-btn-inner
{
white-space: normal;
overflow: hidden;
text-overflow: hidden;
}
/* Warning: setting this may make screen not beeing refreshed after a combo selection */
.ui-body-c {
background: #fff;
} }
div.ui-radio div.ui-radio
@ -2326,6 +2353,7 @@ div.ui-radio
position: static; position: static;
} }
<?php <?php
if (is_object($db)) $db->close(); if (is_object($db)) $db->close();
?> ?>

View File

@ -903,7 +903,7 @@ font.vsmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php p
a.vsmenu:link, a.vsmenu:visited { color: #<?php echo $colortextmain; ?>; } a.vsmenu:link, a.vsmenu:visited { color: #<?php echo $colortextmain; ?>; }
font.vsmenudisabledmargin { margin: 1px 1px 1px 8px; } font.vsmenudisabledmargin { margin: 1px 1px 1px 8px; }
a.help:link, a.help:visited, a.help:hover, a.help:active { font-size:<?php print $fontsizesmaller ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #666666; } a.help:link, a.help:visited, a.help:hover, a.help:active { font-size:<?php print $fontsizesmaller ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #666666; text-decoration: none; }
div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<con:soapui-project name="Dolibarr" soapui-version="3.6.1" abortOnError="false" runType="SEQUENTIAL" resourceRoot="" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="WebServicesDolibarrOtherBinding" type="wsdl" bindingName="{http://www.dolibarr.org/ns/}WebServicesDolibarrOtherBinding" soapVersion="1_1" anonymous="optional" definition="http://localhostdolibarr/dolibarrnew/webservices/server_other.php?wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhostdolibarr/dolibarrnew/webservices/server_other.php?wsdl"><con:part><con:url>http://localhostdolibarr/dolibarrnew/webservices/server_other.php?wsdl</con:url><con:content><![CDATA[<definitions targetNamespace="http://www.dolibarr.org/ns/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.dolibarr.org/ns/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <con:soapui-project name="Dolibarr" soapui-version="4.0.1" abortOnError="false" runType="SEQUENTIAL" resourceRoot="" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="WebServicesDolibarrOtherBinding" type="wsdl" bindingName="{http://www.dolibarr.org/ns/}WebServicesDolibarrOtherBinding" soapVersion="1_1" anonymous="optional" definition="http://localhostdolibarr/dolibarrnew/webservices/server_other.php?wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhostdolibarr/dolibarrnew/webservices/server_other.php?wsdl"><con:part><con:url>http://localhostdolibarr/dolibarrnew/webservices/server_other.php?wsdl</con:url><con:content><![CDATA[<definitions targetNamespace="http://www.dolibarr.org/ns/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.dolibarr.org/ns/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
<types> <types>
<xsd:schema targetNamespace="http://www.dolibarr.org/ns/"> <xsd:schema targetNamespace="http://www.dolibarr.org/ns/">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
@ -757,7 +757,7 @@
<idthirdparty xsi:type="xsd:string">all</idthirdparty> <idthirdparty xsi:type="xsd:string">all</idthirdparty>
</ns:getSupplierInvoicesForThirdParty> </ns:getSupplierInvoicesForThirdParty>
</soapenv:Body> </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#getSupplierInvoicesForThirdParty"/><con:wsrmConfig version="1.2"/></con:call></con:operation></con:interface><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="WebServicesDolibarrProductOrServiceBinding" type="wsdl" bindingName="{http://www.dolibarr.org/ns/}WebServicesDolibarrProductOrServiceBinding" soapVersion="1_1" anonymous="optional" definition="http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php?wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php?wsdl"><con:part><con:url>http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php?wsdl</con:url><con:content><![CDATA[<definitions targetNamespace="http://www.dolibarr.org/ns/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.dolibarr.org/ns/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> </soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#getSupplierInvoicesForThirdParty"/><con:wsrmConfig version="1.2"/></con:call></con:operation></con:interface><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="WebServicesDolibarrProductOrServiceBinding" type="wsdl" bindingName="{http://www.dolibarr.org/ns/}WebServicesDolibarrProductOrServiceBinding" soapVersion="1_1" anonymous="optional" definition="http://localhost/dolibarr/htdocs/webservices/server_productorservice.php?wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhost/dolibarr/htdocs/webservices/server_productorservice.php?wsdl"><con:part><con:url>http://localhost/dolibarr/htdocs/webservices/server_productorservice.php?wsdl</con:url><con:content><![CDATA[<definitions targetNamespace="http://www.dolibarr.org/ns/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.dolibarr.org/ns/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
<types> <types>
<xsd:schema targetNamespace="http://www.dolibarr.org/ns/"> <xsd:schema targetNamespace="http://www.dolibarr.org/ns/">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
@ -820,8 +820,8 @@
</xsd:complexType> </xsd:complexType>
<xsd:complexType name="image"> <xsd:complexType name="image">
<xsd:all> <xsd:all>
<xsd:element name="original" type="xsd:string"/> <xsd:element name="photo" type="xsd:string"/>
<xsd:element name="thumble" type="xsd:string"/> <xsd:element name="photo_vignette" type="xsd:string"/>
<xsd:element name="imgWidth" type="xsd:string"/> <xsd:element name="imgWidth" type="xsd:string"/>
<xsd:element name="imgHeight" type="xsd:string"/> <xsd:element name="imgHeight" type="xsd:string"/>
</xsd:all> </xsd:all>
@ -937,51 +937,106 @@
</binding> </binding>
<service name="WebServicesDolibarrProductOrService"> <service name="WebServicesDolibarrProductOrService">
<port name="WebServicesDolibarrProductOrServicePort" binding="tns:WebServicesDolibarrProductOrServiceBinding"> <port name="WebServicesDolibarrProductOrServicePort" binding="tns:WebServicesDolibarrProductOrServiceBinding">
<soap:address location="http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php"/> <soap:address location="http://localhost/dolibarr/htdocs/webservices/server_productorservice.php"/>
</port> </port>
</service> </service>
</definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://localhost/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:endpoint>http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php</con:endpoint></con:endpoints><con:operation isOneWay="false" action="http://www.dolibarr.org/ns/#createProductOrService" name="createProductOrService" bindingOperationName="createProductOrService" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/"> </definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://localhost/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:endpoint>http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:endpoint>http://localhost/dolibarr/htdocs/webservices/server_productorservice.php</con:endpoint></con:endpoints><con:operation isOneWay="false" action="http://www.dolibarr.org/ns/#createProductOrService" name="createProductOrService" bindingOperationName="createProductOrService" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost/dolibarr/htdocs/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns8543:createProductOrService xmlns:ns8543="http://www.Dolibarr.org/ns/">
<authentication>
<dolibarrkey xsi:type="xsd:string">dolibarrkey</dolibarrkey>
<sourceapplication xsi:type="xsd:string">PRESTASHOP</sourceapplication>
<login xsi:type="xsd:string">admin</login>
<password xsi:type="xsd:string">admin</password>
<entity xsi:type="xsd:string"/>
</authentication>
<product>
<id xsi:type="xsd:string"/>
<ref xsi:type="xsd:string">aaa</ref>
<ref_ext xsi:type="xsd:string">aaa</ref_ext>
<type xsi:type="xsd:string">0</type>
<label xsi:type="xsd:string">Écouteurs à isolation sonore Shure SE210</label>
<description xsi:type="xsd:string">les couteurs isolation sonore ergonomiques et l gers offrent la reproduction audio la plus fid le en provenance de sources audio st r o portables ou de salon.</description>
<date_creation xsi:type="xsd:string">2013-03-06 09:24:51</date_creation>
<date_modification xsi:type="xsd:string">2013-03-06 09:24:51</date_modification>
<note xsi:type="xsd:string">imported from Prestashop</note>
<status_tobuy xsi:type="xsd:int">0</status_tobuy>
<status_tosell xsi:type="xsd:int">1</status_tosell>
<barcode xsi:type="xsd:string"/>
<barcode_type xsi:type="xsd:string">upc</barcode_type>
<country_id xsi:type="xsd:string"/>
<country_code xsi:type="xsd:string"/>
<customcode xsi:type="xsd:string"/>
<price_net xsi:type="xsd:string"/>
<price xsi:type="xsd:float">149</price>
<price_base_type xsi:type="xsd:string"/>
<stock_alert xsi:type="xsd:string"/>
<stock_real xsi:type="xsd:string">0</stock_real>
<stock_pmp xsi:type="xsd:string"/>
<canvas xsi:type="xsd:string"/>
<import_key xsi:type="xsd:string"/>
</product>
</ns8543:createProductOrService>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#createProductOrService"/><con:wsrmConfig version="1.2"/></con:call><con:call name="Request 2"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/">
<soapenv:Header/> <soapenv:Header/>
<soapenv:Body> <soapenv:Body>
<ns:createProductOrService soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <ns:createProductOrService soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<authentication xsi:type="ns:authentication"> <authentication xsi:type="ns:authentication">
<!--You may enter the following 5 items in any order--> <!--You may enter the following 5 items in any order-->
<dolibarrkey xsi:type="xsd:string">dolibarrkey</dolibarrkey> <dolibarrkey xsi:type="xsd:string">?</dolibarrkey>
<sourceapplication xsi:type="xsd:string">aaa</sourceapplication> <sourceapplication xsi:type="xsd:string">?</sourceapplication>
<login xsi:type="xsd:string">admin</login> <login xsi:type="xsd:string">?</login>
<password xsi:type="xsd:string">admin</password> <password xsi:type="xsd:string">?</password>
<entity xsi:type="xsd:string"/> <entity xsi:type="xsd:string">?</entity>
</authentication> </authentication>
<product xsi:type="ns:product"> <product xsi:type="ns:product">
<!--You may enter the following 24 items in any order--> <!--You may enter the following 32 items in any order-->
<id xsi:type="xsd:string">?</id> <id xsi:type="xsd:string">?</id>
<ref xsi:type="xsd:string">PPP</ref> <ref xsi:type="xsd:string">?</ref>
<ref_ext xsi:type="xsd:string"/> <ref_ext xsi:type="xsd:string">?</ref_ext>
<type xsi:type="xsd:string">1</type> <type xsi:type="xsd:string">?</type>
<label xsi:type="xsd:string">PPP Label</label> <label xsi:type="xsd:string">?</label>
<description xsi:type="xsd:string">Description of PPP</description> <description xsi:type="xsd:string">?</description>
<date_creation xsi:type="xsd:dateTime">?</date_creation> <date_creation xsi:type="xsd:dateTime">?</date_creation>
<date_modification xsi:type="xsd:dateTime">?</date_modification> <date_modification xsi:type="xsd:dateTime">?</date_modification>
<note xsi:type="xsd:string">xxxxx</note> <note xsi:type="xsd:string">?</note>
<status_tobuy xsi:type="xsd:string">?</status_tobuy> <status_tobuy xsi:type="xsd:string">?</status_tobuy>
<status_tosell xsi:type="xsd:string">?</status_tosell> <status_tosell xsi:type="xsd:string">?</status_tosell>
<barcode xsi:type="xsd:string">123456</barcode> <barcode xsi:type="xsd:string">?</barcode>
<barcode_type xsi:type="xsd:string">?</barcode_type> <barcode_type xsi:type="xsd:string">?</barcode_type>
<country_id xsi:type="xsd:string">?</country_id> <country_id xsi:type="xsd:string">?</country_id>
<country_code xsi:type="xsd:string">FR</country_code> <country_code xsi:type="xsd:string">?</country_code>
<customcode xsi:type="xsd:string">?</customcode> <customcode xsi:type="xsd:string">?</customcode>
<price_net xsi:type="xsd:string">?</price_net> <price_net xsi:type="xsd:string">?</price_net>
<price xsi:type="xsd:string">?</price> <price xsi:type="xsd:string">?</price>
<price_min_net xsi:type="xsd:string">?</price_min_net>
<price_min xsi:type="xsd:string">?</price_min>
<price_base_type xsi:type="xsd:string">?</price_base_type> <price_base_type xsi:type="xsd:string">?</price_base_type>
<stock_alert xsi:type="xsd:string">10</stock_alert> <vat_rate xsi:type="xsd:string">?</vat_rate>
<vat_npr xsi:type="xsd:string">?</vat_npr>
<localtax1_tx xsi:type="xsd:string">?</localtax1_tx>
<localtax2_tx xsi:type="xsd:string">?</localtax2_tx>
<stock_alert xsi:type="xsd:string">?</stock_alert>
<stock_real xsi:type="xsd:string">?</stock_real> <stock_real xsi:type="xsd:string">?</stock_real>
<stock_pmp xsi:type="xsd:string">?</stock_pmp> <stock_pmp xsi:type="xsd:string">?</stock_pmp>
<canvas xsi:type="xsd:string">?</canvas> <canvas xsi:type="xsd:string">?</canvas>
<import_key xsi:type="xsd:string">?</import_key> <import_key xsi:type="xsd:string">?</import_key>
<dir xsi:type="xsd:string">?</dir>
<images xsi:type="ns:ImagesArray">
<!--Zero or more repetitions:-->
<image xsi:type="ns:image">
<!--You may enter the following 4 items in any order-->
<photo xsi:type="xsd:string">?</photo>
<photo_vignette xsi:type="xsd:string">?</photo_vignette>
<imgWidth xsi:type="xsd:string">?</imgWidth>
<imgHeight xsi:type="xsd:string">?</imgHeight>
</image>
</images>
</product> </product>
</ns:createProductOrService> </ns:createProductOrService>
</soapenv:Body> </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#createProductOrService"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="http://www.dolibarr.org/ns/#getProductOrService" name="getProductOrService" bindingOperationName="getProductOrService" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/"> </soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#createProductOrService"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="http://www.dolibarr.org/ns/#getProductOrService" name="getProductOrService" bindingOperationName="getProductOrService" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost/dolibarr/htdocs/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/">
<soapenv:Header/> <soapenv:Header/>
<soapenv:Body> <soapenv:Body>
<ns:getProductOrService soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <ns:getProductOrService soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
@ -998,7 +1053,7 @@
<ref_ext xsi:type="xsd:string"></ref_ext> <ref_ext xsi:type="xsd:string"></ref_ext>
</ns:getProductOrService> </ns:getProductOrService>
</soapenv:Body> </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#getProductOrService"/><con:wsrmConfig version="1.2"/></con:call><con:call name="Request 2"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/"> </soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#getProductOrService"/><con:wsrmConfig version="1.2"/></con:call><con:call name="Request 2"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost/dolibarr/htdocs/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/">
<soapenv:Header/> <soapenv:Header/>
<soapenv:Body> <soapenv:Body>
<ns:getProductOrService soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <ns:getProductOrService soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
@ -1015,7 +1070,7 @@
<ref_ext xsi:type="xsd:string">?</ref_ext> <ref_ext xsi:type="xsd:string">?</ref_ext>
</ns:getProductOrService> </ns:getProductOrService>
</soapenv:Body> </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#getProductOrService"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="http://www.dolibarr.org/ns/#getListOfProductsOrServices" name="getListOfProductsOrServices" bindingOperationName="getListOfProductsOrServices" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhostdolibarr/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/"> </soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#getProductOrService"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation isOneWay="false" action="http://www.dolibarr.org/ns/#getListOfProductsOrServices" name="getListOfProductsOrServices" bindingOperationName="getListOfProductsOrServices" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost/dolibarr/htdocs/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/">
<soapenv:Header/> <soapenv:Header/>
<soapenv:Body> <soapenv:Body>
<ns:getListOfProductsOrServices soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <ns:getListOfProductsOrServices soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
@ -1035,7 +1090,7 @@
</filterproduct> </filterproduct>
</ns:getListOfProductsOrServices> </ns:getListOfProductsOrServices>
</soapenv:Body> </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#getListOfProductsOrServices"/></con:call></con:operation><con:operation isOneWay="false" action="http://www.dolibarr.org/ns/#getProductsForCategory" name="getProductsForCategory" bindingOperationName="getProductsForCategory" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost/dolibarrnew/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/"> </soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://www.dolibarr.org/ns/#getListOfProductsOrServices"/></con:call></con:operation><con:operation isOneWay="false" action="http://www.dolibarr.org/ns/#getProductsForCategory" name="getProductsForCategory" bindingOperationName="getProductsForCategory" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost/dolibarr/htdocs/webservices/server_productorservice.php</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.dolibarr.org/ns/">
<soapenv:Header/> <soapenv:Header/>
<soapenv:Body> <soapenv:Body>
<ns:getProductsForCategory soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <ns:getProductsForCategory soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">