Merge remote-tracking branch 'origin/3.3' into develop

Conflicts:
	htdocs/core/tpl/freeproductline_create.tpl.php
	htdocs/core/tpl/predefinedproductline_create.tpl.php
This commit is contained in:
Laurent Destailleur
2013-01-13 19:33:54 +01:00
49 changed files with 4026 additions and 3637 deletions

View File

@@ -60,7 +60,7 @@ For users:
- New: [ task #210 ] Can choose cash account during POS login.
- New: [ task #104 ] Can create an invoice from several orders.
- New: Update libs/tools/logo for DoliWamp (now use PHP 5.3).
- New: Added ODT Template tag {object_total_discount}
- New: Added ODT Template tag {object_total_discount_ht}
- New: Add new import options: Third parties bank details, warehouses and stocks, categories and suppliers prices
- New: English bank account need a bank code (called sort code) to identify an account.
- New: Can choose menu entry to show with external site module.

View File

@@ -28,7 +28,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}

View File

@@ -423,7 +423,7 @@ class Adherent extends CommonObject
$this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET";
$sql.= " civilite = ".($this->civilite_id?"'".$this->civilite_id."'":"null");
$sql.= " civilite = ".(!is_null($this->civilite_id)?"'".$this->civilite_id."'":"null");
$sql.= ", prenom = ".($this->firstname?"'".$this->db->escape($this->firstname)."'":"null");
$sql.= ", nom=" .($this->lastname?"'".$this->db->escape($this->lastname)."'":"null");
$sql.= ", login=" .($this->login?"'".$this->db->escape($this->login)."'":"null");

View File

@@ -555,8 +555,14 @@ if ($action == 'create')
}
else
{
//For external user force the company to user company
if (!empty($user->societe_id)) {
print $form->select_company($user->societe_id,'socid','',1,1);
} else {
print $form->select_company('','socid','',1,1);
}
}
print '</td></tr>';
// If company is forced, we propose contacts (may be contact is also forced)

View File

@@ -32,6 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
$langs->load("companies");
$langs->load("categories");
$langs->load('withdrawals');
// Securite acces client
if ($user->societe_id > 0) accessforbidden();

View File

@@ -31,6 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/rejetprelevement.class
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
$langs->load("categories");
$langs->load('withdrawals');
// Securite acces client
if ($user->societe_id > 0) accessforbidden();

View File

@@ -130,7 +130,7 @@ if ($action == 'infocredit' && $user->rights->prelevement->bons->credit)
$bon = new BonPrelevement($db,"");
$form = new Form($db);
llxHeader('',$langs->trans("WithdrawalReceipts"));
llxHeader('',$langs->trans("WithdrawalReceipt"));
if ($id > 0)
@@ -138,7 +138,7 @@ if ($id > 0)
$bon->fetch($id);
$head = prelevement_prepare_head($bon);
dol_fiche_head($head, 'prelevement', $langs->trans("WithdrawalReceipts"), '', 'payment');
dol_fiche_head($head, 'prelevement', $langs->trans("WithdrawalReceipt"), '', 'payment');
if (GETPOST('error','alpha')!='')
{

View File

@@ -35,6 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
if ($user->societe_id > 0) accessforbidden();
$langs->load("categories");
$langs->load('withdrawals');
// Get supervariables
$prev_id = GETPOST('id','int');

View File

@@ -2253,24 +2253,43 @@ abstract class CommonObject
}
/**
* Function that returns the total amount of discounts applied.
* Function that returns the total amount HT of discounts applied for all lines.
*
* @return false|float False is returned if the discount couldn't be retrieved
* @return float
*/
function getTotalDiscount()
{
$sql = 'SELECT (SUM(`subprice`) - SUM(`total_ht`)) as `discount` FROM '.MAIN_DB_PREFIX.$this->table_element.'det WHERE `'.$this->fk_element.'` = '.$this->id;
$total_discount=0.00;
$query = $this->db->query($sql);
$sql = "SELECT subprice as pu_ht, qty, remise_percent, total_ht";
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element."det";
$sql.= " WHERE ".$this->fk_element." = ".$this->id;
if ($query)
dol_syslog(get_class($this).'::getTotalDiscount sql='.$sql);
$resql = $this->db->query($sql);
if ($resql)
{
$result = $this->db->fetch_object($query);
$num=$this->db->num_rows($resql);
$i=0;
while ($i < $num)
{
$obj = $this->db->fetch_object($query);
return price2num($result->discount);
$pu_ht = $obj->pu_ht;
$qty= $obj->qty;
$discount_percent_line = $obj->remise_percent;
$total_ht = $obj->total_ht;
$total_discount_line = price2num(($pu_ht * $qty) - $total_ht, 'MT');
$total_discount += $total_discount_line;
$i++;
}
}
else dol_syslog(get_class($this).'::getTotalDiscount '.$this->db->lasterror(), LOG_ERR);
return false;
//print $total_discount; exit;
return price2num($total_discount);
}
/**
@@ -2313,7 +2332,7 @@ abstract class CommonObject
function isInEEC()
{
// List of all country codes that are in europe for european vat rules
// List found on http://ec.europa.eu/taxation_customs/vies/lang.do?fromWhichPage=vieshome
// List found on http://ec.europa.eu/taxation_customs/common/faq/faq_1179_en.htm#9
$country_code_in_EEC=array(
'AT', // Austria
'BE', // Belgium
@@ -2326,16 +2345,17 @@ abstract class CommonObject
'ES', // Spain
'FI', // Finland
'FR', // France
'GB', // Royaume-uni
'GB', // United Kingdom
'GR', // Greece
'NL', // Holland
'HU', // Hungary
'IE', // Ireland
'IM', // Isle of Man - Included in UK
'IT', // Italy
'LT', // Lithuania
'LU', // Luxembourg
'LV', // Latvia
'MC', // Monaco Seems to use same IntraVAT than France (http://www.gouv.mc/devwww/wwwnew.nsf/c3241c4782f528bdc1256d52004f970b/9e370807042516a5c1256f81003f5bb3!OpenDocument)
'MC', // Monaco - Included in France
'MT', // Malta
//'NO', // Norway
'PL', // Poland

View File

@@ -3181,7 +3181,7 @@ class Form
//print "name=$name, selectedrate=$selectedrate, seller=".$societe_vendeuse->country_code." buyer=".$societe_acheteuse->country_code." buyer is company=".$societe_acheteuse->isACompany()." idprod=$idprod, info_bits=$info_bits type=$type";
//exit;
// Get list of all VAT rates to show
// Define list of countries to use to search VAT rates to show
// First we defined code_pays to use to find list
if (is_object($societe_vendeuse))
{
@@ -3193,7 +3193,7 @@ class Form
}
if (! empty($conf->global->SERVICE_ARE_ECOMMERCE_200238EC)) // If option to have vat for end customer for services is on
{
if (! $societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC() && ! $societe_acheteuse->isACompany())
if (! $societe_vendeuse->isInEEC() && (! is_object($societe_acheteuse) || ($societe_acheteuse->isInEEC() && ! $societe_acheteuse->isACompany())))
{
// We also add the buyer
if (is_numeric($type))

View File

@@ -120,6 +120,7 @@ class FormFile
{
if ($perm)
{
$langs->load('other');
print ' ('.$langs->trans("MaxSize").': '.$max.' '.$langs->trans("Kb");
print ' '.info_admin($langs->trans("ThisLimitIsDefinedInSetup",$max,$maxphp),1);
print ')';

View File

@@ -2921,6 +2921,18 @@ function get_default_tva($thirdparty_seller, $thirdparty_buyer, $idprod=0, $idpr
dol_syslog("get_default_tva: seller use vat=".$thirdparty_seller->tva_assuj.", seller country=".$thirdparty_seller->country_code.", seller in cee=".$thirdparty_seller->isInEEC().", buyer country=".$thirdparty_buyer->country_code.", buyer in cee=".$thirdparty_buyer->isInEEC().", idprod=".$idprod.", idprodfournprice=".$idprodfournprice.", SERVICE_ARE_ECOMMERCE_200238EC=".(! empty($conf->global->SERVICES_ARE_ECOMMERCE_200238EC)?$conf->global->SERVICES_ARE_ECOMMERCE_200238EC:''));
// If services are eServices according to EU Council Directive 2002/38/EC (http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm)
// we use the buyer VAT.
if (! empty($conf->global->SERVICE_ARE_ECOMMERCE_200238EC))
{
//print "eee".$thirdparty_buyer->isACompany();exit;
if (! $thirdparty_seller->isInEEC() && $thirdparty_buyer->isInEEC() && ! $thirdparty_buyer->isACompany())
{
//print 'VATRULE 6';
return get_product_vat_for_country($idprod,$thirdparty_buyer,$idprodfournprice);
}
}
// Si vendeur non assujeti a TVA (tva_assuj vaut 0/1 ou franchise/reel)
if (is_numeric($thirdparty_seller->tva_assuj) && ! $thirdparty_seller->tva_assuj)
{
@@ -2964,18 +2976,6 @@ function get_default_tva($thirdparty_seller, $thirdparty_buyer, $idprod=0, $idpr
}
}
// If services are eServices according to EU Council Directive 2002/38/EC (ec.europa.eu/taxation_customs/taxation/v.../article_1610_en.htm)
// we use the buyer VAT.
if (! empty($conf->global->SERVICE_ARE_ECOMMERCE_200238EC))
{
//print "eee".$thirdparty_buyer->isACompany();exit;
if (! $thirdparty_seller->isInEEC() && $thirdparty_buyer->isInEEC() && ! $thirdparty_buyer->isACompany())
{
//print 'VATRULE 6';
return get_product_vat_for_country($idprod,$thirdparty_buyer,$idprodfournprice);
}
}
// Sinon la TVA proposee par defaut=0. Fin de regle.
// Rem: Cela signifie qu'au moins un des 2 est hors Communaute europeenne et que le pays differe
//print 'VATRULE 7';

View File

@@ -115,7 +115,7 @@ class doc_generic_order_odt extends ModelePDFCommandes
'object_total_ht'=>price($object->total_ht,0,$outputlangs),
'object_total_vat'=>price($object->total_tva,0,$outputlangs),
'object_total_ttc'=>price($object->total_ttc,0,$outputlangs),
'object_total_discount' => price($object->getTotalDiscount(), 0, $outputlangs),
'object_total_discount_ht' => price($object->getTotalDiscount(), 0, $outputlangs),
'object_vatrate'=>vatrate($object->tva),
'object_note_private'=>$object->note,
'object_note'=>$object->note_public,

View File

@@ -124,7 +124,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures
'object_total_ht'=>price($object->total_ht,0,$outputlangs),
'object_total_vat'=>price($object->total_tva,0,$outputlangs),
'object_total_ttc'=>price($object->total_ttc,0,$outputlangs),
'object_total_discount' => price($object->getTotalDiscount(), 0, $outputlangs),
'object_total_discount_ht' => price($object->getTotalDiscount(), 0, $outputlangs),
'object_vatrate'=>(isset($object->tva)?vatrate($object->tva):''),
'object_note_private'=>$object->note,
'object_note'=>$object->note_public,

View File

@@ -114,7 +114,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales
'object_total_ht'=>price($object->total_ht,0,$outputlangs),
'object_total_vat'=>price($object->total_tva,0,$outputlangs),
'object_total_ttc'=>price($object->total_ttc,0,$outputlangs),
'object_total_discount' => price($object->getTotalDiscount(), 0, $outputlangs),
'object_total_discount_ht' => price($object->getTotalDiscount(), 0, $outputlangs),
'object_vatrate'=>vatrate($object->tva),
'object_note_private'=>$object->note,
'object_note'=>$object->note_public,

View File

@@ -65,7 +65,7 @@ DatabaseSuperUserAccess=Database server - Superuser access
CheckToCreateDatabase=Check box if database does not exist and must be created.<br>In this case, you must fill the login/password for superuser account at the bottom of this page.
CheckToCreateUser=Check box if database owner does not exist and must be created.<br>In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists.
Experimental=(experimental)
DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, useless if your database and your database login already exists (like when you're hosted by a web hosting provider).
DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists.
KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this)
SaveConfigurationFile=Save values
ConfigurationSaving=Saving configuration file

View File

@@ -12,7 +12,7 @@ ShowSupplier=Mostrar proveedor
OrderDate=Fecha de pedido
BuyingPrice=Precio de compra
BuyingPriceMin=Precio mínimo de compra
BuyingPriceMinShort=Precio mín compra
BuyingPriceMinShort=Precio mín. compra
AddSupplierPrice=Añadir precio de proveedor
ChangeSupplierPrice=Modificar precio de proveedor
ErrorSupplierCountryIsNotDefined=El país de este proveedor no está definido, corrígalo en su ficha

View File

@@ -77,7 +77,7 @@ WithBankUsingRIB=Para las cuentas bancarias que utilizan CCC
WithBankUsingBANBIC=Para las cuentas bancarias que utilizan el código BAN/BIC/SWIFT
BankToReceiveWithdraw=Cuenta bancaria receptora de las domiciliaciones
CreditDate=Abonada el
WithdrawalFileNotCapable=No es posible generar fichero bancario de domiciliacion para su pais
WithdrawalFileNotCapable=No es posible generar el fichero bancario de domiciliación para su país.
ShowWithdraw=Ver domiciliación
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Sin embargo, si la factura tiene pendiente algún pago por domiciliación, no será cerrada para permitir la gestión de la domiciliación.
DoStandingOrdersBeforePayments=Esta pestaña le permite realizar una petición de domiciliación. Una vez terminada, puede ingresar el pago en la factura para proceder a su cierre.

View File

@@ -65,7 +65,7 @@ DatabaseSuperUserAccess=Serveur de base de données - Accès super utilisateur
CheckToCreateDatabase=Cochez cette option si la base de données n'existe pas et doit être créée.<br>Dans ce cas, il faut renseigner le login/mot de passe du super-utilisateur au bas de cette page.
CheckToCreateUser=Cochez cette option si l'utilisateur propriétaire n'existe pas et doit être créé.<br>Dans ce cas, il faut renseigner le nom et mot de passe du propriétaire à créer ainsi que le login/mot de passe du superutilisateur au bas de cette page. Si la case n'est pas cochée, le nom et mot de passe du propriétaire doivent exister.
Experimental=(expérimental)
DatabaseRootLoginDescription=Login de l'utilisateur de la base ayant les droits de création de bases de données ou de comptes pour la base, inutile si la base et son compte d'accès existent déjà (comme lorsque vous êtes chez un hébergeur).
DatabaseRootLoginDescription=Login de l'utilisateur de la base ayant les droits de création de bases de données ou de comptes pour la base, requis si la base ou son propriétaire n'existe pas déjà et doivent être créés.
KeepEmptyIfNoPassword=Laissez vide si l'administrateur n'a pas de mot de passe
SaveConfigurationFile=Enregistrement du fichier de configuration
ConfigurationSaving=Enregistrement du fichier de configuration

View File

@@ -32,7 +32,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
$id=GETPOST('id','int');
$ref=GETPOST('ref','alpha');
$mine = $_REQUEST['mode']=='mine' ? 1 : 0;
$mode = GETPOST('mode', 'alpha');
$mine = ($mode == 'mine' ? 1 : 0);
//if (! $user->rights->projet->all->lire) $mine=1; // Special for projects
$object = new Project($db);
@@ -99,7 +101,7 @@ if ($id > 0 || ! empty($ref))
$head=project_prepare_head($object);
dol_fiche_head($head, $tab, $langs->trans("Project"),0,($object->public?'projectpub':'project'));
$param=($_REQUEST["mode"]=='mine'?'&mode=mine':'');
$param=($mode=='mine'?'&mode=mine':'');
print '<table class="border" width="100%">';
@@ -110,8 +112,11 @@ if ($id > 0 || ! empty($ref))
print $langs->trans("Ref");
print '</td><td>';
// Define a complementary filter for search of next/prev ref.
$objectsListId = $object->getProjectsAuthorizedForUser($user,$mine,1);
$object->next_prev_filter=" rowid in (".$objectsListId.")";
if (! $user->rights->projet->all->lire)
{
$projectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0);
$object->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")";
}
print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', '', $param);
print '</td></tr>';

View File

@@ -80,6 +80,12 @@ $img_button=dol_buildpath($path.'/theme/amarok/img/button_bg.png',1);
font-size:100%;
}
/*.fiche ul {
margin:0.5em;
padding:0.5em;
padding-left: 2em;
}*/
body {
background-color:#f5f5f5;
<?php if ($_SESSION['dol_login'] != '') {?>
@@ -517,6 +523,7 @@ div.vmenu {
/* Panes for ECM or Filemanager */
/* ============================================================================== */
#containerlayout .layout-with-no-border {
border: 0 !important;
border-width: 0 !important;
@@ -526,29 +533,185 @@ div.vmenu {
padding: 2px !important;
}
/*
* PANES and CONTENT-DIVs
*/
#containerlayout .ui-layout-pane { /* all 'panes' */
background:#ffffff;
border:1px solid #bbbbbb;
background: #FFF;
border: 1px solid #BBB;
/* DO NOT add scrolling (or padding) to 'panes' that have a content-div,
otherwise you may get double-scrollbars - on the pane AND on the content-div
*/
padding: 0px;
overflow: auto;
}
/* (scrolling) content-div inside pane allows for fixed header(s) and/or footer(s) */
#containerlayout .ui-layout-content {
padding: 10px;
position: relative; /* contain floated or positioned elements */
overflow: auto; /* add scrolling to content-div */
}
#containerlayout .pane-in.ecm-in-layout-center.ui-layout-pane.ui-layout-pane-center {
border:0px solid #bbbbbb;
border-bottom:1px solid #bbbbbb;
/*
* RESIZER-BARS
*/
.ui-layout-resizer { /* all 'resizer-bars' */
width: <?php echo (empty($conf->browser->phone)?'8':'24'); ?>px !important;
}
.ui-layout-resizer-hover { /* affects both open and closed states */
}
/* NOTE: It looks best when 'hover' and 'dragging' are set to the same color,
otherwise color shifts while dragging when bar can't keep up with mouse */
/*.ui-layout-resizer-open-hover ,*/ /* hover-color to 'resize' */
.ui-layout-resizer-dragging { /* resizer beging 'dragging' */
background: #DDD;
width: <?php echo (empty($conf->browser->phone)?'8':'24'); ?>px;
}
.ui-layout-resizer-dragging { /* CLONED resizer being dragged */
border-left: 1px solid #BBB;
border-right: 1px solid #BBB;
}
/* NOTE: Add a 'dragging-limit' color to provide visual feedback when resizer hits min/max size limits */
.ui-layout-resizer-dragging-limit { /* CLONED resizer at min or max size-limit */
background: #E1A4A4; /* red */
}
.ui-layout-resizer-closed {
background-color: #DDDDDD;
}
.ui-layout-resizer-closed:hover {
background-color: #EEDDDD;
}
.ui-layout-resizer-sliding { /* resizer when pane is 'slid open' */
opacity: .10; /* show only a slight shadow */
filter: alpha(opacity=10);
}
.ui-layout-resizer-sliding-hover { /* sliding resizer - hover */
opacity: 1.00; /* on-hover, show the resizer-bar normally */
filter: alpha(opacity=100);
}
/* sliding resizer - add 'outside-border' to resizer on-hover */
/* this sample illustrates how to target specific panes and states */
/*.ui-layout-resizer-north-sliding-hover { border-bottom-width: 1px; }
.ui-layout-resizer-south-sliding-hover { border-top-width: 1px; }
.ui-layout-resizer-west-sliding-hover { border-right-width: 1px; }
.ui-layout-resizer-east-sliding-hover { border-left-width: 1px; }
*/
/*
* TOGGLER-BUTTONS
*/
.ui-layout-toggler {
<?php if (empty($conf->browser->phone)) { ?>
border-top: 1px solid #AAA; /* match pane-border */
border-right: 1px solid #AAA; /* match pane-border */
border-bottom: 1px solid #AAA; /* match pane-border */
background-color: #DDD;
top: 5px !important;
<?php } else { ?>
diplay: none;
<?php } ?>
}
.ui-layout-toggler-open {
height: 54px !important;
width: <?php echo (empty($conf->browser->phone)?'7':'22'); ?>px !important;
-moz-border-radius:0px 10px 10px 0px;
-webkit-border-radius:0px 10px 10px 0px;
border-radius:0px 10px 10px 0px;
}
.ui-layout-toggler-closed {
height: <?php echo (empty($conf->browser->phone)?'54':'2'); ?>px !important;
width: <?php echo (empty($conf->browser->phone)?'7':'22'); ?>px !important;
-moz-border-radius:0px 10px 10px 0px;
-webkit-border-radius:0px 10px 10px 0px;
border-radius:0px 10px 10px 0px;
}
.ui-layout-toggler .content { /* style the text we put INSIDE the togglers */
color: #666;
font-size: 12px;
font-weight: bold;
width: 100%;
padding-bottom: 0.35ex; /* to 'vertically center' text inside text-span */
}
#containerlayout .pane-in.ecm-in-layout-south.layout-padding.ui-layout-pane.ui-layout-pane-south {
border:0px solid #bbbbbb;
border-top:1px solid #bbbbbb;
/* hide the toggler-button when the pane is 'slid open' */
.ui-layout-resizer-sliding ui-layout-toggler {
display: none;
}
.ui-layout-north {
height: <?php print (empty($conf->browser->phone)?'54':'21'); ?>px !important;
}
/* ECM */
#containerlayout .ecm-layout-pane { /* all 'panes' */
background: #FFF;
border: 1px solid #BBB;
/* DO NOT add scrolling (or padding) to 'panes' that have a content-div,
otherwise you may get double-scrollbars - on the pane AND on the content-div
*/
padding: 0px;
overflow: auto;
}
/* (scrolling) content-div inside pane allows for fixed header(s) and/or footer(s) */
#containerlayout .ecm-layout-content {
padding: 10px;
position: relative; /* contain floated or positioned elements */
overflow: auto; /* add scrolling to content-div */
}
.ecm-layout-toggler {
border-top: 1px solid #AAA; /* match pane-border */
border-right: 1px solid #AAA; /* match pane-border */
border-bottom: 1px solid #AAA; /* match pane-border */
background-color: #CCC;
}
.ecm-layout-toggler-open {
height: 48px !important;
width: 6px !important;
-moz-border-radius:0px 10px 10px 0px;
-webkit-border-radius:0px 10px 10px 0px;
border-radius:0px 10px 10px 0px;
}
.ecm-layout-toggler-closed {
height: 48px !important;
width: 6px !important;
}
.ecm-layout-toggler .content { /* style the text we put INSIDE the togglers */
color: #666;
font-size: 12px;
font-weight: bold;
width: 100%;
padding-bottom: 0.35ex; /* to 'vertically center' text inside text-span */
}
#ecm-layout-west-resizer {
width: 6px !important;
}
.ecm-layout-resizer { /* all 'resizer-bars' */
border: 1px solid #BBB;
border-width: 0;
}
.ecm-layout-resizer-closed {
}
.ecm-in-layout-center {
border-left: 1px !important;
border-right: 0px !important;
border-top: 0px !important;
}
.ecm-in-layout-south {
border-left: 0px !important;
border-right: 0px !important;
border-bottom: 0px !important;
padding: 4px 0 4px 4px !important;
}
/* ============================================================================== */
/* Onglets */
/* ============================================================================== */
@@ -1003,6 +1166,9 @@ div.error {
* Other
*/
.product_line_stock_ok { color: #002200; }
.product_line_stock_too_low { color: #664400; }
.fieldrequired {
font-weight:bold;
color:#333333;
@@ -1024,6 +1190,40 @@ div.titre {
padding-bottom:2px;
}
#dolpaymenttable { width: 600px; font-size: 13px; }
#tablepublicpayment { border: 1px solid #CCCCCC !important; width: 100%; }
#tablepublicpayment .CTableRow1 { background-color: #F0F0F0 !important; }
#tablepublicpayment tr.liste_total { border-bottom: 1px solid #CCCCCC !important; }
#tablepublicpayment tr.liste_total td { border-top: none; }
#divsubscribe { width: 700px; }
#tablesubscribe { width: 100%; }
div.table-border {
display:table;
width: 100%;
border-collapse: collapse;
border: 1px solid #DDD;
}
div.table-border-row {
display:table-row;
}
div.table-key-border-col {
display:table-cell;
width: 25%;
vertical-align:top;
padding: 1px 2px 1px 1px;
border: 1px solid #DDD;
border-collapse: collapse;
}
div.table-val-border-col {
display:table-cell;
width:auto;
padding: 1px 2px 1px 1px;
border: 1px solid #DDD;
border-collapse: collapse;
}
/* ============================================================================== */
/* Formulaire confirmation (When Ajax JQuery is used) */
@@ -1636,3 +1836,133 @@ span.cke_skin_kama {padding:0px !important;}
/* ============================================================================== */
.template-upload {height:72px !important;}
/* ============================================================================== */
/* JSGantt */
/* ============================================================================== */
div.scroll2 {
width: <?php print isset($_SESSION['dol_screenwidth'])?max($_SESSION['dol_screenwidth']-830,450):'450'; ?>px !important;
}
/* ============================================================================== */
/* jFileTree */
/* ============================================================================== */
.ecmfiletree {
width: 99%;
height: 99%;
background: #FFF;
padding-left: 2px;
font-weight: normal;
}
.fileview {
width: 99%;
height: 99%;
background: #FFF;
padding-left: 2px;
padding-top: 4px;
font-weight: normal;
}
div.filedirelem {
position: relative;
display: block;
text-decoration: none;
}
ul.filedirelem {
padding: 2px;
margin: 0 5px 5px 5px;
}
ul.filedirelem li {
list-style: none;
padding: 2px;
margin: 0 10px 20px 10px;
width: 160px;
height: 120px;
text-align: center;
display: block;
float: <?php print $left; ?>;
border: solid 1px #DDDDDD;
}
ui-layout-north {
}
ul.ecmjqft {
font-size: 11px;
line-height: 16px;
padding: 0px;
margin: 0px;
font-weight: normal;
}
ul.ecmjqft li {
list-style: none;
padding: 0px;
padding-left: 20px;
margin: 0px;
white-space: nowrap;
display: block;
}
ul.ecmjqft a {
line-height: 16px;
vertical-align: middle;
color: #333;
padding: 0px 0px;
font-weight:normal;
display: inline-block !important;
/* float: left;*/
}
ul.ecmjqft a:active {
font-weight: bold !important;
}
ul.ecmjqft a:hover {
text-decoration: underline;
}
div.ecmjqft {
vertical-align: middle;
display: inline-block !important;
text-align: right;
position:absolute;
right:4px;
}
/* Core Styles */
.ecmjqft LI.directory { font-weight:normal; background: url(<?php echo dol_buildpath($path.'/theme/common/treemenu/folder2.png',1); ?>) left top no-repeat; }
.ecmjqft LI.expanded { font-weight:normal; background: url(<?php echo dol_buildpath($path.'/theme/common/treemenu/folder2-expanded.png',1); ?>) left top no-repeat; }
.ecmjqft LI.wait { font-weight:normal; background: url(<?php echo dol_buildpath('/theme/eldy/img/working.gif',1); ?>) left top no-repeat; }
/* ============================================================================== */
/* jNotify */
/* ============================================================================== */
.jnotify-container {
position: fixed !important;
<?php if (! empty($conf->global->MAIN_JQUERY_JNOTIFY_BOTTOM)) { ?>
top: auto !important;
bottom: 4px !important;
<?php } ?>
text-align: center;
min-width: 500px;
width: auto;
padding-left: 10px !important;
padding-right: 10px !important;
}
/* use or not ? */
div.jnotify-background {
opacity : 0.95 !important;
-moz-box-shadow: 4px 4px 4px #AAA !important;
-webkit-box-shadow: 4px 4px 4px #AAA !important;
box-shadow: 4px 4px 4px #AAA !important;
}

View File

@@ -307,9 +307,27 @@ if ($action == 'update' && ! $_POST["cancel"])
if (! $error)
{
$db->begin();
$object->fetch($id);
// Test if new login
if (GETPOST("login") && GETPOST("login") != $object->login)
{
dol_syslog("New login ".$object->login." is requested. We test it does not exists.");
$tmpuser=new User($db);
$result=$tmpuser->fetch(0, GETPOST("login"));
if ($result > 0)
{
$message='<div class="error">'.$langs->trans("ErrorLoginAlreadyExists").'</div>';
$action="edit"; // Go back to create page
$error++;
}
}
}
if (! $error)
{
$db->begin();
$object->oldcopy=dol_clone($object);
$object->lastname = GETPOST("nom");
@@ -454,6 +472,12 @@ if ($action == 'update' && ! $_POST["cancel"])
{
$message.='<div class="ok">'.$langs->trans("UserModified").'</div>';
$db->commit();
$login=$_SESSION["dol_login"];
if ($login && $login == $object->oldcopy->login && $object->oldcopy->login != $object->login) // Current user has changed its login
{
$_SESSION["dol_login"]=$object->login; // Set new login to avoid disconnect at next page
}
}
else
{
@@ -769,7 +793,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
else
{
// We do not use a field password but a field text to show new password to use.
print '<input size="30" maxsize="32" type="text" name="password" value="'.$password.'">';
print '<input size="30" maxsize="32" type="text" name="password" value="'.$password.'" autocomplete="off">';
}
}
print '</td></tr>';
@@ -1648,7 +1672,7 @@ else
}
else if ($caneditpassword)
{
$text='<input size="12" maxlength="32" type="password" class="flat" name="password" value="'.$object->pass.'">';
$text='<input size="12" maxlength="32" type="password" class="flat" name="password" value="'.$object->pass.'" autocomplete="off">';
if ($dolibarr_main_authentication && $dolibarr_main_authentication == 'http')
{
$text=$form->textwithpicto($text,$langs->trans("DolibarrInHttpAuthenticationSoPasswordUseless",$dolibarr_main_authentication),1,'warning');

View File

@@ -30,7 +30,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}

View File

@@ -30,7 +30,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}

View File

@@ -29,7 +29,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}

View File

@@ -30,7 +30,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}

View File

@@ -30,7 +30,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}

View File

@@ -30,7 +30,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}

View File

@@ -30,7 +30,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}

View File

@@ -30,7 +30,7 @@ $path=dirname(__FILE__).'/';
// Test if batch mode
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You ar usingr PH for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit;
}