diff --git a/.travis.yml b/.travis.yml index ca2574bc846a60dce0bc6731a5353bda9920497d..5bc5f49b2e530846c5a272598bdc4f332ec7ffc2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -128,7 +128,7 @@ script: - php upgrade.php 3.6.0 3.7.0 ignoredbversion > upgrade360370.log - php upgrade2.php 3.6.0 3.7.0 ignoredbversion > upgrade360370-2.log - php upgrade.php 3.7.0 3.8.0 ignoredbversion > upgrade370380.log - - cat upgrade370380.log +# - cat upgrade370380.log - php upgrade2.php 3.7.0 3.8.0 ignoredbversion > upgrade370380-2.log # - cat upgrade370380-2.log - cd ../.. diff --git a/ChangeLog b/ChangeLog index 68d6b1848f14a0d16a5a755cf7f541cd6194680f..eb82166af8b258fa4b6e4e6a18a2b74211dca09a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -41,16 +41,40 @@ Dolibarr better: - Hooks 'printLeftBlock' and 'formConfirm' are now compliant with hook development rules. They are "addreplace" hooks, so you must return content with "->resprints='mycontent'" and not with "return 'mycontent'" - All fields "fk_societe" were renamed into "fk_soc". +- Method select_PriceBaseType and load_PriceBaseType were merged into selectPriceBaseType -***** ChangeLog for 3.7.1 compared to 3.7.* ***** -- Fix: Bug in the new photo system -- Fix: Error management -- Fix: [ Bug #2714 ] Members -> Memberxy-> Agenda -> technical Error -- Fix: [ Bug #2713 ] 3.7.0 mailing-unsubscribe.php not unsubscribe -- Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose - your photo on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to - restore old path. +***** ChangeLog for 3.7.2 compared to 3.7.1 ***** +FIX [ bug #2855 ] Wrong translation key in localtax report page +FIX [ bug #1852 ] JS error when editing a customer order line +FIX [ bug #2900 ] Courtesy title is not stored in create thirdparty form + +***** ChangeLog for 3.7.1 compared to 3.7.* ***** +FIX Bug in the new photo system +FIX Error management +FIX [ Bug #2714 ] Members -> Memberxy-> Agenda -> technical Error +FIX [ Bug #2713 ] 3.7.0 mailing-unsubscribe.php not unsubscribe +FIX #2901 +FIX when we create an agenda event with "Not applicable" status, it is automatically saved with "To do" status +FIX check the user status during authentication +FIX top links menu have target attribute with wrong value +FIX extrafields required on thirdparty +FIX create contact with extrafield is null when it is require +FIX width multiselect +FIX "script" tag with wrong syntax +Fix bug debian 786479 +FIX update usergroup name +Fix facturestats was not filtering on invoice type +FIX #2856 : Wrong table design +FIX button create payment hide if tax amount is less than 1 +FIX event for restricted user was restricted if company null +FIX send mail, copy sendto don't read the list of contact +FIX Properly escape untrusted data to prevent HTML injection. +FIX send mail, copy sendto don't read the list of contact + +Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose +your photo on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to +restore old path. WARNING: @@ -236,8 +260,8 @@ Dolibarr better: - Table llx_c_pays were renamed into llx_c_country. - Triggers *_BUILDDOC are removed. Building a doc is not a business event. For action after creation of a pdf or odt, hook "afterPDFCreation" or "afterODTCreation" must be used instead. -- A lot of pages called fiche.php were renamed into card.php -- A lot of pages called liste.php were renamed into list.php +- A lot of pages named fiche.php were renamed into card.php +- A lot of pages named liste.php were renamed into list.php - If you used warehouse/stock module, recheck setup of stock increase/decrease rules of the warehouse module and your Point Of Sale module setup if you use one. - Replaced USER_UPDATE_SESSION trigger with an updateSession hook may break modules using it. @@ -279,6 +303,7 @@ Dolibarr better: - Fix: [ bug #2545 ] Missing object_margin.png in Amarok theme - Fix: [ bug #2542 ] Contracts store localtax preferences - Fix: Bad permission assignments for stock movements actions +- Fix: [ bug #2891 ] Category hooks do not work ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. @@ -453,6 +478,10 @@ Fix: [ bug #2577 ] Incorrect invoice status in "Linked objects" page of a projec Fix: [ bug #2576 ] Unable to edit a dictionary entry that has # in its ref Fix: [ bug #2758 ] Product::update sets product note to "null" when $prod->note is null Fix: [ bug #2757 ] Deleting product category photo gives "Forbidden access" error +Fix: [ bug #2976 ] "Report" tab is the current tab but it is not marked as selected by the UI +Fix: [ bug #2861 ] Undefined variable $res when migrating +Fix: [ bug #2837 ] Product list table column header does not match column body +Fix: [ bug #2835 ] Customer prices of a product shows incorrect history order ***** ChangeLog for 3.5.6 compared to 3.5.5 ***** Fix: Avoid missing class error for fetch_thirdparty method #1973 diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index c667754d4aba747d516f1698c20d44ef47f9c9fe..bdfc9d8972a112ecb55d3ed9fc7d218c222fe9f7 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -455,8 +455,9 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/documents`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/document`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/documents`; - # Removed known external modules to avoir any error when packaging on test env + # Removed known external modules to avoid any error when packaging from env where external modules are tested $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ancotec*`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/cabinetmed*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom*`; @@ -981,10 +982,10 @@ if ($nboftargetok) { mkdir($DESTI.'/package_windows'); if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; } - print "Remove target $FILENAMEEXEDOLIWAMP.exe...\n"; + print "Remove target $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe...\n"; unlink "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"; - print "Check that in your Wine setup, you create a Z: drive that point to your /tmp directory.\n"; + print "Check that in your Wine setup, you create a Z: drive that point to your / directory.\n"; $SOURCEBACK=$SOURCE; $SOURCEBACK =~ s/\//\\/g; diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index 7f814a826df47232abe620268816f60b43e7adbe..2cc29a14a9a44203877426f5a18d03b2b65fcb0d 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -8,7 +8,7 @@ This files describe steps made by Dolibarr packaging team to make a beta version of Dolibarr, step by step. - Check all files are commited. -- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base x.y origin/develop`..x.y --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -i -e '^FIX\|NEW'" +- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base (x.y)-1 origin/develop`..x.y(.z) --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -i -e '^FIX\|NEW'" - Update version number with x.y.z-w in htdocs/filefunc.inc.php - Update version number with x.y.z-w in build/debian/changelog - Commit all changes. @@ -29,7 +29,7 @@ This files describe steps made by Dolibarr packaging team to make a complete release of Dolibarr, step by step. - Check all files are commited. -- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base x.y origin/develop`..x.y --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -i -e '^FIX\|NEW'" +- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base (x.y)-1 origin/develop`..x.y(.z) --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -i -e '^FIX\|NEW'" - Update version number with x.y.z in htdocs/filefunc.inc.php - Update version number with x.y.z in build/debian/changelog - Commit all changes. diff --git a/dev/ansible/README.md b/dev/ansible/README.md index aeed9fc69833fd5c4f1b49fcda114d7f9b198dab..e498ebc334038736a58f257c8eca632a90332e48 100644 --- a/dev/ansible/README.md +++ b/dev/ansible/README.md @@ -3,7 +3,7 @@ This is a quick tutorial: * Install ansible: -> apt-get install +> apt-get install ansible * Add ip of server to manage into /etc/ansible/hosts diff --git a/dev/codesniffer/ruleset.xml b/dev/codesniffer/ruleset.xml index 7f16ad02a7671ff3ad6e43ce1f8cdd5165020b61..9b5c0931650adcadb6007f1249fdc3ea243b576d 100755 --- a/dev/codesniffer/ruleset.xml +++ b/dev/codesniffer/ruleset.xml @@ -350,6 +350,11 @@ </rule> <rule ref="PEAR.NamingConventions.ValidVariableName" /> + <!-- This is not in PSR2 --> + <rule ref="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore"> + <severity>0</severity> + </rule> + <rule ref="PEAR.WhiteSpace.ObjectOperatorIndent" /> <!-- Need to be commented to be disabled diff --git a/dev/fixaltlanguages.sh b/dev/fixaltlanguages.sh index bfb9aa900b60f0f9e29a6db3963b6aeaf3cb96d0..7f42be5b9541e89383fc5d943e2874315f182e9a 100755 --- a/dev/fixaltlanguages.sh +++ b/dev/fixaltlanguages.sh @@ -49,7 +49,7 @@ then if [ -d $reflang ] then echo "***** Process language "$aa"_"$bb" - Search original into "$reflang - echo $dirshort est une langue alternative de $reflang + echo $dirshort is an alternative language of $reflang echo ./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2 ./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2 for fic in `ls htdocs/langs/${aa}_${bb}/*.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done diff --git a/dev/multitail/.multitailrc b/dev/multitail/.multitailrc new file mode 100644 index 0000000000000000000000000000000000000000..6db59463a4a3d160882644237e804f8300d0473c --- /dev/null +++ b/dev/multitail/.multitailrc @@ -0,0 +1,12 @@ +# This is an example of multitail setup file you can use to analyze dolibarr log files. +# Usage: multitail -cS dolibarr documents/dolibarr.log +colorscheme:dolibarr +bright:1 +cs_re:yellow,red:.*EMERG.* +cs_re:white,red:.*ALERT.* +cs_re:green,red:.*CRIT.* +cs_re:red:.*ERR.* +cs_re:white,yellow:.*WARNING.* +cs_re:green,yellow:.*NOTICE.* +cs_re:green:.*INFO.* +cs_re:white:.*DEBUG.* \ No newline at end of file diff --git a/dev/skeletons/modMyModule.class.php b/dev/skeletons/modMyModule.class.php index 5bed0a26d33addae45dfc6845965f66575470f74..7c207e9877b3d4b6b3562cc0a1df1bc33e9e9d2a 100644 --- a/dev/skeletons/modMyModule.class.php +++ b/dev/skeletons/modMyModule.class.php @@ -167,6 +167,12 @@ class modMyModule extends DolibarrModules // Example: //$this->boxes=array(array(0=>array('file'=>'myboxa.php','note'=>'','enabledbydefaulton'=>'Home'),1=>array('file'=>'myboxb.php','note'=>''),2=>array('file'=>'myboxc.php','note'=>''));); + // Cronjobs + $this->cronjobs = array(); // List of cron jobs entries to add + // Example: $this->cronjobs=array(0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600), + // 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600) + // ); + // Permissions $this->rights = array(); // Permission array used by this module $r=0; @@ -180,7 +186,6 @@ class modMyModule extends DolibarrModules // $this->rights[$r][5] = 'level2'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2) // $r++; - // Main menu entries $this->menu = array(); // List of menus to add $r=0; diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index 1f5b56e661b8b6d0fc8cf9dc45f4eef52f0f9eef..21c1beda9a13999c92a0cbe7787d9420ef793c02 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -1,7 +1,8 @@ <?php -/* Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2015 Florian Henry <florian.henry@open-concept.pro> +/* Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2015 Florian Henry <florian.henry@open-concept.pro> + * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software; you can redistribute it and/or modify @@ -19,407 +20,463 @@ */ /** - * \file dev/skeletons/skeleton_class.class.php - * \ingroup mymodule othermodule1 othermodule2 - * \brief This file is an example for a CRUD class file (Create/Read/Update/Delete) - * Put here some comments + * \file dev/skeletons/skeleton_class.class.php + * \ingroup mymodule othermodule1 othermodule2 + * \brief This file is an example for a CRUD class file (Create/Read/Update/Delete) + * Put some comments here */ // Put here all includes required by your class file -require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"); -//require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php"); -//require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php"); - +require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php'; +//require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; +//require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; /** - * Put here description of your class + * Class Skeleton_Class + * + * Put here description of your class */ class Skeleton_Class extends CommonObject { - var $db; //!< To store db handler - var $error; //!< To return error code (or message) - var $errors=array(); //!< To return several error codes (or messages) - var $element='skeleton'; //!< Id that identify managed objects - var $table_element='skeleton'; //!< Name of table without prefix where object is stored + /** + * @var DoliDb Database handler + */ + protected $db; + + /** + * @var string Error code (or message) + * @deprecated + * @see Skeleton_Class::errors + */ + public $error; + /** + * @var string[] Error codes (or messages) + */ + public $errors = array(); + /** + * @var string Id to identify managed objects + */ + public $element = 'skeleton'; + /** + * @var string Name of table without prefix where object is stored + */ + public $table_element = 'skeleton'; - var $lines=array(); + /** + * @var Skeleton_ClassLine[] Lines + */ + public $lines = array(); - var $id; - var $prop1; - var $prop2; + /** + * @var int ID + */ + public $id; + /** + * @var mixed Sample property 1 + */ + public $prop1; + /** + * @var mixed Sample property 2 + */ + public $prop2; //... + /** + * Constructor + * + * @param DoliDb $db Database handler + */ + public function __construct( DoliDB $db ) + { + $this->db = $db; + + return 1; + } + + /** + * Create object into database + * + * @param User $user User that creates + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, Id of created object if OK + */ + public function create( User $user, $notrigger = false ) + { + dol_syslog( __METHOD__, LOG_DEBUG ); - /** - * Constructor - * - * @param DoliDb $db Database handler - */ - function __construct($db) - { - $this->db = $db; - return 1; - } - - - /** - * Create object into database - * - * @param User $user User that creates - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, Id of created object if OK - */ - function create($user, $notrigger=0) - { - global $conf, $langs; - $error=0; + $error = 0; // Clean parameters - if (isset($this->prop1)) $this->prop1=trim($this->prop1); - if (isset($this->prop2)) $this->prop2=trim($this->prop2); + if (isset( $this->prop1 )) { + $this->prop1 = trim( $this->prop1 ); + } + if (isset( $this->prop2 )) { + $this->prop2 = trim( $this->prop2 ); + } //... // Check parameters // Put here code to add control on parameters values - // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."("; - $sql.= " field1,"; - $sql.= " field2"; + // Insert request + $sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element . '('; + $sql .= ' field1,'; + $sql .= ' field2'; //... - $sql.= ") VALUES ("; - $sql.= " '".$this->prop1."',"; - $sql.= " '".$this->prop2."'"; + $sql .= ') VALUES ('; + $sql .= ' \'' . $this->prop1 . '\','; + $sql .= ' \'' . $this->prop2 . '\''; //... - $sql.= ")"; + $sql .= ')'; $this->db->begin(); - dol_syslog(__METHOD__, LOG_DEBUG); - $resql=$this->db->query($sql); - if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + $resql = $this->db->query( $sql ); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR ); + } - if (! $error) - { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); + if (!$error) { + $this->id = $this->db->last_insert_id( MAIN_DB_PREFIX . $this->table_element ); - if (! $notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action to call a trigger. + if (!$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action to call a trigger. - //// Call triggers - //$result=$this->call_trigger('MYOBJECT_CREATE',$user); - //if ($result < 0) $error++; - //// End call triggers + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_CREATE',$user); + //if ($result < 0) $error++; + //// End call triggers } - } + } - // Commit or rollback - if ($error) - { + // Commit or rollback + if ($error) { $this->db->rollback(); - return -1*$error; - } - else - { + + return - 1 * $error; + } else { $this->db->commit(); - return $this->id; + + return $this->id; } - } - - - /** - * Load object in memory from the database - * - * @param int $id Id object - * @param string $ref Ref - * @return int <0 if KO, 0 if not found, >0 if OK - */ - function fetch($id,$ref='') - { - global $langs; - $sql = "SELECT"; - $sql.= " t.rowid,"; - $sql.= " t.field1,"; - $sql.= " t.field2"; + } + + /** + * Load object in memory from the database + * + * @param int $id Id object + * @param string $ref Ref + * + * @return int <0 if KO, 0 if not found, >0 if OK + */ + public function fetch( $id, $ref = null ) + { + dol_syslog( __METHOD__, LOG_DEBUG ); + + $sql = 'SELECT'; + $sql .= ' t.rowid,'; + $sql .= ' t.field1,'; + $sql .= ' t.field2'; //... - $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as t"; - if ($ref) $sql.= " WHERE t.ref = '".$ref."'"; - else $sql.= " WHERE t.rowid = ".$id; - - dol_syslog(get_class($this)."::fetch"); - $resql=$this->db->query($sql); - if ($resql) - { - $numrows = $this->db->num_rows($resql); - if ($numrows) - { - $obj = $this->db->fetch_object($resql); - - $this->id = $obj->rowid; - $this->prop1 = $obj->field1; - $this->prop2 = $obj->field2; + $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; + if (null !== $ref) { + $sql .= ' WHERE t.ref = ' . '\'' . $ref . '\''; + } else { + $sql .= ' WHERE t.rowid = ' . $id; + } + + $resql = $this->db->query( $sql ); + if ($resql) { + $numrows = $this->db->num_rows( $resql ); + if ($numrows) { + $obj = $this->db->fetch_object( $resql ); + + $this->id = $obj->rowid; + $this->prop1 = $obj->field1; + $this->prop2 = $obj->field2; //... - } - $this->db->free($resql); - - return ($numrows?1:0); - } - else - { - $this->error="Error ".$this->db->lasterror(); - return -1; - } - } - - /** - * Load object in memory from the database - * - * @param string $sortorder Sort Order + } + $this->db->free( $resql ); + + if ($numrows) { + return 1; + } else { + return 0; + } + } else { + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR ); + + return - 1; + } + } + + /** + * Load object in memory from the database + * + * @param string $sortorder Sort Order * @param string $sortfield Sort field - * @param int $limit offset limit - * @param int $offset offset limit - * @param array $filter filter array + * @param int $limit offset limit + * @param int $offset offset limit + * @param array $filter filter array + * * @return int <0 if KO, >0 if OK - */ - function fetchAll($sortorder, $sortfield, $limit, $offset, $filter = array()) - { - global $langs; - $sql = "SELECT"; - $sql.= " t.rowid,"; - $sql.= " t.field1,"; - $sql.= " t.field2"; - //... - $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; - - // Manage filter - $sqlwhere=array(); - if (count($filter)>0) { - foreach ( $filter as $key => $value ) { - //$sqlwhere []= ' AND '. $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; - } - } - if (count($sqlwhere)>0) { - $sql.= ' WHERE '.implode(' AND ', $sqlwhere); - } - $sql .= " ORDER BY " . $sortfield . " " . $sortorder . " " . $this->db->plimit($limit + 1, $offset); - - $this->lines = array (); - - dol_syslog(get_class($this)."::fetchAll", LOG_DEBUG); - $resql=$this->db->query($sql); - if ($resql) - { - $num = $this->db->num_rows($resql); - - while ($obj = $this->db->fetch_object($resql)) - { - $line=new Skeleton_ClassLine(); - - $line->id = $obj->rowid; - $line->prop1 = $obj->field1; - $line->prop2 = $obj->field2; - - $this->lines[]=$line; - //... - } - $this->db->free($resql); - - return $num; - } - else - { - $this->error="Error ".$this->db->lasterror(); - dol_syslog(get_class($this)."::fetchAll ".$this->error, LOG_ERR); - return -1; - } - } - - - /** - * Update object into database - * - * @param User $user User that modifies - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, >0 if OK - */ - function update($user, $notrigger=0) - { - global $conf, $langs; - $error=0; + */ + public function fetchAll( $sortorder, $sortfield, $limit, $offset, array $filter = array() ) + { + dol_syslog( __METHOD__, LOG_DEBUG ); + + $sql = 'SELECT'; + $sql .= ' t.rowid,'; + $sql .= ' t.field1,'; + $sql .= ' t.field2'; + //... + $sql .= ' FROM ' . MAIN_DB_PREFIX . 'mytable as t'; + + // Manage filter + $sqlwhere = array(); + if (count( $filter ) > 0) { + foreach ($filter as $key => $value) { + $sqlwhere [] = ' AND ' . $key . ' LIKE \'%' . $this->db->escape( $value ) . '%\''; + } + } + if (count( $sqlwhere ) > 0) { + $sql .= ' WHERE ' . implode( ' AND ', $sqlwhere ); + } + $sql .= ' ORDER BY ' . $sortfield . ' ' . $sortorder . ' ' . $this->db->plimit( $limit + 1, $offset ); + + $this->lines = array(); + + $resql = $this->db->query( $sql ); + if ($resql) { + $num = $this->db->num_rows( $resql ); + + while ($obj = $this->db->fetch_object( $resql )) { + $line = new Skeleton_ClassLine(); + + $line->id = $obj->rowid; + $line->prop1 = $obj->field1; + $line->prop2 = $obj->field2; + + $this->lines[] = $line; + //... + } + $this->db->free( $resql ); + + return $num; + } else { + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR ); + + return - 1; + } + } + + /** + * Update object into database + * + * @param User $user User that modifies + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, >0 if OK + */ + public function update( User $user, $notrigger = false ) + { + $error = 0; + + dol_syslog( __METHOD__, LOG_DEBUG ); // Clean parameters - if (isset($this->prop1)) $this->prop1=trim($this->prop1); - if (isset($this->prop2)) $this->prop2=trim($this->prop2); + if (isset( $this->prop1 )) { + $this->prop1 = trim( $this->prop1 ); + } + if (isset( $this->prop2 )) { + $this->prop2 = trim( $this->prop2 ); + } //... // Check parameters // Put here code to add a control on parameters values - // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET"; - $sql.= " field1=".(isset($this->field1)?"'".$this->db->escape($this->field1)."'":"null").","; - $sql.= " field2=".(isset($this->field2)?"'".$this->db->escape($this->field2)."'":"null").""; + // Update request + $sql = 'UPDATE ' . MAIN_DB_PREFIX . $this->table_element . ' SET'; + if (isset( $this->field1 )) { + $sql .= ' field1=\'' . $this->db->escape( $this->field1 ) . '\','; + } else { + $sql .= ' field1=null' . ','; + } + if (isset( $this->field2 )) { + $sql .= ' field2=\'' . $this->db->escape( $this->field2 ) . '\''; + } else { + $sql .= ' field2=null'; + } //... - $sql.= " WHERE rowid=".$this->id; + $sql .= ' WHERE rowid=' . $this->id; $this->db->begin(); - dol_syslog(__METHOD__); - $resql = $this->db->query($sql); - if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + $resql = $this->db->query( $sql ); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR ); + } - if (! $error && ! $notrigger) - { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. + if (!$error && !$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action calls a trigger. - //// Call triggers - //$result=$this->call_trigger('MYOBJECT_MODIFY',$user); - //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} - //// End call triggers + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_MODIFY',$user); + //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //// End call triggers } - // Commit or rollback - if ($error) - { + // Commit or rollback + if ($error) { $this->db->rollback(); - return -1*$error; - } - else - { + + return - 1 * $error; + } else { $this->db->commit(); + return 1; } - } - + } - /** - * Delete object in database + /** + * Delete object in database * - * @param User $user User that deletes - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, >0 if OK + * @param User $user User that deletes + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, >0 if OK */ - function delete($user, $notrigger=0) + public function delete( User $user, $notrigger = false ) { - global $conf, $langs; - $error=0; + dol_syslog( __METHOD__, LOG_DEBUG ); + + $error = 0; $this->db->begin(); - if (! $error) - { - if (! $notrigger) - { + if (!$error) { + if (!$notrigger) { // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. + // want this action calls a trigger. - //// Call triggers - //$result=$this->call_trigger('MYOBJECT_DELETE',$user); - //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} - //// End call triggers + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_DELETE',$user); + //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //// End call triggers } } - if (! $error) - { - $sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element; - $sql.= " WHERE rowid=".$this->id; + if (!$error) { + $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . $this->table_element; + $sql .= ' WHERE rowid=' . $this->id; - dol_syslog(__METHOD__); - $resql = $this->db->query($sql); - if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + $resql = $this->db->query( $sql ); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR ); + } } - // Commit or rollback - if ($error) - { + // Commit or rollback + if ($error) { $this->db->rollback(); - return -1*$error; - } - else - { + + return - 1 * $error; + } else { $this->db->commit(); + return 1; } } - - /** - * Load an object from its id and create a new one in database + * Load an object from its id and create a new one in database + * + * @param int $fromid Id of object to clone * - * @param int $fromid Id of object to clone - * @return int New id of clone + * @return int New id of clone */ - function createFromClone($fromid) + public function createFromClone( $fromid ) { - global $user,$langs; + dol_syslog( __METHOD__, LOG_DEBUG ); - $error=0; - - $object=new Skeleton_Class($this->db); + global $user; + $error = 0; + $object = new Skeleton_Class( $this->db ); $this->db->begin(); // Load source object - $object->fetch($fromid); - $object->id=0; - $object->statut=0; + $object->fetch( $fromid ); + // Reset object + $object->id = 0; // Clear fields // ... // Create clone - $result=$object->create($user); + $result = $object->create( $user ); // Other options - if ($result < 0) - { - $this->error=$object->error; - $error++; - } - - if (! $error) - { - - + if ($result < 0) { + $error ++; + $this->errors = $object->errors; + dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR ); } // End - if (! $error) - { + if (!$error) { $this->db->commit(); + return $object->id; - } - else - { + } else { $this->db->rollback(); - return -1; + + return - 1; } } - /** - * Initialise object with example values - * Id must be 0 if object instance is a specimen + * Initialise object with example values + * Id must be 0 if object instance is a specimen * - * @return void + * @return void */ - function initAsSpecimen() + public function initAsSpecimen() { - $this->id=0; - $this->prop1='prop1'; - $this->prop2='prop2'; + $this->id = 0; + $this->prop1 = 'prop1'; + $this->prop2 = 'prop2'; } } +/** + * Class Skeleton_ClassLine + */ class Skeleton_ClassLine { - var $id; - var $prop1; - var $prop2; + /** + * @var int ID + */ + public $id; + /** + * @var mixed Sample line property 1 + */ + public $prop1; + /** + * @var mixed Sample line property 2 + */ + public $prop2; } diff --git a/dev/skeletons/skeleton_page.php b/dev/skeletons/skeleton_page.php index ac329318ae53c58b500d01b345f4821cecb4f54f..9e6d76ee6d84bdf3408fe6ad23e130f9a363bcdf 100644 --- a/dev/skeletons/skeleton_page.php +++ b/dev/skeletons/skeleton_page.php @@ -352,8 +352,9 @@ if ($id && (empty($action) || $action == 'view')) // Example 2 : Adding links to objects - // The class must extends CommonObject class to have this method available - //$somethingshown=$object->showLinkedObjectBlock(); + //$somethingshown=$form->showLinkedObjectBlock($object); + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '<br>'.$linktoelem; } diff --git a/dev/translation/strip_language_file.php b/dev/translation/strip_language_file.php index 6102ed3826c071d26b877be136829b379835c10e..d612ff66abf10e8cc5352d3efad829669a750066 100755 --- a/dev/translation/strip_language_file.php +++ b/dev/translation/strip_language_file.php @@ -314,7 +314,7 @@ foreach($filesToProcess as $fileToProcess) continue; } - // String exists in both files and does not match + // String exists in both files and value into alternative language differs from main language but also from english files if ( (! empty($aSecondary[$key]) && $aSecondary[$key] != $aPrimary[$key] && ! empty($aEnglish[$key]) && $aSecondary[$key] != $aEnglish[$key]) diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index d555ed46092c0a2136568d8457ddb3d4f484dbb9..51517993bb5e109459e90895021bf890aaaf9432 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -23,12 +23,14 @@ * \brief Card accounting account */ require '../../main.inc.php'; - + // Class require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; +$error=0; + // Langs $langs->load("bills"); $langs->load("accountancy"); @@ -41,7 +43,7 @@ $rowid = GETPOST('rowid', 'int'); // Security check if (!$user->admin) accessforbidden(); - + $accounting = new AccountingAccount($db); // Action @@ -49,11 +51,11 @@ if ($action == 'add') { if (! GETPOST('cancel', 'alpha')) { $sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS; - + dol_syslog('accountancy/admin/card.php:: $sql=' . $sql); $result = $db->query($sql); $obj = $db->fetch_object($result); - + $accounting->fk_pcg_version = $obj->pcg_version; $accounting->pcg_type = GETPOST('pcg_type'); $accounting->pcg_subtype = GETPOST('pcg_subtype'); @@ -61,17 +63,17 @@ if ($action == 'add') $accounting->account_parent = GETPOST('account_parent', 'int'); $accounting->label = GETPOST('label', 'alpha'); $accounting->active = 1; - + $res = $accounting->create($user); - + if ($res == 0) { } else { if ($res == - 3) { - $_error = 1; + $error = 1; $action = "create"; } if ($res == - 4) { - $_error = 2; + $error = 2; $action = "create"; } } @@ -82,22 +84,22 @@ else if ($action == 'edit') { if (! GETPOST('cancel', 'alpha')) { $result = $accounting->fetch($id); - + $sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS; - + dol_syslog('accountancy/admin/card.php:: $sql=' . $sql); $result2 = $db->query($sql); $obj = $db->fetch_object($result2); - + $accounting->fk_pcg_version = $obj->pcg_version; $accounting->pcg_type = GETPOST('pcg_type'); $accounting->pcg_subtype = GETPOST('pcg_subtype'); $accounting->account_number = GETPOST('account_number', 'int'); $accounting->account_parent = GETPOST('account_parent', 'int'); $accounting->label = GETPOST('label', 'alpha'); - + $result = $accounting->update($user); - + if ($result > 0) { header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id); exit(); @@ -112,15 +114,15 @@ else if ($action == 'edit') else if ($action == 'delete') { $result = $accounting->fetch($id); - + if (! empty($accounting->id)) { $result = $accounting->delete($user); - + if ($result > 0) { Header("Location: account.php"); } } - + if ($result < 0) { setEventMessage($accounting->error, 'errors'); } @@ -137,7 +139,7 @@ $htmlacc = new FormVentilation($db); if ($action == 'create') { print_fiche_titre($langs->trans('NewAccount')); - + print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n"; print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; print '<input type="hidden" name="action" value="add">'; @@ -145,7 +147,7 @@ if ($action == 'create') dol_fiche_head(); print '<table class="border" width="100%">'; - + print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>'; print '<td><input name="account_number" size="30" value="' . $accounting->account_number . '"</td></tr>'; print '<tr><td>' . $langs->trans("Label") . '</td>'; @@ -162,7 +164,7 @@ if ($action == 'create') print '<td>'; print $htmlacc->select_pcgsubtype($accounting->pcg_subtype, 'pcg_subtype'); print '</td></tr>'; - + print '</table>'; dol_fiche_end(); @@ -172,35 +174,35 @@ if ($action == 'create') print ' '; print '<input class="button" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">'; print '</div>'; - + print '</form>'; } else if ($id) { $rowid = $id; $account = $accounting->fetch($rowid); - + if ($account > 0) { dol_htmloutput_mesg($mesg); - + $head = accounting_prepare_head($accounting); - + if ($action == 'update') { $soc = new Societe($db); if ($object->socid) { $soc->fetch($object->socid); } - + dol_fiche_head($head, 'card', $langs->trans('AccountAccounting'), 0, 'billr'); - + print '<form name="update" action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n"; print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; print '<input type="hidden" name="action" value="edit">'; print '<input type="hidden" name="id" value="' . $id . '">'; - + print '<table class="border" width="100%">'; - + print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>'; print '<td><input name="account_number" size="30" value="' . $accounting->account_number . '"</td></tr>'; print '<tr><td>' . $langs->trans("Label") . '</td>'; @@ -217,7 +219,7 @@ else if ($id) print '<td>'; print $htmlacc->select_pcgsubtype($accounting->pcg_subtype, 'pcg_subtype'); print '</td></tr>'; - + print '</table>'; dol_fiche_end(); @@ -227,71 +229,71 @@ else if ($id) print ' '; print '<input type="submit" name="cancel" class="button" value="' . $langs->trans("Cancel") . '">'; print '</div>'; - + print '</form>'; } else { $linkback = '<a href="../admin/account.php">' . $langs->trans("BackToChartofaccounts") . '</a>'; - + dol_fiche_head($head, 'card', $langs->trans('AccountAccounting'), 0, 'billr'); - + print '<table class="border" width="100%">'; - + // Account number print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>'; print '<td>' . $accounting->account_number . '</td>'; print '<td align="right" width="25%">' . $linkback . '</td></tr>'; - + print '<tr><td>' . $langs->trans("Label") . '</td>'; print '<td colspan="2">' . $accounting->label . '</td></tr>'; - + $accp = new AccountingAccount($db); if (! empty($accounting->account_parent)) { $accp->fetch($accounting->account_parent, ''); } print '<tr><td>' . $langs->trans("Accountparent") . '</td>'; print '<td colspan="2">' . $accp->account_number . ' - ' . $accp->label . '</td></tr>'; - + print '<tr><td>' . $langs->trans("Pcgtype") . '</td>'; print '<td colspan="2">' . $accounting->pcg_type . '</td></tr>'; - + print '<tr><td>' . $langs->trans("Pcgsubtype") . '</td>'; print '<td colspan="2">' . $accounting->pcg_subtype . '</td></tr>'; - + print '<tr><td>' . $langs->trans("Active") . '</td>'; print '<td colspan="2">'; - + if (empty($accounting->active)) { print img_picto($langs->trans("Disabled"), 'switch_off'); } else { print img_picto($langs->trans("Activated"), 'switch_on'); } - + print '</td></tr>'; - + print '</table>'; dol_fiche_end(); - + /* * Barre d'actions */ - + print '<div class="tabsAction">'; - + if ($user->admin) { print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=update&id=' . $id . '">' . $langs->trans('Modify') . '</a>'; } else { print '<a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('Modify') . '</a>'; } - + if ($user->admin) { print '<a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?action=delete&id=' . $id . '">' . $langs->trans('Delete') . '</a>'; } else { print '<a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('Delete') . '</a>'; } - + print '</div>'; } } diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index a24ed34e052ac289f483f09330977b92659a0e0f..e25ceb976ff9bfe32512985fd66f1756121a1b79 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> - * Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -205,36 +205,42 @@ if ($action == 'create') { print '<form action="' . $_SERVER["PHP_SELF"] . '" name="create_mvt" method="POST">'; print '<input type="hidden" name="action" value="confirm_create">' . "\n"; print '<input type="hidden" name="next_num_mvt" value="' . $next_num_mvt . '">' . "\n"; - + + dol_fiche_head(); + print '<table class="border" width="100%">'; - print '<tr class="pair">'; + print '<tr>'; print '<td>' . $langs->trans("NumMvts") . '</td>'; print '<td>' . $next_num_mvt . '</td>'; print '</tr>'; - print '<tr class="impair">'; + print '<tr>'; print '<td>' . $langs->trans("Docdate") . '</td>'; print '<td>'; print $html->select_date('', 'doc_date', '', '', '', "create_mvt", 1, 1); print '</td>'; print '</tr>'; - print '<tr class="pair">'; + print '<tr>'; print '<td>' . $langs->trans("Codejournal") . '</td>'; print '<td>' . $html->selectarray('code_journal', $code_journal_array) . '</td>'; print '</tr>'; - print '<tr class="impair">'; + print '<tr>'; print '<td>' . $langs->trans("Docref") . '</td>'; print '<td><input type="text" size="20" name="doc_ref" value=""/></td>'; print '</tr>'; - print '<tr class="pair">'; + print '<tr>'; print '<td>' . $langs->trans("Doctype") . '</td>'; print '<td><input type="text" size="20" name="doc_type" value=""/></td>'; print '</tr>'; print '</table>'; - print '<br>'; - print '<input type="submit" class="butAction" value="' . $langs->trans("Save") . '">'; - + + dol_fiche_end(); + + print '<div align="center"><input type="submit" class="butAction" value="' . $langs->trans("Save") . '">'; + print ' <input type="button" value="'.$langs->trans("Cancel").'" class="button" onclick="history.go(-1)" />'; + print '</div>'; + print '</form>'; } else diff --git a/htdocs/accountancy/customer/card.php b/htdocs/accountancy/customer/card.php index 487f4dc27190e5f8e2ed8b4b65515f29d892452e..d3d6ff8a945cec10515c9844f5d2d7431cde8d66 100644 --- a/htdocs/accountancy/customer/card.php +++ b/htdocs/accountancy/customer/card.php @@ -1,7 +1,7 @@ <?PHP /* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> - * Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -44,7 +44,6 @@ if ($user->societe_id > 0) /* * Actions */ - if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) { if (! GETPOST('cancel', 'alpha')) { @@ -63,6 +62,10 @@ if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) { } } +/* + * View + */ + llxHeader("", "", "FicheVentilation"); if ($cancel == $langs->trans("Cancel")) { @@ -108,6 +111,8 @@ if (! empty($id)) { $linkback='<a href="'.DOL_URL_ROOT.'/accountancy/customer/lines.php">'.$langs->trans("Back").'</a>'; print_fiche_titre($langs->trans('CustomersVentilation'),$linkback,'title_setup'); + dol_fiche_head(); + print '<table class="border" width="100%">'; // Ref facture @@ -120,13 +125,13 @@ if (! empty($id)) { print '<tr><td width="20%">' . $langs->trans("Line") . '</td>'; print '<td>' . nl2br($objp->description) . '</td></tr>'; print '<tr><td width="20%">' . $langs->trans("Account") . '</td><td>'; - print $objp->account_number . '-' . $objp->label; - print '<tr><td width="20%">' . $langs->trans("NewAccount") . '</td><td>'; print $formventilation->select_account($objp->fk_code_ventilation, 'codeventil', 1); print '</td></tr>'; print '</table>'; + + dol_fiche_end(); - print '<br><div class="center">'; + print '<div class="center">'; print '<input class="button" type="submit" value="' . $langs->trans("Save") . '">'; print ' '; print '<input class="button" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">'; @@ -144,4 +149,4 @@ if (! empty($id)) { } llxFooter(); -$db->close(); +$db->close(); \ No newline at end of file diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index df6351554164cb71d74fb8e4ebba87ae6cc57ec3..5a1ffc30bb727976482f8557c17b70cd4227a760 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -1,9 +1,9 @@ <?php /* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> - * Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -172,8 +172,8 @@ if ($resql) { while ( $i < $num ) { $row = $db->fetch_row($resql); - - print '<tr><td>' . length_accountg($row[0]) . '</td>'; + $var=!$var; + print '<tr '.$bc[$var].'><td>' . length_accountg($row[0]) . '</td>'; print '<td align="left">' . $row[1] . '</td>'; print '<td align="right">' . price($row[2]) . '</td>'; print '<td align="right">' . price($row[3]) . '</td>'; diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 3a368f8d3ad9e28f8f0555f67b80bee682c1e86a..7941a7df4a82ae08fa220c97fd6dca491fbe13bb 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -43,7 +43,7 @@ $search_facture = GETPOST('search_facture','alpha'); $search_label = GETPOST('search_label','alpha'); $search_desc = GETPOST('search_desc','alpha'); $search_amount = GETPOST('search_amount','alpha'); -$search_acount = GETPOST('search_account','alpha'); +$search_account = GETPOST('search_account','alpha'); // Security check if ($user->societe_id > 0) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index fc3157c318a98e6181f480cc450012fd42789dd7..75e54b2a5905ebf27933195d6f532a0d15e04df4 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -555,9 +555,9 @@ else $h=0; $head[$h][0] = $_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal; $head[$h][1] = $langs->trans("Report"); - $head[$h][2] = 'report'; + $head[$h][2] = 'card'; - dol_fiche_head($head, $hselected); + dol_fiche_head($head, 'card', $langs->trans("BankJournal"), 0, 'payment'); print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal.'">'; print '<table width="100%" class="border">'; diff --git a/htdocs/accountancy/supplier/card.php b/htdocs/accountancy/supplier/card.php index 51d09428c25a5ae4b7ff9317eef3bf9097ae09aa..42837680428cba7d412a11862208bc2c0523d4ba 100644 --- a/htdocs/accountancy/supplier/card.php +++ b/htdocs/accountancy/supplier/card.php @@ -1,11 +1,11 @@ <?php /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com> - * Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,31 +34,32 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; // Langs -$langs->load("compta"); $langs->load("bills"); -$langs->load("other"); -$langs->load("main"); $langs->load("accountancy"); -$action = GETPOST('action'); -$id = GETPOST('id', 'int'); +$action = GETPOST('action', 'alpha'); $codeventil = GETPOST('codeventil'); +$id = GETPOST('id'); // Security check if ($user->societe_id > 0) accessforbidden(); -if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) -{ - $sql = " UPDATE " . MAIN_DB_PREFIX . "facture_fourn_det"; - $sql .= " SET fk_code_ventilation = " . $codeventil; - $sql .= " WHERE rowid = " . $id; - - dol_syslog('accountancy/journal/sellsjournal.php:: $sql=' . $sql); - - $resql = $db->query($sql); - if (! $resql) { - setEventMessage($db->lasterror(), 'errors'); +if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) { + if (! GETPOST('cancel', 'alpha')) + { + $sql = " UPDATE " . MAIN_DB_PREFIX . "facture_fourn_det"; + $sql .= " SET fk_code_ventilation = " . $codeventil; + $sql .= " WHERE rowid = " . $id; + + dol_syslog('accountancy/supplier/card.php:: $sql=' . $sql); + $resql = $db->query($sql); + if (! $resql) { + setEventMessage($db->lasterror(), 'errors'); + } + } else { + header("Location: ./lines.php"); + exit(); } } @@ -78,7 +79,7 @@ $form = new Form($db); $facturefournisseur_static = new FactureFournisseur($db); $formventilation = new FormVentilation($db); -if ($_GET["id"]) { +if (! empty($id)) { $sql = "SELECT f.ref as facnumber, f.rowid as facid, l.fk_product, l.description, l.rowid, l.fk_code_ventilation, "; $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label"; $sql .= ", aa.account_number, aa.label"; @@ -87,11 +88,14 @@ if ($_GET["id"]) { $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accountingaccount as aa ON l.fk_code_ventilation = aa.rowid"; $sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn as f ON f.rowid = l.fk_facture_fourn "; $sql .= " WHERE f.fk_statut > 0 AND l.rowid = " . $id; + if (! empty($conf->multicompany->enabled)) { $sql .= " AND f.entity IN (" . getEntity("facture_fourn", 1) . ")"; } + dol_syslog("/accounting/supplier/card.php sql=" . $sql, LOG_DEBUG); $result = $db->query($sql); + if ($result) { $num_lines = $db->num_rows($result); $i = 0; @@ -103,7 +107,10 @@ if ($_GET["id"]) { print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; print '<input type="hidden" name="action" value="ventil">'; - print_fiche_titre($langs->trans("SuppliersVentilation")); + $linkback='<a href="'.DOL_URL_ROOT.'/accountancy/supplier/lines.php">'.$langs->trans("Back").'</a>'; + print_fiche_titre($langs->trans('SuppliersVentilation'),$linkback,'title_setup'); + + dol_fiche_head(); print '<table class="border" width="100%" cellspacing="0" cellpadding="4">'; @@ -119,19 +126,24 @@ if ($_GET["id"]) { print '<tr><td width="20%">' . $langs->trans("ProductLabel") . '</td>'; print '<td>' . dol_trunc($objp->product_label, 24) . '</td>'; print '<tr><td width="20%">' . $langs->trans("Account") . '</td><td>'; - print $objp->account_number . '-' . $objp->label; - print '<tr><td width="20%">' . $langs->trans("NewAccount") . '</td><td>'; print $formventilation->select_account($objp->fk_code_ventilation, 'codeventil', 1); print '</td></tr>'; - print '<tr><td> </td><td><input type="submit" class="button" value="' . $langs->trans("Update") . '"></td></tr>'; - print '</table>'; + + dol_fiche_end(); + + print '<div class="center">'; + print '<input class="button" type="submit" value="' . $langs->trans("Save") . '">'; + print ' '; + print '<input class="button" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">'; + print '</div>'; + print '</form>'; } else { - print "Error 1"; + print "Error"; } } else { - print "Error 2"; + print "Error"; } } else { print "Error ID incorrect"; diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index 3bdf2f45a7c11271b39f81780d1622b4aa9a8efa..2c2392bfa27aa264dcd0bff9c3f4d7b1f4c4836c 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> - * Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> * * This program is free software; you can redistribute it and/or modify @@ -158,8 +158,8 @@ if ($resql) { while ( $i < $num ) { $row = $db->fetch_row($resql); - - print '<tr><td>' . length_accountg($row[0]) . '</td>'; + $var=!$var; + print '<tr '.$bc[$var].'><td>' . length_accountg($row[0]) . '</td>'; print '<td align="left">' . $row[1] . '</td>'; print '<td align="right">' . price($row[2]) . '</td>'; print '<td align="right">' . price($row[3]) . '</td>'; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 9cf77779bf4e14ada86ab39f9fe8fa57fc972dbe..0edc9e1142f37100a7f1fcd3d56514268bc507a3 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -44,7 +44,7 @@ $search_facture = GETPOST('search_facture','alpha'); $search_label = GETPOST('search_label','alpha'); $search_desc = GETPOST('search_desc','alpha'); $search_amount = GETPOST('search_amount','alpha'); -$search_acount = GETPOST('search_account','alpha'); +$search_account = GETPOST('search_account','alpha'); // Security check if ($user->societe_id > 0) diff --git a/htdocs/adherents/canvas/actions_adherentcard_common.class.php b/htdocs/adherents/canvas/actions_adherentcard_common.class.php index 9987f9bc530ab2d2daf614a6172a58fccfd5f2ca..6a8660c7f467510e27b1af96d1021a0d52ab9fd4 100644 --- a/htdocs/adherents/canvas/actions_adherentcard_common.class.php +++ b/htdocs/adherents/canvas/actions_adherentcard_common.class.php @@ -55,6 +55,8 @@ abstract class ActionsAdherentCardCommon */ private function getInstanceDao() { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + if (! is_object($this->object)) { $modelclassfile = dol_buildpath('/'.$this->dirmodule.'/canvas/'.$this->canvas.'/dao_'.$this->targetmodule.'_'.$this->canvas.'.class.php'); diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 100d1e23e748f58e079eb452d8311ce782ac42ff..924d9bc44816bd792fc1c563161271bd1b273e7d 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -1045,7 +1045,7 @@ else { if ($object->photo) print "<br>\n"; print '<table class="nobordernopadding">'; - if ($object->photo) print '<tr><td align="center"><input type="checkbox" class="flat" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>'; + if ($object->photo) print '<tr><td align="center"><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>'; print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>'; print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>'; print '</table>'; diff --git a/htdocs/adherents/class/adherent_type.class.php b/htdocs/adherents/class/adherent_type.class.php index ee15a261820eb4e5fce79fcb051572e1a72e6408..23ecfd6ea03f6a96ed53e238f997bdafca5fa9b7 100644 --- a/htdocs/adherents/class/adherent_type.class.php +++ b/htdocs/adherents/class/adherent_type.class.php @@ -39,7 +39,6 @@ class AdherentType extends CommonObject /** * @var int - * @deprecated Use rowid */ public $ref; diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 05035fa1f9fd0a3e6d32bb5df6fb10fafebc510d..ff6c1eb796339fdb383e85af1e3b7c491f0af576 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -107,7 +107,7 @@ if ($sall) foreach ($scrit as $crit) { $sql.=" AND ("; - if (is_numeric($sall)) $sql.= "d.rowid = ".$sall." OR "; + if (is_numeric($sall)) $sql.= "d.rowid = ".$db->escape($sall)." OR "; $sql.=" d.firstname LIKE '%".$db->escape($sall)."%' OR d.lastname LIKE '%".$db->escape($sall)."%' OR d.societe LIKE '%".$db->escape($sall)."%'"; $sql.=" OR d.email LIKE '%".$db->escape($sall)."%' OR d.login LIKE '%".$db->escape($sall)."%' OR d.address LIKE '%".$db->escape($sall)."%'"; $sql.=" OR d.town LIKE '%".$db->escape($sall)."%' OR d.note_public LIKE '%".$db->escape($sall)."%' OR d.note_private LIKE '%".$db->escape($sall)."%')"; @@ -115,7 +115,7 @@ if ($sall) } if ($type > 0) { - $sql.=" AND t.rowid=".$type; + $sql.=" AND t.rowid=".$db->escape($type); } if (isset($_GET["statut"]) || isset($_POST["statut"])) { diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index d5c78761989dc8923123cfecfc30eaf29a3a5cb0..db4c1dff2096b8d4908b551d79e7d7c458854b21 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2010-2014 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com> + * Copyright (C) 2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -151,6 +152,7 @@ if ( ($action == 'update' && empty($_POST["cancel"])) dolibarr_set_const($db, "MAIN_INFO_PROFID6",$_POST["MAIN_INFO_PROFID6"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_INFO_TVAINTRA",$_POST["tva"],'chaine',0,'',$conf->entity); + dolibarr_set_const($db, "MAIN_INFO_SOCIETE_OBJECT",$_POST["object"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "SOCIETE_FISCAL_MONTH_START",$_POST["fiscalmonthstart"],'chaine',0,'',$conf->entity); @@ -383,7 +385,7 @@ if ($action == 'edit' || $action == 'updateedit') } else { - print '<img height="30" src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">'; + print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.jpg">'; } print '</td></tr></table>'; print '</td></tr>'; @@ -420,7 +422,7 @@ if ($action == 'edit' || $action == 'updateedit') print '<tr '.$bc[$var].'><td><label for="legal_form">'.$langs->trans("JuridicalStatus").'</label></td><td>'; if ($mysoc->country_code) { - print $formcompany->select_juridicalstatus($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE,$mysoc->country_code); + print $formcompany->select_juridicalstatus($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE, $mysoc->country_code, '', 'legal_form'); } else { @@ -528,6 +530,12 @@ if ($action == 'edit' || $action == 'updateedit') $var=!$var; print '<tr '.$bc[$var].'><td width="35%"><label for="intra_vat">'.$langs->trans("VATIntra").'</label></td><td>'; print '<input name="tva" id="intra_vat" size="20" value="' . (! empty($conf->global->MAIN_INFO_TVAINTRA) ? $conf->global->MAIN_INFO_TVAINTRA : '') . '">'; + print '</td></tr>'; + + // Object of the company + $var=!$var; + print '<tr '.$bc[$var].'><td width="35%"><label for="object">'.$langs->trans("CompanyObject").'</label></td><td>'; + print '<textarea class="flat" name="object" id="object" cols="80" rows="'.ROWS_5.'">'.(! empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? $conf->global->MAIN_INFO_SOCIETE_OBJECT : '').'</textarea></td></tr>'; print '</td></tr>'; print '</table>'; @@ -769,7 +777,7 @@ else } else { - print '<img height="30" src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">'; + print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.jpg">'; } print '</td></tr></table>'; @@ -929,6 +937,9 @@ else } print '</td>'; print '</tr>'; + + $var=!$var; + print '<tr '.$bc[$var].'><td width="35%" valign="top">'.$langs->trans("CompanyObject").'</td><td>' . (! empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? nl2br($conf->global->MAIN_INFO_SOCIETE_OBJECT) : '') . '</td></tr>'; print '</table>'; print '</form>'; diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 2c37bcd9e427db952cbbdebff5bd525e12c5b6b0..9ef2ff7c7e47b2cea34882a8913c9bdd23590169 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -70,7 +70,7 @@ $hookmanager->initHooks(array('admin')); // Put here declaration of dictionaries properties // Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this. -$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,6,0,10,23,12,13,0,14,0,7,17,0,22,20,18,21,0,15,0,24,0,25,0,26); +$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,6,0,10,23,12,13,0,14,0,7,17,24,0,22,20,18,21,0,15,0,25,0,26); // Name of SQL tables of dictionaries $tabname=array(); @@ -832,7 +832,7 @@ if ($id) $fieldlist=explode(',',$tabfield[$id]); // Line for title - print '<tr class="liste_titre">'; + print '<tr class="liste_titre nohover">'; foreach ($fieldlist as $field => $value) { // Determine le nom du champ par rapport aux noms possibles diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 7f1d17183d2832b1073395deebe5df3770fa9fb6..398999d6dd9e627e254c7c562e74eb00e05f209b 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -78,10 +78,13 @@ if ($action == 'update') dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr($_POST["main_motd"]),'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr($_POST["main_home"]),'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", $_POST["MAIN_HELP_DISABLELINK"],'chaine',0,'',0); // Param for all entities + dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", $_POST["MAIN_BUGTRACK_ENABLELINK"],'chaine',0,'',$conf->entity); + + if (GETPOST('check_THEME_ELDY_USE_HOVER') == 'on') dolibarr_set_const($db,"THEME_ELDY_USE_HOVER", 1,'chaine',0,'',$conf->entity); + else dolibarr_set_const($db,"THEME_ELDY_USE_HOVER",0,'chaine',0,'',$conf->entity); // This one is not always defined if (isset($_POST["MAIN_USE_PREVIEW_TABS"])) dolibarr_set_const($db, "MAIN_USE_PREVIEW_TABS", $_POST["MAIN_USE_PREVIEW_TABS"],'chaine',0,'',$conf->entity); - if (isset($_POST["MAIN_BUGTRACK_ENABLELINK"])) dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", $_POST["MAIN_BUGTRACK_ENABLELINK"],'chaine',0,'',$conf->entity); $_SESSION["mainmenu"]=""; // Le gestionnaire de menu a pu changer @@ -279,22 +282,19 @@ if ($action == 'edit') // Edit print '<td width="20"> </td>'; print '</tr>'; - if ($conf->global->MAIN_FEATURES_LEVEL >= 1 || ! empty($conf->global->MAIN_BUGTRACK_ENABLELINK)) - { - // Show bugtrack link - $var=!$var; - print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>'; - print $form->selectyesno('MAIN_BUGTRACK_ENABLELINK',$conf->global->MAIN_BUGTRACK_ENABLELINK,1); - print '</td>'; - print '<td width="20"> </td>'; - print '</tr>'; - } + // Show bugtrack link + $var=!$var; + print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>'; + print $form->selectyesno('MAIN_BUGTRACK_ENABLELINK',$conf->global->MAIN_BUGTRACK_ENABLELINK,1); + print '</td>'; + print '<td width="20"> </td>'; + print '</tr>'; // Message on login page $var=!$var; print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("MessageLogin").'</td><td colspan="2">'; - $doleditor = new DolEditor('main_home', (isset($conf->global->MAIN_HOME)?$conf->global->MAIN_HOME:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, 90); + $doleditor = new DolEditor('main_home', (isset($conf->global->MAIN_HOME)?$conf->global->MAIN_HOME:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%'); $doleditor->Create(); print '</td></tr>'."\n"; @@ -303,7 +303,7 @@ if ($action == 'edit') // Edit $var=!$var; print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("MessageOfDay").'</td><td colspan="2">'; - $doleditor = new DolEditor('main_motd', (isset($conf->global->MAIN_MOTD)?$conf->global->MAIN_MOTD:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, 90); + $doleditor = new DolEditor('main_motd', (isset($conf->global->MAIN_MOTD)?$conf->global->MAIN_MOTD:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%'); $doleditor->Create(); print '</td></tr>'."\n"; @@ -465,15 +465,12 @@ else // Show print yn((isset($conf->global->MAIN_HELP_DISABLELINK)?$conf->global->MAIN_HELP_DISABLELINK:0),1); print '</td></tr>'; - if ($conf->global->MAIN_FEATURES_LEVEL >= 1 || ! empty($conf->global->MAIN_BUGTRACK_ENABLELINK)) - { - // Show bugtrack link - $var=!$var; - print '<tr '.$bc[$var].'"><td width="35%">'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>'; - print yn($conf->global->MAIN_BUGTRACK_ENABLELINK)."</td>"; - print '<td width="20"> </td>'; - print "</tr>"; - } + // Show bugtrack link + $var=!$var; + print '<tr '.$bc[$var].'"><td width="35%">'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>'; + print yn($conf->global->MAIN_BUGTRACK_ENABLELINK)."</td>"; + print '<td width="20"> </td>'; + print "</tr>"; // Message login $var=!$var; diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index 2b50008d58a888209631f41857a9f9ec57aa3ddd..53937687b57325d1771c634fe24b31aeb2266d2c 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -121,7 +121,7 @@ if (! empty($_POST['removedfile']) || ! empty($_POST['removedfilehtml'])) $pathtodelete=$listofpaths[$keytodelete]; $filetodelete=$listofnames[$keytodelete]; $result = dol_delete_file($pathtodelete,1); - if ($result >= 0) + if ($result) { setEventMessage($langs->trans("FileWasRemoved"), $filetodelete); diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index aab09001bd8b72f4bf32ad5525ee90bec63c0017..86cfae1d606d82d697d006e2c737a411680c1474 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -5,7 +5,7 @@ * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> - * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/htdocs/admin/tools/index.php b/htdocs/admin/tools/index.php index ae1fad8c27293d6567cd8ec66aa29e946f2f27ee..4ea716c322bb73c4eb8cc5b96219239c97fe29eb 100644 --- a/htdocs/admin/tools/index.php +++ b/htdocs/admin/tools/index.php @@ -53,7 +53,9 @@ print '<br><br>'; // Show logo -print '<div class="center"><div class="logo_setup"></div></div>'; +//print '<div class="center"><div class="logo_setup"></div></div>'; +print '<center><div class="logo_setup"></div></center>'; // For a reason I don't know, the div class="center does not works, we must keep the <center> + llxFooter(); $db->close(); diff --git a/htdocs/admin/tools/purge.php b/htdocs/admin/tools/purge.php index 9003a92cddf27646f129a711d79f9ed8424fdbf5..e40caa3e36e95c7cf6f92e36eadd7e48421902ae 100644 --- a/htdocs/admin/tools/purge.php +++ b/htdocs/admin/tools/purge.php @@ -89,7 +89,7 @@ if ($action=='purge' && ! preg_match('/^confirm/i',$choice) && ($choice != 'allf // If (file that is not logfile) or (if logfile with option logfile) if ($filesarray[$key]['fullname'] != $filelog || $choice=='logfile') { - $count+=dol_delete_file($filesarray[$key]['fullname']); + $count+=(dol_delete_file($filesarray[$key]['fullname'])?1:0); } } } diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index 9f03ae84acfcc66e8627b49d1390191800f46fc7..fc892b8d41238e0a73d4a0d28f2bb4f22aa715dd 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -22,24 +22,24 @@ require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; /** * Class for API - * + * */ class DolibarrApi { - + /** * @var DoliDb $db Database object */ static protected $db; - + /** * @var Restler $r Restler object */ var $r; - + /** * Constructor - * + * * @param DoliDb $db Database handler */ function __construct($db) { @@ -51,7 +51,7 @@ class DolibarrApi * Executed method when API is called without parameter * * Display a short message an return a http code 200 - * + * * @return array */ function index() @@ -67,10 +67,10 @@ class DolibarrApi /** * Clean sensible object datas - * + * * @param object $object Object to clean * @return array Array of cleaned object properties - * + * * @todo use an array for properties to clean * */ @@ -78,14 +78,16 @@ class DolibarrApi // Remove $db object property for object unset($object->db); - + // If object has lines, remove $db property if(isset($object->lines) && count($object->lines) > 0) { - for($i=0; $i < count($object->lines); $i++) { + $nboflines = count($object->lines); + for ($i=0; $i < $nbofline; $i++) + { $this->_cleanObjectDatas($object->lines[$i]); } } - + // If object has linked objects, remove $db property if(isset($object->linkedObjects) && count($object->linkedObjects) > 0) { foreach($object->linkedObjects as $type_object => $linked_object) { @@ -96,12 +98,12 @@ class DolibarrApi } return $object; } - + /** * Check user access to a resource - * + * * Check access by user to a given resource - * + * * @param string $resource element to check * @param int $resource_id Object ID if we want to check a particular record (optional) is linked to a owned thirdparty (optional). * @param type $dbtablename 'TableName&SharedElement' with Tablename is table where object is stored. SharedElement is an optional key to define where to check entity. Not used if objectid is null (optional) @@ -111,18 +113,18 @@ class DolibarrApi * @throws RestException */ static function _checkAccessToResource($resource, $resource_id=0, $dbtablename='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid') { - + // Features/modules to check $featuresarray = array($resource); - if (preg_match('/&/', $resource)) { - $featuresarray = explode("&", $resource); + if (preg_match('/&/', $resource)) { + $featuresarray = explode("&", $resource); } - else if (preg_match('/\|/', $resource)) { - $featuresarray = explode("|", $resource); + else if (preg_match('/\|/', $resource)) { + $featuresarray = explode("|", $resource); } // More subfeatures to check - if (! empty($feature2)) { + if (! empty($feature2)) { $feature2 = explode("|", $feature2); } @@ -141,18 +143,18 @@ class DolibarrApiInit extends DolibarrApi global $db; $this->db = $db; } - + /** * Login - * + * * Log user with username and password - * + * * @param string $login Username * @param string $password User password * @param int $entity User entity * @return array Response status and user token - * - * @throws RestException + * + * @throws RestException */ public function login($login, $password, $entity = 0) { @@ -171,22 +173,22 @@ class DolibarrApiInit extends DolibarrApi { throw new RestException(403, 'Access denied'); } - + // Generate token for user $token = dol_hash($login.uniqid().$conf->global->MAIN_API_KEY,1); - + // We store API token into database $sql = "UPDATE ".MAIN_DB_PREFIX."user"; $sql.= " SET api_key = '".$this->db->escape($token)."'"; $sql.= " WHERE login = '".$this->db->escape($login)."'"; - + dol_syslog(get_class($this)."::login", LOG_DEBUG); // No log $result = $this->db->query($sql); if (!$result) { throw new RestException(500, 'Error when updating user :'.$this->db->error_msg); } - + //return token return array( 'success' => array( @@ -199,7 +201,7 @@ class DolibarrApiInit extends DolibarrApi /** * Get status (Dolibarr version) - * + * * @access protected * @class DolibarrApiAccess {@requires admin} */ diff --git a/htdocs/api/class/api_access.class.php b/htdocs/api/class/api_access.class.php index 1e3d43ed9db87fef018fef070e712ad4855b79c7..9cd40f56498cf4f0deab9a8d94ad10dca4db9b22 100644 --- a/htdocs/api/class/api_access.class.php +++ b/htdocs/api/class/api_access.class.php @@ -18,7 +18,7 @@ use \Luracast\Restler\iAuthenticate; use \Luracast\Restler\Resources; use \Luracast\Restler\Defaults; -use Luracast\Restler\RestException; +use \Luracast\Restler\RestException; /** @@ -46,22 +46,14 @@ class DolibarrApiAccess implements iAuthenticate // @codingStandardsIgnoreStart - /** - * @return string string to be used with WWW-Authenticate header - * @example Basic - * @example Digest - * @example OAuth - */ - public function __getWWWAuthenticateString(); - /** * Check access * - * @return boolean + * @return bool + * @throws RestException */ public function _isAllowed() - { - // @codingStandardsIgnoreEnd + { global $db; $stored_key = ''; @@ -74,7 +66,8 @@ class DolibarrApiAccess implements iAuthenticate $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; $sql.= " WHERE u.api_key = '".$db->escape($_GET['api_key'])."'"; - if ($db->query($sql)) + $result = $db->query($sql); + if ($result) { if ($db->num_rows($result)) { @@ -115,20 +108,26 @@ class DolibarrApiAccess implements iAuthenticate return in_array(static::$role, (array) static::$requires) || static::$role == 'admin'; } - // @codingStandardsIgnoreStart - public function __getWWWAuthenticateString() + /** + * @return string string to be used with WWW-Authenticate header + * @example Basic + * @example Digest + * @example OAuth + */ + public function _getWWWAuthenticateString() { return ''; } // @codingStandardsIgnoreEnd /** - * Verify access - * - * @param array $m Properties of method - * - * @access private - */ + * Verify access + * + * @param array $m Properties of method + * + * @access private + * @return bool + */ public static function verifyAccess(array $m) { $requires = isset($m['class']['DolibarrApiAccess']['properties']['requires']) diff --git a/htdocs/cashdesk/admin/cashdesk.php b/htdocs/cashdesk/admin/cashdesk.php index a8ef98b0b0b4b02e832bdcc3f81a74354cc7ada7..48804958b209e9d1cd74d5593ff53d792db7c71f 100644 --- a/htdocs/cashdesk/admin/cashdesk.php +++ b/htdocs/cashdesk/admin/cashdesk.php @@ -102,7 +102,7 @@ print "</tr>\n"; $var=!$var; print '<tr '.$bc[$var].'><td width=\"50%\">'.$langs->trans("CashDeskThirdPartyForSell").'</td>'; print '<td colspan="2">'; -print $form->select_thirdparty($conf->global->CASHDESK_ID_THIRDPARTY,'socid','s.client in (1,3)',0,array(),1); +print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY,'socid','s.client in (1,3)',1,0,1,array(),0); print '</td></tr>'; if (! empty($conf->banque->enabled)) { @@ -133,17 +133,17 @@ if (! empty($conf->stock->enabled)) if (empty($conf->productbatch->enabled)) { print $form->selectyesno('CASHDESK_NO_DECREASE_STOCK',$conf->global->CASHDESK_NO_DECREASE_STOCK,1); } - else + else { if (!$conf->global->CASHDESK_NO_DECREASE_STOCK) { $res = dolibarr_set_const($db,"CASHDESK_NO_DECREASE_STOCK",1,'chaine',0,'',$conf->entity); } - print $langs->trans('StockDecreaseForPointOfSaleDisabledbyBatch'); + print $langs->trans('StockDecreaseForPointOfSaleDisabledbyBatch'); } print '</td></tr>'; $disabled=$conf->global->CASHDESK_NO_DECREASE_STOCK; - + $var=!$var; print '<tr '.$bc[$var].'><td>'.$langs->trans("CashDeskIdWareHouse").'</td>'; // Force warehouse (this is not a default value) print '<td colspan="2">'; diff --git a/htdocs/cashdesk/facturation_dhtml.php b/htdocs/cashdesk/facturation_dhtml.php index e481fcbecf63635263d67ea6c6dff4744af7829e..8d4ebf8af31c282c5693f558d7a7119e688158c7 100644 --- a/htdocs/cashdesk/facturation_dhtml.php +++ b/htdocs/cashdesk/facturation_dhtml.php @@ -1,6 +1,7 @@ <?php -/* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net> - * Copyright (C) 2008-2009 Laurent Destailleur <eldy@uers.sourceforge.net> +/* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net> + * Copyright (C) 2008-2009 Laurent Destailleur <eldy@uers.sourceforge.net> + * Copyright (C) 2015 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,8 +42,10 @@ require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php'; //header("Content-type: text/html; charset=UTF-8"); header("Content-type: text/html; charset=".$conf->file->character_set_client); +$search = GETPOST("code", "alpha"); + // Search from criteria -if (dol_strlen($_GET["code"]) >= 0) // If search criteria is on char length at least +if (dol_strlen($search) >= 0) // If search criteria is on char length at least { $sql = "SELECT p.rowid, p.ref, p.label, p.tva_tx"; if (! empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql.= ", ps.reel"; @@ -54,11 +57,15 @@ if (dol_strlen($_GET["code"]) >= 0) // If search criteria is on char length at l // Add criteria on ref/label if (! empty($conf->global->PRODUCT_DONOTSEARCH_ANYWHERE)) { - $sql.= " AND (p.ref LIKE '".$_GET['code']."%' OR p.label LIKE '".$_GET['code']."%')"; + $sql.= " AND (p.ref LIKE '".$db->escape($search)."%' OR p.label LIKE '".$db->escape($search)."%'"; + if (! empty($conf->barcode->enabled)) $sql.= " OR p.barcode LIKE '".$db->escape($search)."%'"; + $sql.= ")"; } else { - $sql.= " AND (p.ref LIKE '%".$_GET['code']."%' OR p.label LIKE '%".$_GET['code']."%')"; + $sql.= " AND (p.ref LIKE '%".$db->escape($search)."%' OR p.label LIKE '%".$db->escape($search)."%'"; + if (! empty($conf->barcode->enabled)) $sql.= " OR p.barcode LIKE '%".$db->escape($search)."%'"; + $sql.= ")"; } $sql.= " ORDER BY label"; diff --git a/htdocs/cashdesk/javascript/dhtml.js b/htdocs/cashdesk/javascript/dhtml.js index caf0cd94abd1e0a1ea96a58d85cee395ae68e2ee..a2af98d65a8701da21864f78735b98e2efe76c51 100644 --- a/htdocs/cashdesk/javascript/dhtml.js +++ b/htdocs/cashdesk/javascript/dhtml.js @@ -1,5 +1,6 @@ -/* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net> +/* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net> + * Copyright (C) 2015 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -59,8 +60,8 @@ function afficheDonnees(aId, aTexte) { // aCible : id du bloc de destination; aCode : argument a passer a la page php chargee du traitement et de l'affichage -function verifResultat(aCible, aCode) { - if (aCode != '') { +function verifResultat(aCible, aCode, iLimit = 1) { + if (aCode != '' && aCode.length >= iLimit) { if (texte = file ('facturation_dhtml.php?code='+escape(aCode))) { diff --git a/htdocs/cashdesk/tpl/facturation1.tpl.php b/htdocs/cashdesk/tpl/facturation1.tpl.php index b004314f66c74cb48b75962ac352362487abb420..b9335e804469ef965f32c4fa876a8be3bcecf0c5 100644 --- a/htdocs/cashdesk/tpl/facturation1.tpl.php +++ b/htdocs/cashdesk/tpl/facturation1.tpl.php @@ -2,6 +2,7 @@ /* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net> * Copyright (C) 2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2015 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,8 +44,8 @@ $langs->load("cashdesk"); <!-- Affichage de la reference et de la designation --> <td><input class="texte_ref" type="text" id ="txtRef" name="txtRef" value="<?php echo $obj_facturation->ref() ?>" onchange="javascript: setSource('REF');" - onkeyup="javascript: verifResultat('resultats_dhtml', this.value);" - onfocus="javascript: this.select(); verifResultat('resultats_dhtml', this.value);" + onkeyup="javascript: verifResultat('resultats_dhtml', this.value, <?php echo (isset($conf->global->BARCODE_USE_SEARCH_TO_SELECT) ? (int) $conf->global->BARCODE_USE_SEARCH_TO_SELECT : 1) ?>);" + onfocus="javascript: this.select(); verifResultat('resultats_dhtml', this.value, <?php echo (isset($conf->global->BARCODE_USE_SEARCH_TO_SELECT) ? (int) $conf->global->BARCODE_USE_SEARCH_TO_SELECT : 1) ?>);" onBlur="javascript: document.getElementById('resultats_dhtml').innerHTML = '';"/> </td> <td class="select_design"> diff --git a/htdocs/categories/card.php b/htdocs/categories/card.php index 7ba04331454127b95ad360f011d44b16331a249c..814badf95a769fc5dbbe6b96d3fac12ad8162f16 100644 --- a/htdocs/categories/card.php +++ b/htdocs/categories/card.php @@ -65,6 +65,10 @@ $object = new Categorie($db); $extrafields = new ExtraFields($db); $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); +// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('categorycard')); + + /* * Actions */ diff --git a/htdocs/categories/categorie.php b/htdocs/categories/categorie.php index 155593b5efd1d75aa233e8e5466b091a3ba323d0..5edede7417ec43035bd065741f0a57ef4f0fbfe7 100644 --- a/htdocs/categories/categorie.php +++ b/htdocs/categories/categorie.php @@ -208,7 +208,7 @@ if (empty($reshook)) } else { - setEventMessages($cat->error,$this->errors,'errors'); + setEventMessages( $cat->error, $cat->errors, 'errors' ); } } } diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 167a256a990d0583e803b2156f065ad60e5ba051..190f58d9388ec516c1794e3d85b1319e8654a5eb 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -48,6 +48,67 @@ class Categorie extends CommonObject const TYPE_MEMBER = 3; const TYPE_CONTACT = 4; + /** + * @var array ID mapping from type string + * + * @note Move to const array when PHP 5.6 will be our minimum target + */ + private $MAP_ID = array( + 'product' => 0, + 'supplier' => 1, + 'customer' => 2, + 'member' => 3, + 'contact' => 4, + ); + /** + * @var array Foreign keys mapping from type string + * + * @note Move to const array when PHP 5.6 will be our minimum target + */ + private $MAP_CAT_FK = array( + 'product' => 'product', + 'customer' => 'soc', + 'supplier' => 'soc', + 'member' => 'member', + 'contact' => 'socpeople', + ); + /** + * @var array Category tables mapping from type string + * + * @note Move to const array when PHP 5.6 will be our minimum target + */ + private $MAP_CAT_TABLE = array( + 'product' => 'product', + 'customer' => 'societe', + 'supplier' => 'fournisseur', + 'member' => 'member', + 'contact' => 'contact', + ); + /** + * @var array Object class mapping from type string + * + * @note Move to const array when PHP 5.6 will be our minimum target + */ + private $MAP_OBJ_CLASS = array( + 'product' => 'Product', + 'customer' => 'Societe', + 'supplier' => 'Fournisseur', + 'member' => 'Adherent', + 'contact' => 'Contact', + ); + /** + * @var array Object table mapping from type string + * + * @note Move to const array when PHP 5.6 will be our minimum target + */ + private $MAP_OBJ_TABLE = array( + 'product' => 'product', + 'customer' => 'societe', + 'supplier' => 'societe', + 'member' => 'adherent', + 'contact' => 'socpeople', + ); + public $element='category'; public $table_element='categories'; @@ -56,13 +117,21 @@ class Categorie extends CommonObject var $label; var $description; var $socid; - var $type; // 0=Product, 1=Supplier, 2=Customer/Prospect, 3=Member, 4=Contact + /** + * @var int Category type + * + * @see Categorie::TYPE_PRODUCT + * @see Categorie::TYPE_SUPPLIER + * @see Categorie::TYPE_CUSTOMER + * @see Categorie::TYPE_MEMBER + * @see Categorie::TYPE_CONTACT + */ + var $type; var $import_key; var $cats=array(); // Tableau en memoire des categories var $motherof=array(); - /** * Constructor * @@ -477,11 +546,12 @@ class Categorie extends CommonObject } /** - * Link an object to the category + * Link an object to the category + * + * @param CommonObject $obj Object to link to category + * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member') * - * @param Object $obj Object to link to category - * @param string $type Type of category ('societe', 'member', 'product', 'contact', 'fournisseur) - * @return int 1 : OK, -1 : erreur SQL, -2 : id not defined, -3 : Already linked + * @return int 1 : OK, -1 : erreur SQL, -2 : id not defined, -3 : Already linked */ function add_type($obj,$type) { @@ -492,28 +562,21 @@ class Categorie extends CommonObject if ($this->id == -1) return -2; // For backward compatibility - if ($type == 'company') $type='societe'; - elseif ($type == 'customer') $type='societe'; - elseif ($type == 'supplier') $type='fournisseur'; - - /** - * llx_categorie_contact => fk_socpeople - * llx_categorie_fournisseur, llx_categorie_societe => fk_soc - * llx_categorie_member => fk_member - * llx_categorie_product => fk_product - */ - if ($type == 'contact') { - $column_name = 'socpeople'; - } elseif ($type == 'fournisseur' || ($type == 'societe')) { - $column_name = 'soc'; - } else { - $column_name = $type; + if ($type == 'societe') { + $type = 'customer'; + dol_syslog( get_class( $this ) . "::add_type(): type 'societe' is deprecated, please use 'customer' instead", + LOG_WARNING ); + } elseif ($type == 'fournisseur') { + $type = 'supplier'; + dol_syslog( get_class( $this ) . "::add_type(): type 'fournisseur' is deprecated, please use 'supplier' instead", + LOG_WARNING ); } $this->db->begin(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".$type." (fk_categorie, fk_".$column_name.")"; - $sql .= " VALUES (".$this->id.", ".$obj->id.")"; + $sql = "INSERT INTO " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type]; + $sql .= " (fk_categorie, fk_" . $this->MAP_CAT_FK[$type] . ")"; + $sql .= " VALUES (" . $this->id . ", " . $obj->id . ")"; dol_syslog(get_class($this).'::add_type', LOG_DEBUG); if ($this->db->query($sql)) @@ -596,9 +659,10 @@ class Categorie extends CommonObject /** * Delete object from category * - * @param Object $obj Object - * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact') - * @return int 1 if OK, -1 if KO + * @param CommonObject $obj Object + * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member') + * + * @return int 1 if OK, -1 if KO */ function del_type($obj,$type) { @@ -607,19 +671,21 @@ class Categorie extends CommonObject $error=0; // For backward compatibility - if ($type == 'company') $type='societe'; - if ($type == 'customer') $type='societe'; - if ($type == 'supplier') $type='fournisseur'; - - $column_name=$type; - if ($type=='contact') $column_name='socpeople'; - if ($type=='fournisseur') $column_name='societe'; + if ($type == 'societe') { + $type = 'customer'; + dol_syslog( get_class( $this ) . "::del_type(): type 'societe' is deprecated, please use 'customer' instead", + LOG_WARNING ); + } elseif ($type == 'fournisseur') { + $type = 'supplier'; + dol_syslog( get_class( $this ) . "::del_type(): type 'fournisseur' is deprecated, please use 'supplier' instead", + LOG_WARNING ); + } $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_".$type; - $sql .= " WHERE fk_categorie = ".$this->id; - $sql .= " AND fk_".$column_name." = ".$obj->id; + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type]; + $sql .= " WHERE fk_categorie = " . $this->id; + $sql .= " AND fk_" . $this->MAP_CAT_FK[$type] . " = " . $obj->id; dol_syslog(get_class($this).'::del_type', LOG_DEBUG); if ($this->db->query($sql)) @@ -652,41 +718,32 @@ class Categorie extends CommonObject } /** - * Return list of fetched instance of elements having this category + * Return list of fetched instance of elements having this category + * + * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member') * - * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact') - * @return mixed -1 if KO, array of instance of object if OK + * @return mixed -1 if KO, array of instance of object if OK */ function getObjectsInCateg($type) { - $field=''; $classname=''; $category_table=''; $object_table=''; - if ($type=='product') { $field='product'; $classname='Product'; } - if ($type=='customer') { $field='soc'; $classname='Societe'; $category_table='societe'; $object_table='societe'; } - if ($type=='supplier') { $field='soc'; $classname='Fournisseur'; $category_table='fournisseur'; $object_table='societe'; } - if ($type=='member') { $field='member'; $classname='Adherent'; $category_table=''; $object_table='adherent'; } - if ($type=='contact') { $field='socpeople'; $classname='Contact'; $category_table='contact'; $object_table='socpeople'; } - $objs = array(); - // Clean parameters - if (empty($category_table)) $category_table=$field; - if (empty($object_table)) $object_table=$field; + $obj = new $this->MAP_OBJ_CLASS[$type]( $this->db ); - $sql = "SELECT c.fk_".$field; - $sql.= " FROM ".MAIN_DB_PREFIX."categorie_".$category_table." as c"; - $sql.= ", ".MAIN_DB_PREFIX.$object_table." as o"; - $sql.= " WHERE o.entity IN (".getEntity($field, 1).")"; + $sql = "SELECT c.fk_" . $this->MAP_CAT_FK[$type]; + $sql .= " FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type] . " as c"; + $sql .= ", " . MAIN_DB_PREFIX . $this->MAP_OBJ_TABLE[$type] . " as o"; + $sql .= " WHERE o.entity IN (" . getEntity( $obj->element, 1).")"; $sql.= " AND c.fk_categorie = ".$this->id; - $sql.= " AND c.fk_".$field." = o.rowid"; + $sql .= " AND c.fk_" . $this->MAP_CAT_FK[$type] . " = o.rowid"; dol_syslog(get_class($this)."::getObjectsInCateg", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - while ($rec = $this->db->fetch_array($resql)) - { - $obj = new $classname($this->db); - $obj->fetch($rec['fk_'.$field]); + while ($rec = $this->db->fetch_array($resql)) { + $obj = new $this->MAP_OBJ_CLASS[$type]( $this->db ); + $obj->fetch( $rec['fk_' . $this->MAP_CAT_FK[$type]]); $objs[] = $obj; } return $objs; @@ -699,40 +756,17 @@ class Categorie extends CommonObject } /** - * check for the presence of an object in a category + * Check for the presence of an object in a category + * + * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member') + * @param int $object_id id of the object to search * - * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact') - * @param int $object_id id of the object to search - * @return int number of occurrences + * @return int number of occurrences */ - function containsObject($type, $object_id) + function containsObject($type, $object_id ) { - $field = ''; - $category_table = ''; - - if ($type == 'product') { - $field = 'product'; - } - if ($type == 'customer') { - $field = 'societe'; - } - if ($type == 'supplier') { - $field = 'societe'; - $category_table = 'fournisseur'; - } - if ($type == 'member') { - $field = 'member'; - $category_table = ''; - } - if ($type == 'contact') { - $field = 'socpeople'; - $category_table = 'contact'; - } - if (empty($category_table)) { - $category_table = $field; - } - $sql = "SELECT COUNT(*) as nb FROM " . MAIN_DB_PREFIX . "categorie_" . $category_table; - $sql .= " WHERE fk_categorie = " . $this->id . " AND fk_" . $field . " = " . $object_id; + $sql = "SELECT COUNT(*) as nb FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type]; + $sql .= " WHERE fk_categorie = " . $this->id . " AND fk_" . $this->MAP_CAT_FK[$type] . " = " . $object_id; dol_syslog(get_class($this)."::containsObject", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { @@ -772,7 +806,6 @@ class Categorie extends CommonObject } } - /** * Load this->motherof that is array(id_son=>id_parent, ...) * @@ -808,23 +841,34 @@ class Categorie extends CommonObject } /** - * Reconstruit l'arborescence des categories sous la forme d'un tableau - * Renvoi un tableau de tableau('id','id_mere',...) trie selon arbre et avec: - * id = id de la categorie - * id_mere = id de la categorie mere - * id_children = tableau des id enfant - * label = nom de la categorie - * fulllabel = nom avec chemin complet de la categorie - * fullpath = chemin complet compose des id + * Reconstruit l'arborescence des categories sous la forme d'un tableau + * Renvoi un tableau de tableau('id','id_mere',...) trie selon arbre et avec: + * id = id de la categorie + * id_mere = id de la categorie mere + * id_children = tableau des id enfant + * label = nom de la categorie + * fulllabel = nom avec chemin complet de la categorie + * fullpath = chemin complet compose des id + * + * @param string $type Type of categories ('customer', 'supplier', 'contact', 'product', 'member'). Old + * mode (0, 1, 2, ...) is deprecated. + * @param int $markafterid Removed all categories including the leaf $markafterid in category tree. * - * @param string $type Type of categories (0=product, 1=suppliers, 2=customers, 3=members) - * @param int $markafterid Removed all categories including the leaf $markafterid in category tree. - * @return array Array of categories. this->cats and this->motherof are set. + * @return array Array of categories. this->cats and this->motherof are set. */ function get_full_arbo($type,$markafterid=0) { global $conf, $langs; + // For backward compatibility + if (is_numeric( $type )) { + // We want to reverse lookup + $map_type = array_flip( $this->MAP_ID ); + $type = $map_type[$type]; + dol_syslog( get_class( $this ) . "::get_full_arbo(): numeric types are deprecated, please use string instead", + LOG_WARNING ); + } + $this->cats = array(); // Init this->motherof that is array(id_son=>id_parent, ...) @@ -836,8 +880,8 @@ class Categorie extends CommonObject if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= ", t.label as label_trans, t.description as description_trans"; $sql.= " FROM ".MAIN_DB_PREFIX."categorie as c"; if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_lang as t ON t.fk_category=c.rowid AND t.lang='".$current_lang."'"; - $sql.= " WHERE c.entity IN (".getEntity('category',1).")"; - $sql.= " AND c.type = ".$type; + $sql .= " WHERE c.entity IN (" . getEntity( 'category', 1 ) . ")"; + $sql .= " AND c.type = " . $this->MAP_ID[$type]; dol_syslog(get_class($this)."::get_full_arbo get category list", LOG_DEBUG); $resql = $this->db->query($sql); @@ -1171,37 +1215,35 @@ class Categorie extends CommonObject } /** - * Return list of categories (id or instances) linked to element of id $id and type $type - * Should be named getListOfCategForObject + * Return list of categories (object instances or labels) linked to element of id $id and type $type + * Should be named getListOfCategForObject * - * @param int $id Id of element - * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact'). Old mode (0, 1, 2, ...) is deprecated. - * @param string $mode 'object'=Get array of fetched category instances, 'label'=Get array of category labels - * @return mixed Array of category objects or < 0 if KO + * @param int $id Id of element + * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member'). Old mode + * (0, 1, 2, ...) is deprecated. + * @param string $mode 'object'=Get array of fetched category instances, 'label'=Get array of category + * labels + * + * @return mixed Array of category objects or < 0 if KO */ function containing($id,$type,$mode='object') { $cats = array(); - $typeid=-1; $table=''; - if ($type == '0' || $type == 'product') { - $typeid=self::TYPE_PRODUCT; $table='product'; $type='product'; - } else if ($type == '1' || $type == 'supplier') { - $typeid=self::TYPE_SUPPLIER; $table='soc'; $type='fournisseur'; - } else if ($type == '2' || $type == 'customer') { - $typeid=self::TYPE_CUSTOMER; $table='soc'; $type='societe'; - } else if ($type == '3' || $type == 'member') { - $typeid=self::TYPE_MEMBER; $table='member'; $type='member'; - } else if ($type == '4' || $type == 'contact') { - $typeid=self::TYPE_CONTACT; $table='socpeople'; $type='contact'; + // For backward compatibility + if (is_numeric($type)) + { + dol_syslog(__METHOD__ . ': using numeric value for parameter type is deprecated. Use string code instead.', LOG_WARNING); + // We want to reverse lookup + $map_type = array_flip($this->MAP_ID); + $type = $map_type[$type]; } $sql = "SELECT ct.fk_categorie, c.label"; - $sql.= " FROM ".MAIN_DB_PREFIX."categorie_".$type." as ct, ".MAIN_DB_PREFIX."categorie as c"; - $sql.= " WHERE ct.fk_categorie = c.rowid AND ct.fk_".$table." = ".$id." AND c.type = ".$typeid; - $sql.= " AND c.entity IN (".getEntity('category',1).")"; + $sql .= " FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type] . " as ct, " . MAIN_DB_PREFIX . "categorie as c"; + $sql .= " WHERE ct.fk_categorie = c.rowid AND ct.fk_" . $this->MAP_CAT_FK[$type] . " = " . $id . " AND c.type = " . $this->MAP_ID[$type]; + $sql .= " AND c.entity IN (" . getEntity( 'category', 1 ) . ")"; - dol_syslog(get_class($this).'::containing', LOG_DEBUG); $res = $this->db->query($sql); if ($res) { @@ -1241,19 +1283,26 @@ class Categorie extends CommonObject */ function rechercher($id, $nom, $type, $exact = false, $case = false) { + // Deprecation warning + if (is_numeric($type)) { + dol_syslog(__METHOD__ . ': using numeric types is deprecated.', LOG_WARNING); + } + $cats = array(); - $typeid=-1; - if ($type == 0 || $type == 'product') { $typeid=self::TYPE_PRODUCT; } - else if ($type == 1 || $type == 'supplier') { $typeid=self::TYPE_SUPPLIER; } - else if ($type == 2 || $type == 'customer') { $typeid=self::TYPE_CUSTOMER; } - else if ($type == 3 || $type == 'member') { $typeid=self::TYPE_MEMBER; } - else if ($type == 4 || $type == 'contact') { $typeid=self::TYPE_CONTACT; } + // For backward compatibility + if (is_numeric( $type )) { + // We want to reverse lookup + $map_type = array_flip( $this->MAP_ID ); + $type = $map_type; + dol_syslog( get_class( $this ) . "::rechercher(): numeric types are deprecated, please use string instead", + LOG_WARNING ); + } // Generation requete recherche - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."categorie"; - $sql.= " WHERE type = ".$typeid; - $sql.= " AND entity IN (".getEntity('category',1).")"; + $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "categorie"; + $sql .= " WHERE type = " . $this->MAP_ID[$type]; + $sql .= " AND entity IN (" . getEntity( 'category', 1 ) . ")"; if ($nom) { if (! $exact) diff --git a/htdocs/categories/edit.php b/htdocs/categories/edit.php index c3acb807e01a7ae9df5fa7d29d5f1669f1f3f411..a10823e609808a92ed0f754ebce2dd58e9b0312f 100644 --- a/htdocs/categories/edit.php +++ b/htdocs/categories/edit.php @@ -56,6 +56,9 @@ $object = new Categorie($db); $extrafields = new ExtraFields($db); $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); +// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('categorycard')); + /* * Actions */ diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index 36e6f53ecc3901ed5c6e06494bd0d614c0207851..87d6dc57d6301a683a99dfdac2530070c4bcfd92 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -64,6 +64,9 @@ $type=$object->type; $extrafields = new ExtraFields($db); $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); +// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('categorycard')); + /* * Actions */ diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index aa34c83523c7114d2e9f3e6fafe4ecec707d7510..044cf9908eab7e1f32891f675956e6d86762bf7d 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es> @@ -96,7 +96,7 @@ if (GETPOST('removedassigned') || GETPOST('removedassigned') == '0') { $idtoremove=GETPOST('removedassigned'); - if (! empty($_SESSION['assignedtouser'])) $tmpassigneduserids=dol_json_decode($_SESSION['assignedtouser'],1); + if (! empty($_SESSION['assignedtouser'])) $tmpassigneduserids=json_decode($_SESSION['assignedtouser'],1); else $tmpassigneduserids=array(); foreach ($tmpassigneduserids as $key => $val) @@ -104,7 +104,7 @@ if (GETPOST('removedassigned') || GETPOST('removedassigned') == '0') if ($val['id'] == $idtoremove || $val['id'] == -1) unset($tmpassigneduserids[$key]); } //var_dump($_POST['removedassigned']);exit; - $_SESSION['assignedtouser']=dol_json_encode($tmpassigneduserids); + $_SESSION['assignedtouser']=json_encode($tmpassigneduserids); $donotclearsession=1; if ($action == 'add') $action = 'create'; if ($action == 'update') $action = 'edit'; @@ -119,10 +119,10 @@ if (GETPOST('addassignedtouser') || GETPOST('updateassignedtouser')) $assignedtouser=array(); if (! empty($_SESSION['assignedtouser'])) { - $assignedtouser=dol_json_decode($_SESSION['assignedtouser'], true); + $assignedtouser=json_decode($_SESSION['assignedtouser'], true); } $assignedtouser[GETPOST('assignedtouser')]=array('id'=>GETPOST('assignedtouser'), 'transparency'=>GETPOST('transparency'),'mandatory'=>1); - $_SESSION['assignedtouser']=dol_json_encode($assignedtouser); + $_SESSION['assignedtouser']=json_encode($assignedtouser); } $donotclearsession=1; if ($action == 'add') $action = 'create'; @@ -151,7 +151,7 @@ if ($action == 'add') exit; } - $percentage=in_array(GETPOST('status'),array(-1,100))?GETPOST('status'):GETPOST("percentage"); // If status is -1 or 100, percentage is not defined and we must use status + $percentage=in_array(GETPOST('status'),array(-1,100))?GETPOST('status'):(in_array(GETPOST('complete'),array(-1,100))?GETPOST('complete'):GETPOST("percentage")); // If status is -1 or 100, percentage is not defined and we must use status // Clean parameters $datep=dol_mktime($fulldayevent?'00':GETPOST("aphour"), $fulldayevent?'00':GETPOST("apmin"), 0, GETPOST("apmonth"), GETPOST("apday"), GETPOST("apyear")); @@ -215,7 +215,7 @@ if ($action == 'add') $object->duree=((float) (GETPOST('dureehour') * 60) + (float) GETPOST('dureemin')) * 60; $listofuserid=array(); - if (! empty($_SESSION['assignedtouser'])) $listofuserid=dol_json_decode($_SESSION['assignedtouser']); + if (! empty($_SESSION['assignedtouser'])) $listofuserid=json_decode($_SESSION['assignedtouser'], true); $i=0; foreach($listofuserid as $key => $value) { @@ -387,7 +387,7 @@ if ($action == 'update') if (! empty($_SESSION['assignedtouser'])) // Now concat assigned users { // Restore array with key with same value than param 'id' - $tmplist1=dol_json_decode($_SESSION['assignedtouser'], true); $tmplist2=array(); + $tmplist1=json_decode($_SESSION['assignedtouser'], true); $tmplist2=array(); foreach($tmplist1 as $key => $val) { if ($val['id'] > 0 && $val['id'] != $assignedtouser) $listofuserid[$val['id']]=$val; @@ -671,19 +671,19 @@ if ($action == 'create') } // Assigned to - print '<tr><td class="nowrap">'.$langs->trans("ActionAffectedTo").'</td><td>'; + print '<tr><td class="tdtop nowrap">'.$langs->trans("ActionAffectedTo").'</td><td>'; $listofuserid=array(); if (empty($donotclearsession)) { $assignedtouser=GETPOST("assignedtouser")?GETPOST("assignedtouser"):(! empty($object->userownerid) && $object->userownerid > 0 ? $object->userownerid : $user->id); if ($assignedtouser) $listofuserid[$assignedtouser]=array('id'=>$assignedtouser,'mandatory'=>0,'transparency'=>$object->transparency); // Owner first - $_SESSION['assignedtouser']=dol_json_encode($listofuserid); + $_SESSION['assignedtouser']=json_encode($listofuserid); } else { if (!empty($_SESSION['assignedtouser'])) { - $listofuserid=dol_json_decode($_SESSION['assignedtouser'], true); + $listofuserid=json_decode($_SESSION['assignedtouser'], true); } } print $form->select_dolusers_forevent(($action=='create'?'add':'update'), 'assignedtouser', 1, '', 0, '', '', 0, 0, 0, 'AND u.statut != 0'); @@ -727,7 +727,7 @@ if ($action == 'create') print '</td></tr>'; print '<tr><td class="nowrap">'.$langs->trans("ActionOnContact").'</td><td>'; - $form->select_contacts(GETPOST('socid','int'),GETPOST('contactid'),'contactid',1); + $form->select_contacts(GETPOST('socid','int'), GETPOST('contactid'), 'contactid', 1, '', '', 0, 'minwidth200'); print '</td></tr>'; @@ -739,7 +739,7 @@ if ($action == 'create') // Projet associe $langs->load("projects"); - print '<tr><td valign="top">'.$langs->trans("Project").'</td><td>'; + print '<tr><td>'.$langs->trans("Project").'</td><td>'; $numproject=$formproject->select_projects((! empty($societe->id)?$societe->id:0),GETPOST("projectid")?GETPOST("projectid"):'','projectid'); if ($numproject==0) @@ -768,7 +768,7 @@ if ($action == 'create') print '</td></tr>'; // Description - print '<tr><td valign="top">'.$langs->trans("Description").'</td><td>'; + print '<tr><td class="tdtop">'.$langs->trans("Description").'</td><td>'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor=new DolEditor('note',(GETPOST('note')?GETPOST('note'):$object->note),'',180,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_6,90); $doleditor->Create(); @@ -915,7 +915,7 @@ if ($id > 0) } // Assigned to - print '<tr><td class="nowrap">'.$langs->trans("ActionAssignedTo").'</td><td colspan="3">'; + print '<tr><td class="tdtop nowrap">'.$langs->trans("ActionAssignedTo").'</td><td colspan="3">'; $listofuserid=array(); if (empty($donotclearsession)) { @@ -929,13 +929,13 @@ if ($id > 0) if ($val['id'] && $val['id'] != $object->userownerid) $listofuserid[$val['id']]=$val; } } - $_SESSION['assignedtouser']=dol_json_encode($listofuserid); + $_SESSION['assignedtouser']=json_encode($listofuserid); } else { if (!empty($_SESSION['assignedtouser'])) { - $listofuserid=dol_json_decode($_SESSION['assignedtouser'], true); + $listofuserid=json_decode($_SESSION['assignedtouser'], true); } } print $form->select_dolusers_forevent(($action=='create'?'add':'update'), 'assignedtouser', 1, '', 0, '', '', 0, 0, 0, 'AND u.statut != 0'); @@ -968,7 +968,7 @@ if ($id > 0) // Contact print '<td>'.$langs->trans("Contact").'</td><td width="30%">'; - $form->select_contacts($object->socid, $object->contactid,'contactid',1); + $form->select_contacts($object->socid, $object->contactid, 'contactid', 1, '', '', 0, 'minwidth200'); print '</td></tr>'; } @@ -981,7 +981,7 @@ if ($id > 0) // Projet associe $langs->load("project"); - print '<tr><td width="30%" valign="top">'.$langs->trans("Project").'</td><td colspan="3">'; + print '<tr><td width="30%">'.$langs->trans("Project").'</td><td colspan="3">'; $numprojet=$formproject->select_projects($object->socid,$object->fk_project,'projectid'); if ($numprojet==0) { @@ -1004,7 +1004,7 @@ if ($id > 0) } // Description - print '<tr><td valign="top">'.$langs->trans("Description").'</td><td colspan="3">'; + print '<tr><td class="tdtop">'.$langs->trans("Description").'</td><td colspan="3">'; // Editeur wysiwyg require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor=new DolEditor('note',$object->note,'',240,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_5,90); @@ -1101,13 +1101,13 @@ if ($id > 0) if ($val['id'] && $val['id'] != $object->userownerid) $listofuserid[$val['id']]=$val; } } - $_SESSION['assignedtouser']=dol_json_encode($listofuserid); + $_SESSION['assignedtouser']=json_encode($listofuserid); } else { if (!empty($_SESSION['assignedtouser'])) { - $listofuserid=dol_json_decode($_SESSION['assignedtouser'], true); + $listofuserid=json_decode($_SESSION['assignedtouser'], true); } } print $form->select_dolusers_forevent('view','assignedtouser',1); @@ -1168,7 +1168,7 @@ if ($id > 0) // Project if (! empty($conf->projet->enabled)) { - print '<tr><td width="30%" valign="top">'.$langs->trans("Project").'</td><td colspan="3">'; + print '<tr><td width="30%">'.$langs->trans("Project").'</td><td colspan="3">'; if ($object->fk_project) { $project=new Project($db); @@ -1192,7 +1192,7 @@ if ($id > 0) } // Description - print '<tr><td valign="top">'.$langs->trans("Description").'</td><td colspan="3">'; + print '<tr><td class="tdtop">'.$langs->trans("Description").'</td><td colspan="3">'; print dol_htmlentitiesbr($object->note); print '</td></tr>'; @@ -1267,7 +1267,7 @@ if ($id > 0) print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">'; print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; //print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; - print img_picto($langs->trans("ViewCal"),'object_calendar','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewcal" value="'.$langs->trans("ViewCal").'">'; + print img_picto($langs->trans("ViewCal"),'object_calendar','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewcal" value="'.$langs->trans("ViewCal").'">'; print '</form>'."\n"; print '<form name="listactionsfilterweek" action="'.DOL_URL_ROOT.'/comm/action/index.php" method="POST" style="float: left; padding-right: 10px;">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; @@ -1276,7 +1276,7 @@ if ($id > 0) print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">'; print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; //print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; - print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewweek" value="'.$langs->trans("ViewWeek").'">'; + print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewweek" value="'.$langs->trans("ViewWeek").'">'; print '</form>'."\n"; print '<form name="listactionsfilterday" action="'.DOL_URL_ROOT.'/comm/action/index.php" method="POST" style="float: left; padding-right: 10px;">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; @@ -1285,7 +1285,7 @@ if ($id > 0) print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">'; print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; //print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; - print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewday" value="'.$langs->trans("ViewDay").'">'; + print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewday" value="'.$langs->trans("ViewDay").'">'; print '</form>'."\n"; print '<form name="listactionsfilterperuser" action="'.DOL_URL_ROOT.'/comm/action/peruser.php" method="POST" style="float: left; padding-right: 10px;">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; @@ -1294,7 +1294,7 @@ if ($id > 0) print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">'; print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; //print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; - print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewperuser" value="'.$langs->trans("ViewPerUser").'">'; + print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewperuser" value="'.$langs->trans("ViewPerUser").'">'; print '</form>'."\n"; print '</div>'; diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index fb4c6f45d84c9520035a634c09eee460a6c727e9..530083fb30adce79ac1ea3e7770e0824ea785985 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -61,6 +61,7 @@ class ActionComm extends CommonObject /** * @var string * @deprecated Use $label + * @see label */ public $libelle; @@ -71,6 +72,7 @@ class ActionComm extends CommonObject * Object user that create action * @var User * @deprecated + * @see authorid */ var $author; @@ -78,6 +80,7 @@ class ActionComm extends CommonObject * Object user that modified action * @var User * @deprecated + * @see usermodid */ var $usermod; var $authorid; // Id user that create action @@ -114,6 +117,7 @@ class ActionComm extends CommonObject * Object user of owner * @var User * @deprecated + * @see userownerid */ var $usertodo; @@ -121,6 +125,7 @@ class ActionComm extends CommonObject * Object user that did action * @var User * @deprecated + * @see userdoneid */ var $userdone; @@ -130,12 +135,16 @@ class ActionComm extends CommonObject /** * Company linked to action (optional) * @var Societe|null + * @deprecated + * @see socid */ var $societe; /** * Contact linked to action (optional) * @var Contact|null + * @deprecated + * @see contactid */ var $contact; @@ -468,7 +477,7 @@ class ActionComm extends CommonObject $this->fulldayevent = $obj->fulldayevent; $this->location = $obj->location; $this->transparency = $obj->transparency; - $this->punctual = $obj->punctual; + $this->punctual = $obj->punctual; // deprecated $this->socid = $obj->fk_soc; // To have fetch_thirdparty method working $this->contactid = $obj->fk_contact; // To have fetch_contact method working diff --git a/htdocs/comm/action/document.php b/htdocs/comm/action/document.php index 82d88089684b273fe8dd4d003f3b9b97a90606ee..d45a18e3e8c4d0c09d05fa40a48f98494fc5541f 100644 --- a/htdocs/comm/action/document.php +++ b/htdocs/comm/action/document.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com> @@ -143,7 +143,7 @@ if ($object->id > 0) print '<tr><td>'.$langs->trans("Title").'</td><td colspan="3">'.$object->label.'</td></tr>'; // Full day event - print '<tr><td>'.$langs->trans("EventOnFullDay").'</td><td colspan="3">'.yn($object->fulldayevent).'</td></tr>'; + print '<tr><td>'.$langs->trans("EventOnFullDay").'</td><td colspan="3">'.yn($object->fulldayevent, 3).'</td></tr>'; // Date start print '<tr><td width="30%">'.$langs->trans("DateActionStart").'</td><td colspan="3">'; @@ -186,13 +186,13 @@ if ($object->id > 0) if ($val['id'] && $val['id'] != $object->userownerid) $listofuserid[$val['id']]=$val; } } - $_SESSION['assignedtouser']=dol_json_encode($listofuserid); + $_SESSION['assignedtouser']=json_encode($listofuserid); } else { if (!empty($_SESSION['assignedtouser'])) { - $listofuserid=dol_json_decode($_SESSION['assignedtouser'], true); + $listofuserid=json_decode($_SESSION['assignedtouser'], true); } } print $form->select_dolusers_forevent('view','assignedtouser',1); @@ -235,7 +235,7 @@ if ($object->id > 0) // Project if (! empty($conf->projet->enabled)) { - print '<tr><td valign="top">'.$langs->trans("Project").'</td><td colspan="3">'; + print '<tr><td class="tdtop">'.$langs->trans("Project").'</td><td colspan="3">'; if ($object->fk_project) { $project=new Project($db); @@ -274,7 +274,7 @@ if ($object->id > 0) } - print '<tr><td width="30%" nowrap>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>'; + print '<tr><td width="30%" class="nowrap">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>'; print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; print '</table>'; @@ -294,7 +294,7 @@ if ($object->id > 0) print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">'; print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; //print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; - print img_picto($langs->trans("ViewCal"),'object_calendar','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewcal" value="'.$langs->trans("ViewCal").'">'; + print img_picto($langs->trans("ViewCal"),'object_calendar','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewcal" value="'.$langs->trans("ViewCal").'">'; print '</form>'."\n"; print '<form name="listactionsfilterweek" action="'.DOL_URL_ROOT.'/comm/action/index.php" method="POST" style="float: left; padding-right: 10px;">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; @@ -303,7 +303,7 @@ if ($object->id > 0) print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">'; print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; //print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; - print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewweek" value="'.$langs->trans("ViewWeek").'">'; + print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewweek" value="'.$langs->trans("ViewWeek").'">'; print '</form>'."\n"; print '<form name="listactionsfilterday" action="'.DOL_URL_ROOT.'/comm/action/index.php" method="POST" style="float: left; padding-right: 10px;">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; @@ -312,7 +312,7 @@ if ($object->id > 0) print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">'; print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; //print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; - print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewday" value="'.$langs->trans("ViewDay").'">'; + print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewday" value="'.$langs->trans("ViewDay").'">'; print '</form>'."\n"; print '<form name="listactionsfilterperuser" action="'.DOL_URL_ROOT.'/comm/action/peruser.php" method="POST" style="float: left; padding-right: 10px;">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; @@ -321,7 +321,7 @@ if ($object->id > 0) print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">'; print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; //print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">'; - print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewperuser" value="'.$langs->trans("ViewPerUser").'">'; + print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewperuser" value="'.$langs->trans("ViewPerUser").'">'; print '</form>'."\n"; print '</div>'; diff --git a/htdocs/comm/askpricesupplier/card.php b/htdocs/comm/askpricesupplier/card.php index c49881ba5427fc2d4e6320a0ee009e6494dc7c7f..bfbcc9d4273ef9457000e1d4674bc1deebfd0177 100644 --- a/htdocs/comm/askpricesupplier/card.php +++ b/htdocs/comm/askpricesupplier/card.php @@ -1709,10 +1709,12 @@ if ($action == 'create') $somethingshown = $formfile->show_documents('askpricesupplier', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); - /* - * Linked object block - */ - $somethingshown = $object->showLinkedObjectBlock(); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '<br>'.$linktoelem; print '</div><div class="fichehalfright"><div class="ficheaddleft">'; @@ -1736,8 +1738,8 @@ if ($action == 'create') $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; - $fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/')); - $file = $fileparams ['fullname']; + $fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $file = $fileparams['fullname']; // Define output language $outputlangs = $langs; @@ -1762,8 +1764,8 @@ if ($action == 'create') dol_print_error($db, $result); exit(); } - $fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/')); - $file = $fileparams ['fullname']; + $fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $file = $fileparams['fullname']; } print '<br>'; diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php index 2e39d8592cf9bb31a42855fa81cdc3698f7a2919..2854a0a0d4b4806dc60bdff2d49eaf08f485f9ef 100644 --- a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php +++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php @@ -59,14 +59,42 @@ class AskPriceSupplier extends CommonObject var $client; // Objet societe client (a charger par fetch_client) var $fk_project; + /** + * @deprecated + * @see user_author_id + */ var $author; var $ref; var $ref_fourn; //Reference saisie lors de l'ajout d'une ligne à la demande var $statut; // 0 (draft), 1 (validated), 2 (signed), 3 (not signed), 4 (billed) - var $datec; // Date of creation var $date; // Date of proposal var $date_livraison; + /** + * @deprecated + * @see date_creation + */ + var $datec; + + /** + * Creation date + * @var int + */ + public $date_creation; + + /** + * @deprecated + * @see date_validation + */ + var $datev; + + /** + * Validation date + * @var int + */ + public $date_validation; + + var $user_author_id; var $user_valid_id; var $user_close_id; @@ -76,9 +104,22 @@ class AskPriceSupplier extends CommonObject var $total_localtax1; // Total Local Taxes 1 var $total_localtax2; // Total Local Taxes 2 var $total_ttc; // Total with tax - var $price; // deprecated (for compatibility) - var $tva; // deprecated (for compatibility) - var $total; // deprecated (for compatibility) + + /** + * @deprecated + * @see price_ht + */ + var $price; + /** + * @deprecated + * @see total_tva + */ + var $tva; + /** + * @deprecated + * @see total_ttc + */ + var $total; var $cond_reglement_id; var $cond_reglement_code; @@ -88,7 +129,11 @@ class AskPriceSupplier extends CommonObject var $remise; var $remise_percent; var $remise_absolue; - var $note; // deprecated (for compatibility) + /** + * @deprecated + * @see note_public, note_private + */ + var $note; var $note_private; var $note_public; var $shipping_method_id; @@ -1031,7 +1076,7 @@ class AskPriceSupplier extends CommonObject $this->remise = $obj->remise; $this->remise_percent = $obj->remise_percent; $this->remise_absolue = $obj->remise_absolue; - $this->total = $obj->total; // TODO obsolete + $this->total = $obj->total; // TODO deprecated $this->total_ht = $obj->total_ht; $this->total_tva = $obj->tva; $this->total_localtax1 = $obj->localtax1; @@ -1040,14 +1085,14 @@ class AskPriceSupplier extends CommonObject $this->socid = $obj->fk_soc; $this->fk_project = $obj->fk_projet; $this->modelpdf = $obj->model_pdf; - $this->note = $obj->note_private; // TODO obsolete + $this->note = $obj->note_private; // TODO deprecated $this->note_private = $obj->note_private; $this->note_public = $obj->note_public; $this->statut = $obj->fk_statut; $this->statut_libelle = $obj->statut_label; - $this->datec = $this->db->jdate($obj->datec); // TODO obsolete - $this->datev = $this->db->jdate($obj->datev); // TODO obsolete + $this->datec = $this->db->jdate($obj->datec); // TODO deprecated + $this->datev = $this->db->jdate($obj->datev); // TODO deprecated $this->date_creation = $this->db->jdate($obj->datec); //Creation date $this->date_validation = $this->db->jdate($obj->datev); //Validation date $this->date_livraison = $this->db->jdate($obj->date_livraison); @@ -2431,7 +2476,17 @@ class AskPriceSupplierLine extends CommonObject var $fk_parent_line; var $desc; // Description ligne var $fk_product; // Id produit predefini - var $product_type = 0; // Type 0 = product, 1 = Service + /** + * @deprecated + * @see product_type + */ + var $fk_product_type; + /** + * Product type + * @var int + * @see Product::TYPE_PRODUCT, Product::TYPE_SERVICE + */ + public $product_type = Product::TYPE_PRODUCT; var $qty; var $tva_tx; @@ -2459,14 +2514,43 @@ class AskPriceSupplierLine extends CommonObject var $total_tva; // Total TVA de la ligne toute quantite et incluant la remise ligne var $total_ttc; // Total TTC de la ligne toute quantite et incluant la remise ligne - // Ne plus utiliser + /** + * @deprecated + * @see remise_percent, fk_remise_except + */ var $remise; + /** + * @deprecated + * @see subprice + */ var $price; // From llx_product - var $ref; // Reference produit - var $libelle; // Label produit - var $product_desc; // Description produit + /** + * @deprecated + * @see product_ref + */ + var $ref; + /** + * Product reference + * @var string + */ + public $product_ref; + /** + * @deprecated + * @see product_label + */ + var $libelle; + /** + * Product label + * @var string + */ + public $product_label; + /** + * Product description + * @var string + */ + public $product_desc; var $localtax1_tx; // Local tax 1 var $localtax2_tx; // Local tax 2 diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index af9b7205d1644640e7915d7abe9f12deb5eb6ca3..aba9433cabcc7ee00304656d5c8b809626090267 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -35,6 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; if (! empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; @@ -140,7 +141,7 @@ if (empty($reshook)) if ($result < 0) setEventMessage($object->error,$object->errors,'errors'); } - // update prospect level + // set communication status if ($action == 'setstcomm') { $object->fetch($id); @@ -468,6 +469,14 @@ if ($id > 0) print '</div></td></tr>'; } + // Categories + if (!empty( $conf->categorie->enabled ) && !empty( $user->rights->categorie->lire )) { + print '<tr><td>' . $langs->trans( "Categories" ) . '</td>'; + print '<td colspan="3">'; + print $form->showCategories( $object->id, 'customer', 1 ); + print "</td></tr>"; + } + // Other attributes $parameters=array('socid'=>$object->id, 'colspan' => ' colspan="3"', 'colspanvalue' => '3'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index 69a3520d1e827d8b7a9ddfbfe2f1a26ed996fead..1df5a7ad18f9ec4e28817c3494320d1de9d4846e 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -421,7 +421,7 @@ class Mailing extends CommonObject $resql=$this->db->query($sql); if ($resql) { - return 1; + return $this->delete_targets(); } else { @@ -429,6 +429,29 @@ class Mailing extends CommonObject return -1; } } + + /** + * Delete targets emailing + * + * @return int 1 if OK, 0 if error + */ + function delete_targets() + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles"; + $sql.= " WHERE fk_mailing = ".$this->id; + + dol_syslog("Mailing::delete_targets", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + return 1; + } + else + { + $this->error=$this->db->lasterror(); + return 0; + } + } /** diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 5be006c005386a5fd25dae4b8788f0423f03e260..8cd48a75f40d11fca167e1b04d3ec0b92d40c58d 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -41,6 +41,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/modules/propale/modules_propale.php'; require_once DOL_DOCUMENT_ROOT . '/core/lib/propal.lib.php'; require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; if (! empty($conf->projet->enabled)) { require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formprojet.class.php'; @@ -305,7 +306,8 @@ if (empty($reshook)) $object->fk_project = GETPOST('projectid'); $object->modelpdf = GETPOST('model'); $object->author = $user->id; // deprecated - $object->note = GETPOST('note'); + $object->note_private = GETPOST('note_private'); + $object->note_public = GETPOST('note_public'); $object->statut = Propal::STATUS_DRAFT; $object->fk_incoterms = GETPOST('incoterm_id', 'int'); $object->location_incoterms = GETPOST('location_incoterms', 'alpha'); @@ -331,7 +333,8 @@ if (empty($reshook)) $object->fk_project = GETPOST('projectid'); $object->modelpdf = GETPOST('model'); $object->author = $user->id; // deprecated - $object->note = GETPOST('note'); + $object->note_private = GETPOST('note_private'); + $object->note_public = GETPOST('note_public'); $object->fk_incoterms = GETPOST('incoterm_id', 'int'); $object->location_incoterms = GETPOST('location_incoterms', 'alpha'); @@ -640,7 +643,6 @@ if (empty($reshook)) include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; - // Go back to draft if ($action == 'modif' && $user->rights->propal->creer) { @@ -1257,6 +1259,7 @@ $formother = new FormOther($db); $formfile = new FormFile($db); $formpropal = new FormPropal($db); $companystatic = new Societe($db); +if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); } $now = dol_now(); @@ -1341,7 +1344,7 @@ if ($action == 'create') print '<table class="border" width="100%">'; // Reference - print '<tr><td class="fieldrequired">' . $langs->trans('Ref') . '</td><td colspan="2">' . $langs->trans("Draft") . '</td></tr>'; + print '<tr><td width="25%" class="fieldrequired">' . $langs->trans('Ref') . '</td><td colspan="2">' . $langs->trans("Draft") . '</td></tr>'; // Ref customer print '<tr><td>' . $langs->trans('RefCustomer') . '</td><td colspan="2">'; @@ -1445,13 +1448,20 @@ if ($action == 'create') } print '</td></tr>'; - // Model - print '<tr>'; - print '<td>' . $langs->trans("DefaultModel") . '</td>'; - print '<td colspan="2">'; - $liste = ModelePDFPropales::liste_modeles($db); - print $form->selectarray('model', $liste, ($conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT ? $conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT : $conf->global->PROPALE_ADDON_PDF)); - print "</td></tr>"; + // Project + if (! empty($conf->projet->enabled) && $socid > 0) + { + $projectid = GETPOST('projectid')?GETPOST('projectid'):0; + if ($origin == 'project') $projectid = ($originid ? $originid : 0); + + $langs->load("projects"); + print '<tr>'; + print '<td>' . $langs->trans("Project") . '</td><td colspan="2">'; + $numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0); + print ' <a href="../projet/card.php?socid=' . $soc->id . '&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'">' . $langs->trans("AddProject") . '</a>'; + print '</td>'; + print '</tr>'; + } // Incoterms if (!empty($conf->incoterm->enabled)) @@ -1463,25 +1473,41 @@ if ($action == 'create') print '</td></tr>'; } - // Project - if (! empty($conf->projet->enabled) && $socid > 0) - { - $formproject = new FormProjets($db); + // Template to use by default + print '<tr>'; + print '<td>' . $langs->trans("DefaultModel") . '</td>'; + print '<td colspan="2">'; + $liste = ModelePDFPropales::liste_modeles($db); + print $form->selectarray('model', $liste, ($conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT ? $conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT : $conf->global->PROPALE_ADDON_PDF)); + print "</td></tr>"; - $projectid = 0; - if ($origin == 'project') - $projectid = ($originid ? $originid : 0); + // Public note + print '<tr>'; + print '<td class="border" valign="top">' . $langs->trans('NotePublic') . '</td>'; + print '<td valign="top" colspan="2">'; + $note_public = ''; + if (is_object($objectsrc)) // Take value from source object + { + $note_public = $objectsrc->note_public; + } + $doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%'); + print $doleditor->Create(1); + // Private note + if (empty($user->societe_id)) + { print '<tr>'; - print '<td>' . $langs->trans("Project") . '</td><td colspan="2">'; - - $numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0); - if ($numprojet == 0) { - $langs->load("projects"); - print ' <a href="../projet/card.php?socid=' . $soc->id . '&action=create">' . $langs->trans("AddProject") . '</a>'; + print '<td class="border" valign="top">' . $langs->trans('NotePrivate') . '</td>'; + print '<td valign="top" colspan="2">'; + $note_private = ''; + if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) // Take value from source object + { + $note_private = $objectsrc->note_private; } - print '</td>'; - print '</tr>'; + $doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%'); + print $doleditor->Create(1); + // print '<textarea name="note_private" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_private.'.</textarea> + print '</td></tr>'; } // Other attributes @@ -2281,10 +2307,13 @@ if ($action == 'create') $somethingshown = $formfile->show_documents('propal', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); - /* - * Linked object block - */ - $somethingshown = $object->showLinkedObjectBlock(); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object); + if ($linktoelem) print '<br>'.$linktoelem; + print '</div><div class="fichehalfright"><div class="ficheaddleft">'; // print '</td><td valign="top" width="50%">'; @@ -2311,8 +2340,8 @@ if ($action == 'create') $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; - $fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/')); - $file = $fileparams ['fullname']; + $fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $file = $fileparams['fullname']; // Define output language $outputlangs = $langs; @@ -2336,8 +2365,8 @@ if ($action == 'create') dol_print_error($db, $result); exit(); } - $fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/')); - $file = $fileparams ['fullname']; + $fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $file = $fileparams['fullname']; } print '<br>'; diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index af46db14d9a4afd37ec47e1a8ffb7928f2b175e9..b80b96654c1be1e8ef0fcf78f3cbb11fedf5c803 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -75,26 +75,35 @@ class Propal extends CommonObject /** * Status of the quote - * Check the following constants: - * - STATUS_DRAFT - * - STATUS_VALIDATED - * - STATUS_SIGNED - * - STATUS_NOTSIGNED - * - STATUS_BILLED * @var int + * @see Propal::STATUS_DRAFT, Propal::STATUS_VALIDATED, Propal::STATUS_SIGNED, Propal::STATUS_NOTSIGNED, Propal::STATUS_BILLED */ var $statut; /** - * Date of creation - * @var + * @deprecated + * @see date_creation */ var $datec; + /** - * Date of validation - * @var + * Creation date + * @var int + */ + public $date_creation; + + /** + * @deprecated + * @see date_validation */ var $datev; + + /** + * Validation date + * @var int + */ + public $date_validation; + /** * Date of the quote * @var @@ -102,8 +111,8 @@ class Propal extends CommonObject var $date; /** - * Same than date ¿? - * @var + * @deprecated + * @see date */ var $datep; var $date_livraison; @@ -121,14 +130,17 @@ class Propal extends CommonObject /** * @deprecated + * @see total_ht */ var $price; /** * @deprecated + * @see total_tva */ var $tva; /** * @deprecated + * @see total_ttc */ var $total; @@ -142,6 +154,7 @@ class Propal extends CommonObject var $remise_absolue; /** * @deprecated + * @see note_private, note_public */ var $note; var $note_private; @@ -1048,8 +1061,10 @@ class Propal extends CommonObject */ function createFromClone($socid=0) { - global $user,$langs,$conf,$hookmanager; - + global $db, $user,$langs,$conf,$hookmanager; + + dol_include_once('/projet/class.project.class.php'); + $this->context['createfromclone']='createfromclone'; $error=0; @@ -1074,7 +1089,16 @@ class Propal extends CommonObject $this->socid = $objsoc->id; $this->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0); $this->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0); - $this->fk_project = ''; + + $project = new Project($db); + + if($objFrom->fk_project > 0 && $project->fetch($objFrom->fk_project)) { + if($project->socid <= 0) $this->fk_project = $objFrom->fk_project; + else $this->fk_project = ''; + } else { + $this->fk_project = ''; + } + $this->fk_delivery_address = ''; } @@ -1222,7 +1246,7 @@ class Propal extends CommonObject $this->remise = $obj->remise; $this->remise_percent = $obj->remise_percent; $this->remise_absolue = $obj->remise_absolue; - $this->total = $obj->total; // TODO obsolete + $this->total = $obj->total; // TODO deprecated $this->total_ht = $obj->total_ht; $this->total_tva = $obj->tva; $this->total_localtax1 = $obj->localtax1; @@ -1231,14 +1255,14 @@ class Propal extends CommonObject $this->socid = $obj->fk_soc; $this->fk_project = $obj->fk_projet; $this->modelpdf = $obj->model_pdf; - $this->note = $obj->note_private; // TODO obsolete + $this->note = $obj->note_private; // TODO deprecated $this->note_private = $obj->note_private; $this->note_public = $obj->note_public; $this->statut = $obj->fk_statut; $this->statut_libelle = $obj->statut_label; - $this->datec = $this->db->jdate($obj->datec); // TODO obsolete - $this->datev = $this->db->jdate($obj->datev); // TODO obsolete + $this->datec = $this->db->jdate($obj->datec); // TODO deprecated + $this->datev = $this->db->jdate($obj->datev); // TODO deprecated $this->date_creation = $this->db->jdate($obj->datec); //Creation date $this->date_validation = $this->db->jdate($obj->datev); //Validation date $this->date = $this->db->jdate($obj->dp); // Proposal date @@ -1967,9 +1991,12 @@ class Propal extends CommonObject * * @return int <0 si ko, >0 si ok * @deprecated + * @see classifyBilled() */ function classer_facturee() { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $this->classifyBilled(); } @@ -2724,7 +2751,7 @@ class Propal extends CommonObject * Return clicable link of object (with eventually picto) * * @param int $withpicto Add picto into link - * @param string $option Where point the link ('compta', 'expedition', 'document', ...) + * @param string $option Where point the link ('expedition', 'document', ...) * @param string $get_params Parametres added to url * @return string String with URL */ @@ -2912,17 +2939,19 @@ class PropaleLigne extends CommonObjectLine var $oldline; // From llx_propaldet - var $rowid; var $fk_propal; var $fk_parent_line; var $desc; // Description ligne var $fk_product; // Id produit predefini + /** + * @deprecated + * @see product_type + */ + var $fk_product_type; /** * Product type. - * Use the following constants: - * - Product::TYPE_PRODUCT - * - Product::TYPE_SERVICE * @var int + * @see Product::TYPE_PRODUCT, Product::TYPE_SERVICE */ var $product_type = Product::TYPE_PRODUCT; @@ -2952,14 +2981,43 @@ class PropaleLigne extends CommonObjectLine var $total_tva; // Total TVA de la ligne toute quantite et incluant la remise ligne var $total_ttc; // Total TTC de la ligne toute quantite et incluant la remise ligne - // Ne plus utiliser + /** + * @deprecated + * @see $remise_percent, $fk_remise_except + */ var $remise; + /** + * @deprecated + * @see subprice + */ var $price; // From llx_product - var $ref; // Reference produit - var $libelle; // Label produit - var $product_desc; // Description produit + /** + * @deprecated + * @see product_ref + */ + var $ref; + /** + * Product reference + * @var string + */ + public $product_ref; + /** + * @deprecated + * @see product_label + */ + var $libelle; + /** + * Product label + * @var string + */ + public $product_label; + /** + * Product description + * @var string + */ + public $product_desc; var $localtax1_tx; // Local tax 1 var $localtax2_tx; // Local tax 2 @@ -3007,7 +3065,8 @@ class PropaleLigne extends CommonObjectLine { $objp = $this->db->fetch_object($result); - $this->rowid = $objp->rowid; + $this->id = $objp->rowid; + $this->rowid = $objp->rowid; // deprecated $this->fk_propal = $objp->fk_propal; $this->fk_parent_line = $objp->fk_parent_line; $this->label = $objp->custom_label; @@ -3016,7 +3075,7 @@ class PropaleLigne extends CommonObjectLine $this->price = $objp->price; // deprecated $this->subprice = $objp->subprice; $this->tva_tx = $objp->tva_tx; - $this->remise = $objp->remise; + $this->remise = $objp->remise; // deprecated $this->remise_percent = $objp->remise_percent; $this->fk_remise_except = $objp->fk_remise_except; $this->fk_product = $objp->fk_product; diff --git a/htdocs/comm/propal/document.php b/htdocs/comm/propal/document.php index d224c20bc9729b8ba6449399e4acc6885507e8d3..af603d0606b3f31b27b69a290d6dab35f08de5f0 100644 --- a/htdocs/comm/propal/document.php +++ b/htdocs/comm/propal/document.php @@ -34,6 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; $langs->load('compta'); $langs->load('other'); +$langs->load('companies'); $action = GETPOST('action','alpha'); $confirm = GETPOST('confirm','alpha'); diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 9fbdb2ffd7ef55daf8555c269e5f3708c0bad20a..c8e96919f8431dfc1e93aaea57ea5ccced5d8ccb 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -56,6 +56,7 @@ $search_refcustomer=GETPOST('search_refcustomer','alpha'); $search_societe=GETPOST('search_societe','alpha'); $search_montant_ht=GETPOST('search_montant_ht','alpha'); $search_author=GETPOST('search_author','alpha'); +$search_product_category=GETPOST('search_product_category','int'); $search_town=GETPOST('search_town','alpha'); $viewstatut=$db->escape(GETPOST('viewstatut')); $object_statut=$db->escape(GETPOST('propal_statut')); @@ -91,6 +92,7 @@ if (GETPOST("button_removefilter") || GETPOST("button_removefilter_x")) // Both $search_societe=''; $search_montant_ht=''; $search_author=''; + $search_product_category=''; $search_town=''; $year=''; $month=''; @@ -145,14 +147,15 @@ if (! $sortorder) $sortorder='DESC'; $limit = $conf->liste_limit; -if (! $sall) $sql = 'SELECT'; -else $sql = 'SELECT DISTINCT'; +$sql = 'SELECT'; +if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; $sql.= ' s.rowid, s.nom as name, s.town, s.client, s.code_client,'; $sql.= ' p.rowid as propalid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,'; if (! $user->rights->societe->client->voir && ! $socid) $sql .= " sc.fk_soc, sc.fk_user,"; $sql.= ' u.login'; $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p'; -if ($sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet as pd ON p.rowid=pd.fk_propal'; +if ($sall || $search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet as pd ON p.rowid=pd.fk_propal'; +if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON p.fk_user_author = u.rowid'; // We'll need this table joined to the select in order to filter by sale if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -190,7 +193,8 @@ if ($search_montant_ht != '') if ($sall) { $sql .= natural_search(array('s.nom', 'p.note_private', 'p.note_public', 'pd.description'), $sall); } -if ($socid) $sql.= ' AND s.rowid = '.$socid; +if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_product_category; +if ($socid > 0) $sql.= ' AND s.rowid = '.$socid; if ($viewstatut <> '') { $sql.= ' AND p.fk_statut IN ('.$viewstatut.')'; @@ -223,7 +227,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) $result = $db->query($sql); $nbtotalofrecords = $db->num_rows($result); } - +//print $sql; $sql.= $db->plimit($limit + 1,$offset); $result=$db->query($sql); @@ -265,15 +269,28 @@ if ($result) if ($user->rights->societe->client->voir || $socid) { $langs->load("commercial"); - $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { - $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.=$form->select_dolusers($search_user,'search_user',1); + $moreforfilter.='</div>'; + } + // If the user can view prospects other than his' + if ($conf->categorie->enabled && $user->rights->produit->lire) + { + include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('IncludingProductWithTag'). ': '; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1); + $moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1); + $moreforfilter.='</div>'; } if (! empty($moreforfilter)) { diff --git a/htdocs/comm/propal/note.php b/htdocs/comm/propal/note.php index 05cd2db3f04d576ab25ea1324b858a47f212839c..1e5ace7353ed6836a1c0bc87d06b9e737b4cb51a 100644 --- a/htdocs/comm/propal/note.php +++ b/htdocs/comm/propal/note.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> @@ -32,6 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; $langs->load('propal'); $langs->load('compta'); $langs->load('bills'); +$langs->load("companies"); $id = GETPOST('id','int'); $ref=GETPOST('ref','alpha'); @@ -103,7 +104,7 @@ if ($id > 0 || ! empty($ref)) print "<tr><td>".$langs->trans("Company")."</td>"; print '<td colspan="3">'.$object->client->getNomUrl(1).'</td></tr>'; - // Ligne info remises tiers + // Discounts print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">'; if ($societe->remise_percent) print $langs->trans("CompanyHasRelativeDiscount",$societe->remise_percent); else print $langs->trans("CompanyHasNoRelativeDiscount"); diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php index e807b3fcbc4080eb94c52ab42ac40539a29047b2..80ef52a372acc2428b12b5bf8f9401ebe00d45e8 100644 --- a/htdocs/comm/prospect/list.php +++ b/htdocs/comm/prospect/list.php @@ -204,6 +204,9 @@ if (empty($reshook)) $formother=new FormOther($db); $form=new Form($db); +$prospectstatic=new Client($db); +$prospectstatic->client=2; +$prospectstatic->loadCacheOfProspStatus(); $sql = "SELECT s.rowid as socid, s.nom as name, s.zip, s.town, s.datec, s.status as status, s.code_client, s.client,"; $sql.= " s.prefix_comm, s.fk_prospectlevel, s.fk_stcomm as stcomm_id,"; @@ -353,7 +356,7 @@ if ($resql) print '<input class="flat" type="text" size="10" name="search_datec" value="'.$search_datec.'">'; print '</td>'; - // Prospect levelt + // Prospect level print '<td class="liste_titre" align="center">'; $options_from = '<option value=""> </option>'; // Generate in $options_from the list of each option sorted foreach ($tab_level as $tab_level_sortorder => $tab_level_label) @@ -380,9 +383,12 @@ if ($resql) // Prospect status print '<td class="liste_titre" align="center">'; - // TODO Add here a list of prospect status - //print $form->selectarray($htmlname, $array, $search_stcomm); - //print ' '; + $arraystcomm=array(); + foreach($prospectstatic->cacheprospectstatus as $key => $val) + { + $arraystcomm[$val['id']]=$val['label']; + } + print $form->selectarray('search_stcomm', $arraystcomm, $search_stcomm, 1); print '</td>'; print '<td class="liste_titre" align="center">'; @@ -390,7 +396,7 @@ if ($resql) print '</td>'; print '<td class="liste_titre" align="center">'; - print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status); + print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status); print '</td>'; // Print the search button @@ -407,10 +413,6 @@ if ($resql) $i = 0; $var=true; - $prospectstatic=new Client($db); - $prospectstatic->client=2; - $prospectstatic->loadCacheOfProspStatus(); - while ($i < min($num,$conf->liste_limit)) { $obj = $db->fetch_object($resql); diff --git a/htdocs/commande/apercu.php b/htdocs/commande/apercu.php index e6878eef1792ca61b72ba0b720f0f19121d7087c..f3d83b837dde44c99cdfe88ede6e622a00f81e43 100644 --- a/htdocs/commande/apercu.php +++ b/htdocs/commande/apercu.php @@ -129,7 +129,7 @@ if ($id > 0 || ! empty($ref)) print '</tr>'; // Si fichier detail PDF existe - // TODO obsolete ? + // TODO deprecated ? if (file_exists($filedetail)) { print "<tr ".$bc[$var]."><td>Commande detaillee</td>"; diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 4b7d0104ec95c39897c5022a53a348c19e944532..79f752f83558a598ab9df8d3d3e9dbc571995701 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2,7 +2,7 @@ /* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> - * Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com> @@ -1214,6 +1214,7 @@ llxHeader('', $langs->trans('Order'), 'EN:Customers_Orders|FR:Commandes_Clients| $form = new Form($db); $formfile = new FormFile($db); $formorder = new FormOrder($db); +if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); } /** * ******************************************************************* @@ -1320,7 +1321,7 @@ if ($action == 'create' && $user->rights->commande->creer) print '<table class="border" width="100%">'; // Reference - print '<tr><td class="fieldrequired">' . $langs->trans('Ref') . '</td><td colspan="2">' . $langs->trans("Draft") . '</td></tr>'; + print '<tr><td width="25%" class="fieldrequired">' . $langs->trans('Ref') . '</td><td colspan="2">' . $langs->trans("Draft") . '</td></tr>'; // Reference client print '<tr><td>' . $langs->trans('RefCustomer') . '</td><td colspan="2">'; @@ -1422,14 +1423,16 @@ if ($action == 'create' && $user->rights->commande->creer) // Project if (! empty($conf->projet->enabled) && $socid > 0) { - $formproject = new FormProjets($db); + $projectid = GETPOST('projectid')?GETPOST('projectid'):0; + if ($origin == 'project') $projectid = ($originid ? $originid : 0); - print '<tr><td>' . $langs->trans('Project') . '</td><td colspan="2">'; + $langs->load("projects"); + print '<tr>'; + print '<td>' . $langs->trans("Project") . '</td><td colspan="2">'; $numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0); - if ($numprojet == 0) { - print ' <a href="' . DOL_URL_ROOT . '/projet/card.php?socid=' . $soc->id . '&action=create">' . $langs->trans("AddProject") . '</a>'; - } - print '</td></tr>'; + print ' <a href="../projet/card.php?socid=' . $soc->id . '&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'">' . $langs->trans("AddProject") . '</a>'; + print '</td>'; + print '</tr>'; } // Incoterms @@ -1458,29 +1461,30 @@ if ($action == 'create' && $user->rights->commande->creer) print $form->selectarray('model', $liste, $conf->global->COMMANDE_ADDON_PDF); print "</td></tr>"; - // Note publique + // Note public print '<tr>'; print '<td class="border" valign="top">' . $langs->trans('NotePublic') . '</td>'; print '<td valign="top" colspan="2">'; - $doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); + $doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%'); print $doleditor->Create(1); // print '<textarea name="note_public" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_public.'</textarea>'; print '</td></tr>'; - // Note privee + // Note private if (empty($user->societe_id)) { print '<tr>'; print '<td class="border" valign="top">' . $langs->trans('NotePrivate') . '</td>'; print '<td valign="top" colspan="2">'; - $doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); + $doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%'); print $doleditor->Create(1); // print '<textarea name="note" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_private.'</textarea>'; print '</td></tr>'; } - if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) { + if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) + { // TODO for compatibility if ($origin == 'contrat') { // Calcul contrat->price (HT), contrat->total (TTC), contrat->tva @@ -1514,8 +1518,11 @@ if ($action == 'create' && $user->rights->commande->creer) } print '<tr><td>' . $langs->trans('TotalTTC') . '</td><td colspan="2">' . price($objectsrc->total_ttc) . "</td></tr>"; - } else { - if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) { + } + else + { + if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) + { /* * Services/produits predefinis */ @@ -2298,10 +2305,13 @@ if ($action == 'create' && $user->rights->commande->creer) $delallowed = $user->rights->commande->supprimer; $somethingshown = $formfile->show_documents('commande', $comref, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $soc->default_lang); - /* - * Linked object block - */ - $somethingshown = $object->showLinkedObjectBlock(); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '<br>'.$linktoelem; + print '</div><div class="fichehalfright"><div class="ficheaddleft">'; // print '</td><td valign="top" width="50%">'; @@ -2324,8 +2334,7 @@ if ($action == 'create' && $user->rights->commande->creer) $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; - $fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/')); - $file = $fileparams ['fullname']; + $file = $fileparams['fullname']; // Define output language $outputlangs = $langs; @@ -2349,8 +2358,8 @@ if ($action == 'create' && $user->rights->commande->creer) dol_print_error($db, $result); exit(); } - $fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/')); - $file = $fileparams ['fullname']; + $fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $file = $fileparams['fullname']; } print '<br>'; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 18c8b5546375d47bd4842bdf632c1940d509ee0f..c941dfc1ff8eaf51793f4cdabaecab1aea1cb04b 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -74,17 +74,15 @@ class Commande extends CommonOrder /** * Status of the order. Check the following constants: - * - STATUS_CANCELED - * - STATUS_DRAFT - * - STATUS_ACCEPTED - * - STATUS_CLOSED * @var int + * @see Commande::STATUS_CANCELED, Commande::STATUS_DRAFT, Commande::STATUS_ACCEPTED, Commande::STATUS_CLOSED */ var $statut; /** * @deprecated + * @see billed */ - var $facturee; // deprecated + var $facturee; var $billed; // billed or not var $brouillon; @@ -100,7 +98,11 @@ class Commande extends CommonOrder var $fk_delivery_address; var $address; var $date; // Date commande - var $date_commande; // Date commande (deprecated) + /** + * @deprecated + * @see date + */ + var $date_commande; var $date_livraison; // Date livraison souhaitee var $shipping_method_id; var $fk_remise_except; @@ -116,7 +118,11 @@ class Commande extends CommonOrder var $rang; var $special_code; var $source; // Origin of order - var $note; // deprecated + /** + * @deprecated + * @see note_private, note_public + */ + var $note; var $note_private; var $note_public; var $extraparams=array(); @@ -1033,7 +1039,9 @@ class Commande extends CommonOrder */ function createFromProposal($object) { - global $conf,$user,$langs,$hookmanager; + global $db, $conf,$user,$langs,$hookmanager; + + dol_include_once('/core/class/extrafields.class.php'); $error=0; @@ -1104,9 +1112,15 @@ class Commande extends CommonOrder // get extrafields from original line $object->fetch_optionals($object->id); - foreach($object->array_options as $options_key => $value) - $this->array_options[$options_key] = $value; - + + $e = new ExtraFields($db); + $element_extrafields = $e->fetch_name_optionals_label($this->element); + + foreach($object->array_options as $options_key => $value) { + if(array_key_exists(str_replace('options_', '', $options_key), $element_extrafields)){ + $this->array_options[$options_key] = $value; + } + } // Possibility to add external linked objects with hooks $this->linked_objects[$this->origin] = $this->origin_id; if (is_array($object->other_linked_objects) && ! empty($object->other_linked_objects)) @@ -1728,6 +1742,7 @@ class Commande extends CommonOrder $i++; } + $this->db->free($result); return 1; @@ -1776,7 +1791,7 @@ class Commande extends CommonOrder * @param int $filtre_statut Filter on status * @return int <0 if KO, Nb of lines found if OK * - * TODO deprecated, move to Shipping class + * TODO deprecate, move to Shipping class */ function loadExpeditions($filtre_statut=-1) { @@ -1823,7 +1838,7 @@ class Commande extends CommonOrder * * @return int Nb of shipments * - * TODO deprecated, move to Shipping class + * TODO deprecate, move to Shipping class */ function nb_expedition() { @@ -1849,7 +1864,7 @@ class Commande extends CommonOrder * @param int $filtre_statut Filtre sur statut * @return int 0 si OK, <0 si KO * - * TODO deprecated, move to Shipping class + * TODO deprecate, move to Shipping class */ function livraison_array($filtre_statut=self::STATUS_CANCELED) { @@ -2399,9 +2414,12 @@ class Commande extends CommonOrder * * @return int <0 if ko, >0 if ok * @deprecated + * @see classifyBilled() */ function classer_facturee() { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $this->classifyBilled(); } @@ -3346,6 +3364,7 @@ class OrderLine extends CommonOrderLine * Id of parent order * @var int * @deprecated Use fk_commande + * @see fk_commande */ public $commande_id; @@ -3367,6 +3386,7 @@ class OrderLine extends CommonOrderLine /** * @deprecated + * @see remise_percent, fk_remise_except */ var $remise; diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index c8badb1a880d61498b8ec33f712f9b690c2c66db..f336cefda987257dda737828dfead12a78840a0c 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -41,6 +41,7 @@ class Account extends CommonObject /** * @var int Use id instead of rowid * @deprecated + * @see id */ var $rowid; var $id; @@ -240,6 +241,11 @@ class Account extends CommonObject */ function addline($date, $oper, $label, $amount, $num_chq, $categorie, $user, $emetteur='',$banque='') { + // Deprecatîon warning + if (is_numeric($oper)) { + dol_syslog(__METHOD__ . ": using numeric operations is deprecated", LOG_WARNING); + } + // Clean parameters $emetteur=trim($emetteur); $banque=trim($banque); diff --git a/htdocs/compta/bank/virement.php b/htdocs/compta/bank/virement.php index 08a76512cf49bb72ca6e2d8389159ef90deb636a..d81390a0205ac722ca1c9b1cb200ea87576d8ac2 100644 --- a/htdocs/compta/bank/virement.php +++ b/htdocs/compta/bank/virement.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> @@ -177,7 +177,7 @@ $form->select_comptes($account_to,'account_to',0,'',1); print "</td>\n"; print "<td>"; -$form->select_date($dateo,'','','','','add'); +$form->select_date((! empty($dateo)?$dateo:''),'','','','','add'); print "</td>\n"; print '<td><input name="label" class="flat" type="text" size="40" value="'.$label.'"></td>'; print '<td><input name="amount" class="flat" type="text" size="8" value="'.$amount.'"></td>'; diff --git a/htdocs/compta/deplacement/class/deplacement.class.php b/htdocs/compta/deplacement/class/deplacement.class.php index dc2d281e2a1f3e66d7693f47e7ab89d50bc54b0a..f09875456c2d10c45b0f4fd5136dfdf32fc6eb88 100644 --- a/htdocs/compta/deplacement/class/deplacement.class.php +++ b/htdocs/compta/deplacement/class/deplacement.class.php @@ -44,7 +44,11 @@ class Deplacement extends CommonObject var $fk_user_author; var $fk_user; var $km; - var $note; // TODO obsolete + /** + * @deprecated + * @see note_private, note_public + */ + var $note; // TODO deprecated var $note_private; var $note_public; var $socid; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 88d6bb587e4eb1950658bfb045fab6ce99e8ad4d..a461d1b9c82b367f295fd4d78513dbb0ef48e710 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -3,7 +3,7 @@ * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> - * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2010-2015 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr> @@ -1759,10 +1759,8 @@ if (empty($reshook)) $upload_dir = $conf->facture->dir_output; $file = $upload_dir . '/' . GETPOST('file'); $ret = dol_delete_file($file, 0, 0, 0, $object); - if ($ret) - setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); - else - setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); + if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile'))); + else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors'); $action = ''; } } @@ -1856,6 +1854,8 @@ $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); $bankaccountstatic = new Account($db); +if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); } + $now = dol_now(); llxHeader('', $langs->trans('Bill'), 'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes'); @@ -2082,22 +2082,21 @@ if ($action == 'create') } print '<tr><td valign="top" class="fieldrequired">' . $langs->trans('Type') . '</td><td colspan="2">'; - print '<table class="nobordernopadding">' . "\n"; + + print '<div class="tagtable">' . "\n"; // Standard invoice - print '<tr height="18"><td width="16px" valign="middle">'; - print '<input type="radio" id="radio_standard" name="type" value="0"' . (GETPOST('type') == 0 ? ' checked' : '') . '>'; - print '</td><td valign="middle">'; - $desc = $form->textwithpicto($langs->trans("InvoiceStandardAsk"), $langs->transnoentities("InvoiceStandardDesc"), 1); + print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">'; + $tmp='<input type="radio" id="radio_standard" name="type" value="0"' . (GETPOST('type') == 0 ? ' checked' : '') . '> '; + $desc = $form->textwithpicto($tmp.$langs->trans("InvoiceStandardAsk"), $langs->transnoentities("InvoiceStandardDesc"), 1, 'help', '', 0, 3); print $desc; - print '</td></tr>' . "\n"; + print '</div></div>'; if ((empty($origin)) || ((($origin == 'propal') || ($origin == 'commande')) && (! empty($originid)))) { // Deposit - print '<tr height="18"><td width="16px" valign="middle">'; - print '<input type="radio" id="radio_deposit" name="type" value="3"' . (GETPOST('type') == 3 ? ' checked' : '') . '>'; - print '</td><td valign="middle" class="nowrap">'; + print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">'; + $tmp='<input type="radio" id="radio_deposit" name="type" value="3"' . (GETPOST('type') == 3 ? ' checked' : '') . '> '; print '<script type="text/javascript" language="javascript"> jQuery(document).ready(function() { jQuery("#typedeposit, #valuedeposit").click(function() { @@ -2105,9 +2104,13 @@ if ($action == 'create') }); }); </script>'; - $desc = $form->textwithpicto($langs->trans("InvoiceDeposit"), $langs->transnoentities("InvoiceDepositDesc"), 1); - print '<table class="nobordernopadding"><tr><td>' . $desc . '</td>'; - if (($origin == 'propal') || ($origin == 'commande')) { + + $desc = $form->textwithpicto($tmp.$langs->trans("InvoiceDeposit"), $langs->transnoentities("InvoiceDepositDesc"), 1, 'help', '', 0, 3); + print '<table class="nobordernopadding"><tr><td>'; + print $desc; + print '</td>'; + if (($origin == 'propal') || ($origin == 'commande')) + { print '<td class="nowrap" style="padding-left: 5px">'; $arraylist = array('amount' => 'FixAmount','variable' => 'VarAmount'); print $form->selectarray('typedeposit', $arraylist, GETPOST('typedeposit'), 0, 0, 0, '', 1); @@ -2115,44 +2118,41 @@ if ($action == 'create') print '<td class="nowrap" style="padding-left: 5px">' . $langs->trans('Value') . ':<input type="text" id="valuedeposit" name="valuedeposit" size="3" value="' . GETPOST('valuedeposit', 'int') . '"/>'; } print '</td></tr></table>'; - print '</td></tr>' . "\n"; + + print '</div></div>'; } if ($socid > 0) { if (! empty($conf->global->INVOICE_USE_SITUATION)) { - // First situation invoice - print '<tr height="18"><td width="16px" valign="middle">'; - print '<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 ? ' checked' : '') . '>'; - print '</td><td valign="middle">'; - $desc = $form->textwithpicto($langs->trans("InvoiceFirstSituationAsk"), $langs->transnoentities("InvoiceFirstSituationDesc"), 1); - print $desc; - print '</td></tr>' . "\n"; - - // Next situation invoice - $opt = $form->load_situation_invoices(GETPOST('originid'), $socid); - print '<tr height="18"><td valign="middle">'; - print '<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 && GETPOST('originid') ? ' checked' : '') . ' '; - if ($opt == '<option value ="0" selected>' . $langs->trans('NoSituations') . '</option>' || (GETPOST('origin') && GETPOST('origin') != 'facture')) print 'disabled'; - print '>'; - print '</td><td valign="middle">'; - $text = $langs->trans("InvoiceSituationAsk") . ' '; - $text .= '<select class="flat" id="situations" name="situations">'; - $text .= $opt; - $text .= '</select>'; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceSituationDesc"), 1); - print $desc; - print '</td></tr>' . "\n"; + // First situation invoice + print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">'; + $tmp='<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 ? ' checked' : '') . '> '; + $desc = $form->textwithpicto($tmp.$langs->trans("InvoiceFirstSituationAsk"), $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3); + print $desc; + print '</div></div>'; + + // Next situation invoice + $opt = $form->selectSituationInvoices(GETPOST('originid'), $socid); + print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">'; + $tmp='<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 && GETPOST('originid') ? ' checked' : ''); + if ($opt == ('<option value ="0" selected>' . $langs->trans('NoSituations') . '</option>') || (GETPOST('origin') && GETPOST('origin') != 'facture')) $tmp.=' disabled'; + $tmp.= '> '; + $text = $tmp.$langs->trans("InvoiceSituationAsk") . ' '; + $text .= '<select class="flat" id="situations" name="situations">'; + $text .= $opt; + $text .= '</select>'; + $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceSituationDesc"), 1, 'help', '', 0, 3); + print $desc; + print '</div></div>'; } // Replacement - print '<tr height="18"><td valign="middle">'; - print '<input type="radio" name="type" id="radio_replacement" value="1"' . (GETPOST('type') == 1 ? ' checked' : ''); - if (! $options) - print ' disabled'; - print '>'; - print '</td><td valign="middle">'; + print '<!-- replacement line --><div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">'; + $tmp='<input type="radio" name="type" id="radio_replacement" value="1"' . (GETPOST('type') == 1 ? ' checked' : ''); + if (! $options) $tmp.=' disabled'; + $tmp.='> '; print '<script type="text/javascript" language="javascript"> jQuery(document).ready(function() { jQuery("#fac_replacement").change(function() { @@ -2160,7 +2160,7 @@ if ($action == 'create') }); }); </script>'; - $text = $langs->trans("InvoiceReplacementAsk") . ' '; + $text = $tmp.$langs->trans("InvoiceReplacementAsk") . ' '; $text .= '<select class="flat" name="fac_replacement" id="fac_replacement"'; if (! $options) $text .= ' disabled'; @@ -2172,20 +2172,19 @@ if ($action == 'create') $text .= '<option value="-1">' . $langs->trans("NoReplacableInvoice") . '</option>'; } $text .= '</select>'; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1); + $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3); print $desc; - print '</td></tr>' . "\n"; + print '</div></div>'; } else { - print '<tr height="18"><td valign="middle">'; - print '<input type="radio" name="type" id="radio_replacement" value="0" disabled>'; - print '</td><td valign="middle">'; - $text = $langs->trans("InvoiceReplacement") . ' '; + print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">'; + $tmp='<input type="radio" name="type" id="radio_replacement" value="0" disabled> '; + $text = $tmp.$langs->trans("InvoiceReplacement") . ' '; $text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') '; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1); + $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3); print $desc; - print '</td></tr>' . "\n"; + print '</div></div>'; } if (empty($origin)) @@ -2193,12 +2192,10 @@ if ($action == 'create') if ($socid > 0) { // Credit note - print '<tr height="18"><td valign="top">'; - print '<input type="radio" id="radio_creditnote" name="type" value="2"' . (GETPOST('type') == 2 ? ' checked' : ''); - if (! $optionsav) - print ' disabled'; - print '>'; - print '</td><td valign="top">'; + print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">'; + $tmp='<input type="radio" id="radio_creditnote" name="type" value="2"' . (GETPOST('type') == 2 ? ' checked' : ''); + if (! $optionsav) $tmp.=' disabled'; + $tmp.= '> '; // Show credit note options only if we checked credit note print '<script type="text/javascript" language="javascript"> jQuery(document).ready(function() { @@ -2214,7 +2211,7 @@ if ($action == 'create') }); }); </script>'; - $text = $langs->transnoentities("InvoiceAvoirAsk") . ' '; + $text = $tmp.$langs->transnoentities("InvoiceAvoirAsk") . ' '; // $text.='<input type="text" value="">'; $text .= '<select class="flat" name="fac_avoir" id="fac_avoir"'; if (! $optionsav) @@ -2227,7 +2224,7 @@ if ($action == 'create') $text .= '<option value="-1">' . $langs->trans("NoInvoiceToCorrect") . '</option>'; } $text .= '</select>'; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1); + $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3); print $desc; print '<div id="credit_note_options">'; @@ -2235,22 +2232,22 @@ if ($action == 'create') print '<br> <input type="checkbox" name="invoiceAvoirWithPaymentRestAmount" id="invoiceAvoirWithPaymentRestAmount" value="1" onclick="if($(this).is(\':checked\') ) { $(\'#radio_creditnote\').prop("checked", true); $(\'#invoiceAvoirWithLines\').removeAttr(\'checked\'); }" '.(GETPOST('invoiceAvoirWithPaymentRestAmount','int')>0 ? 'checked':'').' /> <label for="invoiceAvoirWithPaymentRestAmount">'.$langs->trans('invoiceAvoirWithPaymentRestAmount')."</label>"; print '</div>'; - print '</td></tr>' . "\n"; + print '</div></div>'; } else { - print '<tr height="18"><td valign="middle">'; - print '<input type="radio" name="type" id="radio_creditnote" value="0" disabled>'; - print '</td><td valign="middle">'; - $text = $langs->trans("InvoiceAvoir") . ' '; + print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">'; + $tmp='<input type="radio" name="type" id="radio_creditnote" value="0" disabled> '; + $text = $tmp.$langs->trans("InvoiceAvoir") . ' '; $text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') '; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1); + $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3); print $desc; - print '</td></tr>' . "\n"; + print '</div></div>' . "\n"; } } - print '</table>'; + print '</div>'; + print '</td></tr>'; if ($socid > 0) @@ -2295,12 +2292,15 @@ if ($action == 'create') print '</td></tr>'; // Project - if (! empty($conf->projet->enabled) && $socid > 0) { - $formproject = new FormProjets($db); + if (! empty($conf->projet->enabled) && $socid > 0) + { + $projectid = GETPOST('projectid')?GETPOST('projectid'):0; + if ($origin == 'project') $projectid = ($originid ? $originid : 0); $langs->load('projects'); print '<tr><td>' . $langs->trans('Project') . '</td><td colspan="2">'; - $formproject->select_projects($soc->id, $projectid, 'projectid', 0); + $numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0); + print ' <a href="../projet/card.php?socid=' . $soc->id . '&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'">' . $langs->trans("AddProject") . '</a>'; print '</td></tr>'; } @@ -2322,7 +2322,7 @@ if ($action == 'create') print $object->showOptionals($extrafields, 'edit'); } - // Modele PDF + // Template to use by default print '<tr><td>' . $langs->trans('Model') . '</td>'; print '<td>'; include_once DOL_DOCUMENT_ROOT . '/core/modules/facture/modules_facture.php'; @@ -2339,7 +2339,7 @@ if ($action == 'create') { $note_public = $objectsrc->note_public; } - $doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); + $doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%'); print $doleditor->Create(1); // Private note @@ -2353,7 +2353,7 @@ if ($action == 'create') { $note_private = $objectsrc->note_private; } - $doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); + $doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%'); print $doleditor->Create(1); // print '<textarea name="note_private" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_private.'.</textarea> print '</td></tr>'; @@ -2420,7 +2420,9 @@ if ($action == 'create') print '<tr><td>' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '</td><td colspan="2">' . price($objectsrc->total_localtax2) . "</td></tr>"; } print '<tr><td>' . $langs->trans('TotalTTC') . '</td><td colspan="2">' . price($objectsrc->total_ttc) . "</td></tr>"; - } else { + } + else + { // Show deprecated optional form to add product line here if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) { print '<tr><td colspan="3">'; @@ -2479,7 +2481,7 @@ if ($action == 'create') // Button "Create Draft" print '<div class="center">'; print '<input type="submit" class="button" name="bouton" value="' . $langs->trans('CreateDraft') . '">'; - print ' '; + print ' '; print '<input type="button" class="button" value="' . $langs->trans("Cancel") . '" onClick="javascript:history.go(-1)">'; print '</div>'; @@ -3488,50 +3490,50 @@ if ($action == 'create') // Show global modifiers if (! empty($conf->global->INVOICE_US_SITUATION)) { - if ($object->situation_cycle_ref && $object->statut == 0) { - print '<tr class="liste_titre nodrag nodrop">'; - print '<form name="updatealllines" id="updatealllines" action="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '"#updatealllines" method="POST">'; - print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '" />'; - print '<input type="hidden" name="action" value="updatealllines" />'; - print '<input type="hidden" name="id" value="' . $object->id . '" />'; - - if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { - print '<td align="center" width="5"> </td>'; - } - print '<td>' . $langs->trans('ModifyAllLines') . '</td>'; - print '<td align="right" width="50"> </td>'; - print '<td align="right" width="80"> </td>'; - if ($inputalsopricewithtax) print '<td align="right" width="80"> </td>'; - print '<td align="right" width="50"> </td>'; - print '<td align="right" width="50"> </td>'; - print '<td align="right" width="50">' . $langs->trans('Progress') . '</td>'; - if (! empty($conf->margin->enabled) && empty($user->societe_id)) - { - print '<td align="right" class="margininfos" width="80"> </td>'; - if ((! empty($conf->global->DISPLAY_MARGIN_RATES) || ! empty($conf->global->DISPLAY_MARK_RATES)) && $user->rights->margins->liretous) { - print '<td align="right" class="margininfos" width="50"> </td>'; - } - } - print '<td align="right" width="50"> </td>'; - print '<td> </td>'; - print '<td width="10"> </td>'; - print '<td width="10"> </td>'; - print "</tr>\n"; - - if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { - print '<td align="center" width="5"> </td>'; - } - print '<tr width="100%" height="18" class="nodrag nodrop">'; - print '<td> </td>'; - print '<td width="50"> </td>'; - print '<td width="80"> </td>'; - print '<td width="50"> </td>'; - print '<td width="50"> </td>'; - print '<td align="right" class="nowrap"><input type="text" size="1" value="" name="all_progress">%</td>'; - print '<td colspan="4" align="right"><input class="button" type="submit" name="all_percent" value="Modifier" /></td>'; - print '</tr>'; - print '</form>'; - } + if ($object->situation_cycle_ref && $object->statut == 0) { + print '<tr class="liste_titre nodrag nodrop">'; + print '<form name="updatealllines" id="updatealllines" action="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '"#updatealllines" method="POST">'; + print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '" />'; + print '<input type="hidden" name="action" value="updatealllines" />'; + print '<input type="hidden" name="id" value="' . $object->id . '" />'; + + if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { + print '<td align="center" width="5"> </td>'; + } + print '<td>' . $langs->trans('ModifyAllLines') . '</td>'; + print '<td align="right" width="50"> </td>'; + print '<td align="right" width="80"> </td>'; + if ($inputalsopricewithtax) print '<td align="right" width="80"> </td>'; + print '<td align="right" width="50"> </td>'; + print '<td align="right" width="50"> </td>'; + print '<td align="right" width="50">' . $langs->trans('Progress') . '</td>'; + if (! empty($conf->margin->enabled) && empty($user->societe_id)) + { + print '<td align="right" class="margininfos" width="80"> </td>'; + if ((! empty($conf->global->DISPLAY_MARGIN_RATES) || ! empty($conf->global->DISPLAY_MARK_RATES)) && $user->rights->margins->liretous) { + print '<td align="right" class="margininfos" width="50"> </td>'; + } + } + print '<td align="right" width="50"> </td>'; + print '<td> </td>'; + print '<td width="10"> </td>'; + print '<td width="10"> </td>'; + print "</tr>\n"; + + if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { + print '<td align="center" width="5"> </td>'; + } + print '<tr width="100%" class="nodrag nodrop">'; + print '<td> </td>'; + print '<td width="50"> </td>'; + print '<td width="80"> </td>'; + print '<td width="50"> </td>'; + print '<td width="50"> </td>'; + print '<td align="right" class="nowrap"><input type="text" size="1" value="" name="all_progress">%</td>'; + print '<td colspan="4" align="right"><input class="button" type="submit" name="all_percent" value="Modifier" /></td>'; + print '</tr>'; + print '</form>'; + } } // Show object lines @@ -3754,7 +3756,7 @@ if ($action == 'create') } print '<br>'; - //Select mail models is same action as presend + // Select mail models is same action as presend if (GETPOST('modelselected')) { $action = 'presend'; } @@ -3774,77 +3776,10 @@ if ($action == 'create') $somethingshown = $formfile->numoffiles; // Linked object block - $somethingshown = $object->showLinkedObjectBlock(); - - $linktoelem=''; + $somethingshown = $form->showLinkedObjectBlock($object); - if (! empty($conf->commande->enabled)) - { - $linktoelem.=($linktoelem?' ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>'; - - print ' - <script type="text/javascript" language="javascript"> - jQuery(document).ready(function() { - jQuery("#linktoorder").click(function() { - jQuery("#orderlist").toggle(); - jQuery("#linktoorder").toggle(); - }); - }); - </script> - '; - - print '<div id="orderlist" style="display:none">'; - - $sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_client, c.total_ht"; - $sql .= " FROM " . MAIN_DB_PREFIX . "societe as s"; - $sql .= ", " . MAIN_DB_PREFIX . "commande as c"; - $sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $soc->id . ''; - - $resqlorderlist = $db->query($sql); - if ($resqlorderlist) - { - $num = $db->num_rows($resqlorderlist); - $i = 0; - - print '<br><form action="" method="POST" name="LinkedOrder">'; - print '<table class="noborder">'; - print '<tr class="liste_titre">'; - print '<td class="nowrap"></td>'; - print '<td align="center">' . $langs->trans("Ref") . '</td>'; - print '<td align="left">' . $langs->trans("RefCustomer") . '</td>'; - print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>'; - print '<td align="left">' . $langs->trans("Company") . '</td>'; - print '</tr>'; - while ($i < $num) - { - $objp = $db->fetch_object($resqlorderlist); - if ($objp->socid == $soc->id) { - $var = ! $var; - print '<tr ' . $bc [$var] . '>'; - print '<td aling="left">'; - print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>'; - print '<td align="center">' . $objp->ref . '</td>'; - print '<td>' . $objp->ref_client . '</td>'; - print '<td>' . price($objp->total_ht) . '</td>'; - print '<td>' . $objp->name . '</td>'; - print '</td>'; - print '</tr>'; - } - - $i ++; - } - print '</table>'; - print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '"> <input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>'; - print '</form>'; - $db->free($resqlorderlist); - } else { - dol_print_error($db); - } - - print '</div>'; - } - - // Show link to elements + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object,array('order')); if ($linktoelem) print '<br>'.$linktoelem; // Link for paypal payment @@ -3886,8 +3821,8 @@ if ($action == 'create') $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; - $fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/')); - $file = $fileparams ['fullname']; + $fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $file = $fileparams['fullname']; // Define output language $outputlangs = $langs; @@ -3911,14 +3846,16 @@ if ($action == 'create') dol_print_error($db, $result); exit(); } - $fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/')); - $file = $fileparams ['fullname']; + $fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); + $file = $fileparams['fullname']; } print '<br>'; print_titre($langs->trans($titreform)); // Cree l'objet formulaire mail + dol_fiche_head(); + include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php'; $formmail = new FormMail($db); $formmail->param['langsmodels']=(empty($newlang)?$langs->defaultlang:$newlang); @@ -3990,7 +3927,7 @@ if ($action == 'create') print $formmail->get_form(); - print '<br>'; + dol_fiche_end(); } } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index a347ccdbca85ab359e5250547a67ee7cd0467a88..fc3d8936edfe6db3bd322ea24d267c1985e98cf1 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -92,18 +92,16 @@ class Facture extends CommonInvoice var $revenuestamp; /** * @deprecated + * @see note_private, note_public */ var $note; var $note_private; var $note_public; /** - * Check constants for more info: - * - STATUS_DRAFT - * - STATUS_VALIDATED - * - STATUS_PAID - * - STATUS_ABANDONED + * Invoice status * @var int + * @see Facture::STATUS_DRAFT, Facture::STATUS_VALIDATED, Facture::STATUS_PAID, Facture::STATUS_ABANDONED */ var $statut; //! Fermeture apres paiement partiel: discount_vat, badcustomer, abandon @@ -131,6 +129,9 @@ class Facture extends CommonInvoice * @deprecated */ var $products=array(); + /** + * @var FactureLigne[] + */ var $lines=array(); var $line; var $extraparams=array(); @@ -1119,7 +1120,8 @@ class Facture extends CommonInvoice $objp = $this->db->fetch_object($result); $line = new FactureLigne($this->db); - $line->rowid = $objp->rowid; + $line->id = $objp->rowid; + $line->rowid = $objp->rowid; // deprecated $line->label = $objp->custom_label; // deprecated $line->desc = $objp->description; // Description line $line->product_type = $objp->product_type; // Type of line @@ -2105,6 +2107,11 @@ class Facture extends CommonInvoice */ function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0, $txlocaltax2=0, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits=0, $fk_remise_except='', $price_base_type='HT', $pu_ttc=0, $type=self::TYPE_STANDARD, $rang=-1, $special_code=0, $origin='', $origin_id=0, $fk_parent_line=0, $fk_fournprice=null, $pa_ht=0, $label='', $array_options=0, $situation_percent=100, $fk_prev_id='', $fk_unit = null) { + // Deprecation warning + if ($label) { + dol_syslog(__METHOD__ . ": using line label is deprecated", LOG_WARNING); + } + global $mysoc, $conf, $langs; dol_syslog(get_class($this)."::addline facid=$this->id,desc=$desc,pu_ht=$pu_ht,qty=$qty,txtva=$txtva, txlocaltax1=$txlocaltax1, txlocaltax2=$txlocaltax2, fk_product=$fk_product,remise_percent=$remise_percent,date_start=$date_start,date_end=$date_end,ventil=$ventil,info_bits=$info_bits,fk_remise_except=$fk_remise_except,price_base_type=$price_base_type,pu_ttc=$pu_ttc,type=$type, fk_unit=$fk_unit", LOG_DEBUG); @@ -2289,6 +2296,11 @@ class Facture extends CommonInvoice */ function updateline($rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $txtva, $txlocaltax1=0, $txlocaltax2=0, $price_base_type='HT', $info_bits=0, $type= self::TYPE_STANDARD, $fk_parent_line=0, $skip_update_total=0, $fk_fournprice=null, $pa_ht=0, $label='', $special_code=0, $array_options=0, $situation_percent=0, $fk_unit = null) { + // Deprecation warning + if ($label) { + dol_syslog(__METHOD__ . ": using line label is deprecated", LOG_WARNING); + } + include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; global $mysoc; @@ -3203,7 +3215,7 @@ class Facture extends CommonInvoice $response = new WorkboardResponse(); $response->warning_delay=$conf->facture->client->warning_delay/60/60/24; $response->label=$langs->trans("CustomerBillsUnpaid"); - $response->url=DOL_URL_ROOT.'/compta/facture/impayees.php'; + $response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1'; $response->img=img_object($langs->trans("Bills"),"bill"); while ($obj=$this->db->fetch_object($resql)) @@ -3685,7 +3697,10 @@ class FactureLigne extends CommonInvoiceLine var $fk_facture; //! Id parent line var $fk_parent_line; - var $label; // deprecated + /** + * @deprecated + */ + var $label; //! Description ligne var $desc; @@ -3717,8 +3732,16 @@ class FactureLigne extends CommonInvoiceLine //var $remise; // Montant calcule de la remise % sur PU HT (exemple 20) // From llx_product + /** + * @deprecated + * @see product_ref + */ var $ref; // Product ref (deprecated) var $product_ref; // Product ref + /** + * @deprecated + * @see product_label + */ var $libelle; // Product label (deprecated) var $product_label; // Product label var $product_desc; // Description produit diff --git a/htdocs/compta/facture/class/facturestats.class.php b/htdocs/compta/facture/class/facturestats.class.php index 4028849b5fa90e5dc1f593e8ee0e1075291f2e11..5d8d22cfa9de8277c4b4a11d5dac71a5600364fd 100644 --- a/htdocs/compta/facture/class/facturestats.class.php +++ b/htdocs/compta/facture/class/facturestats.class.php @@ -84,6 +84,8 @@ class FactureStats extends Stats $this->where.=" AND f.fk_soc = ".$this->socid; } if ($this->userid > 0) $this->where.=' AND f.fk_user_author = '.$this->userid; + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $this->where.= " AND f.type IN (0,1,2)"; + else $this->where.= " AND f.type IN (0,1,2,3)"; } @@ -206,7 +208,7 @@ class FactureStats extends Stats $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; $sql.= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product"; - //if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + if (!$user->rights->societe->client->voir && !$this->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE ".$this->where; $sql.= " AND f.rowid = tl.fk_facture AND tl.fk_product = product.rowid"; $sql.= " AND f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'"; diff --git a/htdocs/compta/facture/document.php b/htdocs/compta/facture/document.php index 60c475647435f6dc1c958e66ca0a3bc3d99bf78f..e4f9846309a3b0110b3fdc9d9ae892da82830d00 100644 --- a/htdocs/compta/facture/document.php +++ b/htdocs/compta/facture/document.php @@ -37,6 +37,7 @@ $langs->load('propal'); $langs->load('compta'); $langs->load('other'); $langs->load("bills"); +$langs->load('companies'); $id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int')); // For backward compatibility diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 6c82dcd4d8aef33e514403b3f2339bf2cbbc9201..2668f0f1af6a493b674ac39c50a1f84cca5dd320 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -2,10 +2,11 @@ /* Copyright (C) 2002-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> - * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> - * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> + * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr> + * Copyright (C) 2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -128,6 +129,8 @@ if ($action == 'create') print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="facid" value="'.$object->id.'">'; + + dol_fiche_head(); $rowspan=4; if (! empty($conf->projet->enabled) && $object->fk_project > 0) $rowspan++; @@ -139,7 +142,7 @@ if ($action == 'create') // Third party print '<tr><td>'.$langs->trans("Customer").'</td><td>'.$object->client->getNomUrl(1,'customer').'</td>'; print '<td>'; - //print $langs->trans("NotePrivate"); + print $langs->trans("Comment"); print '</td></tr>'; // Title @@ -371,10 +374,15 @@ if ($action == 'create') print '</select>'; print '</td></tr>'; } - print '<tr><td colspan="3" align="center"><br><input type="submit" class="button" value="'.$langs->trans("Create").'"></td></tr>'; - print "</form>\n"; print "</table>\n"; + dol_fiche_end(); + + print '<div align="center"><input type="submit" class="button" value="'.$langs->trans("Create").'">'; + print ' '; + print '<input type="button" class="button" value="' . $langs->trans("Cancel") . '" onClick="javascript:history.go(-1)">'; + print '</div>'; + print "</form>\n"; } else { @@ -432,7 +440,7 @@ else $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id,'none'); print "</td></tr>"; - print '<tr><td>'.$langs->trans("Note").'</td><td colspan="3">'.nl2br($object->note_private)."</td></tr>"; + print '<tr><td>'.$langs->trans("Comment").'</td><td colspan="3">'.nl2br($object->note_private)."</td></tr>"; print "</table>"; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 08a14b75602ba4455fb58ba9d813d23c1bee31f5..a68ed8ef9038c6604ba6dea0ecd8666b252d8220 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -10,6 +10,7 @@ * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -88,6 +89,9 @@ $search_sale = GETPOST('search_sale','int'); $day = GETPOST('day','int'); $month = GETPOST('month','int'); $year = GETPOST('year','int'); +$day_lim = GETPOST('day_lim','int'); +$month_lim = GETPOST('month_lim','int'); +$year_lim = GETPOST('year_lim','int'); $filtre = GETPOST('filtre'); // Security check @@ -213,6 +217,19 @@ else if ($year > 0) { $sql.= " AND f.datef BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'"; } +if ($month_lim > 0) +{ + if ($year_lim > 0 && empty($day_lim)) + $sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,$month_lim,false))."' AND '".$db->idate(dol_get_last_day($year_lim,$month_lim,false))."'"; + else if ($year_lim > 0 && ! empty($day_lim)) + $sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_lim, $day_lim, $year_lim))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month_lim, $day_lim, $year_lim))."'"; + else + $sql.= " AND date_format(f.date_lim_reglement, '%m') = '".$month_lim."'"; +} +else if ($year_lim > 0) +{ + $sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,1,false))."' AND '".$db->idate(dol_get_last_day($year_lim,12,false))."'"; +} if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; if ($search_user > 0) { @@ -322,7 +339,11 @@ if ($resql) print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">'; $formother->select_year($year?$year:-1,'year',1, 20, 5); print '</td>'; - print '<td class="liste_titre" align="left"> </td>'; + print '<td class="liste_titre" align="center">'; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day_lim" value="'.$day_lim.'">'; + print '<input class="flat" type="text" size="1" maxlength="2" name="month_lim" value="'.$month_lim.'">'; + $formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5); + print '</td>'; print '<td class="liste_titre" align="left"><input class="flat" type="text" size="8" name="search_societe" value="'.$search_societe.'"></td>'; print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ht" value="'.$search_montant_ht.'"></td>'; print '<td class="liste_titre" align="right"> </td>'; diff --git a/htdocs/compta/facture/mergepdftool.php b/htdocs/compta/facture/mergepdftool.php index ff1bde244662557d532441bd21fec4bb76785fca..146ee53736c1e9162583d17ddd77e0e68df15384 100644 --- a/htdocs/compta/facture/mergepdftool.php +++ b/htdocs/compta/facture/mergepdftool.php @@ -275,7 +275,7 @@ if ($action == "builddoc" && $user->rights->facture->lire && ! GETPOST('button_s { $arrayofinclusion=array(); foreach($_POST['toGenerate'] as $tmppdf) $arrayofinclusion[]=preg_quote($tmppdf.'.pdf','/'); - $factures = dol_dir_list($conf->facture->dir_output,'all',1,implode('|',$arrayofinclusion),'\.meta$|\.png','date',SORT_DESC); + $factures = dol_dir_list($conf->facture->dir_output,'all',1,implode('|',$arrayofinclusion),'\.meta$|\.png','date',SORT_DESC,0,true); // liste les fichiers $files = array(); @@ -284,7 +284,7 @@ if ($action == "builddoc" && $user->rights->facture->lire && ! GETPOST('button_s { foreach($factures as $facture) { - if(strstr($facture["name"],$basename)) + if (strstr($facture["name"],$basename)) { $files[] = $conf->facture->dir_output.'/'.$basename.'/'.$facture["name"]; } diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index 6954ad462491767c6801d87c606d5fb9bebe31b5..0e1763d4b86cda0d87debf5700758db68a4c6f56 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -36,6 +36,7 @@ if (!$user->rights->facture->lire) accessforbidden(); $langs->load("bills"); $langs->load("banks"); $langs->load("withdrawals"); +$langs->load('companies'); $id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int')); // For backward compatibility $ref=GETPOST('ref','alpha'); @@ -396,7 +397,7 @@ if ($object->id > 0) } print "</td>"; print '</tr>'; - + // Montants print '<tr><td>'.$langs->trans('AmountHT').'</td>'; print '<td align="right" colspan="2" class="nowrap">'.price($object->total_ht).'</td>'; diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 3d3a8ab21979fb844ddf67733bba738d07de9d38..11296bda93eee136d92105321bf33c4350ee6598 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -775,7 +775,7 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire) $i = 0; print '<table class="noborder" width="100%">'; - print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("BillsCustomersUnpaid",$num).' <a href="'.DOL_URL_ROOT.'/compta/facture/impayees.php"><span class="badge">'.$num.'</span></a></td>'; + print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("BillsCustomersUnpaid",$num).' <a href="'.DOL_URL_ROOT.'/compta/facture/list.php?search_status=1"><span class="badge">'.$num.'</span></a></td>'; if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.$langs->trans("AmountHT").'</td>'; print '<td align="right">'.$langs->trans("AmountTTC").'</td>'; print '<td align="right">'.$langs->trans("Received").'</td>'; diff --git a/htdocs/compta/localtax/clients.php b/htdocs/compta/localtax/clients.php index 90d6cbe8599cda83449fcee00e6adb6d9bd11cfe..31eaf4375c3c75c91decc88fd9c902443c11e358 100644 --- a/htdocs/compta/localtax/clients.php +++ b/htdocs/compta/localtax/clients.php @@ -109,7 +109,7 @@ $calc=$conf->global->MAIN_INFO_LOCALTAX_CALC.$local; if ($conf->global->$calc==0 || $conf->global->$calc==1) // Calculate on invoice for goods and services { $nom=$langs->transcountry($local==1?"LT1ReportByCustomersInInputOutputMode":"LT2ReportByCustomersInInputOutputMode",$mysoc->country_code); - $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT'.$local.'Rec"); + $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT".$local."Rec"); $calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRulesLT",DOL_URL_ROOT.'/admin/company.php').')'; $period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1); if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded"); diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index 612014ac74133086f848a55d59a091de7717a273..7396c6251658863a18eb5f4be4715c51e6a21b1c 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -129,7 +129,7 @@ $calc=$conf->global->MAIN_INFO_LOCALTAX_CALC.$local; if ($conf->global->$calc==0 || $conf->global->$calc==1) // Calculate on invoice for goods and services { $nom=$langs->trans($local==1?"LT1ReportByQuartersInDueDebtMode":"LT2ReportByQuartersInDueDebtMode"); - $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT'.$local.'Rec"); + $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT".$local."Rec"); $calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRulesLT",DOL_URL_ROOT.'/admin/company.php').')'; $period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1); $prevyear=$year_start; $prevquarter=$q; @@ -161,7 +161,7 @@ if ($conf->global->$calc==0 || $conf->global->$calc==1) // Calculate on invoice if ($conf->global->$calc==2) // Invoice for goods, payment for services { $nom=$langs->trans($local==1?"LT1ReportByQuartersInInputOutputMode":"LT2ReportByQuartersInInputOutputMode"); - $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT'.$local.'Rec"); + $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT".$local."Rec"); $calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRulesLT",DOL_URL_ROOT.'/admin/company.php').')'; $period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1); $prevyear=$year_start; $prevquarter=$q; diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php index 58865c38540f93d4a37b76cff82dfed8ef055b4c..98fe402266c41f47e4d3e992a16219a7856c6706 100644 --- a/htdocs/compta/paiement.php +++ b/htdocs/compta/paiement.php @@ -6,7 +6,7 @@ * Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be> * Copyright (C) 2012 Cédric Salvador <csalvador@gpcsolutions.fr> * Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> - * Copyright (C) 2014 Teddy Andreotti <125155@supinfo.com> + * Copyright (C) 2014 Teddy Andreotti <125155@supinfo.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -403,6 +403,8 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print '<input type="hidden" name="type" id="invoice_type" value="'.$facture->type.'">'; print '<input type="hidden" name="thirdpartylabel" id="thirdpartylabel" value="'.dol_escape_htmltag($facture->client->name).'">'; + dol_fiche_head(); + print '<table class="border" width="100%">'; // Third party @@ -462,6 +464,8 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print '</table>'; + dol_fiche_end(); + /* * List of unpaid invoices */ diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 077bbde2420591d7d723e4cc6ce501498a03c881..60d669fcacfb7b29da7665a12c9f89768d113696 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -40,7 +40,16 @@ class Paiement extends CommonObject var $ref; var $facid; var $datepaye; - var $total; // deprecated + /** + * @deprecated + * @see amount, amounts + */ + var $total; + /** + * @deprecated + * @see amount, amounts + */ + var $montant; var $amount; // Total amount of payment var $amounts=array(); // Array of amounts var $author; diff --git a/htdocs/compta/salaries/document.php b/htdocs/compta/salaries/document.php new file mode 100644 index 0000000000000000000000000000000000000000..71f10388acefbf903161c1aaf891949534b22612 --- /dev/null +++ b/htdocs/compta/salaries/document.php @@ -0,0 +1,136 @@ +<?php +/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> + * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com> + * Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr> + * Copyright (C) 2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/compta/salaries/document.php + * \ingroup salaries + * \brief Page of linked files onto salaries + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/salaries.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php'; + +$langs->load("other"); +$langs->load("salaries"); +$langs->load("companies"); + +$id = GETPOST('id','int'); +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action','alpha'); +$confirm = GETPOST('confirm','alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'salaries', $id, ''); + + +// Get parameters +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); +if ($page == -1) { $page = 0; } +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortorder) $sortorder="ASC"; +if (! $sortfield) $sortfield="name"; + + +$object = new PaymentSalary($db); +$object->fetch($id, $ref); + +$upload_dir = $conf->salaries->dir_output.'/'.dol_sanitizeFileName($object->id); +$modulepart='salaries'; + + +/* + * Actions + */ + +include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; + + +/* + * View + */ + +$form = new Form($db); + +llxHeader("","",$langs->trans("SalaryPayment")); + + +if ($object->id) +{ + $object->fetch_thirdparty(); + + $head=salaries_prepare_head($object); + + dol_fiche_head($head, 'documents', $langs->trans("SalaryPayment"), 0, 'payment'); + + + // Construit liste des fichiers + $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $totalsize=0; + foreach($filearray as $key => $file) + { + $totalsize+=$file['size']; + } + + + print '<table class="border" width="100%">'; + + $linkback = '<a href="'.DOL_URL_ROOT.'/compta/salaries/index.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>'; + + // Ref + print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td>'; + print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', ''); + print '</td></tr>'; + + // Societe + //print "<tr><td>".$langs->trans("Company")."</td><td>".$object->client->getNomUrl(1)."</td></tr>"; + + print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>'; + print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; + print '</table>'; + + print '</div>'; + + $modulepart = 'salaries'; + $permission = $user->rights->salaries->write; + $param = '&id=' . $object->id; + include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; + +} +else +{ + print $langs->trans("ErrorUnknown"); +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/compta/sociales/charges.php b/htdocs/compta/sociales/charges.php index 740f6f3bf5e6045bbabe4e5900ea91e42d5ca8ac..4d638e23cf7b2663ed235dcdb694f112222372e0 100644 --- a/htdocs/compta/sociales/charges.php +++ b/htdocs/compta/sociales/charges.php @@ -501,7 +501,7 @@ if ($id > 0) } // Emettre paiement - if ($object->paye == 0 && ((price2num($object->amount) < 0 && round($resteapayer) < 0) || (price2num($object->amount) > 0 && round($resteapayer) > 0)) && $user->rights->tax->charges->creer) + if ($object->paye == 0 && ((price2num($object->amount) < 0 && price2num($resteapayer, 'MT') < 0) || (price2num($object->amount) > 0 && price2num($resteapayer, 'MT') > 0)) && $user->rights->tax->charges->creer) { print "<a class=\"butAction\" href=\"".DOL_URL_ROOT."/compta/paiement_charge.php?id=$object->id&action=create\">".$langs->trans("DoPayment")."</a>"; } diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index d58e0add8ab86b52e9264791dd89035a411ebd79..45b2c51acfa01425b1cbf1ca7a338d139f733db5 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -40,6 +40,11 @@ class PaymentSocialContribution extends CommonObject var $datec=''; var $tms=''; var $datep=''; + /** + * @deprecated + * @see amount + */ + var $total; var $amount; // Total amount of payment var $amounts=array(); // Array of amounts var $fk_typepaiement; diff --git a/htdocs/contact/canvas/actions_contactcard_common.class.php b/htdocs/contact/canvas/actions_contactcard_common.class.php index 9e6624dda72c57a0107a547af543c26f7375608f..ad628fd65747c9bf4ec3f3f5fa7b9d2e075a7215 100644 --- a/htdocs/contact/canvas/actions_contactcard_common.class.php +++ b/htdocs/contact/canvas/actions_contactcard_common.class.php @@ -51,6 +51,8 @@ abstract class ActionsContactCardCommon */ private function getInstanceDao() { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + if (! is_object($this->object)) { $modelclassfile = dol_buildpath('/'.$this->dirmodule.'/canvas/'.$this->canvas.'/dao_'.$this->targetmodule.'_'.$this->canvas.'.class.php'); diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 3d75c4a2036b6d9797067de5aa12ab86c29ec9c7..e39c5502b4d1bbaae8945336b44ec07f3a0ee5d1 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT. '/core/class/html.form.class.php'; require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; +require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; $langs->load("companies"); $langs->load("users"); $langs->load("other"); @@ -201,7 +202,11 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); - if ($ret < 0) $error++; + if ($ret < 0) + { + $error++; + $action = 'create'; + } if (! GETPOST("lastname")) { @@ -216,7 +221,17 @@ if (empty($reshook)) { $error++; $errors=array_merge($errors,($object->error?array($object->error):$object->errors)); $action = 'create'; - } + } else { + // Categories association + $contcats = GETPOST( 'contcats', 'array' ); + if (!empty( $contcats )) { + $cat = new Categorie( $db ); + foreach ($contcats as $id_category) { + $cat->fetch( $id_category ); + $cat->add_type( $object, 'contact' ); + } + } + } } if (! $error && $id > 0) @@ -309,8 +324,22 @@ if (empty($reshook)) $result = $object->update($contactid, $user); - if ($result > 0) - { + if ($result > 0) { + // Categories association + // First we delete all categories association + $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . 'categorie_contact'; + $sql .= ' WHERE fk_socpeople = ' . $object->id; + $db->query( $sql ); + + // Then we add the associated categories + $categories = GETPOST( 'contcats', 'array' ); + if (!empty( $categories )) { + $cat = new Categorie( $db ); + foreach ($categories as $id_category) { + $cat->fetch( $id_category ); + $cat->add_type( $object, 'contact' ); + } + } $object->old_lastname=''; $object->old_firstname=''; $action = 'view'; @@ -576,6 +605,15 @@ else print $form->selectarray('priv',$selectarray,(GETPOST("priv",'alpha')?GETPOST("priv",'alpha'):$object->priv),0); print '</td></tr>'; + // Categories + if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) { + print '<tr><td>' . fieldLabel( 'Categories', 'contcats' ) . '</td><td colspan="3">'; + $cate_arbo = $form->select_all_categories( Categorie::TYPE_CONTACT, null, 'parent', null, null, 1 ); + print $form->multiselectarray( 'contcats', $cate_arbo, GETPOST( 'contcats', 'array' ), null, null, null, + null, '90%' ); + print "</td></tr>"; + } + // Other attributes $parameters=array('colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -815,6 +853,20 @@ else print $object->getLibStatut(4); print '</td></tr>'; + // Categories + if (!empty( $conf->categorie->enabled ) && !empty( $user->rights->categorie->lire )) { + print '<tr><td>' . fieldLabel( 'Categories', 'contcats' ) . '</td>'; + print '<td colspan="3">'; + $cate_arbo = $form->select_all_categories( Categorie::TYPE_CONTACT, null, null, null, null, 1 ); + $c = new Categorie( $db ); + $cats = $c->containing( $object->id, Categorie::TYPE_CONTACT ); + foreach ($cats as $cat) { + $arrayselected[] = $cat->id; + } + print $form->multiselectarray( 'contcats', $cate_arbo, $arrayselected, '', 0, '', 0, '90%' ); + print "</td></tr>"; + } + // Other attributes $parameters=array('colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -1039,6 +1091,15 @@ else print $object->getLibStatut(4); print '</td>'; print '</tr>'."\n"; + + // Categories + if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) { + print '<tr><td>' . $langs->trans( "Categories" ) . '</td>'; + print '<td colspan="3">'; + print $form->showCategories( $object->id, 'contact', 1 ); + print '</td></tr>'; + } + // Other attributes $parameters=array('socid'=>$socid, 'colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -1101,18 +1162,14 @@ else { if ($user->rights->societe->contact->creer) { - print '<a class="butAction" href="card.php?id='.$object->id.'&action=edit">'.$langs->trans('Modify').'</a>'; + print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit">'.$langs->trans('Modify').'</a>'; } if (! $object->user_id && $user->rights->user->user->creer) { - print '<a class="butAction" href="card.php?id='.$object->id.'&action=create_user">'.$langs->trans("CreateDolibarrLogin").'</a>'; + print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=create_user">'.$langs->trans("CreateDolibarrLogin").'</a>'; } - if ($user->rights->societe->contact->supprimer) - { - print '<a class="butActionDelete" href="card.php?id='.$object->id.'&action=delete'.($backtopage?'&backtopage='.urlencode($backtopage):'').'">'.$langs->trans('Delete').'</a>'; - } // Activer if ($object->statut == 0 && $user->rights->societe->contact->creer) { @@ -1122,6 +1179,12 @@ else if ($object->statut == 1 && $user->rights->societe->contact->creer) { print '<a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?action=disable&id='.$object->id.'">'.$langs->trans("DisableUser").'</a>'; + } + + // Delete + if ($user->rights->societe->contact->supprimer) + { + print '<a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=delete'.($backtopage?'&backtopage='.urlencode($backtopage):'').'">'.$langs->trans('Delete').'</a>'; } } diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 72590c82e82523b97a9432dd6979c1030482c5e2..ebc167ae6d6c572e68a6d1215f3851905bdb7e64 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -50,9 +50,21 @@ class Contact extends CommonObject var $zip; var $town; - var $fk_departement; // deprecated - var $departement_code; // deprecated - var $departement; // deprecated + /** + * @deprecated + * @see state_id + */ + var $fk_departement; + /** + * @deprecated + * @see state_code + */ + var $departement_code; + /** + * @deprecated + * @see state + */ + var $departement; var $state_id; // Id of department var $state_code; // Code of department var $state; // Label of department @@ -80,7 +92,11 @@ class Contact extends CommonObject var $birthday; var $default_lang; var $note_public; // Public note - var $note; // deprecated + /** + * @deprecated + * @see note_public, note_private + */ + var $note; var $note_private; // Private note var $no_email; // 1=Don't send e-mail to this contact, 0=do @@ -629,6 +645,13 @@ class Contact extends CommonObject } } + // Retreive all extrafield for contact + // fetch optionals attributes and labels + require_once(DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'); + $extrafields=new ExtraFields($this->db); + $extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true); + $this->fetch_optionals($this->id,$extralabels); + return 1; } else @@ -895,6 +918,11 @@ class Contact extends CommonObject $result=''; $label = '<u>' . $langs->trans("ShowContact") . '</u>'; $label.= '<br><b>' . $langs->trans("Name") . ':</b> '.$this->getFullName($langs); + //if ($this->cibility_id) $label.= '<br><b>' . $langs->trans("Civility") . ':</b> '.$this->civility_id; // TODO Translate cibilty_id code + $label.= '<br><b>' . $langs->trans("Poste") . ':</b> '.$this->poste; + $label.= '<br><b>' . $langs->trans("EMail") . ':</b> '.$this->email; + $label.= '<br><b>' . $langs->trans("Phone") . ':</b> '.join(', ',array($this->phone_pro,$this->phone_mobile,$this->phone_perso)); + $label.= '<br><b>' . $langs->trans("Address") . ':</b> '.dol_format_address($this, 1, ' ', $langs); $link = '<a href="'.DOL_URL_ROOT.'/contact/card.php?id='.$this->id.$moreparam.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkend='</a>'; @@ -1101,4 +1129,4 @@ class Contact extends CommonObject return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables); } -} \ No newline at end of file +} diff --git a/htdocs/contact/document.php b/htdocs/contact/document.php index 2241a1e67f1fe284d6d172335628bd90ecd7fadc..9a5ab3b0f0761d42054e5bc063125bd0dcd0168a 100644 --- a/htdocs/contact/document.php +++ b/htdocs/contact/document.php @@ -80,8 +80,9 @@ llxHeader("",$langs->trans("Contact"), $helpurl); if ($object->id) { $head = contact_prepare_head($object); + $title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses")); - dol_fiche_head($head, 'documents', $langs->trans("Contact"), 0, 'contact'); + dol_fiche_head($head, 'documents', $title, 0, 'contact'); // Construit liste des fichiers diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 72eee453c9fbb348058fa5cb0c300b951c032a33..11d46ad3fc470e139cc46acb0b8557300ee7a3a8 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -159,7 +159,7 @@ else if ($search_priv == '1') $sql .= " AND (p.priv='1' AND p.fk_user_creat=".$user->id.")"; } -if ($search_categ > 0) $sql.= " AND cs.fk_categorie = ".$search_categ; +if ($search_categ > 0) $sql.= " AND cs.fk_categorie = ".$db->escape($search_categ); if ($search_categ == -2) $sql.= " AND cs.fk_categorie IS NULL"; if ($search_firstlast_only) { @@ -256,11 +256,11 @@ if ($result) { $contactstatic=new Contact($db); - $param ='&begin='.urlencode($begin).'&view='.urlencode($view).'&userid='.urlencode($userid).'&contactname='.urlencode($sall); - $param.='&type='.urlencode($type).'&view='.urlencode($view).'&search_lastname='.urlencode($search_lastname).'&search_firstname='.urlencode($search_firstname).'&search_societe='.urlencode($search_societe).'&search_email='.urlencode($search_email); - if (!empty($search_categ)) $param.='&search_categ='.$search_categ; - if ($search_status != '') $param.='&search_status='.$search_status; - if ($search_priv == '0' || $search_priv == '1') $param.="&search_priv=".urlencode($search_priv); + $param ='&begin='.htmlspecialchars($begin).'&view='.htmlspecialchars($view).'&userid='.htmlspecialchars($userid).'&contactname='.htmlspecialchars($sall); + $param.='&type='.htmlspecialchars($type).'&view='.htmlspecialchars($view).'&search_lastname='.htmlspecialchars($search_lastname).'&search_firstname='.htmlspecialchars($search_firstname).'&search_societe='.htmlspecialchars($search_societe).'&search_email='.htmlspecialchars($search_email); + if (!empty($search_categ)) $param.='&search_categ='.htmlspecialchars($search_categ); + if ($search_status != '') $param.='&search_status='.htmlspecialchars($search_status); + if ($search_priv == '0' || $search_priv == '1') $param.="&search_priv=".htmlspecialchars($search_priv); $num = $db->num_rows($result); $i = 0; @@ -269,7 +269,7 @@ if ($result) print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="view" value="'.$view.'">'; + print '<input type="hidden" name="view" value="'.htmlspecialchars($view).'">'; print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; @@ -317,36 +317,36 @@ if ($result) // Ligne des champs de filtres print '<tr class="liste_titre">'; print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_lastname" size="9" value="'.$search_lastname.'">'; + print '<input class="flat" type="text" name="search_lastname" size="9" value="'.dol_escape_htmltag($search_lastname).'">'; print '</td>'; print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_firstname" size="9" value="'.$search_firstname.'">'; + print '<input class="flat" type="text" name="search_firstname" size="9" value="'.dol_escape_htmltag($search_firstname).'">'; print '</td>'; print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_poste" size="9" value="'.$search_poste.'">'; + print '<input class="flat" type="text" name="search_poste" size="9" value="'.dol_escape_htmltag($search_poste).'">'; print '</td>'; if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_societe" size="9" value="'.$search_societe.'">'; + print '<input class="flat" type="text" name="search_societe" size="9" value="'.dol_escape_htmltag($search_societe).'">'; print '</td>'; } print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_phonepro" size="8" value="'.$search_phonepro.'">'; + print '<input class="flat" type="text" name="search_phonepro" size="8" value="'.dol_escape_htmltag($search_phonepro).'">'; print '</td>'; print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_phonemob" size="8" value="'.$search_phonemob.'">'; + print '<input class="flat" type="text" name="search_phonemob" size="8" value="'.dol_escape_htmltag($search_phonemob).'">'; print '</td>'; print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_fax" size="8" value="'.$search_fax.'">'; + print '<input class="flat" type="text" name="search_fax" size="8" value="'.dol_escape_htmltag($search_fax).'">'; print '</td>'; print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_email" size="8" value="'.$search_email.'">'; + print '<input class="flat" type="text" name="search_email" size="8" value="'.dol_escape_htmltag($search_email).'">'; print '</td>'; if (! empty($conf->skype->enabled)) { print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="search_skype" size="8" value="'.$search_skype.'">'; + print '<input class="flat" type="text" name="search_skype" size="8" value="'.dol_escape_htmltag($search_skype).'">'; print '</td>'; } print '<td class="liste_titre"> </td>'; diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index dd48b27684f4848e1e3cc3b94664daa027ffd8f9..6bf7dcaeacc0c08f7a70862cd714c681da09907b 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -823,10 +823,8 @@ else if ($action == 'remove_file' && $user->rights->contrat->creer) { $upload_dir = $conf->contrat->dir_output; $file = $upload_dir . '/' . GETPOST('file'); $ret = dol_delete_file($file, 0, 0, 0, $object); - if ($ret) - setEventMessage($langs->trans("FileWasRemoved", GETPOST('file'))); - else - setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors'); + if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file'))); + else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors'); } } @@ -1873,10 +1871,13 @@ else $somethingshown = $formfile->show_documents('contract', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); - /* - * Linked object block - */ - $somethingshown=$object->showLinkedObjectBlock(); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object); + if ($linktoelem) print '<br>'.$linktoelem; + print '</div><div class="fichehalfright"><div class="ficheaddleft">'; diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 08bc8387387985648e621865448385ba5872166e..fb0038b509f49cbaecad4abf6ae4cb94a07525ec 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -154,6 +154,7 @@ class Contrat extends CommonObject /** * @deprecated Use fk_project instead + * @see fk_project */ var $fk_projet; @@ -1642,6 +1643,8 @@ class Contrat extends CommonObject */ function update_statut($user) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + // If draft, we keep it (should not happen) if ($this->statut == 0) return 1; @@ -2165,6 +2168,7 @@ class ContratLigne extends CommonObjectLine /** * @var string * @deprecated Use $label instead + * @see label */ public $libelle; @@ -2189,6 +2193,7 @@ class ContratLigne extends CommonObjectLine /** * @var float * @deprecated Use $price_ht instead + * @see price_ht */ public $price; diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 25b5d80fa983889a0afa96b3718596c34f802bdc..669f2b097757bc55a8c89a3520c8045171432db9 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -100,7 +100,8 @@ $sql.= ", ".MAIN_DB_PREFIX."contrat as c"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat"; $sql.= " WHERE c.fk_soc = s.rowid "; $sql.= " AND c.entity = ".$conf->entity; -if ($socid) $sql.= " AND s.rowid = ".$socid; +if ($socid) $sql.= " AND s.rowid = ".$db->escape($socid); +if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if ($search_name) { $sql .= natural_search('s.nom', $search_name); @@ -112,7 +113,7 @@ if (!empty($search_ref_supplier)) { $sql .= natural_search(array('c.ref_supplier'), $search_ref_supplier); } -if ($search_sale > 0) +if ($search_sale > 0) { $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; } @@ -131,7 +132,7 @@ if ($resql) $i = 0; print_barre_liste($langs->trans("ListOfContracts"), $page, $_SERVER["PHP_SELF"], '&search_contract='.$search_contract.'&search_name='.$search_name, $sortfield, $sortorder,'',$num,$totalnboflines,'title_commercial.png'); - + print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">'; print '<table class="liste" width="100%">'; @@ -144,7 +145,7 @@ if ($resql) $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); $moreforfilter.=' '; } - + if ($moreforfilter) { print '<tr class="liste_titre">'; @@ -152,13 +153,14 @@ if ($resql) print $moreforfilter; print '</td></tr>'; } - + print '<tr class="liste_titre">'; - $param='&search_contract='.$search_contract; - $param.='&search_name='.$search_name; - $param.='&search_ref_supplier='.$search_ref_supplier; + + $param='&search_contract='.$search_contract; + $param.='&search_name='.$search_name; + $param.='&search_ref_supplier='.$search_ref_supplier; $param.='&search_sale=' .$search_sale; - + print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "c.rowid","","$param",'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("RefCustomer"), $_SERVER["PHP_SELF"], "c.ref_supplier","","$param",'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom","","$param",'',$sortfield,$sortorder); @@ -175,13 +177,13 @@ if ($resql) print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<tr class="liste_titre">'; print '<td class="liste_titre">'; - print '<input type="text" class="flat" size="3" name="search_contract" value="'.$search_contract.'">'; + print '<input type="text" class="flat" size="3" name="search_contract" value="'.dol_escape_htmltag($search_contract).'">'; print '</td>'; print '<td class="liste_titre">'; - print '<input type="text" class="flat" size="7" name="search_ref_supplier value="'.$search_ref_supplier.'">'; + print '<input type="text" class="flat" size="7" name="search_ref_supplier value="'.dol_escape_htmltag($search_ref_supplier).'">'; print '</td>'; print '<td class="liste_titre">'; - print '<input type="text" class="flat" size="24" name="search_name" value="'.$search_name.'">'; + print '<input type="text" class="flat" size="24" name="search_name" value="'.dol_escape_htmltag($search_name).'">'; print '</td>'; print '<td class="liste_titre"> </td>'; //print '<td class="liste_titre"> </td>'; @@ -202,7 +204,7 @@ if ($resql) print '<td>'.$obj->ref_supplier.'</td>'; print '<td><a href="../comm/card.php?socid='.$obj->socid.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->name.'</a></td>'; //print '<td align="center">'.dol_print_date($obj->datec).'</td>'; - + // Sales Rapresentatives print '<td>'; if($obj->socid) @@ -237,8 +239,8 @@ if ($resql) print ' '; } print '</td>'; - - + + print '<td align="center">'.dol_print_date($db->jdate($obj->date_contrat)).'</td>'; //print '<td align="center">'.$staticcontrat->LibStatut($obj->statut,3).'</td>'; print '<td align="center">'.($obj->nb_initial>0?$obj->nb_initial:'').'</td>'; diff --git a/htdocs/core/actions_extrafields.inc.php b/htdocs/core/actions_extrafields.inc.php index 03d724b9bba4c67fa91a8e3954d08adb611c318e..4c5f0b512d24d24271ca45d8c064261a12dd6a7c 100644 --- a/htdocs/core/actions_extrafields.inc.php +++ b/htdocs/core/actions_extrafields.inc.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2011-2012 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2011-2015 Laurent Destailleur <eldy@users.sourceforge.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -148,7 +148,21 @@ if ($action == 'add') } } - $result=$extrafields->addExtraField($_POST['attrname'],$_POST['label'],$_POST['type'],$_POST['pos'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$default_value,$params,(GETPOST('alwayseditable')?1:0)); + $result=$extrafields->addExtraField( + GETPOST('attrname'), + GETPOST('label'), + GETPOST('type'), + GETPOST('pos'), + $extrasize, + $elementtype, + (GETPOST('unique')?1:0), + (GETPOST('required')?1:0), + $default_value, + $params, + (GETPOST('alwayseditable')?1:0), + (GETPOST('perms')?GETPOST('perms'):''), + (GETPOST('list')?1:0) + ); if ($result > 0) { setEventMessage($langs->trans('SetupSaved')); @@ -285,7 +299,20 @@ if ($action == 'update') $params['options'][$key] = $value; } } - $result=$extrafields->update($_POST['attrname'],$_POST['label'],$_POST['type'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$pos,$params,(GETPOST('alwayseditable')?1:0)); + $result=$extrafields->update( + GETPOST('attrname'), + GETPOST('label'), + GETPOST('type'), + $extrasize, + $elementtype, + (GETPOST('unique')?1:0), + (GETPOST('required')?1:0), + $pos, + $params, + (GETPOST('alwayseditable')?1:0), + (GETPOST('perms')?GETPOST('perms'):''), + (GETPOST('list')?1:0) + ); if ($result > 0) { setEventMessage($langs->trans('SetupSaved')); diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 6e41384dbce9fd856019ba63a7ddf9e5d6aa8c98..1aadc47b79ee190a46d8d9bd4c7677a47fa0173d 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -37,7 +37,7 @@ class CMailFile { var $subject; // Topic: Subject of email - var $addr_from; // From: Label and EMail of sender (must include '<>'). For example '<myemail@mydomain.com>' or 'John Doe <myemail@mydomain.com>' or '<myemail+trackingid@mydomain.com>') + var $addr_from; // From: Label and EMail of sender (must include '<>'). For example '<myemail@example.com>' or 'John Doe <myemail@example.com>' or '<myemail+trackingid@example.com>') // Sender: Who send the email ("Sender" has sent emails on behalf of "From"). // Use it when the "From" is an email of a domain that is a SPF protected domain, and sending smtp server is not this domain. In such case, use for Sender an email of the protected domain. // Return-Path: Email where to send bounds. @@ -387,7 +387,7 @@ class CMailFile // If Windows, sendmail_from must be defined if (isset($_SERVER["WINDIR"])) { - if (empty($this->addr_from)) $this->addr_from = 'robot@mydomain.com'; + if (empty($this->addr_from)) $this->addr_from = 'robot@example.com'; @ini_set('sendmail_from',$this->getValidAddress($this->addr_from,2)); } diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 22a33f4d2a8f0a9f59500d2cc85117a5356f9b9f..d0730149b36217159e0e759ef0185db1c0d5e296 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -118,6 +118,7 @@ abstract class CommonDocGenerator 'mycompany_idprof5'=>$mysoc->idprof5, 'mycompany_idprof6'=>$mysoc->idprof6, 'mycompany_vatnumber'=>$mysoc->tva_intra, + 'mycompany_object'=>$mysoc->object, // Only private not exists for "mysoc" 'mycompany_note_private'=>$mysoc->note_private, diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 0bd0625ee5d997041a6b02065f7b3edd794b1388..8ae7332fc6ea5c4e1f408de1662e5f5928f4812a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7,7 +7,7 @@ * Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr> * Copyright (C) 2011-2014 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2012-2015 Marcos García <marcosgdf@gmail.com> - * Copyright (C) 2012-2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> + * Copyright (C) 2012-2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2012 Cedric Salvador <csalvador@gpcsolutions.fr> * * This program is free software; you can redistribute it and/or modify @@ -44,6 +44,7 @@ abstract class CommonObject /** * @var string Error string * @deprecated Use instead the array of error strings + * @see errors */ public $error; @@ -82,7 +83,7 @@ abstract class CommonObject public $errors=array(); /** - * @var string Can be used to pass information when only object is provided to method + * @var string[] Can be used to pass information when only object is provided to method */ public $context=array(); @@ -96,7 +97,24 @@ abstract class CommonObject public $lastname; public $firstname; public $civility_id; + /** + * @deprecated + * @see thirdparty + */ + public $client; + /** + * @var Societe + */ public $thirdparty; + /** + * @deprecated + * @see project + */ + public $projet; + /** + * @var Project + */ + public $project; // No constructor as it is an abstract class @@ -113,13 +131,15 @@ abstract class CommonObject */ static function isExistingObject($element, $id, $ref='', $ref_ext='') { - global $db; + global $db,$conf; $sql = "SELECT rowid, ref, ref_ext"; $sql.= " FROM ".MAIN_DB_PREFIX.$element; - if ($id > 0) $sql.= " WHERE rowid = ".$db->escape($id); - else if ($ref) $sql.= " WHERE ref = '".$db->escape($ref)."'"; - else if ($ref_ext) $sql.= " WHERE ref_ext = '".$db->escape($ref_ext)."'"; + $sql.= " WHERE entity IN (".getEntity($element).")" ; + + if ($id > 0) $sql.= " AND rowid = ".$db->escape($id); + else if ($ref) $sql.= " AND ref = '".$db->escape($ref)."'"; + else if ($ref_ext) $sql.= " AND ref_ext = '".$db->escape($ref_ext)."'"; else { $error='ErrorWrongParameters'; dol_print_error(get_class()."::isExistingObject ".$error, LOG_ERR); @@ -525,9 +545,9 @@ abstract class CommonObject * Return array with list of possible values for type of contacts * * @param string $source 'internal', 'external' or 'all' - * @param string $order Sort order by : 'code' or 'rowid' - * @param string $option 0=Return array id->label, 1=Return array code->label - * @param string $activeonly 0=all status of contact, 1=only the active + * @param string $order Sort order by 'code' or 'rowid' + * @param int $option 0=Return array id->label, 1=Return array code->label + * @param int $activeonly 0=all status of contact, 1=only the active * @param string $code Type of contact (Example: 'CUSTOMER', 'SERVICE') * @return array Array list of type of contacts (id->label if option=0, code->label if option=1) */ @@ -541,7 +561,7 @@ abstract class CommonObject $sql = "SELECT DISTINCT tc.rowid, tc.code, tc.libelle"; $sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; $sql.= " WHERE tc.element='".$this->element."'"; - if ($activeonly == 1) $sql.= " AND tc.active=1"; // only the active type + if ($activeonly == 1) $sql.= " AND tc.active=1"; // only the active types if (! empty($source) && $source != 'all') $sql.= " AND tc.source='".$source."'"; if (! empty($code)) $sql.= " AND tc.code='".$code."'"; $sql.= " ORDER by tc.".$order; @@ -626,12 +646,12 @@ abstract class CommonObject } /** - * Charge le contact d'id $id dans this->contact + * Load object contact with id=$this->contactid into $this->contact * * @param int $contactid Id du contact. Use this->contactid if empty. * @return int <0 if KO, >0 if OK */ - function fetch_contact($contactid='') + function fetch_contact($contactid=null) { if (empty($contactid)) $contactid=$this->contactid; @@ -759,10 +779,14 @@ abstract class CommonObject */ function fetch_projet() { + include_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; + + if (empty($this->fk_project) && ! empty($this->fk_projet)) $this->fk_project = $this->fk_projet; // For backward compatibility if (empty($this->fk_project)) return 0; $project = new Project($this->db); $result = $project->fetch($this->fk_project); + $this->projet = $project; // deprecated $this->project = $project; return $result; @@ -858,14 +882,14 @@ abstract class CommonObject /** * Update a specific field into database * - * @param string $field Field to update - * @param mixed $value New value - * @param string $table To force other table element or element line (should not be used) - * @param int $id To force other object id (should not be used) - * @param string $format Data format ('text', 'date'). 'text' is used if not defined - * @param string $id_field To force rowid field name. 'rowid' is used it not defined - * @param string $user Update last update fields also if user object provided - * @return int <0 if KO, >0 if OK + * @param string $field Field to update + * @param mixed $value New value + * @param string $table To force other table element or element line (should not be used) + * @param int $id To force other object id (should not be used) + * @param string $format Data format ('text', 'date'). 'text' is used if not defined + * @param string $id_field To force rowid field name. 'rowid' is used it not defined + * @param User|string $user Update last update fields also if user object provided + * @return int <0 if KO, >0 if OK */ function setValueFrom($field, $value, $table='', $id='', $format='', $id_field='', $user='') { @@ -1639,9 +1663,10 @@ abstract class CommonObject /** * Update public note (kept for backward compatibility) * - * @param string $note New value for note - * @return int <0 if KO, >0 if OK - * @deprecated + * @param string $note New value for note + * @return int <0 if KO, >0 if OK + * @deprecated + * @see update_note() */ function update_note_public($note) { @@ -1655,10 +1680,10 @@ abstract class CommonObject * @param int $exclspec >0 = Exclude special product (product_type=9) * @param string $roundingadjust 'none'=Do nothing, 'auto'=Use default method (MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND if defined, or '0'), '0'=Force use total of rounding, '1'=Force use rounding of total * @param int $nodatabaseupdate 1=Do not update database. Update only properties of object. - * @param Societe $seller If roundingadjust is '0' or '1', it means we recalculate total for lines before calculating total for object. For this, we need seller object. + * @param Societe $seller If roundingadjust is '0' or '1', it means we recalculate total for lines before calculating total for object and for this, we need seller object. * @return int <0 if KO, >0 if OK */ - function update_price($exclspec=0,$roundingadjust='none',$nodatabaseupdate=0,$seller='') + function update_price($exclspec=0,$roundingadjust='none',$nodatabaseupdate=0,$seller=null) { global $conf; @@ -2555,88 +2580,19 @@ abstract class CommonObject // TODO: All functions here must be redesigned and moved as they are not business functions but output functions // -------------------- - /* This is to show linked object block */ - /** - * Show linked object block - * TODO Move this into html.class.php - * But for the moment we don't know if it's possible as we keep a method available on overloaded objects. + * Show linked object block. * - * @return int + * @return int <0 if KO, >0 if OK + * @deprecated 3.8 Use instead $form->shoLinkedObjectBlock($object) */ function showLinkedObjectBlock() { - global $conf,$langs,$hookmanager; - global $bc; - - $this->fetchObjectLinked(); - - // Bypass the default method - $hookmanager->initHooks(array('commonobject')); - $parameters=array(); - $reshook=$hookmanager->executeHooks('showLinkedObjectBlock',$parameters,$this,$action); // Note that $action and $object may have been modified by hook - - if (empty($reshook)) - { - $num = count($this->linkedObjects); - - foreach($this->linkedObjects as $objecttype => $objects) - { - $tplpath = $element = $subelement = $objecttype; - - if (preg_match('/^([^_]+)_([^_]+)/i',$objecttype,$regs)) - { - $element = $regs[1]; - $subelement = $regs[2]; - $tplpath = $element.'/'.$subelement; - } - - // To work with non standard path - if ($objecttype == 'facture') { - $tplpath = 'compta/'.$element; - if (empty($conf->facture->enabled)) continue; // Do not show if module disabled - } - else if ($objecttype == 'propal') { - $tplpath = 'comm/'.$element; - if (empty($conf->propal->enabled)) continue; // Do not show if module disabled - } - else if ($objecttype == 'askpricesupplier') { - $tplpath = 'comm/'.$element; - if (empty($conf->askpricesupplier->enabled)) continue; // Do not show if module disabled - } - else if ($objecttype == 'shipping' || $objecttype == 'shipment') { - $tplpath = 'expedition'; - if (empty($conf->expedition->enabled)) continue; // Do not show if module disabled - } - else if ($objecttype == 'delivery') { - $tplpath = 'livraison'; - if (empty($conf->expedition->enabled)) continue; // Do not show if module disabled - } - else if ($objecttype == 'invoice_supplier') { - $tplpath = 'fourn/facture'; - } - else if ($objecttype == 'order_supplier') { - $tplpath = 'fourn/commande'; - } - - global $linkedObjectBlock; - $linkedObjectBlock = $objects; - - // Output template part (modules that overwrite templates must declare this into descriptor) - $dirtpls=array_merge($conf->modules_parts['tpl'],array('/'.$tplpath.'/tpl')); - foreach($dirtpls as $reldir) - { - $res=@include dol_buildpath($reldir.'/linkedobjectblock.tpl.php'); - if ($res) break; - } - } - - return $num; - } + global $form; + return $form->showLinkedObjectBlock($this); } - /* This is to show add lines */ /** @@ -2684,9 +2640,9 @@ abstract class CommonObject * But for the moment we don't know if it'st possible as we keep a method available on overloaded objects. * * @param string $action Action code - * @param string $seller Object of seller third party - * @param string $buyer Object of buyer third party - * @param string $selected Object line selected + * @param Societe $seller Object of seller third party + * @param Societe $buyer Object of buyer third party + * @param int $selected Object line selected * @param int $dateSelector 1=Show also date range input fields * @return void */ @@ -2799,16 +2755,16 @@ abstract class CommonObject * Return HTML content of a detail line * TODO Move this into an output class file (htmlline.class.php) * - * @param string $action GET/POST action - * @param CommonObjectLine $line Selected object line to output - * @param string $var Is it a an odd line (true) - * @param int $num Number of line (0) - * @param int $i I - * @param int $dateSelector 1=Show also date range input fields - * @param string $seller Object of seller third party - * @param string $buyer Object of buyer third party - * @param string $selected Object line selected - * @param object $extrafieldsline Object of extrafield line attribute + * @param string $action GET/POST action + * @param CommonObjectLine $line Selected object line to output + * @param string $var Is it a an odd line (true) + * @param int $num Number of line (0) + * @param int $i I + * @param int $dateSelector 1=Show also date range input fields + * @param Societe $seller Object of seller third party + * @param Societe $buyer Object of buyer third party + * @param int $selected Object line selected + * @param object $extrafieldsline Object of extrafield line attribute * @return void */ function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0) @@ -3083,228 +3039,24 @@ abstract class CommonObject } - /** - * get Margin info - * - * @param string $force_price True of not - * @return mixed Array with info - */ - function getMarginInfos($force_price=false) - { - global $conf; - require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; - - $marginInfos = array( - 'pa_products' => 0, - 'pv_products' => 0, - 'margin_on_products' => 0, - 'margin_rate_products' => '', - 'mark_rate_products' => '', - 'pa_services' => 0, - 'pv_services' => 0, - 'margin_on_services' => 0, - 'margin_rate_services' => '', - 'mark_rate_services' => '', - 'pa_total' => 0, - 'pv_total' => 0, - 'total_margin' => 0, - 'total_margin_rate' => '', - 'total_mark_rate' => '' - ); - - foreach($this->lines as $line) { - if (empty($line->pa_ht) && isset($line->fk_fournprice) && !$force_price) { - $product = new ProductFournisseur($this->db); - if ($product->fetch_product_fournisseur_price($line->fk_fournprice)) - $line->pa_ht = $product->fourn_unitprice * (1 - $product->fourn_remise_percent / 100); - if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == "2" && $product->fourn_unitcharges > 0) - $line->pa_ht += $product->fourn_unitcharges; - } - // si prix d'achat non renseigné et devrait l'être, alors prix achat = prix vente - if ((!isset($line->pa_ht) || $line->pa_ht == 0) && $line->subprice > 0 && (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1)) { - $line->pa_ht = $line->subprice * (1 - ($line->remise_percent / 100)); - } - - // calcul des marges - if (isset($line->fk_remise_except) && isset($conf->global->MARGIN_METHODE_FOR_DISCOUNT)) { // remise - $pa = $line->qty * $line->pa_ht; - $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100); - if ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '1') { // remise globale considérée comme produit - $marginInfos['pa_products'] += $pa; - $marginInfos['pv_products'] += $pv; - $marginInfos['pa_total'] += $pa; - $marginInfos['pv_total'] += $pv; - // if credit note, margin = -1 * (abs(selling_price) - buying_price) - if ($pv < 0) - $marginInfos['margin_on_products'] += -1 * (abs($pv) - $pa); - else - $marginInfos['margin_on_products'] += $pv - $pa; - } - elseif ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '2') { // remise globale considérée comme service - $marginInfos['pa_services'] += $pa; - $marginInfos['pv_services'] += $pv; - $marginInfos['pa_total'] += $pa; - $marginInfos['pv_total'] += $pv; - // if credit note, margin = -1 * (abs(selling_price) - buying_price) - if ($pv < 0) - $marginInfos['margin_on_services'] += -1 * (abs($pv) - $pa); - else - $marginInfos['margin_on_services'] += $pv - $pa; - } - elseif ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '3') { // remise globale prise en compte uniqt sur total - $marginInfos['pa_total'] += $pa; - $marginInfos['pv_total'] += $pv; - } - } - else { - $type=$line->product_type?$line->product_type:$line->fk_product_type; - if ($type == 0) { // product - $pa = $line->qty * $line->pa_ht; - $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100); - $marginInfos['pa_products'] += $pa; - $marginInfos['pv_products'] += $pv; - $marginInfos['pa_total'] += $pa; - $marginInfos['pv_total'] += $pv; - // if credit note, margin = -1 * (abs(selling_price) - buying_price) - if ($pv < 0) - $marginInfos['margin_on_products'] += -1 * (abs($pv) - $pa); - else - $marginInfos['margin_on_products'] += $pv - $pa; - } - elseif ($type == 1) { // service - $pa = $line->qty * $line->pa_ht; - $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100); - $marginInfos['pa_services'] += $pa; - $marginInfos['pv_services'] += $pv; - $marginInfos['pa_total'] += $pa; - $marginInfos['pv_total'] += $pv; - // if credit note, margin = -1 * (abs(selling_price) - buying_price) - if ($pv < 0) - $marginInfos['margin_on_services'] += -1 * (abs($pv) - $pa); - else - $marginInfos['margin_on_services'] += $pv - $pa; - } - } - } - if ($marginInfos['pa_products'] > 0) - $marginInfos['margin_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pa_products']; - if ($marginInfos['pv_products'] > 0) - $marginInfos['mark_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pv_products']; - - if ($marginInfos['pa_services'] > 0) - $marginInfos['margin_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pa_services']; - if ($marginInfos['pv_services'] > 0) - $marginInfos['mark_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pv_services']; - - // if credit note, margin = -1 * (abs(selling_price) - buying_price) - if ($marginInfos['pv_total'] < 0) - $marginInfos['total_margin'] = -1 * (abs($marginInfos['pv_total']) - $marginInfos['pa_total']); - else - $marginInfos['total_margin'] = $marginInfos['pv_total'] - $marginInfos['pa_total']; - if ($marginInfos['pa_total'] > 0) - $marginInfos['total_margin_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pa_total']; - if ($marginInfos['pv_total'] > 0) - $marginInfos['total_mark_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pv_total']; - - return $marginInfos; - } - /** * Show the array with all margin infos * - * @param string $force_price Force price - * @return void + * @param boolean $force_price Force price + * @return void + * @deprecated 3.8 Load FormMargin class and make a direct call to displayMarginInfos */ function displayMarginInfos($force_price=false) { - global $langs, $conf, $user; - - if (! empty($user->societe_id)) return; - - if (! $user->rights->margins->liretous) return; - - $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT); - - $marginInfo = $this->getMarginInfos($force_price); - - if (! empty($conf->global->MARGIN_ADD_SHOWHIDE_BUTTON)) // TODO Warning this feature rely on an external js file that may be removed. Using native js function document.cookie should be better - { - print $langs->trans('ShowMarginInfos').' : '; - $hidemargininfos = $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW']; - print '<span id="showMarginInfos" class="linkobject '.(!empty($hidemargininfos)?'':'hideobject').'">'.img_picto($langs->trans("Disabled"),'switch_off').'</span>'; - print '<span id="hideMarginInfos" class="linkobject '.(!empty($hidemargininfos)?'hideobject':'').'">'.img_picto($langs->trans("Enabled"),'switch_on').'</span>'; - - print '<script>$(document).ready(function() { - $("span#showMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 0); $(".margininfos").show(); $("span#showMarginInfos").addClass("hideobject"); $("span#hideMarginInfos").removeClass("hideobject");})}); - $("span#hideMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 1); $(".margininfos").hide(); $("span#hideMarginInfos").addClass("hideobject"); $("span#showMarginInfos").removeClass("hideobject");})}); - });</script>'; - if (!empty($hidemargininfos)) print '<script>$(document).ready(function() {$(".margininfos").hide();});</script>'; - } - - print '<table class="nobordernopadding margintable" width="100%">'; - print '<tr class="liste_titre">'; - print '<td class="liste_titre">'.$langs->trans('Margins').'</td>'; - print '<td class="liste_titre" align="right">'.$langs->trans('SellingPrice').'</td>'; - if ($conf->global->MARGIN_TYPE == "1") - print '<td class="liste_titre" align="right">'.$langs->trans('BuyingPrice').'</td>'; - else - print '<td class="liste_titre" align="right">'.$langs->trans('CostPrice').'</td>'; - print '<td class="liste_titre" align="right">'.$langs->trans('Margin').'</td>'; - if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print '<td class="liste_titre" align="right">'.$langs->trans('MarginRate').'</td>'; - if (! empty($conf->global->DISPLAY_MARK_RATES)) - print '<td class="liste_titre" align="right">'.$langs->trans('MarkRate').'</td>'; - print '</tr>'; - - if (! empty($conf->product->enabled)) - { - //if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) { - print '<tr class="impair">'; - print '<td>'.$langs->trans('MarginOnProducts').'</td>'; - print '<td align="right">'.price($marginInfo['pv_products'], null, null, null, null, $rounding).'</td>'; - print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>'; - print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>'; - if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>'; - if (! empty($conf->global->DISPLAY_MARK_RATES)) - print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>'; - print '</tr>'; - } - - if (! empty($conf->service->enabled)) - { - print '<tr class="pair">'; - print '<td>'.$langs->trans('MarginOnServices').'</td>'; - print '<td align="right">'.price($marginInfo['pv_services'], null, null, null, null, $rounding).'</td>'; - print '<td align="right">'.price($marginInfo['pa_services'], null, null, null, null, $rounding).'</td>'; - print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>'; - if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>'; - if (! empty($conf->global->DISPLAY_MARK_RATES)) - print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>'; - print '</tr>'; - } - - if (! empty($conf->product->enabled) && ! empty($conf->service->enabled)) - { - print '<tr class="impair">'; - print '<td>'.$langs->trans('TotalMargin').'</td>'; - print '<td align="right">'.price($marginInfo['pv_total'], null, null, null, null, $rounding).'</td>'; - print '<td align="right">'.price($marginInfo['pa_total'], null, null, null, null, $rounding).'</td>'; - print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>'; - if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>'; - if (! empty($conf->global->DISPLAY_MARK_RATES)) - print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>'; - print '</tr>'; - } - print '</table>'; + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmargin.class.php'; + $formmargin=new FormMargin($this->db); + $formmargin->displayMarginInfos($this, $force_price); } /** * Add resources to the current object : add entry into llx_element_resources - *Need $this->element & $this->id + * Need $this->element & $this->id * * @param int $resource_id Resource id * @param string $resource_element Resource element @@ -3726,7 +3478,7 @@ abstract class CommonObject { $attributeKey = substr($key,8); // Remove 'options_' prefix $attributeType = $extrafields->attribute_type[$attributeKey]; - $attributeSize = $extrafields->attribute_size[$attributeKey]; + //$attributeSize = $extrafields->attribute_size[$attributeKey]; Not required to insert an extrafield value. Only used for definition. $attributeLabel = $extrafields->attribute_label[$attributeKey]; $attributeParam = $extrafields->attribute_param[$attributeKey]; switch ($attributeType) @@ -3751,19 +3503,19 @@ abstract class CommonObject case 'datetime': $this->array_options[$key]=$this->db->idate($this->array_options[$key]); break; - case 'link': - $param_list=array_keys($attributeParam ['options']); - // 0 : ObjectName - // 1 : classPath - $InfoFieldList = explode(":", $param_list[0]); - dol_include_once($InfoFieldList[1]); - $object = new $InfoFieldList[0]($this->db); - if ($value) - { - $object->fetch(0,$value); - $this->array_options[$key]=$object->id; - } - break; + case 'link': + $param_list=array_keys($attributeParam ['options']); + // 0 : ObjectName + // 1 : classPath + $InfoFieldList = explode(":", $param_list[0]); + dol_include_once($InfoFieldList[1]); + $object = new $InfoFieldList[0]($this->db); + if ($value) + { + $object->fetch(0,$value); + $this->array_options[$key]=$object->id; + } + break; } } $this->db->begin(); @@ -3771,6 +3523,7 @@ abstract class CommonObject $sql_del = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element."_extrafields WHERE fk_object = ".$this->id; dol_syslog(get_class($this)."::insertExtraFields delete", LOG_DEBUG); $this->db->query($sql_del); + $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."_extrafields (fk_object"; foreach($this->array_options as $key => $value) { @@ -3825,7 +3578,7 @@ abstract class CommonObject * * @return string */ - function showOptionals($extrafields, $mode='view', $params=0, $keyprefix='') + function showOptionals($extrafields, $mode='view', $params=null, $keyprefix='') { global $_POST, $conf; @@ -3955,15 +3708,16 @@ abstract class CommonObject * This function is meant to be called from replaceThirdparty with the appropiate tables * Column name fk_soc MUST be used to identify thirdparties * - * @param DoliDB $db Database handler - * @param int $origin_id Old thirdparty id - * @param int $dest_id New thirdparty id - * @param array $tables Tables that need to be changed + * @param DoliDB $db Database handler + * @param int $origin_id Old thirdparty id (the thirdparty to delete) + * @param int $dest_id New thirdparty id (the thirdparty that will received element of the other) + * @param array $tables Tables that need to be changed * @return bool */ public static function commonReplaceThirdparty(DoliDB $db, $origin_id, $dest_id, array $tables) { - foreach ($tables as $table) { + foreach ($tables as $table) + { $sql = 'UPDATE '.MAIN_DB_PREFIX.$table.' SET fk_soc = '.$dest_id.' WHERE fk_soc = '.$origin_id; if (!$db->query($sql)) { diff --git a/htdocs/core/class/commonobjectline.class.php b/htdocs/core/class/commonobjectline.class.php index 07019a0fa1dcdacee7f9167461bd9d211017a13a..ef854a2452e51b93dce2feddb0d6ed9e73ab4529 100644 --- a/htdocs/core/class/commonobjectline.class.php +++ b/htdocs/core/class/commonobjectline.class.php @@ -39,6 +39,7 @@ abstract class CommonObjectLine extends CommonObject * Id of the line * @var int * @deprecated Try to use id property as possible (even if field into database is still rowid) + * @see id */ public $rowid; diff --git a/htdocs/core/class/commonorder.class.php b/htdocs/core/class/commonorder.class.php index b4882af8a582db32d060d84bb37404434350158b..5309b5524ee23f4499945accf4aa52700b73bcc2 100644 --- a/htdocs/core/class/commonorder.class.php +++ b/htdocs/core/class/commonorder.class.php @@ -43,6 +43,7 @@ abstract class CommonOrderLine extends CommonObjectLine * Product ref * @var string * @deprecated Use product_ref + * @see product_ref */ public $ref; @@ -56,6 +57,7 @@ abstract class CommonOrderLine extends CommonObjectLine * Product label * @var string * @deprecated Use product_label + * @see product_label */ public $libelle; @@ -78,7 +80,9 @@ abstract class CommonOrderLine extends CommonObjectLine public $qty; /** + * Unit price * @deprecated + * @see subprice */ var $price; diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 6370062a6a9dcf6fab6448480476acd0c312007a..13d2881563f552009f3f669733c309c9b4ed92d6 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -404,7 +404,7 @@ class Conf $this->css = "/theme/".$this->theme."/style.css.php"; // conf->email_from = email pour envoi par dolibarr des mails automatiques - $this->email_from = "robot@domain.com"; + $this->email_from = "robot@example.com"; if (! empty($this->global->MAIN_MAIL_EMAIL_FROM)) $this->email_from = $this->global->MAIN_MAIL_EMAIL_FROM; // conf->notification->email_from = email pour envoi par Dolibarr des notifications diff --git a/htdocs/core/class/dolprintipp.class.php b/htdocs/core/class/dolprintipp.class.php index 4b934b331f3dc79c5bf15b64cf3d149f3e1de2e3..fdd0fc2732cf01cc155ce683015a9636c55c9a8f 100644 --- a/htdocs/core/class/dolprintipp.class.php +++ b/htdocs/core/class/dolprintipp.class.php @@ -91,7 +91,14 @@ class dolprintIPP } } // Getting Jobs - $ipp->getJobs(false,0,'completed',false); + try { + $ipp->getJobs(false,0,'completed',false); // May return errors if setup not correct + } + catch(Exception $e) + { + print $e->getMessage(); + } + print '<table width="100%" class="noborder">'; print '<tr class="liste_titre">'; print "<td>Id</td>"; @@ -102,19 +109,22 @@ class dolprintIPP print "<td>Cancel</td>"; print "</tr>\n"; $jobs = $ipp->jobs_attributes; - $var = True; + $var = true; //print '<pre>'.print_r($jobs,true).'</pre>'; - foreach ($jobs as $value ) + if (is_array($jobs)) { - $var=!$var; - print "<tr ".$bc[$var].">"; - print '<td>'.$value->job_id->_value0.'</td>'; - print '<td>'.$value->job_originating_user_name->_value0.'</td>'; - print '<td>'.$value->printer_uri->_value0.'</td>'; - print '<td>'.$value->job_name->_value0.'</td>'; - print '<td>'.$value->job_state->_value0.'</td>'; - print '<td>'.$value->job_uri->_value0.'</td>'; - print '</tr>'; + foreach ($jobs as $value) + { + $var=!$var; + print "<tr ".$bc[$var].">"; + print '<td>'.$value->job_id->_value0.'</td>'; + print '<td>'.$value->job_originating_user_name->_value0.'</td>'; + print '<td>'.$value->printer_uri->_value0.'</td>'; + print '<td>'.$value->job_name->_value0.'</td>'; + print '<td>'.$value->job_state->_value0.'</td>'; + print '<td>'.$value->job_uri->_value0.'</td>'; + print '</tr>'; + } } print "</table>"; } diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index e2313d157d5d3da96d90909f86643354c2b8b5f6..34abeeb8c6e462cd0c575792aea8dda45e064808 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -39,7 +39,7 @@ class ExtraFields var $attribute_type; // Tableau contenant le nom des champs en clef et le label de ces champs en value var $attribute_label; - // Tableau contenant le nom des champs en clef et la taille de ces champs en value + // Tableau contenant le nom des champs en clef et la taille/longueur max de ces champs en value var $attribute_size; // Tableau contenant le nom des choix en clef et la valeur de ces choix en value var $attribute_choice; @@ -124,6 +124,7 @@ class ExtraFields if (empty($label)) return -1; if ($elementtype == 'thirdparty') $elementtype='societe'; + if ($elementtype == 'contact') $elementtype='socpeople'; // Create field into database except for separator type which is not stored in database if ($type != 'separate') @@ -169,6 +170,7 @@ class ExtraFields private function create($attrname, $type='varchar', $length=255, $elementtype='member', $unique=0, $required=0, $default_value='',$param='', $perms='', $list=0) { if ($elementtype == 'thirdparty') $elementtype='societe'; + if ($elementtype == 'contact') $elementtype='socpeople'; $table=$elementtype.'_extrafields'; @@ -248,6 +250,7 @@ class ExtraFields global $conf; if ($elementtype == 'thirdparty') $elementtype='societe'; + if ($elementtype == 'contact') $elementtype='socpeople'; // Clean parameters if (empty($pos)) $pos=0; @@ -308,6 +311,7 @@ class ExtraFields function delete($attrname, $elementtype='member') { if ($elementtype == 'thirdparty') $elementtype='societe'; + if ($elementtype == 'contact') $elementtype='socpeople'; $table=$elementtype.'_extrafields'; @@ -342,6 +346,7 @@ class ExtraFields global $conf; if ($elementtype == 'thirdparty') $elementtype='societe'; + if ($elementtype == 'contact') $elementtype='socpeople'; if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname)) { @@ -389,6 +394,7 @@ class ExtraFields function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0, $perms='',$list='') { if ($elementtype == 'thirdparty') $elementtype='societe'; + if ($elementtype == 'contact') $elementtype='socpeople'; $table=$elementtype.'_extrafields'; @@ -486,6 +492,8 @@ class ExtraFields // Clean parameters if ($elementtype == 'thirdparty') $elementtype='societe'; + if ($elementtype == 'contact') $elementtype='socpeople'; + if (empty($list)) $list=0; if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname)) @@ -570,6 +578,7 @@ class ExtraFields if ( empty($elementtype) ) return array(); if ($elementtype == 'thirdparty') $elementtype='societe'; + if ($elementtype == 'contact') $elementtype='socpeople'; $array_name_label=array(); diff --git a/htdocs/core/class/hookmanager.class.php b/htdocs/core/class/hookmanager.class.php index 47810e204bdf995685dd80b64785160690f4cbb2..ee7742660c171697d0636f23fd3717a54787f5b7 100644 --- a/htdocs/core/class/hookmanager.class.php +++ b/htdocs/core/class/hookmanager.class.php @@ -116,9 +116,9 @@ class HookManager * @param array $parameters Array of parameters * @param Object $object Object to use hooks on * @param string $action Action code on calling page ('create', 'edit', 'view', 'add', 'update', 'delete'...) - * @return mixed For doActions,formObjectOptions,pdf_xxx: Return 0 if we want to keep standard actions, >0 if we want to stop standard actions, <0 means KO. - * For printSearchForm,printLeftBlock,printTopRightMenu,formAddObjectLine,...: Return HTML string. TODO Deprecated. Must always return an int and things to print into ->resprints. - * Can also return some values into an array ->results. + * @return mixed For 'addreplace hooks (doActions,formObjectOptions,pdf_xxx,...): Return 0 if we want to keep standard actions, >0 if we want to stop standard actions, <0 if KO. + * For 'output' hooks (printLeftBlock, formAddObjectLine, formBuilddocOptions, ...): Return 0, <0 if KO. Things to print are returned into ->resprints and set into ->resPrint. + * All types can also return some values into an array ->results. * $this->error or this->errors are also defined by class called by this function if error. */ function executeHooks($method, $parameters=false, &$object='', &$action='') @@ -135,7 +135,8 @@ class HookManager array( 'addMoreActionsButtons', 'addStatisticLine', - 'doActions', + 'deleteFile', + 'doActions', 'formCreateThirdpartyOptions', 'formObjectOptions', 'formattachOptions', @@ -147,7 +148,7 @@ class HookManager 'formatEvent' ) )) $hooktype='addreplace'; - // Deprecated hook types + // Deprecated hook types ('returnvalue') if (preg_match('/^pdf_/',$method) && $method != 'pdf_writelinedesc') $hooktype='returnvalue'; // pdf_xxx except pdf_writelinedesc are 'returnvalue' hooks. When there is 2 hooks of this type, only last one win. TODO Move them into 'output' or 'addreplace' hooks. if ($method == 'insertExtraFields') { @@ -195,7 +196,7 @@ class HookManager if (isset($actionclassinstance->results) && is_array($actionclassinstance->results)) $this->resArray =array_merge($this->resArray, $actionclassinstance->results); if (! empty($actionclassinstance->resprints)) $this->resPrint.=$actionclassinstance->resprints; } - // Generic hooks that return a string or array (printSearchForm, printLeftBlock, formAddObjectLine, formBuilddocOptions, ...) + // Generic hooks that return a string or array (printLeftBlock, formAddObjectLine, formBuilddocOptions, ...) else { // TODO. this should be done into the method of hook by returning nothing diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b4e5a8a0ec08095e4ecc843e637b3fcd5bd4c233..c236df1819929e7a1bf933183c94e091aa961193 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -41,6 +41,8 @@ /** * Class to manage generation of HTML components * Only common components must be here. + * + * TODO Merge all function load_cache_* and loadCache* (except load_cache_vatrates) into one generic function loadCacheTable */ class Form { @@ -101,7 +103,7 @@ class Form } } else - { + { $ret.='<table class="nobordernopadding" width="100%"><tr><td class="nowrap">'; $ret.=$langs->trans($text); $ret.='</td>'; @@ -376,7 +378,7 @@ class Form * @return string Code html du tooltip (texte+picto) * @see Use function textwithpicto if you can. */ - function textwithtooltip($text, $htmltext, $tooltipon = 1, $direction = 0, $img = '', $extracss = '', $notabs = 0, $incbefore = '', $noencodehtmltext = 0) + function textwithtooltip($text, $htmltext, $tooltipon = 1, $direction = 0, $img = '', $extracss = '', $notabs = 2, $incbefore = '', $noencodehtmltext = 0) { global $conf; @@ -391,14 +393,19 @@ class Form $htmltext=str_replace("\r","",$htmltext); $htmltext=str_replace("\n","",$htmltext); + $extrastyle=''; + if ($direction < 0) { $extracss=($extracss?$extracss.' ':'').'inline-block'; $extrastyle='padding: 0px; padding-left: 3px !important;'; } + if ($direction > 0) { $extracss=($extracss?$extracss.' ':'').'inline-block'; $extrastyle='padding: 0px; padding-right: 3px !important;'; } + $htmltext=str_replace('"',""",$htmltext); - if ($tooltipon == 2 || $tooltipon == 3) $paramfortooltipimg=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td img tag to store tooltip - else $paramfortooltipimg =($extracss?' class="'.$extracss.'"':''); // Attribut to put on td text tag - if ($tooltipon == 1 || $tooltipon == 3) $paramfortooltiptd=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td tag to store tooltip - else $paramfortooltiptd =($extracss?' class="'.$extracss.'"':''); // Attribut to put on td text tag + if ($tooltipon == 2 || $tooltipon == 3) $paramfortooltipimg=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;'.($extrastyle?' '.$extrastyle:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td img tag to store tooltip + else $paramfortooltipimg =($extracss?' class="'.$extracss.'"':'').($extrastyle?' style="'.$extrastyle.'"':''); // Attribut to put on td text tag + if ($tooltipon == 1 || $tooltipon == 3) $paramfortooltiptd=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;'.($extrastyle?' '.$extrastyle:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td tag to store tooltip + else $paramfortooltiptd =($extracss?' class="'.$extracss.'"':'').($extrastyle?' style="'.$extrastyle.'"':''); // Attribut to put on td text tag $s=""; if (empty($notabs)) $s.='<table class="nobordernopadding" summary=""><tr style="height: auto;">'; elseif ($notabs == 2) $s.='<div class="inline-block nowrap">'; + // Define value if value is before if ($direction < 0) { $s.='<'.$tag.$paramfortooltipimg; if ($tag == 'td') { @@ -407,16 +414,12 @@ class Form $s.= '>'.$img.'</'.$tag.'>'; } // Use another method to help avoid having a space in value in order to use this value with jquery - // TODO add this in css - //if ($text != '') $s.='<'.$tag.$paramfortooltiptd.'>'.(($direction < 0)?' ':'').$text.(($direction > 0)?' ':'').'</'.$tag.'>'; - $paramfortooltiptd.= (($direction < 0)?' class="inline-block" style="padding: 0px; padding-left: 3px !important;"':''); - $paramfortooltiptd.= (($direction > 0)?' class="inline-block" style="padding: 0px; padding-right: 3px !important;"':''); + // Define label if ((string) $text != '') $s.='<'.$tag.$paramfortooltiptd.'>'.$text.'</'.$tag.'>'; + // Define value if value is after if ($direction > 0) { $s.='<'.$tag.$paramfortooltipimg; - if ($tag == 'td') { - $s .= ' valign="top" width="14"'; - } + if ($tag == 'td') $s .= ' valign="middle" width="14"'; $s.= '>'.$img.'</'.$tag.'>'; } if (empty($notabs)) $s.='</tr></table>'; @@ -437,7 +440,7 @@ class Form * @param int $notabs 0=Include table and tr tags, 1=Do not include table and tr tags, 2=use div, 3=use span * @return string HTML code of text, picto, tooltip */ - function textwithpicto($text, $htmltext, $direction = 1, $type = 'help', $extracss = '', $noencodehtmltext = 0, $notabs = 0) + function textwithpicto($text, $htmltext, $direction = 1, $type = 'help', $extracss = '', $noencodehtmltext = 0, $notabs = 2) { global $conf; @@ -496,14 +499,14 @@ class Form $sql = "SELECT rowid, code as code_iso, code_iso as code_iso3, label, favorite"; $sql.= " FROM ".MAIN_DB_PREFIX."c_country"; - $sql.= " WHERE active = 1"; + $sql.= " WHERE active > 0"; //$sql.= " ORDER BY code ASC"; dol_syslog(get_class($this)."::select_country", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) { - $out.= '<select id="select'.$htmlname.'" class="flat selectcountry" name="'.$htmlname.'" '.$htmloption.'>'; + $out.= '<select id="select'.$htmlname.'" class="flat selectcountry minwidth300" name="'.$htmlname.'" '.$htmloption.'>'; $num = $this->db->num_rows($resql); $i = 0; if ($num) @@ -531,7 +534,7 @@ class Form if (empty($row['favorite']) && $atleastonefavorite) { $atleastonefavorite=0; - $out.= '<option value="" disabled>----------------------</option>'; + $out.= '<option value="" disabled class="selectoptiondisabledwhite">----------------------</option>'; } if ($selected && $selected != '-1' && ($selected == $row['rowid'] || $selected == $row['code_iso'] || $selected == $row['code_iso3'] || $selected == $row['label']) ) { @@ -554,6 +557,10 @@ class Form dol_print_error($this->db); } + // Make select dynamic + include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; + $out .= ajax_combobox('select'.$htmlname); + return $out; } @@ -580,7 +587,7 @@ class Form $sql = "SELECT rowid, code"; $sql.= " FROM ".MAIN_DB_PREFIX."c_incoterms"; - $sql.= " WHERE active = 1"; + $sql.= " WHERE active > 0"; $sql.= " ORDER BY code ASC"; dol_syslog(get_class($this)."::select_incoterm", LOG_DEBUG); @@ -707,22 +714,23 @@ class Form /** * Load into cache cache_types_fees, array of types of fees * - * @return int Nb of lines loaded, 0 if already loaded, <0 if ko - * TODO move in DAO class + * @return int Nb of lines loaded, <0 if KO */ function load_cache_types_fees() { global $langs; - $langs->load("trips"); + $num = count($this->cache_types_fees); + if ($num > 0) return 0; // Cache already loaded + + dol_syslog(__METHOD__, LOG_DEBUG); - if (count($this->cache_types_fees)) return 0; // Cache already load + $langs->load("trips"); $sql = "SELECT c.code, c.label"; $sql.= " FROM ".MAIN_DB_PREFIX."c_type_fees as c"; - //$sql.= " ORDER BY c.label ASC"; // No sort here, sort must be done after translation + $sql.= " WHERE active > 0"; - dol_syslog(get_class($this).'::load_cache_types_fees', LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) { @@ -744,7 +752,7 @@ class Form return $num; } else - { + { dol_print_error($this->db); return -1; } @@ -762,7 +770,7 @@ class Form { global $user, $langs; - dol_syslog(get_class($this)."::select_type_fees ".$selected.", ".$htmlname, LOG_DEBUG); + dol_syslog(__METHOD__." selected=".$selected.", htmlname=".$htmlname, LOG_DEBUG); $this->load_cache_types_fees(); @@ -798,11 +806,28 @@ class Form * @param array $ajaxoptions Options for ajax_autocompleter * @param int $forcecombo Force to use combo box * @return string Return select box for thirdparty. + * @deprecated 3.8 Use select_company instead. For exemple $form->select_thirdparty(GETPOST('socid'),'socid','',0) => $form->select_company(GETPOST('socid'),'socid','',1,0,0,array(),0) */ function select_thirdparty($selected='', $htmlname='socid', $filter='', $limit=20, $ajaxoptions=array(), $forcecombo=0) { - global $langs,$conf; + return $this->select_thirdparty_list($selected,$htmlname,$filter,1,0,$forcecombo,array(),'',0,$limit); + } + /** + * Output html form to select a third party + * + * @param string $selected Preselected type + * @param string $htmlname Name of field in form + * @param string $filter optional filters criteras (example: 's.rowid <> x') + * @param int $showempty Add an empty field + * @param int $showtype Show third party type in combolist (customer, prospect or supplier) + * @param int $forcecombo Force to use combo box + * @param array $events Ajax event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) + * @param int $limit Maximum number of elements + * @return string HTML string with select box for thirdparty. + */ + function select_company($selected='', $htmlname='socid', $filter='', $showempty=0, $showtype=0, $forcecombo=0, $events=array(), $limit=0) + { $out=''; /* TODO Use ajax_autocompleter like for products (not finished) @@ -835,31 +860,12 @@ class Form } else {*/ - $out.=$this->select_thirdparty_list($selected,$htmlname,$filter,1,0,$forcecombo,array(),'',0,$limit); + $out.=$this->select_thirdparty_list($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events, '', 0, $limit); //} return $out; } - /** - * Output html form to select a third party - * - * @param string $selected Preselected type - * @param string $htmlname Name of field in form - * @param string $filter optional filters criteras (example: 's.rowid <> x') - * @param int $showempty Add an empty field - * @param int $showtype Show third party type in combolist (customer, prospect or supplier) - * @param int $forcecombo Force to use combo box - * @param array $events Event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) - * @param int $limit Maximum number of elements - * @return string HTML string with - * @deprecated Use select_thirdparty instead - */ - function select_company($selected='', $htmlname='socid', $filter='', $showempty=0, $showtype=0, $forcecombo=0, $events=array(), $limit=0) - { - return $this->select_thirdparty_list($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events, '', 0, $limit); - } - /** * Output html form to select a third party * @@ -890,7 +896,7 @@ class Form if (! empty($user->societe_id)) $sql.= " AND s.rowid = ".$user->societe_id; if ($filter) $sql.= " AND (".$filter.")"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if (! empty($conf->global->COMPANY_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND s.status<>0 "; + if (! empty($conf->global->COMPANY_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND s.status <> 0"; // Add criteria if ($filterkey && $filterkey != '') { @@ -1117,7 +1123,7 @@ class Form if ($showsoc > 0) $sql.= " LEFT OUTER JOIN ".MAIN_DB_PREFIX ."societe as s ON s.rowid=sp.fk_soc"; $sql.= " WHERE sp.entity IN (".getEntity('societe', 1).")"; if ($socid > 0) $sql.= " AND sp.fk_soc=".$socid; - if (! empty($conf->global->CONTACT_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND sp.statut<>0"; + if (! empty($conf->global->CONTACT_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND sp.statut <> 0"; $sql.= " ORDER BY sp.lastname ASC"; dol_syslog(get_class($this)."::select_contacts", LOG_DEBUG); @@ -1223,6 +1229,7 @@ class Form * @param int $force_entity 0 or Id of environment to force * @return void * @deprecated + * @see select_dolusers() */ function select_users($selected='',$htmlname='userid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='',$force_entity=0) { @@ -1244,10 +1251,11 @@ class Form * @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status * @param string $morefilter Add more filters into sql request * @param string $show_every 0=default list, 1=add also a value "Everybody" at beginning of list + * @param string $enableonlytext If option $enableonly is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty. * @return string HTML select string * @see select_dolgroups */ - function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0) + function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='') { global $conf,$user,$langs; @@ -1343,8 +1351,8 @@ class Form $userstatic->lastname=$obj->lastname; $userstatic->firstname=$obj->firstname; - $disableline=0; - if (is_array($enableonly) && count($enableonly) && ! in_array($obj->rowid,$enableonly)) $disableline=1; + $disableline=''; + if (is_array($enableonly) && count($enableonly) && ! in_array($obj->rowid,$enableonly)) $disableline=($enableonlytext?$enableonlytext:'1'); if ((is_object($selected) && $selected->id == $obj->rowid) || (! is_object($selected) && $selected == $obj->rowid)) { @@ -1394,6 +1402,10 @@ class Form } } $out.=($moreinfo?')':''); + if ($disableline && $disableline != '1') + { + $out.=' - '.$disableline; // This is text from $enableonlytext parameter + } $out.= '</option>'; $i++; @@ -1451,12 +1463,12 @@ class Form $out.='<input type="hidden" class="removedassignedhidden" name="removedassigned" value="">'; $out.='<script type="text/javascript" language="javascript">jQuery(document).ready(function () { jQuery(".removedassigned").click(function() { jQuery(".removedassignedhidden").val(jQuery(this).val()); });})</script>'; $out.=$this->select_dolusers('', $htmlname, $show_empty, $exclude, $disabled, $include, $enableonly, $force_entity, $maxlength, $showstatus, $morefilter); - $out.='<input type="submit" class="button" name="'.$action.'assignedtouser" value="'.dol_escape_htmltag($langs->trans("Add")).'">'; + $out.=' <input type="submit" class="button" name="'.$action.'assignedtouser" value="'.dol_escape_htmltag($langs->trans("Add")).'">'; } $assignedtouser=array(); if (!empty($_SESSION['assignedtouser'])) { - $assignedtouser=dol_json_decode($_SESSION['assignedtouser'], true); + $assignedtouser=json_decode($_SESSION['assignedtouser'], true); } $nbassignetouser=count($assignedtouser); @@ -2312,19 +2324,22 @@ class Form /** * Charge dans cache la liste des conditions de paiements possibles * - * @return int Nb lignes chargees, 0 si deja chargees, <0 si ko + * @return int Nb of lines loaded, <0 if KO */ function load_cache_conditions_paiements() { global $langs; - if (count($this->cache_conditions_paiements)) return 0; // Cache deja charge + $num = count($this->cache_conditions_paiements); + if ($num > 0) return 0; // Cache already loaded - $sql = "SELECT rowid, code, libelle"; + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = "SELECT rowid, code, libelle as label"; $sql.= " FROM ".MAIN_DB_PREFIX.'c_payment_term'; - $sql.= " WHERE active=1"; + $sql.= " WHERE active > 0"; $sql.= " ORDER BY sortorder"; - dol_syslog(get_class($this).'::load_cache_conditions_paiements', LOG_DEBUG); + $resql = $this->db->query($sql); if ($resql) { @@ -2335,14 +2350,18 @@ class Form $obj = $this->db->fetch_object($resql); // Si traduction existe, on l'utilise, sinon on prend le libelle par defaut - $libelle=($langs->trans("PaymentConditionShort".$obj->code)!=("PaymentConditionShort".$obj->code)?$langs->trans("PaymentConditionShort".$obj->code):($obj->libelle!='-'?$obj->libelle:'')); + $label=($langs->trans("PaymentConditionShort".$obj->code)!=("PaymentConditionShort".$obj->code)?$langs->trans("PaymentConditionShort".$obj->code):($obj->label!='-'?$obj->label:'')); $this->cache_conditions_paiements[$obj->rowid]['code'] =$obj->code; - $this->cache_conditions_paiements[$obj->rowid]['label']=$libelle; + $this->cache_conditions_paiements[$obj->rowid]['label']=$label; $i++; } - return 1; + + //$this->cache_conditions_paiements=dol_sort_array($this->cache_conditions_paiements, 'label'); // We use the sortorder + + return $num; } - else { + else + { dol_print_error($this->db); return -1; } @@ -2351,19 +2370,21 @@ class Form /** * Charge dans cache la liste des délais de livraison possibles * - * @return int Nb lignes chargees, 0 si deja chargees, <0 si ko + * @return int Nb of lines loaded, <0 if KO */ function load_cache_availability() { global $langs; - if (count($this->cache_availability)) return 0; // Cache deja charge + $num = count($this->cache_availability); + if ($num > 0) return 0; // Cache already loaded + + dol_syslog(__METHOD__, LOG_DEBUG); $sql = "SELECT rowid, code, label"; $sql.= " FROM ".MAIN_DB_PREFIX.'c_availability'; - $sql.= " WHERE active=1"; - $sql.= " ORDER BY rowid"; - dol_syslog(get_class($this).'::load_cache_availability', LOG_DEBUG); + $sql.= " WHERE active > 0"; + $resql = $this->db->query($sql); if ($resql) { @@ -2379,9 +2400,13 @@ class Form $this->cache_availability[$obj->rowid]['label']=$label; $i++; } - return 1; + + $this->cache_availability = dol_sort_array($this->cache_availability, 'label'); + + return $num; } - else { + else + { dol_print_error($this->db); return -1; } @@ -2402,6 +2427,8 @@ class Form $this->load_cache_availability(); + dol_syslog(__METHOD__." selected=".$selected.", htmlname=".$htmlname, LOG_DEBUG); + print '<select class="flat" name="'.$htmlname.'">'; if ($addempty) print '<option value="0"> </option>'; foreach($this->cache_availability as $id => $arrayavailability) @@ -2424,19 +2451,19 @@ class Form /** * Load into cache cache_demand_reason, array of input reasons * - * @return int Nb of lines loaded, 0 if already loaded, <0 if ko + * @return int Nb of lines loaded, <0 if KO */ function loadCacheInputReason() { global $langs; - if (count($this->cache_demand_reason)) return 0; // Cache already loaded + $num = count($this->cache_demand_reason); + if ($num > 0) return 0; // Cache already loaded $sql = "SELECT rowid, code, label"; $sql.= " FROM ".MAIN_DB_PREFIX.'c_input_reason'; - $sql.= " WHERE active=1"; - $sql.= " ORDER BY rowid"; - dol_syslog(get_class($this)."::loadCacheInputReason", LOG_DEBUG); + $sql.= " WHERE active > 0"; + $resql = $this->db->query($sql); if ($resql) { @@ -2454,12 +2481,14 @@ class Form $tmparray[$obj->rowid]['label']=$label; $i++; } + $this->cache_demand_reason=dol_sort_array($tmparray, 'label', 'asc'); unset($tmparray); - return 1; + return $num; } - else { + else + { dol_print_error($this->db); return -1; } @@ -2505,19 +2534,21 @@ class Form /** * Charge dans cache la liste des types de paiements possibles * - * @return int Nb lignes chargees, 0 si deja chargees, <0 si ko + * @return int Nb of lines loaded, <0 if KO */ function load_cache_types_paiements() { global $langs; - if (count($this->cache_types_paiements)) return 0; // Cache deja charge + $num=count($this->cache_types_paiements); + if ($num > 0) return $num; // Cache already loaded + + dol_syslog(__METHOD__, LOG_DEBUG); $sql = "SELECT id, code, libelle, type"; $sql.= " FROM ".MAIN_DB_PREFIX."c_paiement"; $sql.= " WHERE active > 0"; - $sql.= " ORDER BY id"; - dol_syslog(get_class($this)."::load_cache_types_paiements", LOG_DEBUG); + $resql = $this->db->query($sql); if ($resql) { @@ -2528,16 +2559,19 @@ class Form $obj = $this->db->fetch_object($resql); // Si traduction existe, on l'utilise, sinon on prend le libelle par defaut - $libelle=($langs->trans("PaymentTypeShort".$obj->code)!=("PaymentTypeShort".$obj->code)?$langs->trans("PaymentTypeShort".$obj->code):($obj->libelle!='-'?$obj->libelle:'')); + $label=($langs->trans("PaymentTypeShort".$obj->code)!=("PaymentTypeShort".$obj->code)?$langs->trans("PaymentTypeShort".$obj->code):($obj->libelle!='-'?$obj->libelle:'')); $this->cache_types_paiements[$obj->id]['code'] =$obj->code; - $this->cache_types_paiements[$obj->id]['label']=$libelle; + $this->cache_types_paiements[$obj->id]['label']=$label; $this->cache_types_paiements[$obj->id]['type'] =$obj->type; $i++; } + + $this->cache_types_paiements = dol_sort_array($this->cache_types_paiements, 'label'); + return $num; } else - { + { dol_print_error($this->db); return -1; } @@ -2557,6 +2591,8 @@ class Form { global $langs,$user; + dol_syslog(__METHOD__." selected=".$selected.", htmlname=".$htmlname, LOG_DEBUG); + $this->load_cache_conditions_paiements(); print '<select class="flat" name="'.$htmlname.'">'; @@ -2595,7 +2631,7 @@ class Form { global $langs,$user; - dol_syslog(get_class($this)."::select_type_paiements ".$selected.", ".$htmlname.", ".$filtertype.", ".$format,LOG_DEBUG); + dol_syslog(__METHOD__." ".$selected.", ".$htmlname.", ".$filtertype.", ".$format, LOG_DEBUG); $filterarray=array(); if ($filtertype == 'CRDT') $filterarray=array(0,2,3); @@ -2635,26 +2671,13 @@ class Form /** - * Selection HT or TTC + * Selection HT or TTC * - * @param string $selected Id pre-selectionne - * @param string $htmlname Nom de la zone select - * @return void - */ - function select_PriceBaseType($selected='',$htmlname='price_base_type') - { - print $this->load_PriceBaseType($selected,$htmlname); - } - - - /** - * Selection HT or TTC - * - * @param string $selected Id pre-selectionne - * @param string $htmlname Nom de la zone select - * @return void + * @param string $selected Id pre-selectionne + * @param string $htmlname Nom de la zone select + * @return string Code of HTML select to chose tax or not */ - function load_PriceBaseType($selected='',$htmlname='price_base_type') + function selectPriceBaseType($selected='',$htmlname='price_base_type') { global $langs; @@ -2699,9 +2722,9 @@ class Form $langs->load("admin"); $langs->load("deliveries"); - $sql = "SELECT rowid, code, libelle"; + $sql = "SELECT rowid, code, libelle as label"; $sql.= " FROM ".MAIN_DB_PREFIX."c_shipment_mode"; - $sql.= " WHERE active = 1"; + $sql.= " WHERE active > 0"; if ($filtre) $sql.=" AND ".$filtre; $sql.= " ORDER BY libelle ASC"; @@ -2722,7 +2745,7 @@ class Form } else { print '<option value="'.$obj->rowid.'">'; } - print $langs->trans("SendingMethod".strtoupper($obj->code)); + print ($langs->trans("SendingMethod".strtoupper($obj->code)) != "SendingMethod".strtoupper($obj->code)) ? $langs->trans("SendingMethod".strtoupper($obj->code)) : $obj->label; print '</option>'; $i++; } @@ -2774,12 +2797,12 @@ class Form /** * Creates HTML last in cycle situation invoices selector * - * @param string $selected Preselected ID - * @param int $socid Company ID + * @param string $selected Preselected ID + * @param int $socid Company ID * * @return string HTML select */ - function load_situation_invoices($selected = '', $socid = '') + function selectSituationInvoices($selected = '', $socid = 0) { global $langs; @@ -2787,7 +2810,7 @@ class Form $opt = '<option value ="" selected></option>'; $sql = 'SELECT rowid, facnumber, situation_cycle_ref, situation_counter, situation_final, fk_soc FROM ' . MAIN_DB_PREFIX . 'facture WHERE situation_counter>=1'; - $sql .= ' order by situation_cycle_ref, situation_counter desc'; + $sql.= ' ORDER by situation_cycle_ref, situation_counter desc'; $resql = $this->db->query($sql); if ($resql && $this->db->num_rows($resql) > 0) { // Last seen cycle @@ -2813,10 +2836,13 @@ class Form } } } - } else { + } + else + { dol_syslog("Error sql=" . $sql . ", error=" . $this->error, LOG_ERR); } - if ($opt == '<option value ="" selected></option>') { + if ($opt == '<option value ="" selected></option>') + { $opt = '<option value ="0" selected>' . $langs->trans('NoSituations') . '</option>'; } return $opt; @@ -2825,7 +2851,7 @@ class Form /** * Creates HTML units selector (code => label) * - * @param string $selected Preselected code ('km', 'm', 'l', 'p', ...) + * @param string $selected Preselected Unit ID * @param string $htmlname Select name * @param int $showempty Add a nempty line * @return string HTML select @@ -2838,7 +2864,9 @@ class Form $return= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">'; - $sql = 'select rowid, label from '.MAIN_DB_PREFIX.'c_units where active=1'; + $sql = 'SELECT rowid, label from '.MAIN_DB_PREFIX.'c_units'; + $sql.= ' WHERE active > 0'; + $resql = $this->db->query($sql); if($resql && $this->db->num_rows($resql) > 0) { @@ -2846,13 +2874,13 @@ class Form while($res = $this->db->fetch_object($resql)) { - if ($selected == $res[0]) + if ($selected == $res->rowid) { - $return.='<option value="'.$res->code.'" selected>'.$langs->trans($res->label).'</option>'; + $return.='<option value="'.$res->rowid.'" selected>'.$langs->trans($res->label).'</option>'; } else { - $return.='<option value="'.$res->code.'">'.$langs->trans($res->label).'</option>'; + $return.='<option value="'.$res->rowid.'">'.$langs->trans($res->label).'</option>'; } } $return.='</select>'; @@ -3025,6 +3053,7 @@ class Form * @param int $width Force width of box * @return void * @deprecated + * @see formconfirm() */ function form_confirm($page, $title, $question, $action, $formquestion='', $selectedchoice="", $useajax=0, $height=170, $width=500) { @@ -3082,7 +3111,7 @@ class Form // Now add questions $more.='<table class="paddingrightonly" width="100%">'."\n"; - $more.='<tr><td colspan="3" valign="top">'.(! empty($formquestion['text'])?$formquestion['text']:'').'</td></tr>'."\n"; + $more.='<tr><td colspan="3">'.(! empty($formquestion['text'])?$formquestion['text']:'').'</td></tr>'."\n"; foreach ($formquestion as $key => $input) { if (is_array($input) && ! empty($input)) @@ -3091,15 +3120,15 @@ class Form if ($input['type'] == 'text') { - $more.='<tr><td valign="top">'.$input['label'].'</td><td valign="top" colspan="2" align="left"><input type="text" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'.$size.' value="'.$input['value'].'" /></td></tr>'."\n"; + $more.='<tr><td>'.$input['label'].'</td><td colspan="2" align="left"><input type="text" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'.$size.' value="'.$input['value'].'" /></td></tr>'."\n"; } else if ($input['type'] == 'password') { - $more.='<tr><td valign="top">'.$input['label'].'</td><td valign="top" colspan="2" align="left"><input type="password" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'.$size.' value="'.$input['value'].'" /></td></tr>'."\n"; + $more.='<tr><td>'.$input['label'].'</td><td colspan="2" align="left"><input type="password" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'.$size.' value="'.$input['value'].'" /></td></tr>'."\n"; } else if ($input['type'] == 'select') { - $more.='<tr><td valign="top">'; + $more.='<tr><td>'; if (! empty($input['label'])) $more.=$input['label'].'</td><td valign="top" colspan="2" align="left">'; $more.=$this->selectarray($input['name'],$input['values'],$input['default'],1); $more.='</td></tr>'."\n"; @@ -3107,13 +3136,13 @@ class Form else if ($input['type'] == 'checkbox') { $more.='<tr>'; - $more.='<td valign="top">'.$input['label'].' </td><td valign="top" align="left">'; + $more.='<td>'.$input['label'].' </td><td align="left">'; $more.='<input type="checkbox" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'; if (! is_bool($input['value']) && $input['value'] != 'false') $more.=' checked'; if (is_bool($input['value']) && $input['value']) $more.=' checked'; if (isset($input['disabled'])) $more.=' disabled'; $more.=' /></td>'; - $more.='<td valign="top" align="left"> </td>'; + $more.='<td align="left"> </td>'; $more.='</tr>'."\n"; } else if ($input['type'] == 'radio') @@ -3124,10 +3153,10 @@ class Form $more.='<tr>'; if ($i==0) $more.='<td valign="top">'.$input['label'].'</td>'; else $more.='<td> </td>'; - $more.='<td valign="top" width="20"><input type="radio" class="flat" id="'.$input['name'].'" name="'.$input['name'].'" value="'.$selkey.'"'; + $more.='<td width="20"><input type="radio" class="flat" id="'.$input['name'].'" name="'.$input['name'].'" value="'.$selkey.'"'; if ($input['disabled']) $more.=' disabled'; $more.=' /></td>'; - $more.='<td valign="top" align="left">'; + $more.='<td align="left">'; $more.=$selval; $more.='</td></tr>'."\n"; $i++; @@ -3135,8 +3164,8 @@ class Form } else if ($input['type'] == 'other') { - $more.='<tr><td valign="top">'; - if (! empty($input['label'])) $more.=$input['label'].'</td><td valign="top" colspan="2" align="left">'; + $more.='<tr><td>'; + if (! empty($input['label'])) $more.=$input['label'].'</td><td colspan="2" align="left">'; $more.=$input['value']; $more.='</td></tr>'."\n"; } @@ -3508,9 +3537,9 @@ class Form * * @param string $page Page * @param string $selected Id of user preselected - * @param string $htmlname Name of input html field - * @param array $exclude List of users id to exclude - * @param array $include List of users id to include + * @param string $htmlname Name of input html field. If 'none', we just output the user link. + * @param array $exclude List of users id to exclude + * @param array $include List of users id to include * @return void */ function form_users($page, $selected='', $htmlname='userid', $exclude='', $include='') @@ -3530,12 +3559,10 @@ class Form print '</tr></table></form>'; } else - { + { if ($selected) { require_once DOL_DOCUMENT_ROOT .'/user/class/user.class.php'; - //$this->load_cache_contacts(); - //print $this->cache_contacts[$selected]; $theuser=new User($this->db); $theuser->fetch($selected); print $theuser->getNomUrl(1); @@ -3646,12 +3673,12 @@ class Form /** - * Affiche formulaire de selection des contacts + * Show forms to select a contact * - * @param string $page Page - * @param Societe $societe Third party - * @param int $selected Id contact pre-selectionne - * @param string $htmlname Nom du formulaire select + * @param string $page Page + * @param Societe $societe Filter on third party + * @param int $selected Id contact pre-selectionne + * @param string $htmlname Name of HTML select. If 'none', we just show contact link. * @return void */ function form_contacts($page, $societe, $selected='', $htmlname='contactid') @@ -3681,8 +3708,6 @@ class Form if ($selected) { require_once DOL_DOCUMENT_ROOT .'/contact/class/contact.class.php'; - //$this->load_cache_contacts(); - //print $this->cache_contacts[$selected]; $contact=new Contact($this->db); $contact->fetch($selected); print $contact->getFullName($langs); @@ -3798,12 +3823,14 @@ class Form global $langs; $num = count($this->cache_vatrates); - if ($num > 0) return $num; // Cache deja charge + if ($num > 0) return $num; // Cache already loaded - $sql = "SELECT DISTINCT t.taux, t.recuperableonly"; + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = "SELECT DISTINCT t.taux, t.recuperableonly"; $sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c"; $sql.= " WHERE t.fk_pays = c.rowid"; - $sql.= " AND t.active = 1"; + $sql.= " AND t.active > 0"; $sql.= " AND c.code IN (".$country_code.")"; $sql.= " ORDER BY t.taux ASC, t.recuperableonly ASC"; @@ -3837,7 +3864,8 @@ class Form } /** - * Output an HTML select vat rate + * Output an HTML select vat rate. + * The name of this function should be selectVat. We keep bad name for compatibility purpose. * * @param string $htmlname Name of html select field * @param float $selectedrate Force preselected vat rate. Use '' for no forcing. @@ -4244,6 +4272,7 @@ class Form $hourSelected=0; $minSelected=0; + // Hours if ($iSecond != '') { require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; @@ -4274,6 +4303,7 @@ class Form $retstring.=' '.$langs->trans('HourShort'); + // Minutes if ($minunderhours) $retstring.='<br>'; else $retstring.=" "; @@ -4327,24 +4357,26 @@ class Form global $conf, $langs; // Do we want a multiselect ? - $multiselect = 0; - if (preg_match('/^multi/',$htmlname)) $multiselect = 1; + //$jsbeautify = 0; + //if (preg_match('/^multi/',$htmlname)) $jsbeautify = 1; + $jsbeautify = 1; if ($value_as_key) $array=array_combine($array, $array); $out=''; // Add code for jquery to use multiselect - if ($addjscombo && empty($conf->dol_use_jmobile) && $multiselect) + if ($addjscombo && empty($conf->dol_use_jmobile) && $jsbeautify) { + $minLengthToAutocomplete=0; $tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT')?constant('REQUIRE_JQUERY_MULTISELECT'):'select2':$conf->global->MAIN_USE_JQUERY_MULTISELECT; $out.='<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' --> <script type="text/javascript"> $(document).ready(function () { $(\''.(preg_match('/^\./',$htmlname)?$htmlname:'#'.$htmlname).'\').'.$tmpplugin.'({ dir: \'ltr\', - width: \'off\', - minimumInputLength: 0 + width: \'resolve\', /* off or resolve */ + minimumInputLength: '.$minLengthToAutocomplete.' }); }); </script>'; @@ -4419,7 +4451,7 @@ class Form { $out = ''; - // Add code for jquery to use multiselect + // Add code for jquery to use select2 if ($addjscombo && empty($conf->dol_use_jmobile)) { $tmpplugin='select2'; @@ -4605,6 +4637,236 @@ class Form } + /** + * Show linked object block. + * + * @param CommonObject $object Object we want to show links to + * @return int <0 if KO, >0 if OK + */ + function showLinkedObjectBlock($object) + { + global $conf,$langs,$hookmanager; + global $bc; + + $object->fetchObjectLinked(); + + // Bypass the default method + $hookmanager->initHooks(array('commonobject')); + $parameters=array(); + $reshook=$hookmanager->executeHooks('showLinkedObjectBlock',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + + if (empty($reshook)) + { + $num = count($object->linkedObjects); + + foreach($object->linkedObjects as $objecttype => $objects) + { + $tplpath = $element = $subelement = $objecttype; + + if (preg_match('/^([^_]+)_([^_]+)/i',$objecttype,$regs)) + { + $element = $regs[1]; + $subelement = $regs[2]; + $tplpath = $element.'/'.$subelement; + } + + // To work with non standard path + if ($objecttype == 'facture') { + $tplpath = 'compta/'.$element; + if (empty($conf->facture->enabled)) continue; // Do not show if module disabled + } + else if ($objecttype == 'propal') { + $tplpath = 'comm/'.$element; + if (empty($conf->propal->enabled)) continue; // Do not show if module disabled + } + else if ($objecttype == 'askpricesupplier') { + $tplpath = 'comm/'.$element; + if (empty($conf->askpricesupplier->enabled)) continue; // Do not show if module disabled + } + else if ($objecttype == 'shipping' || $objecttype == 'shipment') { + $tplpath = 'expedition'; + if (empty($conf->expedition->enabled)) continue; // Do not show if module disabled + } + else if ($objecttype == 'delivery') { + $tplpath = 'livraison'; + if (empty($conf->expedition->enabled)) continue; // Do not show if module disabled + } + else if ($objecttype == 'invoice_supplier') { + $tplpath = 'fourn/facture'; + } + else if ($objecttype == 'order_supplier') { + $tplpath = 'fourn/commande'; + } + + global $linkedObjectBlock; + $linkedObjectBlock = $objects; + + // Output template part (modules that overwrite templates must declare this into descriptor) + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/'.$tplpath.'/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include dol_buildpath($reldir.'/linkedobjectblock.tpl.php'); + if ($res) break; + } + } + + return $num; + } + } + + /** + * Show block with links to link to other objects. + * + * @param CommonObject $object Object we want to show links to + * @param array $restrictlinksto Restrict links to some elements, for exemple array('order') or array('supplier_order') + * @return int <0 if KO, >0 if OK + */ + function showLinkToObjectBlock($object, $restrictlinksto=array()) + { + global $conf, $langs, $hookmanager; + global $bc; + + $linktoelem=''; + + if (! is_object($object->thirdparty)) $object->fetch_thirdparty(); + + + if (((! is_array($restrictlinksto)) || in_array('order',$restrictlinksto)) + && ! empty($conf->commande->enabled)) + { + $linktoelem.=($linktoelem?' ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>'; + + print ' + <script type="text/javascript" language="javascript"> + jQuery(document).ready(function() { + jQuery("#linktoorder").click(function() { + jQuery("#orderlist").toggle(); + jQuery("#linktoorder").toggle(); + }); + }); + </script> + '; + + print '<div id="orderlist"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>'; + + $sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_client, c.total_ht"; + $sql .= " FROM " . MAIN_DB_PREFIX . "societe as s"; + $sql .= ", " . MAIN_DB_PREFIX . "commande as c"; + $sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $object->thirdparty->id . ''; + + $resqlorderlist = $this->db->query($sql); + if ($resqlorderlist) + { + $num = $this->db->num_rows($resqlorderlist); + $i = 0; + + print '<br><form action="" method="POST" name="LinkedOrder">'; + print '<table class="noborder">'; + print '<tr class="liste_titre">'; + print '<td class="nowrap"></td>'; + print '<td align="center">' . $langs->trans("Ref") . '</td>'; + print '<td align="left">' . $langs->trans("RefCustomer") . '</td>'; + print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>'; + print '<td align="left">' . $langs->trans("Company") . '</td>'; + print '</tr>'; + while ($i < $num) + { + $objp = $this->db->fetch_object($resqlorderlist); + + $var = ! $var; + print '<tr ' . $bc [$var] . '>'; + print '<td aling="left">'; + print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>'; + print '<td align="center">' . $objp->ref . '</td>'; + print '<td>' . $objp->ref_client . '</td>'; + print '<td>' . price($objp->total_ht) . '</td>'; + print '<td>' . $objp->name . '</td>'; + print '</td>'; + print '</tr>'; + + $i ++; + } + print '</table>'; + print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '"> <input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>'; + print '</form>'; + $this->db->free($resqlorderlist); + } else { + dol_print_error($this->db); + } + + print '</div>'; + } + + if (((! is_array($restrictlinksto)) || in_array('supplier_order',$restrictlinksto)) + && ! empty($conf->fournisseur->enabled)) + { + $linktoelem.=($linktoelem?' ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>'; + + print ' + <script type="text/javascript" language="javascript"> + jQuery(document).ready(function() { + jQuery("#linktoorder").click(function() { + jQuery("#orderlist").toggle(); + jQuery("#linktoorder").toggle(); + }); + }); + </script> + '; + + print '<div id="orderlist"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>'; + + $sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_supplier, c.total_ht"; + $sql .= " FROM " . MAIN_DB_PREFIX . "societe as s"; + $sql .= ", " . MAIN_DB_PREFIX . "commande_fournisseur as c"; + $sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $object->thirdparty->id; + + $resqlorderlist = $this->db->query($sql); + if ($resqlorderlist) + { + $num = $this->db->num_rows($resqlorderlist); + $i = 0; + + print '<br><form action="" method="POST" name="LinkedOrder">'; + print '<table class="noborder">'; + print '<tr class="liste_titre">'; + print '<td class="nowrap"></td>'; + print '<td align="center">' . $langs->trans("Ref") . '</td>'; + print '<td align="left">' . $langs->trans("RefSupplier") . '</td>'; + print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>'; + print '<td align="left">' . $langs->trans("Company") . '</td>'; + print '</tr>'; + while ($i < $num) { + $objp = $this->db->fetch_object($resqlorderlist); + if ($objp->socid == $societe->id) { + $var = ! $var; + print '<tr ' . $bc [$var] . '>'; + print '<td aling="left">'; + print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>'; + print '<td align="center">' . $objp->ref . '</td>'; + print '<td>' . $objp->ref_supplier . '</td>'; + print '<td>' . price($objp->total_ht) . '</td>'; + print '<td>' . $objp->name . '</td>'; + print '</td>'; + print '</tr>'; + } + + $i ++; + } + print '</table>'; + print '<br><div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '"> <input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>'; + print '</form>'; + $this->db->free($resqlorderlist); + } else { + dol_print_error($this->db); + } + + print '</div>'; + } + + + return $linktoelem; + } + /** * Return an html string with a select combo box to choose yes or no * @@ -4701,15 +4963,15 @@ class Form * To add a particular filter on select, you must set $object->next_prev_filter to SQL criteria. * * @param object $object Object to show - * @param string $paramid Name of parameter to use to name the id into the URL link - * @param string $morehtml More html content to output just before the nav bar + * @param string $paramid Name of parameter to use to name the id into the URL link + * @param string $morehtml More html content to output just before the nav bar * @param int $shownav Show Condition (navigation is shown if value is 1) - * @param string $fieldid Nom du champ en base a utiliser pour select next et previous - * @param string $fieldref Nom du champ objet ref (object->ref) a utiliser pour select next et previous - * @param string $morehtmlref Code html supplementaire a afficher apres ref - * @param string $moreparam More param to add in nav link url. + * @param string $fieldid Nom du champ en base a utiliser pour select next et previous (we make the select max and min on this field) + * @param string $fieldref Nom du champ objet ref (object->ref) a utiliser pour select next et previous + * @param string $morehtmlref Code html supplementaire a afficher apres ref + * @param string $moreparam More param to add in nav link url. * @param int $nodbprefix Do not include DB prefix to forge table name - * @return string Portion HTML avec ref + boutons nav + * @return string Portion HTML avec ref + boutons nav */ function showrefnav($object,$paramid,$morehtml='',$shownav=1,$fieldid='rowid',$fieldref='ref',$morehtmlref='',$moreparam='',$nodbprefix=0) { @@ -4722,33 +4984,47 @@ class Form //print "paramid=$paramid,morehtml=$morehtml,shownav=$shownav,$fieldid,$fieldref,$morehtmlref,$moreparam"; $object->load_previous_next_ref((isset($object->next_prev_filter)?$object->next_prev_filter:''),$fieldid,$nodbprefix); - $previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Previous"),'previous.png'):' ').'</a>':''; - $next_ref = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Next"),'next.png'):' ').'</a>':''; + //$previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Previous"),'previous.png'):' ').'</a>':''; + //$next_ref = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Next"),'next.png'):' ').'</a>':''; + $previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?'<':' ').'</a>':''; + $next_ref = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?'>':' ').'</a>':''; //print "xx".$previous_ref."x".$next_ref; - if ($previous_ref || $next_ref || $morehtml) { - $ret.='<table class="nobordernopadding" width="100%"><tr class="nobordernopadding"><td class="nobordernopadding">'; - } + //if ($previous_ref || $next_ref || $morehtml) { + //$ret.='<table class="nobordernopadding" width="100%"><tr class="nobordernopadding"><td class="nobordernopadding">'; + $ret.='<div style="vertical-align: middle"><div class="inline-block floatleft refid'.(($shownav && ($previous_ref || $next_ref))?' refidpadding':'').'">'; + //} $ret.=dol_htmlentities($object->$fieldref); if ($morehtmlref) { $ret.=' '.$morehtmlref; } + $ret.='</div>'; + if ($previous_ref || $next_ref || $morehtml) + { + $ret.='<div class="pagination"><ul>'; + } if ($morehtml) { - $ret.='</td><td class="paddingrightonly" align="right">'.$morehtml; + //$ret.='</td><td class="paddingrightonly" align="right">'.$morehtml; + $ret.='<li class="noborder litext">'.$morehtml.'</li>'; } if ($shownav && ($previous_ref || $next_ref)) { - $ret.='</td><td class="nobordernopadding" align="center" width="20">'.$previous_ref.'</td>'; - $ret.='<td class="nobordernopadding" align="center" width="20">'.$next_ref; + //$ret.='</td><td class="nobordernopadding" align="center" width="20">'.$previous_ref.'</td>'; + //$ret.='<td class="nobordernopadding" align="center" width="20">'.$next_ref; + $ret.='<li class="pagination">'.$previous_ref.'</li>'; + $ret.='<li class="pagination">'.$next_ref.'</li>'; } if ($previous_ref || $next_ref || $morehtml) { - $ret.='</td></tr></table>'; + //$ret.='</td></tr></table>'; + $ret.='</ul></div>'; } + $ret.='</div>'; + return $ret; } @@ -4788,11 +5064,14 @@ class Form * @param string $modulepart Key to define module concerned ('societe', 'userphoto', 'memberphoto') * @param object $object Object containing data to retrieve file name * @param int $width Width of photo + * @param int $height Height of photo (auto if 0) + * @param int $caneditfield Add edit fields + * @param string $cssclass CSS name to use on img for photo * @return string HTML code to output photo */ - static function showphoto($modulepart,$object,$width=100) + static function showphoto($modulepart, $object, $width=100, $height=0, $caneditfield=0, $cssclass='photowithmargin') { - global $conf; + global $conf,$langs; $entity = (! empty($object->entity) ? $object->entity : $conf->entity); $id = (! empty($object->id) ? $object->id : $object->rowid); @@ -4819,7 +5098,7 @@ class Form if ($object->photo) $file=get_exdir($id, 2, 0, 0, $object, 'invoice_supplier').'photos/'.$object->photo; if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg"; // For backward compatibility $email=$object->email; - }else { + } else { $dir=$conf->$modulepart->dir_output; if ($object->photo) $file=get_exdir($id, 2, 0, 0, $adherent, 'member').'photos/'.$object->photo; if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg"; // For backward compatibility @@ -4831,30 +5110,51 @@ class Form $cache='0'; if ($file && file_exists($dir."/".$file)) { - // TODO Link to large image $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">'; - $ret.='<img alt="Photo" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="photologo" border="0" width="'.$width.'" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">'; + $ret.='<img alt="Photo" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="'.$cssclass.'" '.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">'; $ret.='</a>'; } else if ($altfile && file_exists($dir."/".$altfile)) { $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">'; - $ret.='<img alt="Photo alt" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="photologo" border="0" width="'.$width.'" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($altfile).'&cache='.$cache.'">'; + $ret.='<img alt="Photo alt" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="'.$cssclass.'" '.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($altfile).'&cache='.$cache.'">'; $ret.='</a>'; } else - { - if (! empty($conf->gravatar->enabled) && $email) + { + $nophoto='/public/theme/common/nophoto.jpg'; + if (in_array($modulepart,array('userphoto','contact'))) // For module thar are "physical" users + { + $nophoto='/public/theme/common/user_anonymous.png'; + if ($object->gender == 'man') $nophoto='/public/theme/common/user_man.png'; + if ($object->gender == 'woman') $nophoto='/public/theme/common/user_woman.png'; + } + + if (! empty($conf->gravatar->enabled) && $email) { + /** + * @see https://gravatar.com/site/implement/images/php/ + */ global $dolibarr_main_url_root; $ret.='<!-- Put link to gravatar -->'; - $ret.='<img alt="Photo found on Gravatar" title="Photo Gravatar.com - email '.$email.'" border="0" width="'.$width.'" src="http://www.gravatar.com/avatar/'.dol_hash($email,3).'?s='.$width.'&d='.urlencode(dol_buildpath('/theme/common/nophoto.jpg',2)).'">'; // gravatar need md5 hash + $ret.='<img class="photo'.$modulepart.'" alt="Gravatar avatar" title="'.$email.' Gravatar avatar" border="0"'.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="https://www.gravatar.com/avatar/'.dol_hash(strtolower(trim($email)),3).'?s='.$width.'&d='.urlencode(dol_buildpath($nophoto,2)).'">'; // gravatar need md5 hash } else - { - $ret.='<img alt="No photo" border="0" width="'.$width.'" src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">'; + { + $ret.='<img class="photo'.$modulepart.'" alt="No photo" border="0"'.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.$nophoto.'">'; } } + + if ($caneditfield) + { + if ($object->photo) $ret.="<br>\n"; + $ret.='<table class="nobordernopadding hideonsmartphone">'; + if ($object->photo) $ret.='<tr><td align="center"><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>'; + $ret.='<tr><td>'.$langs->trans("PhotoFile").'</td></tr>'; + $ret.='<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>'; + $ret.='</table>'; + } + } else dol_print_error('','Call of showphoto with wrong parameters'); diff --git a/htdocs/core/class/html.formadmin.class.php b/htdocs/core/class/html.formadmin.class.php index e5d8fa5688e862cdeb6228ed58be5f6213f983b4..d3ffa569a7a6e3d831421bdd5b834883ddf92856 100644 --- a/htdocs/core/class/html.formadmin.class.php +++ b/htdocs/core/class/html.formadmin.class.php @@ -105,6 +105,10 @@ class FormAdmin } $out.= '</select>'; + // Make select dynamic + include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; + $out.= ajax_combobox($htmlname); + return $out; } diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php index 4f600ac0705c00ff6fcc1b6be10913d8685e9731..a005fb2b22821d8c2cb37508deadf3b829699f48 100644 --- a/htdocs/core/class/html.formcompany.class.php +++ b/htdocs/core/class/html.formcompany.class.php @@ -210,6 +210,7 @@ class FormCompany * @param string $country_codeid Country code or id: 0=list for all countries, otherwise country code or country rowid to show * @param string $htmlname Id of department * @return string String with HTML select + * @see select_country */ function select_state($selected='',$country_codeid=0, $htmlname='state_id') { @@ -234,7 +235,7 @@ class FormCompany $result=$this->db->query($sql); if ($result) { - if (!empty($htmlname)) $out.= '<select id="'.$htmlname.'" class="flat" name="'.$htmlname.'">'; + if (!empty($htmlname)) $out.= '<select id="'.$htmlname.'" class="flat minwidth300" name="'.$htmlname.'">'; if ($country_codeid) $out.= '<option value="0"> </option>'; $num = $this->db->num_rows($result); $i = 0; @@ -277,13 +278,17 @@ class FormCompany } } if (! empty($htmlname)) $out.= '</select>'; - if (! empty($htmlname) && $user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); + if (! empty($htmlname) && $user->admin) $out.= ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); } else { dol_print_error($this->db); } + // Make select dynamic + include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; + $out .= ajax_combobox($htmlname); + return $out; } @@ -418,6 +423,7 @@ class FormCompany * @param string $filter Add a SQL filter on list * @return void * @deprecated Use print xxx->select_juridicalstatus instead + * @see select_juridicalstatus() */ function select_forme_juridique($selected='', $country_codeid=0, $filter='') { @@ -431,9 +437,10 @@ class FormCompany * @param string $selected Preselected code of juridical type * @param int $country_codeid 0=list for all countries, otherwise list only country requested * @param string $filter Add a SQL filter on list + * @param string $htmlname HTML name of select * @return string String with HTML select */ - function select_juridicalstatus($selected='', $country_codeid=0, $filter='') + function select_juridicalstatus($selected='', $country_codeid=0, $filter='', $htmlname='forme_juridique_code') { global $conf,$langs,$user; $langs->load("dict"); @@ -454,7 +461,7 @@ class FormCompany if ($resql) { $out.= '<div id="particulier2" class="visible">'; - $out.= '<select class="flat" name="forme_juridique_code" id="legal_form">'; + $out.= '<select class="flat minwidth200" name="'.$htmlname.'" id="'.$htmlname.'">'; if ($country_codeid) $out.= '<option value="0"> </option>'; // When country_codeid is set, we force to add an empty line because it does not appears from select. When not set, we already get the empty line from select. $num = $this->db->num_rows($resql); @@ -488,7 +495,7 @@ class FormCompany // Show break when we are in multi country mode if (empty($country_codeid) && $val['country_code']) { - $out.= '<option value="0">----- '.$val['country']." -----</option>\n"; + $out.= '<option value="0" disabled class="selectoptiondisabledwhite">----- '.$val['country']." -----</option>\n"; $country=$val['country']; } } @@ -507,7 +514,12 @@ class FormCompany } } $out.= '</select>'; - if ($user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); + if ($user->admin) $out.= ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); + + // Make select dynamic + include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; + $out .= ajax_combobox($htmlname); + $out.= '</div>'; } else diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 926ee8a337a4051134504a777770606d99748dcf..699060afcfc98d25e7397a1acda0360dbfdc6ad7 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -249,7 +249,7 @@ class FormFile * @param string $modelselected Model to preselect by default * @param string $allowgenifempty Allow generation even if list of template ($genallowed) is empty (show however a warning) * @param string $forcenomultilang Do not show language option (even if MAIN_MULTILANGS defined) - * @param int $iconPDF Obsolete, see getDocumentsLink + * @param int $iconPDF Deprecated, see getDocumentsLink * @param int $maxfilenamelength Max length for filename shown * @param string $noform Do not output html form tags * @param string $param More param on http links @@ -261,6 +261,11 @@ class FormFile */ function showdocuments($modulepart,$modulesubdir,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$allowgenifempty=1,$forcenomultilang=0,$iconPDF=0,$maxfilenamelength=28,$noform=0,$param='',$title='',$buttonlabel='',$codelang='',$morepicto='') { + // Deprecation warning + if (0 !== $iconPDF) { + dol_syslog(__METHOD__ . ": passing iconPDF parameter is deprecated", LOG_WARNING); + } + global $langs, $conf, $user, $hookmanager; global $form, $bc; @@ -684,7 +689,7 @@ class FormFile $out=''; $this->numoffiles=0; - $file_list=dol_dir_list($filedir, 'files', 0, preg_quote(basename($modulesubdir).'.pdf','/'), '\.meta$|\.png$'); + $file_list=dol_dir_list($filedir, 'files', 0, preg_quote(basename($modulesubdir),'/').'[^\-]+', '\.meta$|\.png$'); // For ajax treatment $out.= '<div id="gen_pdf_'.$modulesubdir.'" class="linkobject hideobject">'.img_picto('', 'refresh').'</div>'."\n"; @@ -713,7 +718,7 @@ class FormFile $mime=dol_mimetype($relativepath,'',0); if (preg_match('/text/',$mime)) $out.= ' target="_blank"'; $out.= '>'; - $out.= img_pdf($file["name"],2); + $out.= img_mime($relativepath, $file["name"]); $out.= '</a>'."\n"; $this->numoffiles++; diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index b9d5048db745d4f27e03fee3ff9ef4d92d46d369..4e1a8ffc0c55d2a5f8ac2b843f87f7a1ad23e8dd 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -48,7 +48,16 @@ class FormMail extends Form var $withsubstit; // Show substitution array var $withfrom; - var $withto; // Show recipient emails + /** + * @var int + * @deprecated Fill withto with array before calling method. + * @see withto + */ + public $withtosocid; + /** + * @var int|int[] + */ + public $withto; // Show recipient emails var $withtofree; // Show free text for recipient emails var $withtocc; var $withtoccc; @@ -275,7 +284,7 @@ class FormMail extends Form $out.= "\n<!-- Debut form mail -->\n"; if ($this->withform == 1) { - $out.= '<form method="POST" name="mailform" enctype="multipart/form-data" action="'.$this->param["returnurl"].'">'."\n"; + $out.= '<form method="POST" name="mailform" id="mailform" enctype="multipart/form-data" action="'.$this->param["returnurl"].'">'."\n"; $out.= '<input style="display:none" type="submit" id="sendmail" name="sendmail">'; $out.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'" />'; $out.= '<input type="hidden" name="trackid" value="'.$this->trackid.'" />'; @@ -703,6 +712,23 @@ class FormMail extends Form $out.= '</table>'."\n"; if ($this->withform == 1) $out.= '</form>'."\n"; + + // Disable enter key if option MAIN_MAILFORM_DISABLE_ENTER is set + if (! empty($conf->global->MAIN_MAILFORM_DISABLE_ENTERKEY)) + { + $out.= '<script type="text/javascript" language="javascript">'; + $out.= 'jQuery(document).ready(function () {'; + $out.= ' $(document).on("keypress", \'#mailform\', function (e) { /* Note this is calle at every key pressed ! */ + var code = e.keyCode || e.which; + if (code == 13) { + e.preventDefault(); + return false; + } + });'; + $out.=' })'; + $out.= '</script>'; + } + $out.= "<!-- Fin form mail -->\n"; return $out; diff --git a/htdocs/core/class/html.formmargin.class.php b/htdocs/core/class/html.formmargin.class.php new file mode 100644 index 0000000000000000000000000000000000000000..a52238be1b934231ead8d5cb5742464376cb927c --- /dev/null +++ b/htdocs/core/class/html.formmargin.class.php @@ -0,0 +1,273 @@ +<?php +/* Copyright (c) 2015 Laurent Destailleur <eldy@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * \file htdocs/core/class/html.formmargin.class.php + * \ingroup core + * \brief Fichier de la classe des fonctions predefinie de composants html autre + */ + + +/** + * Classe permettant la generation de composants html autre + * Only common components are here. + */ +class FormMargin +{ + var $db; + var $error; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db = $db; + + return 1; + } + + + + /** + * get array with margin information from lines of object + * + * @param CommonObject $object Object we want to get margin information for + * @param boolean $force_price True of not + * @return array Array with info + */ + function getMarginInfosArray($object, $force_price=false) + { + global $conf, $db; + + // Default returned array + $marginInfos = array( + 'pa_products' => 0, + 'pv_products' => 0, + 'margin_on_products' => 0, + 'margin_rate_products' => '', + 'mark_rate_products' => '', + 'pa_services' => 0, + 'pv_services' => 0, + 'margin_on_services' => 0, + 'margin_rate_services' => '', + 'mark_rate_services' => '', + 'pa_total' => 0, + 'pv_total' => 0, + 'total_margin' => 0, + 'total_margin_rate' => '', + 'total_mark_rate' => '' + ); + + foreach($object->lines as $line) + { + if (empty($line->pa_ht) && isset($line->fk_fournprice) && !$force_price) + { + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; + $product = new ProductFournisseur($db); + if ($product->fetch_product_fournisseur_price($line->fk_fournprice)) + $line->pa_ht = $product->fourn_unitprice * (1 - $product->fourn_remise_percent / 100); + if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == "2" && $product->fourn_unitcharges > 0) + $line->pa_ht += $product->fourn_unitcharges; + } + // si prix d'achat non renseigné et devrait l'être, alors prix achat = prix vente + if ((!isset($line->pa_ht) || $line->pa_ht == 0) && $line->subprice > 0 && (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1)) { + $line->pa_ht = $line->subprice * (1 - ($line->remise_percent / 100)); + } + + // calcul des marges + if (isset($line->fk_remise_except) && isset($conf->global->MARGIN_METHODE_FOR_DISCOUNT)) { // remise + $pa = $line->qty * $line->pa_ht; + $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100); + if ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '1') { // remise globale considérée comme produit + $marginInfos['pa_products'] += $pa; + $marginInfos['pv_products'] += $pv; + $marginInfos['pa_total'] += $pa; + $marginInfos['pv_total'] += $pv; + // if credit note, margin = -1 * (abs(selling_price) - buying_price) + if ($pv < 0) + $marginInfos['margin_on_products'] += -1 * (abs($pv) - $pa); + else + $marginInfos['margin_on_products'] += $pv - $pa; + } + elseif ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '2') { // remise globale considérée comme service + $marginInfos['pa_services'] += $pa; + $marginInfos['pv_services'] += $pv; + $marginInfos['pa_total'] += $pa; + $marginInfos['pv_total'] += $pv; + // if credit note, margin = -1 * (abs(selling_price) - buying_price) + if ($pv < 0) + $marginInfos['margin_on_services'] += -1 * (abs($pv) - $pa); + else + $marginInfos['margin_on_services'] += $pv - $pa; + } + elseif ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '3') { // remise globale prise en compte uniqt sur total + $marginInfos['pa_total'] += $pa; + $marginInfos['pv_total'] += $pv; + } + } + else { + $type=$line->product_type?$line->product_type:$line->fk_product_type; + if ($type == 0) { // product + $pa = $line->qty * $line->pa_ht; + $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100); + $marginInfos['pa_products'] += $pa; + $marginInfos['pv_products'] += $pv; + $marginInfos['pa_total'] += $pa; + $marginInfos['pv_total'] += $pv; + // if credit note, margin = -1 * (abs(selling_price) - buying_price) + if ($pv < 0) + $marginInfos['margin_on_products'] += -1 * (abs($pv) - $pa); + else + $marginInfos['margin_on_products'] += $pv - $pa; + } + elseif ($type == 1) { // service + $pa = $line->qty * $line->pa_ht; + $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100); + $marginInfos['pa_services'] += $pa; + $marginInfos['pv_services'] += $pv; + $marginInfos['pa_total'] += $pa; + $marginInfos['pv_total'] += $pv; + // if credit note, margin = -1 * (abs(selling_price) - buying_price) + if ($pv < 0) + $marginInfos['margin_on_services'] += -1 * (abs($pv) - $pa); + else + $marginInfos['margin_on_services'] += $pv - $pa; + } + } + } + if ($marginInfos['pa_products'] > 0) + $marginInfos['margin_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pa_products']; + if ($marginInfos['pv_products'] > 0) + $marginInfos['mark_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pv_products']; + + if ($marginInfos['pa_services'] > 0) + $marginInfos['margin_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pa_services']; + if ($marginInfos['pv_services'] > 0) + $marginInfos['mark_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pv_services']; + + // if credit note, margin = -1 * (abs(selling_price) - buying_price) + if ($marginInfos['pv_total'] < 0) + $marginInfos['total_margin'] = -1 * (abs($marginInfos['pv_total']) - $marginInfos['pa_total']); + else + $marginInfos['total_margin'] = $marginInfos['pv_total'] - $marginInfos['pa_total']; + if ($marginInfos['pa_total'] > 0) + $marginInfos['total_margin_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pa_total']; + if ($marginInfos['pv_total'] > 0) + $marginInfos['total_mark_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pv_total']; + + return $marginInfos; + } + + /** + * Show the array with all margin infos + * + * @param CommonObject $object Object we want to get margin information for + * @param boolean $force_price Force price + * @return void + */ + function displayMarginInfos($object, $force_price=false) + { + global $langs, $conf, $user; + + if (! empty($user->societe_id)) return; + + if (! $user->rights->margins->liretous) return; + + $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT); + + $marginInfo = $this->getMarginInfosArray($object, $force_price); + + if (! empty($conf->global->MARGIN_ADD_SHOWHIDE_BUTTON)) // TODO Warning this feature rely on an external js file that may be removed. Using native js function document.cookie should be better + { + print $langs->trans('ShowMarginInfos').' : '; + $hidemargininfos = $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW']; + print '<span id="showMarginInfos" class="linkobject '.(!empty($hidemargininfos)?'':'hideobject').'">'.img_picto($langs->trans("Disabled"),'switch_off').'</span>'; + print '<span id="hideMarginInfos" class="linkobject '.(!empty($hidemargininfos)?'hideobject':'').'">'.img_picto($langs->trans("Enabled"),'switch_on').'</span>'; + + print '<script>$(document).ready(function() { + $("span#showMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 0); $(".margininfos").show(); $("span#showMarginInfos").addClass("hideobject"); $("span#hideMarginInfos").removeClass("hideobject");})}); + $("span#hideMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 1); $(".margininfos").hide(); $("span#hideMarginInfos").addClass("hideobject"); $("span#showMarginInfos").removeClass("hideobject");})}); + });</script>'; + if (!empty($hidemargininfos)) print '<script>$(document).ready(function() {$(".margininfos").hide();});</script>'; + } + + print '<table class="nobordernopadding margintable" width="100%">'; + print '<tr class="liste_titre">'; + print '<td class="liste_titre">'.$langs->trans('Margins').'</td>'; + print '<td class="liste_titre" align="right">'.$langs->trans('SellingPrice').'</td>'; + if ($conf->global->MARGIN_TYPE == "1") + print '<td class="liste_titre" align="right">'.$langs->trans('BuyingPrice').'</td>'; + else + print '<td class="liste_titre" align="right">'.$langs->trans('CostPrice').'</td>'; + print '<td class="liste_titre" align="right">'.$langs->trans('Margin').'</td>'; + if (! empty($conf->global->DISPLAY_MARGIN_RATES)) + print '<td class="liste_titre" align="right">'.$langs->trans('MarginRate').'</td>'; + if (! empty($conf->global->DISPLAY_MARK_RATES)) + print '<td class="liste_titre" align="right">'.$langs->trans('MarkRate').'</td>'; + print '</tr>'; + + if (! empty($conf->product->enabled)) + { + //if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) { + print '<tr class="impair">'; + print '<td>'.$langs->trans('MarginOnProducts').'</td>'; + print '<td align="right">'.price($marginInfo['pv_products'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>'; + if (! empty($conf->global->DISPLAY_MARGIN_RATES)) + print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>'; + if (! empty($conf->global->DISPLAY_MARK_RATES)) + print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>'; + print '</tr>'; + } + + if (! empty($conf->service->enabled)) + { + print '<tr class="pair">'; + print '<td>'.$langs->trans('MarginOnServices').'</td>'; + print '<td align="right">'.price($marginInfo['pv_services'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['pa_services'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>'; + if (! empty($conf->global->DISPLAY_MARGIN_RATES)) + print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>'; + if (! empty($conf->global->DISPLAY_MARK_RATES)) + print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>'; + print '</tr>'; + } + + if (! empty($conf->product->enabled) && ! empty($conf->service->enabled)) + { + print '<tr class="impair">'; + print '<td>'.$langs->trans('TotalMargin').'</td>'; + print '<td align="right">'.price($marginInfo['pv_total'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['pa_total'], null, null, null, null, $rounding).'</td>'; + print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>'; + if (! empty($conf->global->DISPLAY_MARGIN_RATES)) + print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>'; + if (! empty($conf->global->DISPLAY_MARK_RATES)) + print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>'; + print '</tr>'; + } + print '</table>'; + } + +} + diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 08c19463d27dd680cf76c5dad65550968dd470b8..4f286d26eb7590f794e40aa12066b9796e7bd02c 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -592,6 +592,7 @@ class FormOther * @param array $arrayofcolors Array of colors. Example: array('29527A','5229A3','A32929','7A367A','B1365F','0D7813') * @return void * @deprecated + * @see selectColor() */ function select_color($set_color='', $prefix='f_color', $form_name='', $showcolorbox=1, $arrayofcolors='') { @@ -599,7 +600,7 @@ class FormOther } /** - * Output a HTML code to select a color + * Output a HTML code to select a color. Field will return an hexa color like '334455'. * * @param string $set_color Pre-selected color * @param string $prefix Name of HTML field @@ -611,6 +612,11 @@ class FormOther */ function selectColor($set_color='', $prefix='f_color', $form_name='', $showcolorbox=1, $arrayofcolors='', $morecss='') { + // Deprecation warning + if ($form_name) { + dol_syslog(__METHOD__ . ": form_name parameter is deprecated", LOG_WARNING); + } + global $langs,$conf; $out=''; diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php index 9469b680631c45a326071ce920e87ba64778b241..6411c76eeabd2620c4f015b195e207b285ec6b56 100644 --- a/htdocs/core/class/html.formprojet.class.php +++ b/htdocs/core/class/html.formprojet.class.php @@ -53,9 +53,10 @@ class FormProjets * @param int $show_empty Add an empty line * @param int $discard_closed Discard closed projects (0=Keep,1=hide completely,2=Disable) * @param int $forcefocus Force focus on field (works with javascript only) + * @param int $disabled Disabled * @return int Nber of project if OK, <0 if KO */ - function select_projects($socid=-1, $selected='', $htmlname='projectid', $maxlength=24, $option_only=0, $show_empty=1, $discard_closed=0, $forcefocus=0) + function select_projects($socid=-1, $selected='', $htmlname='projectid', $maxlength=24, $option_only=0, $show_empty=1, $discard_closed=0, $forcefocus=0, $disabled=0) { global $user,$conf,$langs; @@ -82,7 +83,7 @@ class FormProjets if ($socid > 0) $sql.= " AND (p.fk_soc=".$socid." OR p.fk_soc IS NULL)"; $sql.= " ORDER BY p.ref ASC"; - dol_syslog(get_class($this)."::select_projects", LOG_DEBUG); + dol_syslog(__METHOD__, LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) { @@ -100,7 +101,7 @@ class FormProjets } if (empty($option_only)) { - $out.= '<select class="flat'.($minmax?' '.$minmax:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>'; + $out.= '<select class="flat'.($minmax?' '.$minmax:'').'"'.($disabled?' disabled="disabled"':'').' id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>'; } if (!empty($show_empty)) { $out.= '<option value="0"> </option>'; @@ -147,13 +148,15 @@ class FormProjets $labeltoshow.=' - '.$langs->trans("LinkedToAnotherCompany"); } - if (!empty($selected) && $selected == $obj->rowid && $obj->fk_statut > 0) + if (!empty($selected) && $selected == $obj->rowid) { - $out.= '<option value="'.$obj->rowid.'" selected>'.$labeltoshow.'</option>'; + $out.= '<option value="'.$obj->rowid.'" selected'; + //if ($disabled) $out.=' disabled'; // with select2, field can't be preselected if disabled + $out.= '>'.$labeltoshow.'</option>'; } else { - if ($hideunselectables && $disabled) + if ($hideunselectables && $disabled && ($selected != $obj->rowid)) { $resultat=''; } @@ -189,17 +192,173 @@ class FormProjets } } + /** + * Output a combo list with projects qualified for a third party + * + * @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id) + * @param int $selected Id task preselected + * @param string $htmlname Nom de la zone html + * @param int $maxlength Maximum length of label + * @param int $option_only Return only html options lines without the select tag + * @param int $show_empty Add an empty line + * @param int $discard_closed Discard closed projects (0=Keep,1=hide completely,2=Disable) + * @param int $forcefocus Force focus on field (works with javascript only) + * @param int $disabled Disabled + * @return int Nber of project if OK, <0 if KO + */ + function select_task($socid=-1, $selected='', $htmlname='taskid', $maxlength=24, $option_only=0, $show_empty=1, $discard_closed=0, $forcefocus=0, $disabled=0) + { + global $user,$conf,$langs; + + require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; + + $out=''; + + $hideunselectables = false; + if (! empty($conf->global->PROJECT_HIDE_UNSELECTABLES)) $hideunselectables = true; + + $projectsListId = false; + if (empty($user->rights->projet->all->lire)) + { + $projectstatic=new Project($this->db); + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); + } + + // Search all projects + $sql = 'SELECT t.rowid, t.ref as tref, t.label as tlabel, p.ref, p.title, p.fk_soc, p.fk_statut, p.public'; + $sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p, '.MAIN_DB_PREFIX.'projet_task as t'; + $sql.= " WHERE p.entity = ".$conf->entity; + $sql.= " AND t.fk_projet = p.rowid"; + if ($projectsListId !== false) $sql.= " AND p.rowid IN (".$projectsListId.")"; + if ($socid == 0) $sql.= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)"; + if ($socid > 0) $sql.= " AND (p.fk_soc=".$socid." OR p.fk_soc IS NULL)"; + $sql.= " ORDER BY p.ref, t.ref ASC"; + + dol_syslog(__METHOD__, LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $minmax=''; + + // Use select2 selector + $nodatarole=''; + if (! empty($conf->use_javascript_ajax)) + { + include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; + $comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus); + $out.=$comboenhancement; + $nodatarole=($comboenhancement?' data-role="none"':''); + $minmax='minwidth100'; + } + + if (empty($option_only)) { + $out.= '<select class="flat'.($minmax?' '.$minmax:'').'"'.($disabled?' disabled="disabled"':'').' id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>'; + } + if (!empty($show_empty)) { + $out.= '<option value="0"> </option>'; + } + $num = $this->db->num_rows($resql); + $i = 0; + if ($num) + { + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + // If we ask to filter on a company and user has no permission to see all companies and project is linked to another company, we hide project. + if ($socid > 0 && (empty($obj->fk_soc) || $obj->fk_soc == $socid) && ! $user->rights->societe->lire) + { + // Do nothing + } + else + { + if ($discard_closed == 1 && $obj->fk_statut == 2) + { + $i++; + continue; + } + + $labeltoshow=dol_trunc($obj->ref,18); + //if ($obj->public) $labeltoshow.=' ('.$langs->trans("SharedProject").')'; + //else $labeltoshow.=' ('.$langs->trans("Private").')'; + $labeltoshow.=' '.dol_trunc($obj->title,$maxlength); + + $disabled=0; + if ($obj->fk_statut == 0) + { + $disabled=1; + $labeltoshow.=' - '.$langs->trans("Draft"); + } + else if ($obj->fk_statut == 2) + { + if ($discard_close == 2) $disabled=1; + $labeltoshow.=' - '.$langs->trans("Closed"); + } + else if ($socid > 0 && (! empty($obj->fk_soc) && $obj->fk_soc != $socid)) + { + $disabled=1; + $labeltoshow.=' - '.$langs->trans("LinkedToAnotherCompany"); + } + // Label for task + $labeltoshow.=' - '.$obj->tref.' '.dol_trunc($obj->tlabel,$maxlenght); + + if (!empty($selected) && $selected == $obj->rowid) + { + $out.= '<option value="'.$obj->rowid.'" selected'; + //if ($disabled) $out.=' disabled'; // with select2, field can't be preselected if disabled + $out.= '>'.$labeltoshow.'</option>'; + } + else + { + if ($hideunselectables && $disabled && ($selected != $obj->rowid)) + { + $resultat=''; + } + else + { + $resultat='<option value="'.$obj->rowid.'"'; + if ($disabled) $resultat.=' disabled'; + //if ($obj->public) $labeltoshow.=' ('.$langs->trans("Public").')'; + //else $labeltoshow.=' ('.$langs->trans("Private").')'; + $resultat.='>'; + $resultat.=$labeltoshow; + $resultat.='</option>'; + } + $out.= $resultat; + } + } + $i++; + } + } + if (empty($option_only)) { + $out.= '</select>'; + } + + print $out; + + $this->db->free($resql); + return $num; + } + else + { + dol_print_error($this->db); + return -1; + } + } + + /** * Build a HTML select list of element of same thirdparty to suggest to link them to project * * @param string $table_element Table of the element to update * @param int $socid socid to filter - * @return string The HTML select list of element + * @return int|string The HTML select list of element or '' if nothing or -1 if KO */ function select_element($table_element,$socid=0) { global $conf, $langs; + if ($table_element == 'projet_task') return ''; // Special cas of element we never link to a project (already always done) + $projectkey="fk_projet"; switch ($table_element) { @@ -231,7 +390,7 @@ class FormProjets $sql.= " FROM ".MAIN_DB_PREFIX.$table_element; $sql.= " WHERE ".$projectkey." is null"; - if (!empty($socid)) $sql.= " AND fk_soc=".$socid; + if (! empty($socid) && ! in_array($table_element, array('don'))) $sql.= " AND fk_soc=".$socid; if (! in_array($table_element, array('expensereport_det'))) $sql.= ' AND entity='.getEntity('project'); $sql.= " ORDER BY ref DESC"; diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 0e55da2769a5deeaf048943e9964cd7781eead12..9b4987ddb56572b7d83f6b09912c2af533f25bb3 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -707,6 +707,7 @@ class Translate * @param string $amount If not '', show currency + amount according to langs ($10, 10€). * @return string Amount + Currency symbol encoded into UTF8 * @deprecated Use method price to output a price + * @see price() */ function getCurrencyAmount($currency_code, $amount) { diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 6a7c52760258f2af898f127b9cbb1f5ebde2c3e0..c4908595493032904bb14c17e62586b97b70d36a 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -55,7 +55,7 @@ abstract class DoliDB implements Database public $transaction_opened; /** @var string Last successful query */ public $lastquery; - /** @ar string Last failed query */ + /** @var string Last failed query */ public $lastqueryerror; /** @var string Last error message */ public $lasterror; diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 3901e3231df2fec9daa0b37c5290799c82c5c7bb..05204885c9cbd82d5fe812a706f0756d136249a1 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -833,6 +833,7 @@ function unActivateModule($value, $requiredby=1) { $objMod = new $modName($db); $result=$objMod->remove(); + if ($result <= 0) $ret=$objMod->error; } else { @@ -846,7 +847,7 @@ function unActivateModule($value, $requiredby=1) } // Desactivation des modules qui dependent de lui - if ($requiredby) + if (! $ret && $requiredby) { $countrb=count($objMod->requiredby); for ($i = 0; $i < $countrb; $i++) @@ -1083,18 +1084,18 @@ function form_constantes($tableau,$strictw3c=0) if ($const == 'ADHERENT_MAILMAN_URL') { print '. '.$langs->trans("Example").': <a href="#" id="exampleclick1">'.img_down().'</a><br>'; - //print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&subscribees=%EMAIL%&send_welcome_msg_to_this_batch=1'; + //print 'http://lists.exampe.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&subscribees=%EMAIL%&send_welcome_msg_to_this_batch=1'; print '<div id="example1" class="hidden">'; - print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/add?subscribees_upload=%EMAIL%&adminpw=%MAILMAN_ADMINPW%&subscribe_or_invite=0&send_welcome_msg_to_this_batch=0&notification_to_list_owner=0'; + print 'http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members/add?subscribees_upload=%EMAIL%&adminpw=%MAILMAN_ADMINPW%&subscribe_or_invite=0&send_welcome_msg_to_this_batch=0&notification_to_list_owner=0'; print '</div>'; } if ($const == 'ADHERENT_MAILMAN_UNSUB_URL') { print '. '.$langs->trans("Example").': <a href="#" id="exampleclick2">'.img_down().'</a><br>'; print '<div id="example2" class="hidden">'; - print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?unsubscribees_upload=%EMAIL%&adminpw=%MAILMAN_ADMINPW%&send_unsub_ack_to_this_batch=0&send_unsub_notifications_to_list_owner=0'; + print 'http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members/remove?unsubscribees_upload=%EMAIL%&adminpw=%MAILMAN_ADMINPW%&send_unsub_ack_to_this_batch=0&send_unsub_notifications_to_list_owner=0'; print '</div>'; - //print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%'; + //print 'http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%'; } if ($const == 'ADHERENT_MAILMAN_LISTS') { @@ -1105,7 +1106,7 @@ function form_constantes($tableau,$strictw3c=0) print 'TYPE:Type1:mymailmanlist1,TYPE:Type2:mymailmanlist2<br>'; if ($conf->categorie->enabled) print 'CATEG:Categ1:mymailmanlist1,CATEG:Categ2:mymailmanlist2<br>'; print '</div>'; - //print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%'; + //print 'http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%'; } print "</td>\n"; diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 8013896d7bd787d9915239d9c8088d6df47e3cb8..fd2a3cd40993557b8bf23aa46f1372732527c8bf 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -103,7 +103,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print '<td class="nowrap" style="padding-bottom: 2px; padding-right: 4px;">'; print $langs->trans("ThirdParty").' '; print '</td><td class="nowrap maxwidthonsmartphone" style="padding-bottom: 2px;">'; - print $form->select_thirdparty($socid, 'socid'); + print $form->select_company($socid, 'socid'); print '</td></tr>'; } @@ -421,6 +421,15 @@ function actions_prepare_head($object) $head[$h][2] = 'card'; $h++; + // Tab to link resources + if ($conf->resource->enabled) + { + $head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=action&element_id='.$object->id; + $head[$h][1] = $langs->trans("Resources"); + $head[$h][2] = 'resources'; + $h++; + } + // Attached files require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $upload_dir = $conf->agenda->dir_output . "/" . $object->id; diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 0b119ada66ae9ba9e37b792c3292442961b2b340..db47ad041e247930e582b33fc3da81d9d9e4222d 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2007-2014 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2007-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr> * * This program is free software; you can redistribute it and/or modify @@ -328,16 +328,19 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $ if (empty($minLengthToAutocomplete)) $minLengthToAutocomplete=0; - $msg = '<script type="text/javascript"> - $(document).ready(function() { - $(\'#'.$htmlname.'\').select2({ - width: \'resolve\', - minimumInputLength: '.$minLengthToAutocomplete.', - })'; + $tmpplugin='select2'; + $msg='<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' --> + <script type="text/javascript"> + $(document).ready(function () { + $(\''.(preg_match('/^\./',$htmlname)?$htmlname:'#'.$htmlname).'\').'.$tmpplugin.'({ + dir: \'ltr\', + width: \'resolve\', /* off or resolve */ + minimumInputLength: '.$minLengthToAutocomplete.' + })'; if ($forcefocus) $msg.= '.select2(\'focus\')'; - $msg.= ';'; + $msg.= ';'."\n"; - if (count($event)) + if (count($events)) { $msg.= ' jQuery("#'.$htmlname.'").change(function () { diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 4eb338528360f7b540f0f706377dd952a91510a9..c4385b6324eaf1b1aefed7383edd5542349804ef 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -82,7 +82,7 @@ function societe_prepare_head(Societe $object) $h++; } //show categorie tab - if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) + /*if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; $type = Categorie::TYPE_CUSTOMER; @@ -91,7 +91,16 @@ function societe_prepare_head(Societe $object) $head[$h][1] = $langs->trans('Categories'); $head[$h][2] = 'category'; $h++; - } + }*/ + + // Tab to link resources + if ($conf->resource->enabled && ! empty($conf->global->RESOURCE_ON_THIRDPARTIES)) + { + $head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=societe&element_id='.$object->id; + $head[$h][1] = $langs->trans("Resources"); + $head[$h][2] = 'resources'; + $h++; + } // Show more tabs from modules // Entries must be declared in modules descriptor with line @@ -355,7 +364,7 @@ function getState($id,$withcode='',$dbtouse=0) } else { - return $langs->trans("NotDefined"); + return $langs->transnoentitiesnoconv("NotDefined"); } } else dol_print_error($dbtouse,''); @@ -657,7 +666,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print "</tr>"; - $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays as country_id, p.poste, p.phone, p.phone_mobile, p.phone_perso, p.fax, p.email, p.skype, p.statut "; + $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays as country_id, p.civility, p.poste, p.phone as phone_pro, p.phone_mobile, p.phone_perso, p.fax, p.email, p.skype, p.statut "; $sql .= ", p.civility as civility_id, p.address, p.zip, p.town"; $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p"; $sql .= " WHERE p.fk_soc = ".$object->id; @@ -667,6 +676,8 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') dol_syslog('core/lib/company.lib.php :: show_contacts', LOG_DEBUG); $result = $db->query($sql); + if (! $result) dol_print_error($db); + $num = $db->num_rows($result); $var=true; @@ -686,6 +697,14 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') $contactstatic->lastname = $obj->lastname; $contactstatic->firstname = $obj->firstname; $contactstatic->civility_id = $obj->civility_id; + $contactstatic->poste = $obj->poste; + $contactstatic->address = $obj->address; + $contactstatic->zip = $obj->zip; + $contactstatic->town = $obj->town; + $contactstatic->phone_pro = $obj->phone_pro; + $contactstatic->phone_mobile = $obj->phone_mobile; + $contactstatic->phone_perso = $obj->phone_perso; + $contactstatic->email = $obj->email; print $contactstatic->getNomUrl(1,'',0,'&backtopage='.urlencode($backtopage)); print '</td><td>'; if ($obj->poste) print $obj->poste; @@ -710,11 +729,13 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print '</a> '; } if ($coords) { print dol_print_address($coords,'address_contact_'.$obj->rowid, 'contact', $obj->rowid); $outdone++; } - if ($obj->phone || $obj->phone_mobile || $obj->phone_perso) print ($outdone?'<br>':''); - if ($obj->phone) { print dol_print_phone($obj->phone,$country_code['code'],$obj->rowid,$object->id,'AC_TEL',' ','phone'); $outdone++; } + + if ($obj->phone_pro || $obj->phone_mobile || $obj->phone_perso || $obj->fax) print ($outdone?'<br>':''); + if ($obj->phone_pro) { print dol_print_phone($obj->phone_pro,$country_code['code'],$obj->rowid,$object->id,'AC_TEL',' ','phone'); $outdone++; } if ($obj->phone_mobile) { print dol_print_phone($obj->phone_mobile,$country_code['code'],$obj->rowid,$object->id,'AC_TEL',' ','phone'); $outdone++; } if ($obj->phone_perso) { print dol_print_phone($obj->phone_perso,$country_code['code'],$obj->rowid,$object->id,'AC_TEL',' ','phone'); $outdone++; } if ($obj->fax) { print dol_print_phone($obj->fax,$country_code['code'],$obj->rowid,$object->id,'AC_FAX',' ','fax'); $outdone++; } + print '<div style="clear: both;"></div>'; $outdone=0; if ($obj->email) print dol_print_email($obj->email,$obj->rowid,$object->id,'AC_EMAIL',0,0,1); diff --git a/htdocs/core/lib/contact.lib.php b/htdocs/core/lib/contact.lib.php index 3a50b79edd7825121cf268dc370c3a2ee2300f84..40dab648de1cb00e3137b70b993acd4c7d787fbd 100644 --- a/htdocs/core/lib/contact.lib.php +++ b/htdocs/core/lib/contact.lib.php @@ -87,16 +87,6 @@ function contact_prepare_head(Contact $object) $head[$tab][2] = 'documents'; $tab++; - if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) - { - require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; - $type = Categorie::TYPE_CONTACT; - $head[$tab][0] = DOL_URL_ROOT.'/categories/categorie.php?id='.$object->id."&type=".$type; - $head[$tab][1] = $langs->trans('Categories'); - $head[$tab][2] = 'category'; - $tab++; - } - // Info $head[$tab][0] = DOL_URL_ROOT.'/contact/info.php?id='.$object->id; $head[$tab][1] = $langs->trans("Info"); diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 44507bbb919ad82ca6e34cd2ee4e44e52504e226..088c36e06df8754af3892a22ceddc806c55e82f1 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -278,8 +278,8 @@ function convertSecondToTime($iSecond, $format='all', $lengthOfDay=86400, $lengt * YYYYMMDDHHMMSS * YYYYMMDDTHHMMSSZ * YYYY-MM-DDTHH:MM:SSZ (RFC3339) - * DD/MM/YY or DD/MM/YYYY (this format should not be used anymore) - * DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (this format should not be used anymore) + * DD/MM/YY or DD/MM/YYYY (deprecated) + * DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (deprecated) * @param int $gm 1 =Input date is GM date, * 0 =Input date is local date using PHP server timezone * @return int Date as a timestamp @@ -292,7 +292,7 @@ function dol_stringtotime($string, $gm=1) // Convert date with format DD/MM/YYY HH:MM:SS. This part of code should not be used. if (preg_match('/^([0-9]+)\/([0-9]+)\/([0-9]+)\s?([0-9]+)?:?([0-9]+)?:?([0-9]+)?/i',$string,$reg)) { - dol_syslog("dol_stringtotime call to function with deprecated parameter", LOG_WARNING); + dol_syslog("dol_stringtotime call to function with deprecated parameter format", LOG_WARNING); // Date est au format 'DD/MM/YY' ou 'DD/MM/YY HH:MM:SS' // Date est au format 'DD/MM/YYYY' ou 'DD/MM/YYYY HH:MM:SS' $sday = $reg[1]; diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php index 1fdd23996106d38ef50a4603b64e46579b935375..5cc5c2d6785680be8df10b39771e55fb4e3ff579 100644 --- a/htdocs/core/lib/donation.lib.php +++ b/htdocs/core/lib/donation.lib.php @@ -24,15 +24,14 @@ /** * Prepare array with list of admin tabs * - * @param Donation $object Donation * @return array Array of tabs to show */ -function donation_admin_prepare_head($object) +function donation_admin_prepare_head() { global $langs, $conf; $h = 0; - $head = array (); + $head = array(); $head[$h][0] = DOL_URL_ROOT . '/don/admin/donation.php'; $head[$h][1] = $langs->trans("Miscellaneous"); @@ -43,14 +42,14 @@ function donation_admin_prepare_head($object) // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:-tabname); to remove a tab - complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation_admin'); + complete_head_from_modules($conf, $langs, null, $head, $h, 'donation_admin'); $head[$h][0] = DOL_URL_ROOT . '/don/admin/donation_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFields"); $head[$h][2] = 'attributes'; $h++; - complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation_admin', 'remove'); + complete_head_from_modules($conf, $langs, null, $head, $h, 'donation_admin', 'remove'); return $head; } @@ -66,7 +65,7 @@ function donation_prepare_head($object) global $langs, $conf; $h = 0; - $head = array (); + $head = array(); $head[$h][0] = DOL_URL_ROOT . '/don/card.php?id=' . $object->id; $head[$h][1] = $langs->trans("Card"); @@ -79,6 +78,15 @@ function donation_prepare_head($object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation'); + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $upload_dir = $conf->don->dir_output . '/' . get_exdir($filename,2,0,1,$object,'donation'). '/'. dol_sanitizeFileName($object->ref); + $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); + $head[$h][0] = DOL_URL_ROOT.'/don/document.php?id='.$object->id; + $head[$h][1] = $langs->trans('Documents'); + if($nbFiles > 0) $head[$h][1].= ' <span class="badge">'.$nbFiles.'</span>'; + $head[$h][2] = 'documents'; + $h++; + $head[$h][0] = DOL_URL_ROOT . '/don/info.php?id=' . $object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index daae392cd393af2a443b385d43d713bb82e65e51..a8eeb8d3214e5e4477c86619eb580e40c5d41500 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -152,7 +152,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil // if we're in a directory and we want recursive behavior, call this function again if ($recursive) { - $file_list = array_merge($file_list,dol_dir_list($path."/".$file, $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder, $mode)); + $file_list = array_merge($file_list,dol_dir_list($path."/".$file, $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder, $mode, $nohook)); } } else if (! $isdir && (($types == "files") || ($types == "all"))) @@ -793,12 +793,12 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable /** * Remove a file or several files with a mask * - * @param string $file File to delete or mask of file to delete - * @param int $disableglob Disable usage of glob like * + * @param string $file File to delete or mask of files to delete + * @param int $disableglob Disable usage of glob like * so function is an exact delete function that will return error if no file found * @param int $nophperrors Disable all PHP output errors * @param int $nohook Disable all hooks * @param object $object Current object in use - * @return boolean True if file is deleted (or if glob is used and there's nothing to delete), False if error + * @return boolean True if no error (file is deleted or if glob is used and there's nothing to delete), False if error */ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=null) { @@ -823,19 +823,20 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n $reshook=$hookmanager->executeHooks('deleteFile', $parameters, $object); } - if (empty($nohook) && isset($reshook) && $reshook != '') // 0:not deleted, 1:deleted, null or '' for bypass + if (empty($nohook) && $reshook != 0) // reshook = 0 to do standard actions, 1 = ok, -1 = ko { - return $reshook; + if ($reshook < 0) return false; + return true; } else { $error=0; //print "x".$file." ".$disableglob;exit; - $ok=true; $file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset if (empty($disableglob) && ! empty($file_osencoded)) { + $ok=true; $globencoded=str_replace('[','\[',$file_osencoded); $globencoded=str_replace(']','\]',$globencoded); $listofdir=glob($globencoded); @@ -853,6 +854,7 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n } else { + $ok=false; if ($nophperrors) $ok=@unlink($file_osencoded); else $ok=unlink($file_osencoded); if ($ok) dol_syslog("Removed file ".$file_osencoded, LOG_DEBUG); @@ -958,9 +960,9 @@ function dol_delete_preview($object) if (file_exists($file) && is_writable($file)) { - if ( ! dol_delete_file($file,1) ) + if (! dol_delete_file($file,1)) { - $object->error=$langs->trans("ErrorFailedToOpenFile",$file); + $object->error=$langs->trans("ErrorFailedToDeleteFile",$file); return 0; } } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 8b6dfa38657bad7f9cd33f2c7952101c2a276485..de6cacff1753ecbf8fbb53b69b41f4c6a65f159b 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -45,10 +45,13 @@ include_once DOL_DOCUMENT_ROOT .'/core/lib/json.lib.php'; * @param string $class Class name * @param string $member Name of property * @return mixed Return value of static property - * @deprecated Dolibarr now requires 5.3.0+ + * @deprecated Dolibarr now requires 5.3.0+, use $class::$property syntax + * @see https://php.net/manual/language.oop5.static.php */ function getStaticMember($class, $member) { + dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING); + // This part is deprecated. Uncomment if for php 5.2.*, and comment next isset class::member /*if (version_compare(phpversion(), '5.3.0', '<')) { @@ -215,7 +218,7 @@ function dol_shutdown() global $conf,$user,$langs,$db; $disconnectdone=false; $depth=0; if (is_object($db) && ! empty($db->connected)) { $depth=$db->transaction_opened; $disconnectdone=$db->close(); } - dol_syslog("--- End access to ".$_SERVER["PHP_SELF"].(($disconnectdone && $depth)?' (Warn: db disconnection forced, transaction depth was '.$depth.')':''), (($disconnectdone && $depth)?LOG_WARNING:LOG_DEBUG)); + dol_syslog("--- End access to ".$_SERVER["PHP_SELF"].(($disconnectdone && $depth)?' (Warn: db disconnection forced, transaction depth was '.$depth.')':''), (($disconnectdone && $depth)?LOG_WARNING:LOG_INFO)); } @@ -227,7 +230,7 @@ function dol_shutdown() * @param int $method Type of method (0 = get then post, 1 = only get, 2 = only post, 3 = post then get, 4 = post then get then cookie) * @param int $filter Filter to apply when $check is set to custom. (See http://php.net/manual/en/filter.filters.php for détails) * @param mixed $options Options to pass to filter_var when $check is set to custom - * @return string||string[] Value found (string or array), or '' if check fails + * @return string|string[] Value found (string or array), or '' if check fails */ function GETPOST($paramname,$check='',$method=0,$filter=NULL,$options=NULL) { @@ -387,11 +390,12 @@ function dol_buildpath($path, $type=0) * * @param object $object Object to clone * @return object Object clone - * @deprecated Dolibarr no longer supports PHP4, you can now use native function + * @deprecated Dolibarr no longer supports PHP4, use PHP5 native clone construct + * @see https://php.net/manual/language.oop5.cloning.php */ function dol_clone($object) { - dol_syslog("Functions.lib::dol_clone Clone object"); + dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING); $myclone=clone($object); return $myclone; @@ -541,7 +545,7 @@ function dol_escape_js($stringtoescape, $mode=0, $noescapebackslashn=0) /** - * Returns text escaped for inclusion in HTML alt or title tags + * Returns text escaped for inclusion in HTML alt or title tags, or into values of HTMPL input fields * * @param string $stringtoescape String to escape * @param int $keepb Do not clean b tags @@ -740,7 +744,7 @@ function dol_get_fiche_head($links=array(), $active='0', $title='', $notab=0, $p else $isactive=false; - if ($i <=$limittoshow || $isactive ) + if ($i <= $limittoshow || $isactive ) { $out.='<div class="inline-block tabsElem'.($isactive ? ' tabsElemActive' : '').((! $isactive && ! empty($conf->global->MAIN_HIDE_INACTIVETAB_ON_PRINT))?' hideonprint':'').'"><!-- id tab = '.(empty($links[$i][2])?'':$links[$i][2]).' -->'; if (isset($links[$i][2]) && $links[$i][2] == 'image') @@ -774,13 +778,13 @@ function dol_get_fiche_head($links=array(), $active='0', $title='', $notab=0, $p if (isset($links[$i][2]) && $links[$i][2] == 'image') { if (!empty($links[$i][0])) - $outmore.='<a class="tabimage" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; + $outmore.='<a class="tabimage" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; else - $outmore.='<span class="tabspan">'.$links[$i][1].'</span>'."\n"; + $outmore.='<span class="tabspan">'.$links[$i][1].'</span>'."\n"; } else if (! empty($links[$i][1])) - $outmore.='<a "'.(! empty($links[$i][2])?' id="'.$links[$i][2].'"':'').' class="inline-block" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; + $outmore.='<a'.(! empty($links[$i][2])?' id="'.$links[$i][2].'"':'').' class="inline-block" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n"; $outmore.='</div>'; } @@ -789,7 +793,7 @@ function dol_get_fiche_head($links=array(), $active='0', $title='', $notab=0, $p if ($displaytab > $limittoshow) { - $tabsname=str_replace ("@", "", $picto); + $tabsname=str_replace("@", "", $picto); $out.='<div id="moretabs'.$tabsname.'" class="inline-block tabsElem">'; $out.='<a href="" data-role="button" style="background-color: #f0f0f0;" class="tab inline-block">'.$langs->trans("More").'...</a>'; $out.='<div id="moretabsList'.$tabsname.'" style="position: absolute; left: -999em;text-align: left;margin:0px;padding:2px">'.$outmore.'</div>'; @@ -831,6 +835,25 @@ function dol_get_fiche_end($notab=0) else return ''; } +/** + * Show a string with the label tag dedicated to the HTML edit field. + * + * @param string $langkey Translation key + * @param string $fieldkey Key of the html select field the text refers to + * @param int $fieldrequired 1=Field is mandatory + */ +function fieldLabel($langkey, $fieldkey, $fieldrequired=0) +{ + global $conf, $langs; + $ret=''; + if ($fieldrequired) $ret.='<span class="fieldrequired">'; + if (empty($conf->dol_use_jmobile)) $ret.='<label for="'.$fieldkey.'">'; + $ret.=$langs->trans($langkey); + if (empty($conf->dol_use_jmobile)) $ret.='</label>'; + if ($fieldrequired) $ret.='</span>'; + return $ret; +} + /** * Return string to add class property on html element with pair/impair. * @@ -854,6 +877,7 @@ function dol_bc($var,$moreclass='') * @param string $sep Separator to use to build string * @param Translate $outputlangs Object lang that contains language for text translation. * @return string Formated string + * @see dol_print_address */ function dol_format_address($object,$withcountry=0,$sep="\n",$outputlangs='') { @@ -1581,6 +1605,7 @@ function dol_user_country() * @param int $mode thirdparty|contact|member|other * @param int $id Id of object * @return void + * @see dol_format_address */ function dol_print_address($address, $htmlid, $mode, $id) { @@ -1622,7 +1647,7 @@ function dol_print_address($address, $htmlid, $mode, $id) /** * Return true if email syntax is ok * - * @param string $address email (Ex: "toto@titi.com", "John Do <johndo@titi.com>") + * @param string $address email (Ex: "toto@examle.com", "John Do <johndo@example.com>") * @param int $acceptsupervisorkey If 1, the special string '__SUPERVISOREMAIL__' is also accepted as valid * @return boolean true if email syntax is OK, false if KO or empty string */ @@ -1702,11 +1727,15 @@ function dol_substr($string,$start,$length,$stringencoding='') * @param string $url Param to add an url to click values * @return void * @deprecated + * @see DolGraph */ function dol_print_graph($htmlid,$width,$height,$data,$showlegend=0,$type='pie',$showpercent=0,$url='') { + dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING); + global $conf,$langs; global $theme_datacolor; // To have var kept when function is called several times + if (empty($conf->use_javascript_ajax)) return; $jsgraphlib='flot'; $datacolor=array(); @@ -2186,7 +2215,7 @@ function img_help($usehelpcursor = 1, $usealttitle = 1) else $usealttitle = $langs->trans('Info'); } - return img_picto($usealttitle, 'info.png', ($usehelpcursor ? 'style="cursor: help"' : '')); + return img_picto($usealttitle, 'info.png', ($usehelpcursor ? 'style="vertical-align: middle; cursor: help"' : 'style="vertical-align: middle;"')); } /** @@ -2201,7 +2230,7 @@ function img_info($titlealt = 'default') if ($titlealt == 'default') $titlealt = $langs->trans('Informations'); - return img_picto($titlealt, 'info.png'); + return img_picto($titlealt, 'info.png', 'style="vertical-align: middle;"'); } /** @@ -2217,7 +2246,7 @@ function img_warning($titlealt = 'default', $float = 0) if ($titlealt == 'default') $titlealt = $langs->trans('Warning'); - return img_picto($titlealt, 'warning.png', ($float ? 'style="float: right"' : '')); + return img_picto($titlealt, 'warning.png', 'class="pictowarning"'.($float ? ' style="float: right"' : '')); } /** @@ -2380,9 +2409,12 @@ function img_mime($file, $titlealt = '') * @param int $option Option * @return string Return img tag * @deprecated + * @see img_picto */ function img_phone($titlealt = 'default', $option = 0) { + dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING); + global $conf,$langs; if ($titlealt == 'default') $titlealt = $langs->trans('Call'); @@ -2452,7 +2484,7 @@ function info_admin($text, $infoonimgalt = 0, $nodiv=0) return img_picto($text, 'info', 'class="hideonsmartphone"'); } - return ($nodiv?'':'<div class="info hideonsmartphone">').img_picto($langs->trans('InfoAdmin'), 'info', 'class="hideonsmartphone"').' '.$text.($nodiv?'':'</div>'); + return ($nodiv?'':'<div class="info hideonsmartphone">').img_picto($langs->trans('InfoAdmin'), ($nodiv?'info':'info_black'), 'class="hideonsmartphone"').' '.$text.($nodiv?'':'</div>'); } @@ -2607,11 +2639,12 @@ function dol_print_error_email($prefixcode) * @param string $td Options of attribute td ("" by defaut, example: 'align="center"') * @param string $sortfield Current field used to sort * @param string $sortorder Current sort order + * @param string $prefix Prefix for css * @return void */ -function print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $td="", $sortfield="", $sortorder="") +function print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $td="", $sortfield="", $sortorder="", $prefix="") { - print getTitleFieldOfList($name, 0, $file, $field, $begin, $moreparam, $td, $sortfield, $sortorder); + print getTitleFieldOfList($name, 0, $file, $field, $begin, $moreparam, $td, $sortfield, $sortorder, $prefix); } /** @@ -2626,9 +2659,10 @@ function print_liste_field_titre($name, $file="", $field="", $begin="", $morepar * @param string $moreattrib Add more attributes on th ("" by defaut) * @param string $sortfield Current field used to sort * @param string $sortorder Current sort order + * @param string $prefix Prefix for css * @return string */ -function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="") +function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="") { global $conf; //print "$name, $file, $field, $begin, $options, $moreattrib, $sortfield, $sortorder<br>\n"; @@ -2642,7 +2676,7 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m // If field is used as sort criteria we use a specific class // Example if (sortfield,field)=("nom","xxx.nom") or (sortfield,field)=("nom","nom") if ($field && ($sortfield == $field || $sortfield == preg_replace("/^[^\.]+\./","",$field))) $out.= '<'.$tag.' class="liste_titre_sel" '. $moreattrib.'>'; - else $out.= '<'.$tag.' class="liste_titre" '. $moreattrib.'>'; + else $out.= '<'.$tag.' class="'.$prefix.'liste_titre" '. $moreattrib.'>'; if (! empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field { @@ -2702,9 +2736,12 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m * @param string $title Title to show * @return string Title to show * @deprecated Use print_fiche_titre instead + * @see print_fiche_titre */ function print_titre($title) { + dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING); + print '<div class="titre">'.$title.'</div>'; } @@ -2717,6 +2754,7 @@ function print_titre($title) * @param int $pictoisfullpath 1=Icon name is a full absolute url of image * @param int $id To force an id on html objects * @return void + * @deprecated Use print load_fiche_titre instead */ function print_fiche_titre($title, $mesg='', $picto='title_generic.png', $pictoisfullpath=0, $id='') { @@ -2822,34 +2860,34 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so if ($cpt>=1) { - $pagelist.= '<li class="pagination"><a href="'.$file.'?page=0'.$options.'&sortfield='.$sortfield.'&sortorder='.$sortorder.'">1</a></li>'; + $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page=0'.$options.'&sortfield='.$sortfield.'&sortorder='.$sortorder.'">1</a></li>'; if ($cpt >= 2) $pagelist.='<li><span class="inactive">...</span></li>'; } do { if ($cpt==$page) { - $pagelist.= '<li class="pagination"><span class="active">'.($page+1).'</span></li>'; + $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="active"':'data-role="button"').'>'.($page+1).'</span></li>'; } else { - $pagelist.= '<li class="pagination"><a href="'.$file.'?page='.$cpt.$options.'&sortfield='.$sortfield.'&sortorder='.$sortorder.'">'.($cpt+1).'</a></li>'; + $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.$cpt.$options.'&sortfield='.$sortfield.'&sortorder='.$sortorder.'">'.($cpt+1).'</a></li>'; } $cpt++; } while ($cpt < $nbpages && $cpt<=$page+$maxnbofpage); if ($cpt<$nbpages) { - if ($cpt<$nbpages-1) $pagelist.= '<li class="pagination"><span class="inactive">...</span></li>'; - $pagelist.= '<li class="pagination"><a href="'.$file.'?page='.($nbpages-1).$options.'&sortfield='.$sortfield.'&sortorder='.$sortorder.'">'.$nbpages.'</a></li>'; + if ($cpt<$nbpages-1) $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="inactive"':'data-role="button"').'>...</span></li>'; + $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-1).$options.'&sortfield='.$sortfield.'&sortorder='.$sortorder.'">'.$nbpages.'</a></li>'; } } else { - $pagelist.= '<li class="pagination"><span class="active">'.($page+1)."</li>"; + $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="active"':'data-role="button"').'>'.($page+1)."</li>"; } } - print_fleche_navigation($page,$file,$options,$nextpage,$pagelist,$morehtml); + print_fleche_navigation($page,$file,$options,$nextpage,$pagelist,$morehtml); // output the div and ul for previous/last completed with page numbers into $pagelist print '</td>'; print '</tr></table>'."\n"; @@ -4059,9 +4097,12 @@ function dol_nboflines_bis($text,$maxlinesize=0,$charset='UTF-8') * * @return float Time (millisecondes) with microsecondes in decimal part * @deprecated Dolibarr does not support PHP4, you should use native function + * @see microtime() */ function dol_microtime_float() { + dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING); + return microtime(true); } @@ -4090,8 +4131,8 @@ function dol_textishtml($msg,$option=0) elseif (preg_match('/<(br|div|font|li|span|strong|table)>/i',$msg)) return true; elseif (preg_match('/<(br|div|font|li|span|strong|table)\s+[^<>\/]*>/i',$msg)) return true; elseif (preg_match('/<(br|div|font|li|span|strong|table)\s+[^<>\/]*\/>/i',$msg)) return true; - elseif (preg_match('/<img\s+[^<>]*src[^<>]*>/i',$msg)) return true; // must accept <img src="http://mydomain.com/aaa.png" /> - elseif (preg_match('/<a\s+[^<>]*href[^<>]*>/i',$msg)) return true; // must accept <a href="http://mydomain.com/aaa.png" /> + elseif (preg_match('/<img\s+[^<>]*src[^<>]*>/i',$msg)) return true; // must accept <img src="http://example.com/aaa.png" /> + elseif (preg_match('/<a\s+[^<>]*href[^<>]*>/i',$msg)) return true; // must accept <a href="http://example.com/aaa.png" /> elseif (preg_match('/<h[0-9]>/i',$msg)) return true; elseif (preg_match('/&[A-Z0-9]{1,6};/i',$msg)) return true; // Html entities names (http://www.w3schools.com/tags/ref_entities.asp) elseif (preg_match('/&#[0-9]{2,3};/i',$msg)) return true; // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp) @@ -4281,6 +4322,8 @@ function dolGetFirstLastname($firstname,$lastname,$nameorder=-1) */ function setEventMessage($mesgs, $style='mesgs') { + dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING); + if (! is_array($mesgs)) // If mesgs is a string { if ($mesgs) $_SESSION['dol_events'][$style][] = $mesgs; @@ -4828,7 +4871,7 @@ function complete_head_from_modules($conf,$langs,$object,&$head,&$h,$type,$mode= * Print common footer : * conf->global->MAIN_HTML_FOOTER * conf->global->MAIN_GOOGLE_AN_ID - * DOL_TUNING + * conf->global->MAIN_SHOW_TUNING_INFO or $_SERVER["MAIN_SHOW_TUNING_INFO"] * conf->logbuffer * * @param string $zone 'private' (for private pages) or 'public' (for public pages) @@ -4865,7 +4908,7 @@ function printCommonFooter($zone='private') } // End of tuning - if (! empty($_SERVER['DOL_TUNING']) || ! empty($conf->global->MAIN_SHOW_TUNING_INFO)) + if (! empty($_SERVER['MAIN_SHOW_TUNING_INFO']) || ! empty($conf->global->MAIN_SHOW_TUNING_INFO)) { print "\n".'<script type="text/javascript">'."\n"; print 'window.console && console.log("'; diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index e06577cf8f507e05fedd5c6c064b10ac0e8b64d3..09801972ce596f4763958b167ca089ef564257c8 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -394,9 +394,9 @@ function dol_print_object_info($object) /** * Return an email formatted to include a tracking id - * For example myemail@mydomain.com becom myemail+trackingid@mydomain.com + * For example myemail@example.com becom myemail+trackingid@example.com * - * @param string $email Email address (Ex: "toto@titi.com", "John Do <johndo@titi.com>") + * @param string $email Email address (Ex: "toto@example.com", "John Do <johndo@example.com>") * @param string $trackingid Tracking id (Ex: thi123 for thirdparty with id 123) * @return boolean True if domain email is OK, False if KO */ @@ -409,7 +409,7 @@ function dolAddEmailTrackId($email, $trackingid) /** * Return true if email has a domain name that can't be resolved * - * @param string $mail Email address (Ex: "toto@titi.com", "John Do <johndo@titi.com>") + * @param string $mail Email address (Ex: "toto@example.com", "John Do <johndo@example.com>") * @return boolean True if domain email is OK, False if KO */ function isValidMailDomain($mail) @@ -1918,22 +1918,24 @@ function fetchObjectByElement($element_id,$element_type) { * Convert an array with RGB value into hex RGB value * * @param array $arraycolor Array - * @param string $colorifnotfound Color code to return if entry not defined + * @param string $colorifnotfound Color code to return if entry not defined or not a RGB format * @return string RGB hex value (without # before). For example: FF00FF * @see Make the opposite of colorStringToArray */ function colorArrayToHex($arraycolor,$colorifnotfound='888888') { if (! is_array($arraycolor)) return $colorifnotfound; + if (empty($arraycolor)) return $colorifnotfound; return dechex($arraycolor[0]).dechex($arraycolor[1]).dechex($arraycolor[2]); } /** - * Convert a string RGB value ('FFFFFF', '255,255,255') into an array RGB array(255,255,255) + * Convert a string RGB value ('FFFFFF', '255,255,255') into an array RGB array(255,255,255). + * If entry is already an array, return it. * * @param string $stringcolor String with hex (FFFFFF) or comma RGB ('255,255,255') - * @param string $colorifnotfound Color code to return if entry not defined + * @param array $colorifnotfound Color code array to return if entry not defined * @return string RGB hex value (without # before). For example: FF00FF * @see Make the opposite of colorArrayToHex */ diff --git a/htdocs/core/lib/geturl.lib.php b/htdocs/core/lib/geturl.lib.php index 8f6847bcb9a6ec7860334d0aac5dea0b516f7dc9..af0c6b91da03c049781368d8de798d16c66ffe0a 100644 --- a/htdocs/core/lib/geturl.lib.php +++ b/htdocs/core/lib/geturl.lib.php @@ -28,7 +28,7 @@ * @param string $postorget 'POST', 'GET', 'HEAD' * @param string $param Parameters of URL (x=value1&y=value2) * @param string $followlocation 1=Follow location, 0=Do not follow - * @param array $addheaders Array of string to add into header. Example: ('Accept: application/xrds+xml', ....) + * @param array $addheaders Array of string to add into header. Example: array('Accept: application/xrds+xml', ....) * @return array Returns an associative array containing the response from the server array('content'=>response,'curl_error_no'=>errno,'curl_error_msg'=>errmsg...) */ function getURLContent($url,$postorget='GET',$param='',$followlocation=1,$addheaders=array()) @@ -74,15 +74,17 @@ function getURLContent($url,$postorget='GET',$param='',$followlocation=1,$addhea else if ($postorget == 'PUT') { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // HTTP request is 'PUT' - if ( ! is_array($param) ) - parse_str($param, $array_param); - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array_param)); // Setting param x=a&y=z as PUT fields + curl_setopt($ch, CURLOPT_POSTFIELDS, $param); // Setting param x=a&y=z as PUT fields } else if ($postorget == 'HEAD') { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); // HTTP request is 'HEAD' curl_setopt($ch, CURLOPT_NOBODY, true); } + else if ($postorget == 'DELETE') + { + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); // POST + } else { curl_setopt($ch, CURLOPT_POST, 0); // GET diff --git a/htdocs/core/lib/images.lib.php b/htdocs/core/lib/images.lib.php index f7592c69c08d0fdca8dea29b106ba6f88560263d..7e47f755a7e31d2f64914af29912e434632a0eca 100644 --- a/htdocs/core/lib/images.lib.php +++ b/htdocs/core/lib/images.lib.php @@ -547,161 +547,3 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $ return $imgThumbName; } - - -/** - * This function returns the html for the moneymeter. - * - * @param int $actualValue amount of actual money - * @param int $pendingValue amount of money of pending memberships - * @param int $intentValue amount of intended money (that's without the amount of actual money) - * @return string thermometer htmlLegenda - */ -function moneyMeter($actualValue=0, $pendingValue=0, $intentValue=0) -{ - global $langs; - - // variables - $height="200"; - $maximumValue=125000; - - $imageDir = "http://eucd.info/images/therm/"; - - $imageTop = $imageDir . "therm_top.png"; - $imageMiddleActual = $imageDir . "therm_actual.png"; - $imageMiddlePending = $imageDir . "therm_pending.png"; - $imageMiddleIntent = $imageDir . "therm_intent.png"; - $imageMiddleGoal = $imageDir . "therm_goal.png"; - $imageIndex = $imageDir . "therm_index.png"; - $imageBottom = $imageDir . "therm_bottom.png"; - $imageColorActual = $imageDir . "therm_color_actual.png"; - $imageColorPending = $imageDir . "therm_color_pending.png"; - $imageColorIntent = $imageDir . "therm_color_intent.png"; - - $formThermTop = ' - <!-- Thermometer Begin --> - <table cellpadding="0" cellspacing="4" border="0"> - <tr><td> - <table cellpadding="0" cellspacing="0" border="0"> - <tr> - <td colspan="2"><img src="' . $imageTop . '" width="58" height="6" border="0"></td> - </tr> - <tr> - <td> - <table cellpadding="0" cellspacing="0" border="0">'; - - $formSection = ' - <tr><td><img src="{image}" width="26" height="{height}" border="0"></td></tr>'; - - $formThermbottom = ' - </table> - </td> - <td><img src="' . $imageIndex . '" width="32" height="200" border="0"></td> - </tr> - <tr> - <td colspan="2"><img src="' . $imageBottom . '" width="58" height="32" border="0"></td> - </tr> - </table> - </td> - </tr></table>'; - - // legenda - - $legendaActual = "€ " . round($actualValue); - $legendaPending = "€ " . round($pendingValue); - $legendaIntent = "€ " . round($intentValue); - $legendaTotal = "€ " . round($actualValue + $pendingValue + $intentValue); - $formLegenda = ' - - <table cellpadding="0" cellspacing="0" border="0"> - <tr><td><img src="' . $imageColorActual . '" width="9" height="9"> </td><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><b>'.$langs->trans("Paid").':<br>' . $legendaActual . '</b></font></td></tr> - <tr><td><img src="' . $imageColorPending . '" width="9" height="9"> </td><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">'.$langs->trans("Waiting").':<br>' . $legendaPending . '</font></td></tr> - <tr><td><img src="' . $imageColorIntent . '" width="9" height="9"> </td><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">'.$langs->trans("Promesses").':<br>' . $legendaIntent . '</font></td></tr> - <tr><td> </td><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Total:<br>' . $legendaTotal . '</font></td></tr> - </table> - - <!-- Thermometer End -->'; - - // check and edit some values - - $error = 0; - if ( $maximumValue <= 0 || $height <= 0 || $actualValue < 0 || $pendingValue < 0 || $intentValue < 0) - { - return "The money meter could not be processed<br>\n"; - } - if ( $actualValue > $maximumValue ) - { - $actualValue = $maximumValue; - $pendingValue = 0; - $intentValue = 0; - } - else - { - if ( ($actualValue + $pendingValue) > $maximumValue ) - { - $pendingValue = $maximumValue - $actualValue; - $intentValue = 0; - } - else - { - if ( ($actualValue + $pendingValue + $intentValue) > $maximumValue ) - { - $intentValue = $maximumValue - $actualValue - $pendingValue; - } - } - } - - // start writing the html (from bottom to top) - - // bottom - $thermometer = $formThermbottom; - - // actual - $sectionHeight = round(($actualValue / $maximumValue) * $height); - $totalHeight = $sectionHeight; - if ( $sectionHeight > 0 ) - { - $section = $formSection; - $section = str_replace("{image}", $imageMiddleActual, $section); - $section = str_replace("{height}", $sectionHeight, $section); - $thermometer = $section . $thermometer; - } - - // pending - $sectionHeight = round(($pendingValue / $maximumValue) * $height); - $totalHeight += $sectionHeight; - if ( $sectionHeight > 0 ) - { - $section = $formSection; - $section = str_replace("{image}", $imageMiddlePending, $section); - $section = str_replace("{height}", $sectionHeight, $section); - $thermometer = $section . $thermometer; - } - - // intent - $sectionHeight = round(($intentValue / $maximumValue) * $height); - $totalHeight += $sectionHeight; - if ( $sectionHeight > 0 ) - { - $section = $formSection; - $section = str_replace("{image}", $imageMiddleIntent, $section); - $section = str_replace("{height}", $sectionHeight, $section); - $thermometer = $section . $thermometer; - } - - // goal - $sectionHeight = $height- $totalHeight; - if ( $sectionHeight > 0 ) - { - $section = $formSection; - $section = str_replace("{image}", $imageMiddleGoal, $section); - $section = str_replace("{height}", $sectionHeight, $section); - $thermometer = $section . $thermometer; - } - - // top - $thermometer = $formThermTop . $thermometer; - - return $thermometer . $formLegenda; -} - diff --git a/htdocs/core/lib/json.lib.php b/htdocs/core/lib/json.lib.php index 121e719bb6f597583bf2132ebf4aa98d62d17487..e3f00a064e5c100f5d6acae07461494d56f89adc 100644 --- a/htdocs/core/lib/json.lib.php +++ b/htdocs/core/lib/json.lib.php @@ -42,6 +42,7 @@ if (! function_exists('json_encode')) * * @param mixed $elements PHP Object to json encode * @return string Json encoded string + * @deprecated PHP >= 5.3 supports native json_encode */ function dol_json_encode($elements) { @@ -219,6 +220,7 @@ if (! function_exists('json_decode')) * @param string $json Json encoded to PHP Object or Array * @param bool $assoc False return an object, true return an array. Try to always use it with true ! * @return mixed Object or Array or false on error + * @deprecated PHP >= 5.3 supports native json_decode */ function dol_json_decode($json, $assoc=false) { diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index ee024c60c2a19e0dfbfcb9443f537d07a8e51f49..556dbc0a1c63e53e0e7a66cf76c6b9f3f18e0a31 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -507,7 +507,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t * @param int $preselectedday Preselected day * @return $inc */ -function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0, $preselectedday='') +function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=1, $preselectedday='') { global $db, $user, $bc, $langs; global $form, $formother, $projectstatic, $taskstatic; @@ -541,8 +541,8 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t { $projectstatic->id=$lines[$i]->fk_project; $projectstatic->ref=$lines[$i]->projectref; + $projectstatic->title=$lines[$i]->projectlabel; $projectstatic->public=$lines[$i]->public; - $projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]; $taskstatic->id=$lines[$i]->id; @@ -550,7 +550,7 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t // Project print "<td>"; - print $projectstatic->getNomUrl(1); + print $projectstatic->getNomUrl(1,'',0,$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]); print "</td>"; // Ref @@ -676,7 +676,7 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to * @return $inc */ -function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0) +function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=1) { global $db, $user, $bc, $langs; global $form, $formother, $projectstatic, $taskstatic; @@ -711,9 +711,9 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$ print '<td class="nowrap">'; $projectstatic->id=$lines[$i]->fk_project; $projectstatic->ref=$lines[$i]->projectref; + $projectstatic->title=$lines[$i]->projectlabel; $projectstatic->public=$lines[$i]->public; - $projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]; - print $projectstatic->getNomUrl(1); + print $projectstatic->getNomUrl(1,'',0,$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]); print "</td>"; // Ref diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php index 4fcb087ba184507da9d074a9b534c070a6463883..681f6e7a913c70aacb2e4bb82fbac01ddb1a11bc 100644 --- a/htdocs/core/lib/report.lib.php +++ b/htdocs/core/lib/report.lib.php @@ -39,7 +39,7 @@ */ function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='') { - global $langs, $hselected; + global $langs; if (empty($hselected)) $hselected='report'; @@ -50,7 +50,7 @@ function report_header($nom,$variante,$period,$periodlink,$description,$builddat $head[$h][1] = $langs->trans("Report"); $head[$h][2] = 'report'; - dol_fiche_head($head, $hselected); + dol_fiche_head($head, 'report'); print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; foreach($moreparam as $key => $value) diff --git a/htdocs/core/lib/salaries.lib.php b/htdocs/core/lib/salaries.lib.php index 8f74066de0130d1ed20fb4ab2045bcedf36fda0c..7c104b4da82c435286fa3a4273e7e6bfdf1ada96 100644 --- a/htdocs/core/lib/salaries.lib.php +++ b/htdocs/core/lib/salaries.lib.php @@ -42,6 +42,15 @@ function salaries_prepare_head($object) { // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf,$langs,$object,$head,$h,'salaries'); + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $upload_dir = $conf->salaries->dir_output . "/" . dol_sanitizeFileName($object->ref); + $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); + $head[$h][0] = DOL_URL_ROOT.'/compta/salaries/document.php?id='.$object->id; + $head[$h][1] = $langs->trans('Documents'); + if($nbFiles > 0) $head[$h][1].= ' <span class="badge">'.$nbFiles.'</span>'; + $head[$h][2] = 'documents'; + $h++; + /* $head[$h][0] = DOL_URL_ROOT.'/compta/salaries/info.php?id='.$object->id; $head[$h][1] = $langs->trans("Info"); diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index 0879fc814b731e289f93bed9b69e0e9d8858f82b..64e44cafbf4a08b1360cacd5f20f5ed8fc5d530d 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -340,7 +340,7 @@ function restrictedArea($user, $features, $objectid=0, $tableandshare='', $featu /** * Check access by user to object - * + * * @param User $user User to check * @param array $featuresarray Features/modules to check * @param int $objectid Object ID if we want to check a particular record (optional) is linked to a owned thirdparty (optional). @@ -348,18 +348,18 @@ function restrictedArea($user, $features, $objectid=0, $tableandshare='', $featu * @param string $feature2 Feature to check, second level of permission (optional). Can be or check with 'level1|level2'. * @param string $dbt_keyfield Field name for socid foreign key if not fk_soc. Not used if objectid is null (optional) * @param string $dbt_select Field name for select if not rowid. Not used if objectid is null (optional) - * + * * @return bool True if user has access, False otherwise */ -function checkUserAccessToObject($user, $featuresarray, $objectid=0, $tableandshare='', $feature2='', $dbt_keyfield='', $dbt_select='') +function checkUserAccessToObject($user, $featuresarray, $objectid=0, $tableandshare='', $feature2='', $dbt_keyfield='', $dbt_select='') { global $db, $conf; - + // More parameters $params = explode('&', $tableandshare); $dbtablename=(! empty($params[0]) ? $params[0] : ''); $sharedelement=(! empty($params[1]) ? $params[1] : $dbtablename); - + foreach ($featuresarray as $feature) { $sql=''; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index b70c1e2517a7dd7639a17edaf6342e97a4626551..e3895bacf54ce7142c002350becbb53ebc54e4fe 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -317,7 +317,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '</tr>'; } - $var=!$var; + //$var=!$var; print '<tr '.$bc[$var].'><td colspan="'.$colspan.'">'; print '<table class="nobordernopadding" width="100%"><tr><td><div align="center">'; @@ -372,6 +372,19 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '</div></td></tr></table>'; print '</td></tr>'; + + if (! $foruserprofile) + { + $var=!$var; + print '<tr '.$bc[$var].'>'; + print '<td>'.$langs->trans("HighlightLinesOnMouseHover").'</td>'; + $hoverdisabled=(isset($conf->global->THEME_ELDY_USE_HOVER) && $conf->global->THEME_ELDY_USE_HOVER == '0'); + print '<td colspan="'.($colspan-1).'"><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled').' type="checkbox" '.($hoverdisabled?"":" checked").'>'; + print ' ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; + print '</td>'; + print '</tr>'; + } + print '</table>'; } diff --git a/htdocs/core/login/functions_dolibarr.php b/htdocs/core/login/functions_dolibarr.php index 74da1f97ff0ead2a062887c72e9854c0feaa9a6c..365961651919b445f9f10013368ac0489d090ff0 100644 --- a/htdocs/core/login/functions_dolibarr.php +++ b/htdocs/core/login/functions_dolibarr.php @@ -1,6 +1,6 @@ <?php -/* Copyright (C) 2007-2014 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2007-2009 Regis Houssin <regis.houssin@capnetworks.com> +/* Copyright (C) 2007-2015 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2007-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es> * * This program is free software; you can redistribute it and/or modify @@ -58,6 +58,7 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= $sql.=' WHERE ('.$usernamecol1." = '".$db->escape($usertotest)."'"; if (preg_match('/@/',$usertotest)) $sql.=' OR '.$usernamecol2." = '".$db->escape($usertotest)."'"; $sql.=') AND '.$entitycol." IN (0," . ($entity ? $entity : 1) . ")"; + $sql.=' AND statut = 1'; $resql=$db->query($sql); if ($resql) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 27ea9515162cc9c58a5961c8aa6eabc7b373660f..d65108e5f1a8fbe0430465f4131c26aa8ee703d9 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -224,8 +224,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="bookkeeping"', __HANDLER__, 'left', 2721__+MAX_llx_menu__, 'accountancy', '', 2720__+MAX_llx_menu__, '/accountancy/bookkeeping/listbyyear.php', 'ByYear', 1, 'accountancy', '$user->rights->accounting->mouvements->lire', '', 0, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="bookkeeping"', __HANDLER__, 'left', 2722__+MAX_llx_menu__, 'accountancy', '', 2720__+MAX_llx_menu__, '/accountancy/bookkeeping/balancebymonth.php', 'AccountBalanceByMonth', 1, 'accountancy', '$user->rights->accounting->mouvements->lire', '', 0, 1, __ENTITY__); -- Fiscal year & Chart of accounts -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled"', __HANDLER__, 'left', 2750__+MAX_llx_menu__, 'home', '', 6__+MAX_llx_menu__, '/accountancy/admin/fiscalyear.php?leftmenu=setup', 'Fiscalyear', 1, 'main', '$user->rights->accounting->fiscalyear', '', 2, 20, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled"', __HANDLER__, 'left', 2751__+MAX_llx_menu__, 'home', '', 6__+MAX_llx_menu__, '/accountancy/admin/account.php?mainmenu=accountancy', 'Chartofaccounts', 1, 'main', '$user->rights->accounting->chartofaccount', '', 2, 21, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled', __HANDLER__, 'left', 2750__+MAX_llx_menu__, 'home', '', 6__+MAX_llx_menu__, '/accountancy/admin/fiscalyear.php?leftmenu=setup', 'Fiscalyear', 1, 'accountancy', '$user->rights->accounting->fiscalyear', '', 2, 20, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled', __HANDLER__, 'left', 2751__+MAX_llx_menu__, 'home', '', 6__+MAX_llx_menu__, '/accountancy/admin/account.php?mainmenu=accountancy', 'Chartofaccounts', 1, 'accountancy', '$user->rights->accounting->chartofaccount', '', 2, 21, __ENTITY__); -- Check deposit insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)', __HANDLER__, 'left', 1711__+MAX_llx_menu__, 'accountancy', 'checks', 14__+MAX_llx_menu__, '/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank', 'MenuChequeDeposits', 0, 'bills', '$user->rights->banque->lire', '', 2, 9, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)', __HANDLER__, 'left', 1712__+MAX_llx_menu__, 'accountancy', '', 1711__+MAX_llx_menu__, '/compta/paiement/cheque/card.php?leftmenu=checks&action=new', 'NewCheckDeposit', 1, 'compta', '$user->rights->banque->lire', '', 2, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index b1197202d1b331ec95ac7a358e642b23ec6283ec..ef83701518c12d2f6ae24524ba171f1799fc3300 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -462,15 +462,16 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("users"); - if ($user->admin) - { - $langs->load("admin"); - $langs->load("help"); + //if ($user->admin) + //{ // Setup - $newmenu->add("/admin/index.php?mainmenu=home&leftmenu=setup", $langs->trans("Setup"), 0, 1, '', $mainmenu, 'setup'); + $newmenu->add("/admin/index.php?mainmenu=home&leftmenu=setup", $langs->trans("Setup"), 0, $user->admin, '', $mainmenu, 'setup'); if (empty($leftmenu) || $leftmenu=="setup") { + $langs->load("admin"); + $langs->load("help"); + $warnpicto=''; if (empty($conf->global->MAIN_INFO_SOCIETE_NOM) || empty($conf->global->MAIN_INFO_SOCIETE_COUNTRY)) { @@ -503,9 +504,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu } // System tools - $newmenu->add("/admin/tools/index.php?mainmenu=home&leftmenu=admintools", $langs->trans("SystemTools"), 0, 1, '', $mainmenu, 'admintools'); + $newmenu->add("/admin/tools/index.php?mainmenu=home&leftmenu=admintools", $langs->trans("SystemTools"), 0, $user->admin, '', $mainmenu, 'admintools'); if (empty($leftmenu) || preg_match('/^admintools/',$leftmenu)) { + $langs->load("admin"); + $langs->load("help"); + $newmenu->add('/admin/system/dolibarr.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('InfoDolibarr'), 1); if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Modules'), 2); if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Triggers'), 2); @@ -534,7 +538,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { if (empty($user->societe_id)) { - $newmenu->add("/admin/tools/index.php?mainmenu=home&leftmenu=modulesadmintools", $langs->trans("ModulesSystemTools"), 0, 1, '', $mainmenu, 'modulesadmintools'); + $newmenu->add("/admin/tools/index.php?mainmenu=home&leftmenu=modulesadmintools", $langs->trans("ModulesSystemTools"), 0, $user->admin, '', $mainmenu, 'modulesadmintools'); // Special case: This entry can't be embedded into modules because we need it for both module service and products and we don't want duplicate lines. if ((empty($leftmenu) || $leftmenu=="modulesadmintools") && $user->admin) { @@ -543,18 +547,21 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu } } } - } + //} - $newmenu->add("/user/home.php?leftmenu=users", $langs->trans("MenuUsersAndGroups"), 0, 1, '', $mainmenu, 'users'); - if (empty($leftmenu) || $leftmenu == 'none' || $leftmenu=="users") + $newmenu->add("/user/home.php?leftmenu=users", $langs->trans("MenuUsersAndGroups"), 0, $user->rights->user->user->lire, '', $mainmenu, 'users'); + if ($user->rights->user->user->lire) { - $newmenu->add("", $langs->trans("Users"), 1, $user->rights->user->user->lire || $user->admin); - $newmenu->add("/user/card.php?action=create", $langs->trans("NewUser"),2, $user->rights->user->user->creer || $user->admin, '', 'home'); - $newmenu->add("/user/index.php", $langs->trans("ListOfUsers"), 2, $user->rights->user->user->lire || $user->admin); - $newmenu->add("/user/hierarchy.php", $langs->trans("HierarchicView"), 2, $user->rights->user->user->lire || $user->admin); - $newmenu->add("", $langs->trans("Groups"), 1, $user->rights->user->user->lire || $user->admin); - $newmenu->add("/user/group/card.php?action=create", $langs->trans("NewGroup"), 2, ($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin); - $newmenu->add("/user/group/index.php", $langs->trans("ListOfGroups"), 2, ($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin); + if (empty($leftmenu) || $leftmenu == 'none' || $leftmenu=="users") + { + $newmenu->add("", $langs->trans("Users"), 1, $user->rights->user->user->lire || $user->admin); + $newmenu->add("/user/card.php?action=create", $langs->trans("NewUser"),2, $user->rights->user->user->creer || $user->admin, '', 'home'); + $newmenu->add("/user/index.php", $langs->trans("ListOfUsers"), 2, $user->rights->user->user->lire || $user->admin); + $newmenu->add("/user/hierarchy.php", $langs->trans("HierarchicView"), 2, $user->rights->user->user->lire || $user->admin); + $newmenu->add("", $langs->trans("Groups"), 1, $user->rights->user->user->lire || $user->admin); + $newmenu->add("/user/group/card.php?action=create", $langs->trans("NewGroup"), 2, ($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin); + $newmenu->add("/user/group/index.php", $langs->trans("ListOfGroups"), 2, ($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin); + } } } @@ -582,13 +589,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("commercial"); $newmenu->add("/comm/prospect/list.php?leftmenu=prospects", $langs->trans("ListProspectsShort"), 1, $user->rights->societe->lire, '', $mainmenu, 'prospects'); - + /* no more required, there is a filter that can do more if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&search_stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire); if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&search_stcomm=0", $langs->trans("LastProspectNeverContacted"), 2, $user->rights->societe->lire); if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&search_stcomm=1", $langs->trans("LastProspectToContact"), 2, $user->rights->societe->lire); if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&search_stcomm=2", $langs->trans("LastProspectContactInProcess"), 2, $user->rights->societe->lire); if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&search_stcomm=3", $langs->trans("LastProspectContactDone"), 2, $user->rights->societe->lire); - + */ $newmenu->add("/societe/soc.php?leftmenu=prospects&action=create&type=p", $langs->trans("MenuNewProspect"), 2, $user->rights->societe->creer); //$newmenu->add("/contact/list.php?leftmenu=customers&type=p", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire); } diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 017d1eb86624320b3a0f10f94a352b8b6430008c..472e260cfa6c3eeacaf66f78c912bf0c61ba14a0 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -42,6 +42,7 @@ abstract class DolibarrModules /** * @var string Relative path to module style sheet * @deprecated + * @see module_parts */ public $style_sheet = ''; @@ -60,6 +61,11 @@ abstract class DolibarrModules */ public $const = array(); + /** + * @var array Module cron jobs entries + */ + public $cronjobs = array(); + /** * @var array Module access rights */ @@ -209,18 +215,21 @@ abstract class DolibarrModules // Insert activation module constant if (! $err) $err+=$this->_active(); - // Insert new pages for tabs into llx_const + // Insert new pages for tabs (into llx_const) if (! $err) $err+=$this->insert_tabs(); // Insert activation of module's parts if (! $err) $err+=$this->insert_module_parts(); - // Insert constant defined by modules, into llx_const + // Insert constant defined by modules (into llx_const) if (! $err) $err+=$this->insert_const(); - // Insert boxes def into llx_boxes_def and boxes setup into llx_boxes + // Insert boxes def into llx_boxes_def and boxes setup (into llx_boxes) if (! $err && ! preg_match('/noboxes/',$options)) $err+=$this->insert_boxes($options); + // Insert cron job entries (entry in llx_cronjobs) + if (! $err) $err+=$this->insert_cronjobs(); + // Insert permission definitions of module into llx_rights_def. If user is admin, grant this permission to user. if (! $err) $err+=$this->insert_permissions(1); @@ -307,6 +316,9 @@ abstract class DolibarrModules // Remove list of module's available boxes (entry in llx_boxes) if (! $err && ! preg_match('/(newboxdefonly|noboxes)/',$options)) $err+=$this->delete_boxes(); // We don't have to delete if option ask to keep boxes safe or ask to add new box def only + // Remove list of module's cron job entries (entry in llx_cronjobs) + if (! $err) $err+=$this->delete_cronjobs(); + // Remove module's permissions from list of available permissions (entries in llx_rights_def) if (! $err) $err+=$this->delete_permissions(); @@ -823,6 +835,130 @@ abstract class DolibarrModules return $err; } + /** + * Adds cronjobs + * + * @return int Error count (0 if OK) + */ + function insert_cronjobs() + { + require_once DOL_DOCUMENT_ROOT . '/core/class/infobox.class.php'; + + global $conf; + + $err=0; + + if (is_array($this->cronjobs)) + { + foreach ($this->cronjobs as $key => $value) + { + $label = isset($this->cronjobs[$key]['label'])?$this->cronjobs[$key]['label']:''; + $jobtype = isset($this->cronjobs[$key]['jobtype'])?$this->cronjobs[$key]['jobtype']:''; + $class = isset($this->cronjobs[$key]['class'])?$this->cronjobs[$key]['class']:''; + $method = isset($this->cronjobs[$key]['method'])?$this->cronjobs[$key]['method']:''; + $command = isset($this->cronjobs[$key]['command'])?$this->cronjobs[$key]['command']:''; + $parameters = isset($this->cronjobs[$key]['parameters'])?$this->cronjobs[$key]['parameters']:''; + $comment = isset($this->cronjobs[$key]['comment'])?$this->cronjobs[$key]['comment']:''; + $frequency = isset($this->cronjobs[$key]['frequency'])?$this->cronjobs[$key]['frequency']:''; + $unitfrequency = isset($this->cronjobs[$key]['unitfrequency'])?$this->cronjobs[$key]['unitfrequency']:''; + + // Search if boxes def already present + $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."cronjob"; + $sql.= " WHERE module_name = '".$this->db->escape($this->rights_class)."'"; + if ($class) $sql.= " AND classesname = '".$this->db->escape($class)."'"; + if ($method) $sql.= " AND methodename = '".$this->db->escape($method)."'"; + if ($command) $sql.= " AND command = '".$this->db->escape($command)."'"; + $sql.= " AND entity = ".$conf->entity; + + $now=dol_now(); + + dol_syslog(get_class($this)."::insert_cronjobs", LOG_DEBUG); + $result=$this->db->query($sql); + if ($result) + { + $obj = $this->db->fetch_object($result); + if ($obj->nb == 0) + { + $this->db->begin(); + + if (! $err) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."cronjob (module_name, datec, label, jobtype, classesname, methodename, command, params, note, frequency, unitfrequency, entity)"; + $sql.= " VALUES ("; + $sql.= "'".$this->db->escape($this->rights_class)."', "; + $sql.= "'".$this->db->idate($now)."', "; + $sql.= "'".$this->db->escape($label)."', "; + $sql.= "'".$this->db->escape($jobtype)."', "; + $sql.= ($class?"'".$this->db->escape($class)."'":"null").","; + $sql.= ($method?"'".$this->db->escape($method)."'":"null").","; + $sql.= ($command?"'".$this->db->escape($command)."'":"null").","; + $sql.= ($parameters?"'".$this->db->escape($parameters)."'":"null").","; + $sql.= ($comment?"'".$this->db->escape($comment)."'":"null").","; + $sql.= "'".$this->db->escape($frequency)."', "; + $sql.= "'".$this->db->escape($unitfrequency)."', "; + $sql.= $conf->entity; + $sql.= ")"; +print $sql; + + dol_syslog(get_class($this)."::insert_cronjobs", LOG_DEBUG); + $resql=$this->db->query($sql); + if (! $resql) $err++; + + } + + if (! $err) + { + $this->db->commit(); + } + else + { + $this->error=$this->db->lasterror(); + $this->db->rollback(); + } + } + // else box already registered into database + } + else + { + $this->error=$this->db->lasterror(); + $err++; + } + } + } + + return $err; + } + + + /** + * Removes boxes + * + * @return int Error count (0 if OK) + */ + function delete_cronjobs() + { + global $conf; + + $err=0; + + if (is_array($this->cronjobs)) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."cronjob"; + $sql.= " WHERE module_name = '".$this->db->escape($this->rights_class)."'"; + $sql.= " AND entity = ".$conf->entity; + + dol_syslog(get_class($this)."::delete_cronjobs", LOG_DEBUG); + $resql=$this->db->query($sql); + if (! $resql) + { + $this->error=$this->db->lasterror(); + $err++; + } + } + + return $err; + } + /** * Removes tabs * diff --git a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php index 4014452d8c2e12fa31b7638a9394672c8690d50c..4bff78bff54f2f275537be0567e24430d0253059 100644 --- a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php +++ b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php @@ -156,10 +156,13 @@ abstract class ModeleNumRefAskPriceSupplier * @param int $hidedesc Hide description * @param int $hideref Hide ref * @return int 0 if KO, 1 if OK - * @deprecated Use the new function generateDocument of Propal class + * @deprecated Use the new function generateDocument of AskPriceSupplier class + * @see AskPriceSupplier::generateDocument() */ function askpricesupplier_pdf_create(DoliDB $db, AskPriceSupplier $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/commande/modules_commande.php b/htdocs/core/modules/commande/modules_commande.php index 9253f4dc650832aa1c9327784ad31ec13f41835c..10ab1a2300fb878299cf1283e42965743850711e 100644 --- a/htdocs/core/modules/commande/modules_commande.php +++ b/htdocs/core/modules/commande/modules_commande.php @@ -161,8 +161,11 @@ abstract class ModeleNumRefCommandes * @param int $hideref Hide ref * @return int 0 if KO, 1 if OK * @deprecated Use the new function generateDocument of Commande class + * @see Commande::generateDocument() */ function commande_pdf_create(DoliDB $db, Commande $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/contract/modules_contract.php b/htdocs/core/modules/contract/modules_contract.php index d4311bf30289ec441b0d984e841b281099b83c70..1efeaef3466ccbe79abf82b2b9ade2f713294ed1 100644 --- a/htdocs/core/modules/contract/modules_contract.php +++ b/htdocs/core/modules/contract/modules_contract.php @@ -156,8 +156,11 @@ class ModelNumRefContracts * @param int $hideref Hide ref * @return int 0 if KO, 1 if OK * @deprecated Use the new function generateDocument of Contrat class + * @see Contrat::generateDocument() */ function contract_pdf_create(DoliDB $db, Contrat $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/dons/html_cerfafr.modules.php b/htdocs/core/modules/dons/html_cerfafr.modules.php index 69c862d916d6c3cfb6515206d1152d56d944abdd..67131a2864510b0e4830bbeeef4db696f9764e03 100644 --- a/htdocs/core/modules/dons/html_cerfafr.modules.php +++ b/htdocs/core/modules/dons/html_cerfafr.modules.php @@ -3,7 +3,7 @@ * Copyright (C) 2005-2006 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com> - * Copyright (C) 2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2014-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -181,11 +181,11 @@ class html_cerfafr extends ModeleDon if (preg_match('/fr/i',$outputlangs->defaultlang)) { if ($conf->global->DONATION_ART200 >= 1) { - $art200='<input type="checkbox" checked>200 du CGI'; + $art200='<input type="checkbox" disabled="true" checked>200 du CGI'; } else { - $art200='<input type="checkbox">200 du CGI'; + $art200='<input type="checkbox" disabled="true">200 du CGI'; } } $form = str_replace('__ARTICLE200__',$art200,$form); @@ -194,11 +194,11 @@ class html_cerfafr extends ModeleDon if (preg_match('/fr/i',$outputlangs->defaultlang)) { if ($conf->global->DONATION_ART238 >= 1) { - $art238='<input type="checkbox" checked>238 bis du CGI'; + $art238='<input type="checkbox" disabled="true" checked>238 bis du CGI'; } else { - $art238='<input type="checkbox">238 bis du CGI'; + $art238='<input type="checkbox" disabled="true">238 bis du CGI'; } } $form = str_replace('__ARTICLE238__',$art238,$form); @@ -207,11 +207,11 @@ class html_cerfafr extends ModeleDon if (preg_match('/fr/i',$outputlangs->defaultlang)) { if ($conf->global->DONATION_ART885 >= 1) { - $art885='<input type="checkbox" checked>885-0 V bis du CGI'; + $art885='<input type="checkbox" disabled="true" checked>885-0 V bis du CGI'; } else { - $art885='<input type="checkbox">885-0 V bis du CGI'; + $art885='<input type="checkbox" disabled="true">885-0 V bis du CGI'; } } $form = str_replace('__ARTICLE885__',$art885,$form); diff --git a/htdocs/core/modules/expedition/modules_expedition.php b/htdocs/core/modules/expedition/modules_expedition.php index 0300d380fe8b2fd697cc7de8b51732f8d8df0913..0cc89498dae48001b2e231d76020508d5d030162 100644 --- a/htdocs/core/modules/expedition/modules_expedition.php +++ b/htdocs/core/modules/expedition/modules_expedition.php @@ -154,8 +154,11 @@ abstract class ModelNumRefExpedition * @param int $hideref Hide ref * @return int 1 if OK -1 if KO * @deprecated Use the new function generateDocument of Expedition class + * @see Expedition::generateDocument() */ function expedition_pdf_create(DoliDB $db, Expedition $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/facture/mod_facture_mars.php b/htdocs/core/modules/facture/mod_facture_mars.php index 25c6d2cd2ad7cdb9dc4ccd530476b4bf470777d8..e477e086fe06ee445ef8e742a3f345f9cf796b58 100644 --- a/htdocs/core/modules/facture/mod_facture_mars.php +++ b/htdocs/core/modules/facture/mod_facture_mars.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> * * This program is free software; you can redistribute it and/or modify @@ -127,10 +127,10 @@ class mod_facture_mars extends ModeleNumRefFactures */ function getNextValue($objsoc,$facture,$mode='next') { - global $db,$conf; + global $db; $prefix=$this->prefixinvoice; - + if ($facture->type == 1) $prefix=$this->prefixreplacement; else if ($facture->type == 2) $prefix=$this->prefixcreditnote; else if ($facture->type == 3) $prefix=$this->prefixdeposit; @@ -141,7 +141,7 @@ class mod_facture_mars extends ModeleNumRefFactures $sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$prefix."____-%'"; - $sql.= " AND entity = ".$conf->entity; + $sql.= " AND entity IN (".getEntity('facture', 1).")"; $resql=$db->query($sql); dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG); @@ -165,7 +165,7 @@ class mod_facture_mars extends ModeleNumRefFactures $sql = "SELECT facnumber as ref"; $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$prefix."____-".$num."'"; - $sql.= " AND entity = ".$conf->entity; + $sql.= " AND entity IN (".getEntity('facture', 1).")"; dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG); $resql=$db->query($sql); diff --git a/htdocs/core/modules/facture/mod_facture_terre.php b/htdocs/core/modules/facture/mod_facture_terre.php index dc06c6202eca64a3bfa862513d0b36a2f44996a0..31d8eac736bcf5aa79ebf2b9d1ee86b4f0ccd23e 100644 --- a/htdocs/core/modules/facture/mod_facture_terre.php +++ b/htdocs/core/modules/facture/mod_facture_terre.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -111,7 +111,7 @@ class mod_facture_terre extends ModeleNumRefFactures $this->error=$langs->trans('ErrorNumRefModel',$max); return false; } - + // Check deposit num $fayymm=''; @@ -146,7 +146,7 @@ class mod_facture_terre extends ModeleNumRefFactures */ function getNextValue($objsoc,$facture,$mode='next') { - global $db,$conf; + global $db; if ($facture->type == 2) $prefix=$this->prefixcreditnote; else if ($facture->type == 3) $prefix=$this->prefixdeposit; @@ -157,7 +157,7 @@ class mod_facture_terre extends ModeleNumRefFactures $sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$prefix."____-%'"; - $sql.= " AND entity = ".$conf->entity; + $sql.= " AND entity IN (".getEntity('facture', 1).")"; $resql=$db->query($sql); dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG); @@ -181,7 +181,7 @@ class mod_facture_terre extends ModeleNumRefFactures $sql = "SELECT facnumber as ref"; $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$prefix."____-".$num."'"; - $sql.= " AND entity = ".$conf->entity; + $sql.= " AND entity IN (".getEntity('facture', 1).")"; dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG); $resql=$db->query($sql); diff --git a/htdocs/core/modules/facture/modules_facture.php b/htdocs/core/modules/facture/modules_facture.php index 2bf03edf55708c046572947da28c7d30c6ad444a..afae663b02b445f8bb9d2f79dd604931ed48263f 100644 --- a/htdocs/core/modules/facture/modules_facture.php +++ b/htdocs/core/modules/facture/modules_facture.php @@ -156,9 +156,12 @@ abstract class ModeleNumRefFactures * @param int $hideref Hide ref * @return int <0 if KO, >0 if OK * @deprecated Use the new function generateDocument of Facture class + * @see Facture::generateDocument() */ function facture_pdf_create(DoliDB $db, Facture $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index c10c24508e85123861519bddf8f49374ff23a45f..9fe2eaf74881a89aed712d679fe46146493397f1 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -241,7 +241,7 @@ class pdf_soleil extends ModelePDFFicheinter $pdf->SetXY($this->marge_gauche, $tab_top + 5); $text=$object->description; - if ($object->duree > 0) + if ($object->duration > 0) { $totaltime=convertSecondToTime($object->duration,'all',$conf->global->MAIN_DURATION_OF_WORKDAY); $text.=($text?' - ':'').$langs->trans("Total").": ".$totaltime; @@ -436,9 +436,9 @@ class pdf_soleil extends ModelePDFFicheinter $pdf->MultiCell(0, 3, ''); // Set interline to 3 $pdf->SetXY($this->marge_gauche, $tab_top + 8); $text=$object->description; - if ($object->duree > 0) + if ($object->duration > 0) { - $totaltime=convertSecondToTime($object->duree,'all',$conf->global->MAIN_DURATION_OF_WORKDAY); + $totaltime=convertSecondToTime($object->duration,'all',$conf->global->MAIN_DURATION_OF_WORKDAY); $text.=($text?' - ':'').$langs->trans("Total").": ".$totaltime; } $desc=dol_htmlentitiesbr($text,1); diff --git a/htdocs/core/modules/livraison/modules_livraison.php b/htdocs/core/modules/livraison/modules_livraison.php index 0a439ed8fe775c89fe06fec578d0da033d984720..c3c762cbed118f1d2c6f2244b8a4acd0c5fa7608 100644 --- a/htdocs/core/modules/livraison/modules_livraison.php +++ b/htdocs/core/modules/livraison/modules_livraison.php @@ -156,9 +156,12 @@ abstract class ModeleNumRefDeliveryOrder * @param Translate $outputlangs objet lang a utiliser pour traduction * @return int 0 if KO, 1 if OK * @deprecated Use the new function generateDocument of Livraison class + * @see Livraison::generateDocument() */ function delivery_order_pdf_create(DoliDB $db, Livraison $object, $modele, $outputlangs='') { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs); } diff --git a/htdocs/core/modules/mailings/example.modules.php b/htdocs/core/modules/mailings/example.modules.php index 428285fb20b8bb13966133306a345dd477137671..f0f8b99e3c57354da82936d571bca9c316c70a1c 100644 --- a/htdocs/core/modules/mailings/example.modules.php +++ b/htdocs/core/modules/mailings/example.modules.php @@ -69,7 +69,7 @@ class mailing_example extends MailingTargets // ... // $target[n]=array('email'=>'email_n','name'=>'name_n','firstname'=>'firstname_n', 'other'=>'other_n'); - // Example: $target[0]=array('email'=>'myemail@mydomain.com', 'name'=>'Doe', 'firstname'=>'John', 'other'=>'Other information'); + // Example: $target[0]=array('email'=>'myemail@example.com', 'name'=>'Doe', 'firstname'=>'John', 'other'=>'Other information'); // ----- Your code end here ----- diff --git a/htdocs/core/modules/mailings/fraise.modules.php b/htdocs/core/modules/mailings/fraise.modules.php index 963e8ef0c289965953d1cddac06f642f71e29938..2716bdc1e4ca704c1854ae49cb78b74208682c40 100644 --- a/htdocs/core/modules/mailings/fraise.modules.php +++ b/htdocs/core/modules/mailings/fraise.modules.php @@ -153,6 +153,11 @@ class mailing_fraise extends MailingTargets */ function add_to_target($mailing_id,$filtersarray=array()) { + // Deprecation warning + if ($filtersarray) { + dol_syslog(__METHOD__ . ": filtersarray parameter is deprecated", LOG_WARNING); + } + global $langs,$_POST; $langs->load("members"); $langs->load("companies"); diff --git a/htdocs/core/modules/modCategorie.class.php b/htdocs/core/modules/modCategorie.class.php index 51a55d0cab067063138f21b7dec7472325fe1bc3..b64c9671a99c01b87aa30ced9f689ba9e09a32f7 100644 --- a/htdocs/core/modules/modCategorie.class.php +++ b/htdocs/core/modules/modCategorie.class.php @@ -162,7 +162,7 @@ class modCategorie extends DolibarrModules $this->export_enabled[$r]='$conf->adherent->enabled'; $this->export_permission[$r]=array(array("categorie","lire"),array("adherent","lire")); $this->export_fields_array[$r]=array('u.rowid'=>"CategId",'u.label'=>"Label",'u.description'=>"Description",'p.rowid'=>'MemberId','p.lastname'=>'LastName','p.firstname'=>'Firstname'); - $this->export_TypeFields_array[$r]=array('u.label'=>"Text",'u.description'=>"Text",'p.rowid'=>'List:adherent:nom','p.lastname'=>'Text','p.firstname'=>'Text'); + $this->export_TypeFields_array[$r]=array('u.label'=>"Text",'u.description'=>"Text",'p.lastname'=>'Text','p.firstname'=>'Text'); $this->export_entities_array[$r]=array('p.rowid'=>'member','p.lastname'=>'member','p.firstname'=>'member'); // We define here only fields that use another picto $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_member as cp, '.MAIN_DB_PREFIX.'adherent as p'; @@ -213,7 +213,6 @@ class modCategorie extends DolibarrModules $this->export_TypeFields_array[$r] = array ( 'u.label' => "Text", 'u.description' => "Text", - 'p.rowid' => 'List:contact:lastname', 'p.lastname' => 'Text', 'p.firstname' => 'Text', 's.nom'=>"Text", diff --git a/htdocs/core/modules/modDon.class.php b/htdocs/core/modules/modDon.class.php index e25bd6d3bf91b0141f50775b74521a68089796b5..c546292c2b462195017fe2663dc23d821cd96942 100644 --- a/htdocs/core/modules/modDon.class.php +++ b/htdocs/core/modules/modDon.class.php @@ -57,7 +57,7 @@ class modDon extends DolibarrModules $this->picto='bill'; // Data directories to create when module is enabled - $this->dirs = array("/dons/temp"); + $this->dirs = array("/don/temp"); // Dependancies $this->depends = array(); @@ -67,50 +67,49 @@ class modDon extends DolibarrModules $this->config_page_url = array("donation.php@don"); // Constants - $this->const = array (); - - $this->const[0] = array ( - "DON_ADDON_MODEL", - "chaine", - "html_cerfafr", - "Nom du gestionnaire de generation de recu de dons", - "0" - ); - $this->const[1] = array ( - "DONATION_ART200", - "yesno", - "0", - "Option Française - Eligibilité Art200 du CGI", - "0" - ); - $this->const[2] = array ( - "DONATION_ART238", - "yesno", - "0", - "Option Française - Eligibilité Art238 bis du CGI", - "0" - ); - $this->const[3] = array ( - "DONATION_ART885", - "yesno", - "0", - "Option Française - Eligibilité Art885-0 V bis du CGI", - "0" - ); - $this->const[4] = array ( - "DONATION_MESSAGE", - "chaine", - "Thank you", - "Message affiché sur le récépissé de versements ou dons", - "0" - ); - $this->const[5] = array ( - "DONATION_ACCOUNTINGACCOUNT", - "chaine", - "7581", - "Compte comptable de remise des versements ou dons", - "0" - ); + $this->const = array(); + $r=0; + + $this->const[$r][0] = "DON_ADDON_MODEL"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "html_cerfafr"; + $this->const[$r][3] = 'Nom du gestionnaire de generation de recu de dons'; + $this->const[$r][4] = 0; + + $r++; + $this->const[$r][0] = "DONATION_ART200"; + $this->const[$r][1] = "yesno"; + $this->const[$r][2] = "0"; + $this->const[$r][3] = 'Option Française - Eligibilité Art200 du CGI'; + $this->const[$r][4] = 0; + + $r++; + $this->const[$r][0] = "DONATION_ART238"; + $this->const[$r][1] = "yesno"; + $this->const[$r][2] = "0"; + $this->const[$r][3] = 'Option Française - Eligibilité Art238 bis du CGI'; + $this->const[$r][4] = 0; + + $r++; + $this->const[$r][0] = "DONATION_ART885"; + $this->const[$r][1] = "yesno"; + $this->const[$r][2] = "0"; + $this->const[$r][3] = 'Option Française - Eligibilité Art885-0 V bis du CGI'; + $this->const[$r][4] = 0; + + $r++; + $this->const[$r][0] = "DONATION_MESSAGE"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "Thank you"; + $this->const[$r][3] = 'Message affiché sur le récépissé de versements ou dons'; + $this->const[$r][4] = 0; + + $r++; + $this->const[$r][0] = "DONATION_ACCOUNTINGACCOUNT"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "7581"; + $this->const[$r][3] = 'Compte comptable de remise des versements ou dons'; + $this->const[$r][4] = 0; // Boxes $this->boxes = array(); @@ -153,8 +152,8 @@ class modDon extends DolibarrModules global $conf; $sql = array( - "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][4]."' AND entity = ".$conf->entity, - "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][4]."','donation',".$conf->entity.")", + "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity, + "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','donation',".$conf->entity.")", ); return $this->_init($sql,$options); diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php index f47fe099d0a9c5428048d206d767768d5f9fbc89..6a4ec011747d8583fc1952a434cd8c4273fdd7b0 100644 --- a/htdocs/core/modules/modFacture.class.php +++ b/htdocs/core/modules/modFacture.class.php @@ -211,7 +211,10 @@ class modFacture extends DolibarrModules case 'sellist': $tmp=''; $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options'])); + if ($tmpparam['options'] && is_array($tmpparam['options'])) { + $tmpkeys=array_keys($tmpparam['options']); + $tmp=array_shift($tmpkeys); + } if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; break; } @@ -270,7 +273,10 @@ class modFacture extends DolibarrModules case 'sellist': $tmp=''; $tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null - if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options'])); + if ($tmpparam['options'] && is_array($tmpparam['options'])) { + $tmpkeys=array_keys($tmpparam['options']); + $tmp=array_shift($tmpkeys); + } if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp; break; } diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index ef8b3f7888cd19b731c1c221f4980c5ca909eda2..d43535dd4e136b7875671393491a04658c688043 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -279,10 +279,13 @@ class modFournisseur extends DolibarrModules $this->export_label[$r]='Factures fournisseurs et lignes de facture'; $this->export_icon[$r]='bill'; $this->export_permission[$r]=array(array("fournisseur","facture","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.accountancy_code_buy'=>'ProductAccountancyBuyCode'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId', + 'p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.accountancy_code_buy'=>'ProductAccountancyBuyCode','project.rowid'=>'ProjectId','project.ref'=>'ProjectRef','project.title'=>'ProjectLabel'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.description'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.remise_percent'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva'=>"invoice_line",'fd.product_type'=>'invoice_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product','p.accountancy_code_buy'=>'product'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label', + 'p.ref'=>'Text','p.label'=>'Text','project.ref'=>'Text','project.title'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.description'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.remise_percent'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva'=>"invoice_line",'fd.product_type'=>'invoice_line','fd.fk_product'=>'product', + 'p.ref'=>'product','p.label'=>'product','p.accountancy_code_buy'=>'product','project.rowid'=>'project','project.ref'=>'project','project.title'=>'project'); $this->export_dependencies_array[$r]=array('invoice_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them // Add extra fields object $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture_fourn'"; @@ -362,6 +365,7 @@ class modFournisseur extends DolibarrModules $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'facture_fourn as f'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as project on (f.fk_projet = project.rowid)'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn_extrafields as extra ON f.rowid = extra.fk_object'; $this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facture_fourn_det as fd'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn_det_extrafields as extraline ON fd.rowid = extraline.fk_object'; @@ -374,10 +378,13 @@ class modFournisseur extends DolibarrModules $this->export_label[$r]='Factures fournisseurs et reglements'; $this->export_icon[$r]='bill'; $this->export_permission[$r]=array(array("fournisseur","facture","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment', + 'p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','project.rowid'=>'ProjectId','project.ref'=>'ProjectRef','project.title'=>'ProjectLabel'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'pf.amount'=>'Number', + 'p.datep'=>'Date','p.num_paiement'=>'Number','project.ref'=>'Text','project.title'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment', + 'p.datep'=>'payment','p.num_paiement'=>'payment','project.rowid'=>'project','project.ref'=>'project','project.title'=>'project'); $this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them // Add extra fields object $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture_fourn'"; @@ -420,6 +427,7 @@ class modFournisseur extends DolibarrModules $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'facture_fourn as f'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as project on (f.fk_projet = project.rowid)'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn_extrafields as extra ON f.rowid = extra.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON pf.fk_facturefourn = f.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn as p ON pf.fk_paiementfourn = p.rowid'; @@ -432,14 +440,17 @@ class modFournisseur extends DolibarrModules $this->export_label[$r]='Commandes fournisseurs et lignes de commandes'; $this->export_icon[$r]='order'; $this->export_permission[$r]=array(array("fournisseur","commande","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"OrderId",'f.ref'=>"Ref",'f.ref_supplier'=>"RefSupplier",'f.date_creation'=>"DateCreation",'f.date_commande'=>"OrderDate",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.fk_statut'=>'Status','f.date_approve'=>'DateApprove','f.date_approve2'=>'DateApprove2','f.note_public'=>"NotePublic",'f.note_private'=>"NotePrivate",'ua1.login'=>'ApprovedBy','ua2.login'=>'ApprovedBy2','fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.total_tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"OrderId",'f.ref'=>"Ref",'f.ref_supplier'=>"RefSupplier",'f.date_creation'=>"DateCreation",'f.date_commande'=>"OrderDate",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.fk_statut'=>'Status','f.date_approve'=>'DateApprove','f.date_approve2'=>'DateApprove2','f.note_public'=>"NotePublic",'f.note_private'=>"NotePrivate",'ua1.login'=>'ApprovedBy','ua2.login'=>'ApprovedBy2','fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.total_tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId', + 'p.ref'=>'ProductRef','p.label'=>'ProductLabel','project.rowid'=>'ProjectId','project.ref'=>'ProjectRef','project.title'=>'ProjectLabel'); if (empty($conf->global->SUPPLIER_ORDER_DOUBLE_APPROVAL)) { unset($this->export_fields_array['f.date_approve2']); unset($this->export_fields_array['ua2.login']); } - $this->export_TypeFields_array[$r]=array('s.rowid'=>"company",'s.nom'=>'Text','s.address'=>'Text','s.cp'=>'Text','s.ville'=>'Text','c.code'=>'Text','s.tel'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.idprof5'=>'Text','s.idprof6'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.date_creation'=>"Date",'f.date_commande'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.fk_statut'=>'Status','f.date_approve'=>'Date','f.date_approve2'=>'Date','f.note_public'=>"Text",'f.note_private'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Number",'fd.qty'=>"Number",'fd.remise_percent'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.total_tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','ua1.login'=>'user','ua2.login'=>'user','fd.rowid'=>'order_line','fd.description'=>"order_line",'fd.tva_tx'=>"order_line",'fd.qty'=>"order_line",'fd.remise_percent'=>"order_line",'fd.total_ht'=>"order_line",'fd.total_ttc'=>"order_line",'fd.total_tva'=>"order_line",'fd.product_type'=>'order_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product'); + $this->export_TypeFields_array[$r]=array('s.rowid'=>"company",'s.nom'=>'Text','s.address'=>'Text','s.cp'=>'Text','s.ville'=>'Text','c.code'=>'Text','s.tel'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.idprof5'=>'Text','s.idprof6'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.date_creation'=>"Date",'f.date_commande'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.fk_statut'=>'Status','f.date_approve'=>'Date','f.date_approve2'=>'Date','f.note_public'=>"Text",'f.note_private'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Number",'fd.qty'=>"Number",'fd.remise_percent'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.total_tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label', + 'p.ref'=>'Text','p.label'=>'Text','project.ref'=>'Text','project.title'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','ua1.login'=>'user','ua2.login'=>'user','fd.rowid'=>'order_line','fd.description'=>"order_line",'fd.tva_tx'=>"order_line",'fd.qty'=>"order_line",'fd.remise_percent'=>"order_line",'fd.total_ht'=>"order_line",'fd.total_ttc'=>"order_line",'fd.total_tva'=>"order_line",'fd.product_type'=>'order_line','fd.fk_product'=>'product', + 'p.ref'=>'product','p.label'=>'product','project.rowid'=>'project','project.ref'=>'project','project.title'=>'project'); $this->export_dependencies_array[$r]=array('order_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them // Add extra fields object $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'commande_fournisseur'"; @@ -520,6 +531,7 @@ class modFournisseur extends DolibarrModules $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande_fournisseur as f'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as project on (f.fk_projet = project.rowid)'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as ua1 ON ua1.rowid = f.fk_user_approve'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as ua2 ON ua2.rowid = f.fk_user_approve2'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commande_fournisseur_extrafields as extra ON f.rowid = extra.fk_object,'; diff --git a/htdocs/core/modules/modGravatar.class.php b/htdocs/core/modules/modGravatar.class.php index 2f32818bb106116914785d4171e0dcee9c10cacf..aae38ae391b2009fe240888752ead2f048c17a15 100644 --- a/htdocs/core/modules/modGravatar.class.php +++ b/htdocs/core/modules/modGravatar.class.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -62,7 +62,7 @@ class modGravatar extends DolibarrModules // Name of image file used for this module. // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' // If file is in module/images directory, use this->picto=DOL_URL_ROOT.'/module/images/file.png' - $this->picto='technic'; + $this->picto='gravatar'; // Data directories to create when module is enabled. // Example: this->dirs = array("/mymodule/temp"); @@ -99,6 +99,13 @@ class modGravatar extends DolibarrModules //$r++; + // Cronjobs + $this->cronjobs = array(); // List of cron jobs entries to add + // Example: $this->cronjobs=array(0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600), + // 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600) + // ); + $r=0; + // Permissions $this->rights = array(); // Permission array used by this module $r=0; diff --git a/htdocs/core/modules/modMailmanSpip.class.php b/htdocs/core/modules/modMailmanSpip.class.php index 95a3ecd03c42aa416f18df7f1957f54f7c341913..1b5bbab61c69706e26fe96084195aecc297a6b03 100644 --- a/htdocs/core/modules/modMailmanSpip.class.php +++ b/htdocs/core/modules/modMailmanSpip.class.php @@ -66,8 +66,8 @@ class modMailmanSpip extends DolibarrModules // Constants $this->const = array(); - $this->const[1] = array("ADHERENT_MAILMAN_UNSUB_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%","Url de désinscription aux listes mailman"); - $this->const[2] = array("ADHERENT_MAILMAN_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%","Url pour les inscriptions mailman"); + $this->const[1] = array("ADHERENT_MAILMAN_UNSUB_URL","chaine","http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%","Url de désinscription aux listes mailman"); + $this->const[2] = array("ADHERENT_MAILMAN_URL","chaine","http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%","Url pour les inscriptions mailman"); $this->const[3] = array("ADHERENT_MAILMAN_LISTS","chaine","","Mailing-list to subscribe new members to"); // Boxes diff --git a/htdocs/core/modules/modPrinting.class.php b/htdocs/core/modules/modPrinting.class.php index e288bd83e4d9c05cebe0a03e2e77c1a534459a2a..bb18d7d022c4667bf207a2fcbe53cb859d101b81 100644 --- a/htdocs/core/modules/modPrinting.class.php +++ b/htdocs/core/modules/modPrinting.class.php @@ -1,6 +1,6 @@ <?php -/* Copyright (C) 2014 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2014 Frederic France <frederic.france@free.fr> +/* Copyright (C) 2014-2015 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2014 Frederic France <frederic.france@free.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,22 +16,21 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -/** \defgroup printing Module printing - * \brief Module for activation of printing icon +/** \defgroup printing Module printing + * \brief Module for activation of printing icon to make direct printing */ /** * \file htdocs/core/modules/modPrinting.class.php * \ingroup printing - * \brief Fichier de description et activation du module Printing + * \brief File of class to describe and activate module Direct Printing */ include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; /** - * \class modPrinting - * \brief Classe de description et activation du module Printing + * Class to describe and activate module Direct Printing */ class modPrinting extends DolibarrModules { @@ -47,7 +46,7 @@ class modPrinting extends DolibarrModules $this->numero = 64000; // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' // It is used to group modules in module setup page - $this->family = "other"; + $this->family = "technic"; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); // Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module) @@ -59,7 +58,7 @@ class modPrinting extends DolibarrModules // Name of image file used for this module. // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' - $this->picto = 'technic'; + $this->picto = 'printer'; // Data directories to create when module is enabled. $this->dirs = array(); diff --git a/htdocs/core/modules/modResource.class.php b/htdocs/core/modules/modResource.class.php index aa97f5608dfce3720d488355aa543bea2a27ec79..1f7a92f47b7f6500a01fd2c686d005293a6cd429 100644 --- a/htdocs/core/modules/modResource.class.php +++ b/htdocs/core/modules/modResource.class.php @@ -1,6 +1,5 @@ <?php -/* Module to manage resources into Dolibarr ERP/CRM - * Copyright (C) 2013-2014 Jean-François Ferry <jfefe@aternatik.fr> +/* Copyright (C) 2013-2014 Jean-François Ferry <jfefe@aternatik.fr> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,6 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Module to manage resources into Dolibarr ERP/CRM */ /** @@ -51,7 +52,7 @@ class modResource extends DolibarrModules // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' // It is used to group modules in module setup page - $this->family = "hr"; + $this->family = "projects"; // Module label (no space allowed) // used if translation string 'ModuleXXXName' not found // (where XXX is value of numeric property 'numero' of module) @@ -67,7 +68,7 @@ class modResource extends DolibarrModules $this->const_name = 'MAIN_MODULE_' . strtoupper($this->name); // Where to store the module in setup page // (0=common,1=interface,2=others,3=very specific) - $this->special = 0; + $this->special = 2; // Name of image file used for this module. // If file is in theme/yourtheme/img directory under name object_pictovalue.png // use this->picto='pictovalue' @@ -151,8 +152,7 @@ class modResource extends DolibarrModules // (reresource 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member) $this->tabs = array( - 'action:+resources:Resources:resource:$user->rights->resource->read:/resource/element_resource.php?element=action&element_id=__ID__', - 'thirdparty:+resources:Resources:resource:$user->rights->resource->read:/resource/element_resource.php?element=societe&element_id=__ID__' +// 'thirdparty:+resources:Resources:resource:$user->rights->resource->read:/resource/element_resource.php?element=societe&element_id=__ID__' ); // Boxes diff --git a/htdocs/core/modules/modSalaries.class.php b/htdocs/core/modules/modSalaries.class.php index 038d11f4ebaf6428e60e5de2965d2c2e831307f4..fa8a0ebd811e3f3d5f6a1a021555ad7d61a2d624 100644 --- a/htdocs/core/modules/modSalaries.class.php +++ b/htdocs/core/modules/modSalaries.class.php @@ -136,15 +136,15 @@ class modSalaries extends DolibarrModules $r++; $this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_label[$r]='Salaries and payments'; - $this->export_permission[$r]=array(array("salary","export")); - $this->export_fields_array[$r]=array('u.firstname'=>"Firstname",'u.lastname'=>"Lastname",'u.login'=>"Login",'u.salary'=>'CurrentSalary','p.rowid'=>'PaymentId','p.datep'=>'DatePayment','p.datesp'=>'DateStartPeriod','p.dateep'=>'DateEndPeriod','p.amount'=>'AmountPayment','p.num_paiement'=>'Numero','p.label'=>'Label','p.note'=>'Note'); - $this->export_TypeFields_array[$r]=array('u.firstname'=>"Text",'u.lastname'=>"Text",'u.login'=>'Text','u.salary'=>"Number",'p.datep'=>'Date','p.datesp'=>'Date','p.dateep'=>'Date','p.amount'=>'Number','p.num_paiement'=>'Number','p.label'=>'Text'); - $this->export_entities_array[$r]=array('u.firstname'=>'user','u.lastname'=>'user','u.login'=>'user','u.salary'=>'user','p.datep'=>'payment','p.datesp'=>'payment','p.dateep'=>'payment','p.amount'=>'payment','p.label'=>'payment','p.note'=>'payment','p.num_paiement'=>'payment'); + $this->export_permission[$r]=array(array("salaries","export")); + $this->export_fields_array[$r]=array('u.firstname'=>"Firstname",'u.lastname'=>"Lastname",'u.login'=>"Login",'u.salary'=>'CurrentSalary','p.datep'=>'DatePayment','p.datesp'=>'DateStartPeriod','p.dateep'=>'DateEndPeriod','p.amount'=>'AmountPayment','p.num_payment'=>'Numero','p.label'=>'Label','p.note'=>'Note'); + $this->export_TypeFields_array[$r]=array('u.firstname'=>"Text",'u.lastname'=>"Text",'u.login'=>'Text','u.salary'=>"Number",'p.datep'=>'Date','p.datesp'=>'Date','p.dateep'=>'Date','p.amount'=>'Number','p.num_payment'=>'Number','p.label'=>'Text'); + $this->export_entities_array[$r]=array('u.firstname'=>'user','u.lastname'=>'user','u.login'=>'user','u.salary'=>'user','p.datep'=>'payment','p.datesp'=>'payment','p.dateep'=>'payment','p.amount'=>'payment','p.label'=>'payment','p.note'=>'payment','p.num_payment'=>'payment'); $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'user as u'; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementsalary as p ON p.fk_user = u.rowid'; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_typepaiement = cp.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'payment_salary as p ON p.fk_user = u.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_typepayment = cp.id'; $this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('user',1).')'; } diff --git a/htdocs/core/modules/modSyncSupplierWebServices.class.php b/htdocs/core/modules/modSyncSupplierWebServices.class.php index c17892ee217e180286ef841e2ec88854199f4e0d..37366270a57499e4133c5d2c1a69079ab2ffb40c 100644 --- a/htdocs/core/modules/modSyncSupplierWebServices.class.php +++ b/htdocs/core/modules/modSyncSupplierWebServices.class.php @@ -25,7 +25,7 @@ include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; /** - * Class to describe a WebServices module + * Class to describe a sync supplier web services module */ class modSyncSupplierWebServices extends DolibarrModules { diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index a0e0d37d074dffe49f63cb3aa3eebc6ae3dbc8d0..b32eece2e1a684bc0d705533e6453b89b06036a0 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -320,14 +320,14 @@ class printing_printgcp extends PrintingDriver } /** - * Curl request + * Make a curl request * - * @param string $url url to hit - * @param array $postfields array of post fields - * @param string[] $headers array of http headers - * @return string response from curl + * @param string $url url to hit + * @param array $postfields array of post fields + * @param string[] $headers array of http headers + * @return string response from curl */ - private function makeCurl($url,$postfields=array(),$headers=array()) + private function makeCurl($url, $postfields=array(), $headers=array()) { // Curl Init $curl = curl_init($url); diff --git a/htdocs/core/modules/project/modules_project.php b/htdocs/core/modules/project/modules_project.php index f79de70816450ac94cff6ac4e3110ee39088a45d..acc1c2738f47e837c1cfad1d99989cc2e01586ba 100644 --- a/htdocs/core/modules/project/modules_project.php +++ b/htdocs/core/modules/project/modules_project.php @@ -153,9 +153,12 @@ abstract class ModeleNumRefProjects * @param int $hideref Hide ref * @return int 0 if KO, 1 if OK * @deprecated Use the new function generateDocument of Project class + * @see Project::generateDocument() */ function project_pdf_create(DoliDB $db, Project $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/project/task/modules_task.php b/htdocs/core/modules/project/task/modules_task.php index 9f9cb5041c8f815c4a44973c663721a52ea82899..bea4d342e29394f0ad2c26131593204dd6de84a6 100644 --- a/htdocs/core/modules/project/task/modules_task.php +++ b/htdocs/core/modules/project/task/modules_task.php @@ -154,9 +154,12 @@ abstract class ModeleNumRefTask * @param HookManager $hookmanager Hook manager instance * @return int 0 if KO, 1 if OK * @deprecated Use the new function generateDocument of Task class + * @see Task::generateDocument() */ function task_pdf_create(DoliDB $db, Task $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $hookmanager=false) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $hookmanager); } diff --git a/htdocs/core/modules/propale/modules_propale.php b/htdocs/core/modules/propale/modules_propale.php index 9ad90e9e3b5ab0736e6f5a1dddfca459a6eac414..6c0be15f0df91a3f2b92a84a40fe39de13a85188 100644 --- a/htdocs/core/modules/propale/modules_propale.php +++ b/htdocs/core/modules/propale/modules_propale.php @@ -157,9 +157,12 @@ abstract class ModeleNumRefPropales * @param int $hideref Hide ref * @return int 0 if KO, 1 if OK * @deprecated Use the new function generateDocument of Propal class + * @see Propal::generateDocument() */ function propale_pdf_create(DoliDB $db, Propal $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/supplier_order/modules_commandefournisseur.php b/htdocs/core/modules/supplier_order/modules_commandefournisseur.php index a968955ea7345b11234e09a888c9a85a2fc4c383..c14c260779533af1dfd82db7a2fd6efeb5547d1b 100644 --- a/htdocs/core/modules/supplier_order/modules_commandefournisseur.php +++ b/htdocs/core/modules/supplier_order/modules_commandefournisseur.php @@ -151,9 +151,12 @@ abstract class ModeleNumRefSuppliersOrders * @param int $hideref Hide ref * @return int 0 if KO, 1 if OK * @deprecated Use the new function generateDocument of CommandeFournisseur class + * @see CommandeFournisseur::generateDocument() */ function supplier_order_pdf_create(DoliDB $db, CommandeFournisseur $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/tpl/admin_extrafields_add.tpl.php b/htdocs/core/tpl/admin_extrafields_add.tpl.php index 44de526942fc76a69ec8516f8319eaece43e2c11..fc13acc7072b894697d4c39643066413281603ae 100644 --- a/htdocs/core/tpl/admin_extrafields_add.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_add.tpl.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2010-2012 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2010-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -20,7 +20,7 @@ * The following vars must be defined * $type2label * $form - * $conf, $lang, + * $conf, $lang, */ ?> @@ -113,6 +113,12 @@ <tr><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required" <?php echo (GETPOST('required')?' checked':''); ?>></td></tr> <!-- Always editable --> <tr><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable" <?php echo (GETPOST('alwayseditable')?' checked':''); ?>></td></tr> +<?php if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { ?> +<!-- By default visible into list --> +<tr><td><?php echo $langs->trans("ByDefaultInList"); ?> +<?php echo img_info($langs->trans("FeatureNotYetSupported")); ?> +</td><td class="valeur"><input id="list" type="checkbox" name="list" <?php echo (GETPOST('list')?' checked':''); ?>></td></tr> +<?php } ?> </table> <div align="center"><br><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>"> diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index 9c283b83867d7a460f5f6dab664a9ffea22d562d..286eba8c3b7813dcf1a39a766630352dc1fd004d 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -56,6 +56,8 @@ $required=$extrafields->attribute_required[$attrname]; $pos=$extrafields->attribute_pos[$attrname]; $alwayseditable=$extrafields->attribute_alwayseditable[$attrname]; $param=$extrafields->attribute_param[$attrname]; +$perms=$extrafields->attribute_perms[$attrname]; +$list=$extrafields->attribute_list[$attrname]; if((($type == 'select') || ($type == 'checkbox') || ($type == 'radio')) && is_array($param)) { @@ -113,7 +115,12 @@ if(($type == 'select') || ($type == 'sellist') || ($type == 'checkbox') || ($typ <tr><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required" <?php echo ($required?' checked':''); ?>></td></tr> <!-- Always editable --> <tr><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable" <?php echo ($alwayseditable?' checked':''); ?>></td></tr> - +<!-- By default visible into list --> +<?php if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { ?> +<tr><td><?php echo $langs->trans("ByDefaultInList"); ?> +<?php echo img_info($langs->trans("FeatureNotYetSupported")); ?> +</td><td class="valeur"><input id="list" type="checkbox" name="list" <?php echo ($list?' checked':''); ?>></td></tr> +<?php } ?> </table> <div align="center"><br><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>"> diff --git a/htdocs/core/tpl/document_actions_post_headers.tpl.php b/htdocs/core/tpl/document_actions_post_headers.tpl.php index c7d5dc2c0834a9620467bbf2c43f4c4656f931de..84b869cd8138c389319fd959a723848489d2b7e7 100644 --- a/htdocs/core/tpl/document_actions_post_headers.tpl.php +++ b/htdocs/core/tpl/document_actions_post_headers.tpl.php @@ -49,7 +49,7 @@ if (empty($conf->global->MAIN_DISABLE_SUGGEST_REF_AS_PREFIX)) //var_dump($modulepart); if (in_array($modulepart,array('facture_fournisseur','commande_fournisseur','facture','commande','propal','askpricesupplier','ficheinter','contract','project','project_task','expensereport'))) { - $savingdocmask=$object->ref.'___file__'; + $savingdocmask=$object->ref.'-__file__'; } /*if (in_array($modulepart,array('member'))) { diff --git a/htdocs/core/tpl/document_actions_pre_headers.tpl.php b/htdocs/core/tpl/document_actions_pre_headers.tpl.php index 36b6ce75fe1ac4d5aea8d2ae2428d343d2371ef6..40bd0a5368e86a1aada3d2eaf8b9e4908b1891fb 100644 --- a/htdocs/core/tpl/document_actions_pre_headers.tpl.php +++ b/htdocs/core/tpl/document_actions_pre_headers.tpl.php @@ -59,11 +59,8 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') if ($urlfile) { $ret = dol_delete_file($file, 0, 0, 0, $object); - if ($ret) { - setEventMessage($langs->trans("FileWasRemoved", $urlfile)); - } else { - setEventMessage($langs->trans("ErrorFailToDeleteFile", $urlfile), 'errors'); - } + if ($ret) setEventMessage($langs->trans("FileWasRemoved", $urlfile)); + else setEventMessage($langs->trans("ErrorFailToDeleteFile", $urlfile), 'errors'); } elseif ($linkid) { diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 9c6cfd2e1bea015808b072649ace0f61371a852f..db55be8754c536d6429f7f6e557add5bc82f1a74 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -215,7 +215,7 @@ else { <?php } ?> <td class="nobottom" align="right"><?php - if ($seller->tva_assuj == "0") echo '<input type="hidden" name="tva_tx" id="tva_tx" value="0">0'; + if ($seller->tva_assuj == "0") echo '<input type="hidden" name="tva_tx" id="tva_tx" value="0">'.vatrate(0, true); else echo $form->load_tva('tva_tx', (isset($_POST["tva_tx"])?$_POST["tva_tx"]:-1), $seller, $buyer); ?> </td> diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index d64ef7a2b3e2c2e74f838d7e929352b783100a08..51ded55f1c778286d9d1ad9953d94cc0afec934c 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -292,10 +292,10 @@ if (! empty($conf->margin->enabled)) { ?> $('#savelinebutton').click(function (e) { - return checkEditLine(e, "marginRate"); + return checkEditLine(e, "np_marginRate"); }); $("input[name='np_marginRate']:first").blur(function(e) { - return checkEditLine(e, "marginRate"); + return checkEditLine(e, "np_marginRate"); }); <?php } @@ -303,10 +303,10 @@ if (! empty($conf->margin->enabled)) { ?> $('#savelinebutton').click(function (e) { - return checkEditLine(e, "markRate"); + return checkEditLine(e, "np_markRate"); }); $("input[name='np_markRate']:first").blur(function(e) { - return checkEditLine(e, "markRate"); + return checkEditLine(e, "np_markRate"); }); <?php } diff --git a/htdocs/core/tpl/resource_add.tpl.php b/htdocs/core/tpl/resource_add.tpl.php index f9cd20b5dc3c0af0b973eca8cb74b3fc92623928..d16b8b629f8825878b2335ed1f7a8b70c3eb04d7 100644 --- a/htdocs/core/tpl/resource_add.tpl.php +++ b/htdocs/core/tpl/resource_add.tpl.php @@ -1,14 +1,13 @@ <?php +// BEGIN TPL RESOURCE_ADD.TPL.PHP -//$langs->load($resource_type); +require_once(DOL_DOCUMENT_ROOT.'/resource/class/html.formresource.class.php'); $form = new Form($db); -if(!class_exists('FormResource')) - require_once(DOL_DOCUMENT_ROOT.'/resource/class/html.formresource.class.php'); $formresources = new FormResource($db); -$out .= '<div class="tagtable centpercent border allwidth">'; +$out .= '<div class="tagtable centpercent border allwidth nohover">'; $out .= '<form class="tagtr '.($var==true?'pair':'impair').'" action="'.$_SERVER["PHP_SELF"].'" method="POST">'; $out .= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; @@ -27,10 +26,8 @@ $out .= '</div>'; $out .= '<div class="tagtd"><label>'.$langs->trans('Busy').'</label> '.$form->selectyesno('busy',$linked_resource['busy']?1:0,1).'</div>'; $out .= '<div class="tagtd"><label>'.$langs->trans('Mandatory').'</label> '.$form->selectyesno('mandatory',$linked_resource['mandatory']?1:0,1).'</div>'; -$out .= '<div class="tagtd">'; -$out .='<input type="submit" id="add-resource-place" class="button" value="'.$langs->trans("Add").'"'; -$out .=' />'; -$out .='<input type="submit" name="cancel" class="button" value="'.$langs->trans("Cancel").'" />'; +$out .= '<div class="tagtd" align="right">'; +$out .='<input type="submit" id="add-resource-place" class="button" value="'.$langs->trans("Add").'"/>'; $out .= '</div>'; $out .='</form>'; @@ -40,6 +37,4 @@ $out .= '<br />'; print $out; - - // FIN DU TPL diff --git a/htdocs/core/tpl/resource_view.tpl.php b/htdocs/core/tpl/resource_view.tpl.php index 75a6999660335e6af0249932e144afa3b538f36c..3b846e9314c5664d682e69f225fa51bad4a14bd1 100644 --- a/htdocs/core/tpl/resource_view.tpl.php +++ b/htdocs/core/tpl/resource_view.tpl.php @@ -6,36 +6,32 @@ $form= new Form($db); if( (array) $linked_resources && count($linked_resources) > 0) { - $var=false; + $var=true; // TODO: DEBUT DU TPL if($mode == 'edit' ) { - print '<div class="tagtable centpercent noborder allwidth">'; print '<form class="tagtr liste_titre">'; print '<div class="tagtd">'.$langs->trans('Type').'</div>'; print '<div class="tagtd">'.$langs->trans('Resource').'</div>'; - print '<div class="tagtd">'.$langs->trans('Busy').'</div>'; - print '<div class="tagtd">'.$langs->trans('Mandatory').'</div>'; - print '<div class="tagtd">'.$langs->trans('Edit').'</div>'; + print '<div class="tagtd" align="center">'.$langs->trans('Busy').'</div>'; + print '<div class="tagtd" align="center">'.$langs->trans('Mandatory').'</div>'; + print '<div class="tagtd"></div>'; print '</form>'; //print '</div>'; - } else { - print '<div class="tagtable centpercent noborder allwidth">'; print '<form class="tagtr liste_titre">'; print '<div class="tagtd">'.$langs->trans('Type').'</div>'; print '<div class="tagtd">'.$langs->trans('Resource').'</div>'; - print '<div class="tagtd">'.$langs->trans('Busy').'</div>'; - print '<div class="tagtd">'.$langs->trans('Mandatory').'</div>'; - print '<div class="tagtd">'.$langs->trans('Action').'</div>'; + print '<div class="tagtd" align="center">'.$langs->trans('Busy').'</div>'; + print '<div class="tagtd" align="center">'.$langs->trans('Mandatory').'</div>'; + print '<div class="tagtd"></div>'; print '</form>'; //print '</div>'; - } @@ -55,7 +51,7 @@ if( (array) $linked_resources && count($linked_resources) > 0) print '<div class="tagtd">'.$object_resource->type_label.'</div>'; print '<div class="tagtd">'.$object_resource->getNomUrl(1).'</div>'; - print '<div class="tagtd">'.$form->selectyesno('busy',$linked_resource['busy']?1:0,1).'</div>'; + print '<div class="tagtd" align="center">'.$form->selectyesno('busy',$linked_resource['busy']?1:0,1).'</div>'; print '<div class="tagtd">'.$form->selectyesno('mandatory',$linked_resource['mandatory']?1:0,1).'</div>'; print '<div class="tagtd"><input type="submit" class="button" value="'.$langs->trans("Update").'"></div>'; print '</form>'; @@ -77,20 +73,20 @@ if( (array) $linked_resources && count($linked_resources) > 0) print $object_resource->getNomUrl(1); print '</div class="tagtd">'; - print '<div class="tagtd">'; - print $linked_resource['busy']?1:0; + print '<div class="tagtd" align="center">'; + print yn($linked_resource['busy']); print '</div>'; - print '<div class="tagtd">'; - print $linked_resource['mandatory']?1:0; + print '<div class="tagtd" align="center">'; + print yn($linked_resource['mandatory']); print '</div>'; - print '<div class="tagtd">'; + print '<div class="tagtd" align="right">'; print '<a href="'.$_SERVER['PHP_SELF'].'?mode=edit&resource_type='.$linked_resource['resource_type'].'&element='.$element.'&element_id='.$element_id.'&lineid='.$linked_resource['rowid'].'">'; print img_edit(); print '</a>'; print ' '; - print '<a href="'.$_SERVER['PHP_SELF'].'?action=delete_resource&id='.$linked_resource['resource_id'].'&element='.$element.'&element_id='.$element_id.'&lineid='.$linked_resource['rowid'].'">'; + print '<a href="'.$_SERVER['PHP_SELF'].'?action=delete_resource&id='.$linked_resource['resource_id'].'&element='.$element.'&element_id='.$element_id.'&lineid='.$linked_resource['rowid'].'">'; print img_delete(); print '</a>'; print '</div>'; diff --git a/htdocs/core/triggers/dolibarrtriggers.class.php b/htdocs/core/triggers/dolibarrtriggers.class.php index 0682bb76a713abb09c58e7931708f003fcf68f28..d4cffc24a0164c7addeac1289d389f85c3ca4b19 100644 --- a/htdocs/core/triggers/dolibarrtriggers.class.php +++ b/htdocs/core/triggers/dolibarrtriggers.class.php @@ -61,6 +61,7 @@ abstract class DolibarrTriggers * Error reported by the trigger * @var string * @deprecated Use $this->errors + * @see errors */ public $error = ''; @@ -145,4 +146,4 @@ abstract class DolibarrTriggers */ abstract function runTrigger($action, $object, User $user, Translate $langs, Conf $conf); -} \ No newline at end of file +} diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php index 8d87380b12ced3fd3c1d350de0a360c95b37ebc7..500506b532edb540b517d7408dd1890399b601fd 100644 --- a/htdocs/cron/card.php +++ b/htdocs/cron/card.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2012 Nicolas Villa aka Boyquotes http://informetic.fr * Copyright (C) 2013 Florian Henry <florian.henry@open-concpt.pro> - * Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2013-2015 Laurent Destailleur <eldy@users.sourceforge.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -227,7 +227,6 @@ llxHeader('',$langs->trans("CronAdd")); if ($action=='edit' || empty($action) || $action=='delete' || $action=='execute') { $head=cron_prepare_head($object); - print dol_get_fiche_head($head, 'card', $langs->trans("CronTask"), 0, 'cron'); } elseif ($action=='create') { @@ -292,6 +291,8 @@ if (($action=="create") || ($action=="edit")) print '<input type="hidden" name="action" value="add">'."\n"; } + dol_fiche_head(''); + print '<table class="border" width="100%">'; print '<tr><td width="30%">'; @@ -474,7 +475,9 @@ if (($action=="create") || ($action=="edit")) print '</table>'; - print '<div align="center"><br>'; + dol_fiche_end(); + + print '<div align="center">'; print '<input type="submit" name="save" class="button" value="'.$langs->trans("Save").'">'; print ' '; print '<input type="submit" name="cancel" class="button" value="'.$langs->trans("Cancel").'">'; @@ -482,12 +485,15 @@ if (($action=="create") || ($action=="edit")) print "</form>\n"; -}else { - +} +else +{ /* - * view Template + * view card */ + dol_fiche_head($head, 'card', $langs->trans("CronTask"), 0, 'cron'); + // box add_jobs_box print '<table class="border" width="100%">'; @@ -572,6 +578,17 @@ if (($action=="create") || ($action=="edit")) print "</td></tr>"; print '<tr><td>'; + print $langs->trans('Active')."</td><td>"; + print yn($object->status); + print "</td></tr>"; + + print '</table>'; + + print '<br>'; + + print '<table class="border" width="100%">'; + + print '<tr><td width="30%">'; print $langs->trans('CronDtLastLaunch')."</td><td>"; if(!empty($object->datelastrun)) {print dol_print_date($object->datelastrun,'dayhourtext');} else {print $langs->trans('CronNone');} print "</td></tr>"; @@ -598,7 +615,6 @@ if (($action=="create") || ($action=="edit")) print '</table>'; - dol_fiche_end(); @@ -633,7 +649,9 @@ if (($action=="create") || ($action=="edit")) else { print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=execute&id='.$object->id.'">'.$langs->trans("CronExecute").'</a>'; } - print '<br><br></div>'; + print '</div>'; + + print '<br>'; } diff --git a/htdocs/cron/info.php b/htdocs/cron/info.php index ceec1d34adbc00667570a3c31d59a5d941016ba9..1e13bd725b3adc5011b1215dfc25cd873b0a0122 100644 --- a/htdocs/cron/info.php +++ b/htdocs/cron/info.php @@ -26,6 +26,8 @@ require_once DOL_DOCUMENT_ROOT."/cron/class/cronjob.class.php"; require_once DOL_DOCUMENT_ROOT.'/core/lib/cron.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; +$langs->load("admin"); +$langs->load("cron"); // Security check if (!$user->rights->cron->read) accessforbidden(); diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index 43a4a76e725f6448421dd82a133387ef6874b3a4..15f9234e7b2d66caedc0b88336c5a068655ebecc 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2012 Nicolas Villa aka Boyquotes http://informetic.fr * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> - * Copyright (C) 2013 Laurent Destailleur <eldy@users.srouceforge.net> + * Copyright (C) 2013-2015 Laurent Destailleur <eldy@users.srouceforge.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -165,6 +165,7 @@ print '<input type="hidden" name="status" value="'.$status.'" >'; print '<table width="100%" class="noborder">'; print '<tr class="liste_titre">'; $arg_url='&page='.$page.'&status='.$status.'&search_label='.$search_label; +print_liste_field_titre($langs->trans("ID"),$_SERVER["PHP_SELF"],"t.rowid","",$arg_url,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("CronLabel"),$_SERVER["PHP_SELF"],"t.label","",$arg_url,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("CronTask"),'','',"",$arg_url,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("CronDtStart"),$_SERVER["PHP_SELF"],"t.datestart","",$arg_url,'',$sortfield,$sortorder); @@ -176,11 +177,11 @@ print_liste_field_titre($langs->trans("CronNbRun"),$_SERVER["PHP_SELF"],"t.nbrun print_liste_field_titre($langs->trans("CronLastResult"),$_SERVER["PHP_SELF"],"t.lastresult","",$arg_url,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("CronLastOutput"),$_SERVER["PHP_SELF"],"t.lastoutput","",$arg_url,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Enabled"),$_SERVER["PHP_SELF"],"t.status","",$arg_url,'align="center"',$sortfield,$sortorder); -print '<td></td>'; +print_liste_field_titre(''); print '</tr>'; print '<tr class="liste_titre">'; - +print '<td> </td>'; print '<td class="liste_titre">'; print '<input type="text" class="flat" name="search_label" value="'.$search_label.'" size="10">'; print '</td>'; @@ -201,7 +202,6 @@ print '<input class="liste_titre" type="image" src="'.img_picto($langs->trans("S print ' '; print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; print '</td>'; - print '</tr>'; @@ -218,16 +218,26 @@ if (count($object->lines) > 0) print '<tr class="'.$style.'">'; print '<td>'; - if(!empty($line->label)) { + print '<a href="'.DOL_URL_ROOT.'/cron/card.php?id='.$line->id.'">'; + print img_picto('', 'object_cron').' '; + print $line->id; + print '</a>'; + print '</td>'; + + print '<td>'; + if (! empty($line->label)) + { print '<a href="'.DOL_URL_ROOT.'/cron/card.php?id='.$line->id.'">'.$line->label.'</a>'; } - else { + else + { print $langs->trans('CronNone'); } print '</td>'; print '<td>'; - if ($line->jobtype=='method') { + if ($line->jobtype=='method') + { print $langs->trans('CronModule').':'.$line->module_name.'<BR>'; print $langs->trans('CronClass').':'. $line->classesname.'<BR>'; print $langs->trans('CronObject').':'. $line->objectname.'<BR>'; @@ -279,20 +289,23 @@ if (count($object->lines) > 0) if(!empty($line->lastoutput)) {print dol_trunc(nl2br($line->lastoutput),100);} else {print $langs->trans('CronNone');} print '</td>'; + // Status print '<td align="center">'; print yn($line->status); print '</td>'; print '<td align="right">'; - if ($user->rights->cron->delete) { - print "<a href=\"".$_SERVER["PHP_SELF"]."?id=".$line->id."&status=".$status."&action=delete\" title=\"".$langs->trans('CronDelete')."\">".img_delete()."</a> "; + if ($user->rights->cron->delete) + { + print "<a href=\"".$_SERVER["PHP_SELF"]."?id=".$line->id."&status=".$status."&action=delete\" title=\"".dol_escape_htmltag($langs->trans('CronDelete'))."\">".img_picto($langs->trans('CronDelete'),'delete')."</a> "; } else { - print "<a href=\"#\" title=\"".$langs->trans('NotEnoughPermissions')."\">".img_delete()."</a> "; + print "<a href=\"#\" title=\"".dol_escape_htmltag($langs->trans('NotEnoughPermissions'))."\">".img_picto($langs->trans('NotEnoughPermissions'), 'delete')."</a> "; } - if ($user->rights->cron->execute) { - print "<a href=\"".$_SERVER["PHP_SELF"]."?id=".$line->id."&status=".$status."&action=execute\" title=\"".$langs->trans('CronExecute')."\">".img_picto('',"play")."</a>"; + if ($user->rights->cron->execute) + { + print "<a href=\"".$_SERVER["PHP_SELF"]."?id=".$line->id."&status=".$status."&action=execute\" title=\"".dol_escape_htmltag($langs->trans('CronExecute'))."\">".img_picto($langs->trans('CronExecute'),"play")."</a>"; } else { - print "<a href=\"#\" title=\"".$langs->trans('NotEnoughPermissions')."\">".img_picto('',"execute")."</a>"; + print "<a href=\"#\" title=\"".dol_escape_htmltag($langs->trans('NotEnoughPermissions'))."\">".img_picto($langs->trans('NotEnoughPermissions'),"execute")."</a>"; } print '</td>'; @@ -301,7 +314,7 @@ if (count($object->lines) > 0) } else { - print '<tr><td colspan="8">'.$langs->trans('CronNoJobs').'</td></tr>'; + print '<tr><td colspan="9">'.$langs->trans('CronNoJobs').'</td></tr>'; } print '</table>'; diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php index 3327026f028cff27be5604f19ae9b1d47b975542..0815deaf085514105946448ba5f50f2a81f8fba3 100644 --- a/htdocs/don/admin/donation.php +++ b/htdocs/don/admin/donation.php @@ -386,7 +386,7 @@ if (is_resource($handle)) { print ' '; print '</td><td align="center">'; - print '<a href="dons.php?action=setdoc&value='.$name.'&scandir='.$module->scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>'; + print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&value='.$name.'&scandir='.$module->scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>'; } print '</td>'; } diff --git a/htdocs/don/card.php b/htdocs/don/card.php index a1e1b50f89dda96b363ea952765cc9035fbe1337..75e30da80a3ca8b94768a581f43024dc8c4279ab 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -388,16 +388,18 @@ if (! empty($id) && $action == 'edit') $hselected='card'; $head = donation_prepare_head($object); - dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic'); print '<form name="update" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<table class="border" width="100%">'; - print '<input type="hidden" name="action" value="update">'; print '<input type="hidden" name="rowid" value="'.$object->id.'">'; print '<input type="hidden" name="amount" value="'.$object->amount.'">'; + + dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic'); + + print '<table class="border" width="100%">'; + // Ref print "<tr>".'<td>'.$langs->trans("Ref").'</td><td colspan="2">'; print $object->getNomUrl(); @@ -468,7 +470,7 @@ if (! empty($id) && $action == 'edit') $langs->load('projects'); print '<tr><td>'.$langs->trans('Project').'</td><td>'; - $formproject->select_projects(-1, $object->fk_projet,'fk_projet', 0, 1, 0, 1); + $formproject->select_projects(-1, $object->fk_projet,'fk_projet', 0, 0, 1, 1); print '</td></tr>'; } @@ -482,11 +484,11 @@ if (! empty($id) && $action == 'edit') print "</table>\n"; - print '<br><div class="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'"> <input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></div>'; + dol_fiche_end(); - print "</form>\n"; + print '<div class="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'"> <input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></div>'; - print "</div>\n"; + print "</form>\n"; } @@ -655,7 +657,10 @@ if (! empty($id) && $action != 'edit') { print '<tr>'; print '<td>'.$langs->trans("Project").'</td>'; - print '<td>'.$object->projet.'</td>'; + print '<td>'; + $object->fetch_projet(); + print $object->project->getNomUrl(4); + print '</td>'; print '</tr>'; } @@ -713,7 +718,14 @@ if (! empty($id) && $action != 'edit') // Delete if ($user->rights->don->supprimer) { - print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?rowid='.$object->id.'&action=delete">'.$langs->trans("Delete")."</a></div>"; + if ($don->statut == -1 || $don->statut == 0) + { + print '<div class="inline-block divButAction"><a class="butActionDelete" href="card.php?rowid='.$don->id.'&action=delete">'.$langs->trans("Delete")."</a></div>"; + } + else + { + print '<div class="inline-block divButAction"><a class="butActionDelete butActionRefused" href="#">'.$langs->trans("Delete")."</a></div>"; + } } else { diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index e3910b6fe5187c92ca45ba5240fd9aa9641feaa7..fa7bc6dffd8e9dbdaac225df072cbad218b4ea5e 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -63,6 +63,11 @@ class Don extends CommonObject var $modelpdf; var $projet; + /** + * @deprecated + * @see note_private, note_public + */ + var $commentaire; /** * Constructor @@ -522,27 +527,28 @@ class Don extends CommonObject */ function delete($user, $notrigger=0) { - global $conf, $langs; + global $user, $conf, $langs; require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; $error = 0; $this->db->begin(); - // Delete donation - if (! $error) + if (! $error) { - $sql = "DELETE FROM " . MAIN_DB_PREFIX . "don"; - $sql.= " WHERE rowid=" . $this->id; + if (!$notrigger) + { + // Call trigger + $result=$this->call_trigger('DON_DELETE',$user); - $resql = $this->db->query($sql); - if (!$resql) - { - $this->errors[] = $this->db->lasterror(); - $error++; - } + if ($result < 0) { + $error++; + } + // End call triggers + } } + // Delete donation if (! $error) { $sql = "DELETE FROM " . MAIN_DB_PREFIX . "don_extrafields"; @@ -558,16 +564,15 @@ class Don extends CommonObject if (! $error) { - if (!$notrigger) - { - // Call trigger - $result=$this->call_trigger('DON_DELETE',$user); + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "don"; + $sql.= " WHERE rowid=" . $this->id; - if ($result < 0) { - $error++; - } - // End call triggers - } + $resql = $this->db->query($sql); + if (!$resql) + { + $this->errors[] = $this->db->lasterror(); + $error++; + } } if (! $error) @@ -577,7 +582,7 @@ class Don extends CommonObject } else { - foreach ( $this->errors as $errmsg ) + foreach($this->errors as $errmsg) { dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index a6c56f9f2354bc6db1d9eff215fcd99e1a93a788..2d75cd392fc0dbe68fd2bfba823b7d1f99fb28b8 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -49,6 +49,12 @@ class PaymentDonation extends CommonObject var $fk_user_creat; var $fk_user_modif; + /** + * @deprecated + * @see amount, amounts + */ + var $total; + /** * Constructor * @@ -590,4 +596,4 @@ class PaymentDonation extends CommonObject return $result; } -} \ No newline at end of file +} diff --git a/htdocs/don/document.php b/htdocs/don/document.php new file mode 100644 index 0000000000000000000000000000000000000000..3bc60e25176e5b29f9480fbc17121e5826d10afa --- /dev/null +++ b/htdocs/don/document.php @@ -0,0 +1,136 @@ +<?php +/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> + * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com> + * Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr> + * Copyright (C) 2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/don/document.php + * \ingroup donation + * \brief Page of linked files onto donation + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; + +$langs->load("other"); +$langs->load("donations"); +$langs->load("companies"); + +$id = GETPOST('id','int'); +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action','alpha'); +$confirm = GETPOST('confirm','alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'don', $id, ''); + + +// Get parameters +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); +if ($page == -1) { $page = 0; } +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortorder) $sortorder="ASC"; +if (! $sortfield) $sortfield="name"; + + +$object = new Don($db); +$object->fetch($id, $ref); + +$upload_dir = $conf->don->dir_output . '/' . get_exdir($filename,2,0,1,$object,'donation'). '/'. dol_sanitizeFileName($object->ref); +$modulepart='don'; + + +/* + * Actions + */ + +include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; + + +/* + * View + */ + +$form = new Form($db); + +llxHeader("","",$langs->trans("Donations")); + + +if ($object->id) +{ + $object->fetch_thirdparty(); + + $head=donation_prepare_head($object); + + dol_fiche_head($head, 'documents', $langs->trans("Donation"), 0, 'generic'); + + + // Construit liste des fichiers + $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $totalsize=0; + foreach($filearray as $key => $file) + { + $totalsize+=$file['size']; + } + + + print '<table class="border" width="100%">'; + + $linkback = '<a href="'.DOL_URL_ROOT.'/don/index.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>'; + + // Ref + print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td>'; + print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', ''); + print '</td></tr>'; + + // Societe + //print "<tr><td>".$langs->trans("Company")."</td><td>".$object->client->getNomUrl(1)."</td></tr>"; + + print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>'; + print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; + print '</table>'; + + print '</div>'; + + $modulepart = 'don'; + $permission = $user->rights->don->lire; + $param = '&id=' . $object->id; + include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; + +} +else +{ + print $langs->trans("ErrorUnknown"); +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/don/info.php b/htdocs/don/info.php index 04cbae7a5877869e1767f0695811b9114b1a1b7d..ff41b1947df5c1041cda26757162f469a739d7e1 100644 --- a/htdocs/don/info.php +++ b/htdocs/don/info.php @@ -48,7 +48,7 @@ if ($id) $head = donation_prepare_head($object); - dol_fiche_head($head, 'info', $langs->trans("Donation"), 0, 'bill'); + dol_fiche_head($head, 'info', $langs->trans("Donation"), 0, 'generic'); print '<table width="100%"><tr><td>'; dol_print_object_info($object); diff --git a/htdocs/don/payment/payment.php b/htdocs/don/payment/payment.php index 52cf8f38a12a6ab48fef569339e0b910e04c6686..a31b7a71068319c70c3fa7411934b7b2a6d7935b 100644 --- a/htdocs/don/payment/payment.php +++ b/htdocs/don/payment/payment.php @@ -163,7 +163,6 @@ if (GETPOST("action") == 'create') $total = $don->amount; print_fiche_titre($langs->trans("DoPayment")); - print "<br>\n"; if ($mesg) { @@ -175,6 +174,8 @@ if (GETPOST("action") == 'create') print '<input type="hidden" name="rowid" value="'.$chid.'">'; print '<input type="hidden" name="chid" value="'.$chid.'">'; print '<input type="hidden" name="action" value="add_payment">'; + + dol_fiche_head(); print '<table cellspacing="0" class="border" width="100%" cellpadding="2">'; @@ -232,7 +233,7 @@ if (GETPOST("action") == 'create') print '</table>'; - print '<br>'; + dol_fiche_end(); /* * Autres charges impayees diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 2475f420dd005571ebcf6b9ba6d58e6f4a90dc27..47878c7e75f315e6125476ef9ae917c2cb8f2e9f 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -1502,12 +1502,12 @@ else if ($id || $ref) $somethingshown=$formfile->show_documents('expedition',$objectref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang); - /* - * Linked object block - */ - $somethingshown=$object->showLinkedObjectBlock(); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); - if ($genallowed && ! $somethingshown) $somethingshown=1; + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '<br>'.$linktoelem; print '</td><td valign="top" width="50%">'; @@ -1530,7 +1530,7 @@ else if ($id || $ref) { $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref,'/')); + $fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref, '/').'[^\-]+'); $file=$fileparams['fullname']; // Define output language @@ -1557,7 +1557,7 @@ else if ($id || $ref) dol_print_error($db,$result); exit; } - $fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref,'/')); + $fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref, '/').'[^\-]+'); $file=$fileparams['fullname']; } diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index e0b5b791adacf19a2da43ad4323d8837576cb3b5..28d61ca45f7820d1d7250f584cdf81e304e26ce4 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -77,7 +77,21 @@ class Expedition extends CommonObject var $trueSize; var $date_delivery; // Date delivery planed - var $date_expedition; // Date delivery real + /** + * @deprecated + * @see date_shipping + */ + var $date; + /** + * @deprecated + * @see date_shipping + */ + var $date_expedition; + /** + * Effective delivery date + * @var int + */ + public $date_shipping; var $date_creation; var $date_valid; @@ -459,8 +473,8 @@ class Expedition extends CommonObject $this->statut = $obj->fk_statut; $this->user_author_id = $obj->fk_user_author; $this->date_creation = $this->db->jdate($obj->date_creation); - $this->date = $this->db->jdate($obj->date_expedition); // TODO obsolete - $this->date_expedition = $this->db->jdate($obj->date_expedition); // TODO obsolete + $this->date = $this->db->jdate($obj->date_expedition); // TODO deprecated + $this->date_expedition = $this->db->jdate($obj->date_expedition); // TODO deprecated $this->date_shipping = $this->db->jdate($obj->date_expedition); // Date real $this->date_delivery = $this->db->jdate($obj->date_delivery); // Date planed $this->fk_delivery_address = $obj->fk_address; @@ -783,10 +797,11 @@ class Expedition extends CommonObject $orderline = new OrderLine($this->db); $orderline->fetch($id); - $fk_product = $orderline->fk_product; - if (! empty($orderline->fk_product)) + if (! empty($conf->stock->enabled) && ! empty($orderline->fk_product)) { + $fk_product = $orderline->fk_product; + if (! ($entrepot_id > 0) && empty($conf->global->STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS)) { $this->error=$langs->trans("ErrorWarehouseRequiredIntoShipmentLine"); @@ -1708,9 +1723,10 @@ class ExpeditionLigne // From llx_commandedet or llx_propaldet var $qty_asked; - var $libelle; // Label produit - var $product_desc; // Description produit - var $ref; + public $product_ref; + public $product_label; + public $product_desc; + // Invoicing var $remise_percent; @@ -1720,6 +1736,24 @@ class ExpeditionLigne var $total_localtax1; // Total Local tax 1 var $total_localtax2; // Total Local tax 2 + public $fk_origin_line; + + // Deprecated + /** + * @deprecated + * @see fk_origin_line + */ + var $origin_line_id; + /** + * @deprecated + * @see product_ref + */ + var $ref; + /** + * @deprecated + * @see product_label + */ + var $libelle; /** * Constructor diff --git a/htdocs/expedition/tpl/linkedobjectblock.tpl.php b/htdocs/expedition/tpl/linkedobjectblock.tpl.php index 9c6d2c7679a3fa0278648d4c682d38b86a176992..abca7594962b065bbff59f93659f9e63cd511801 100644 --- a/htdocs/expedition/tpl/linkedobjectblock.tpl.php +++ b/htdocs/expedition/tpl/linkedobjectblock.tpl.php @@ -41,6 +41,7 @@ print_titre($langs->trans('RelatedShippings')); <td align="right"><?php echo $langs->trans("Status"); ?></td> </tr> <?php +$total=0; $var=true; foreach($linkedObjectBlock as $object) { @@ -71,4 +72,4 @@ foreach($linkedObjectBlock as $object) </tr> </table> -<!-- END PHP TEMPLATE --> \ No newline at end of file +<!-- END PHP TEMPLATE --> diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 2d9bcbceead41d32e99adf19ca5973ccd53662d4..0b688790af763a37826e737f111c791d449aa626 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -46,6 +46,7 @@ $date_start = dol_mktime(0, 0, 0, GETPOST('date_debutmonth'), GETPOST('date_debu $date_end = dol_mktime(0, 0, 0, GETPOST('date_finmonth'), GETPOST('date_finday'), GETPOST('date_finyear')); $date = dol_mktime(0, 0, 0, GETPOST('datemonth'), GETPOST('dateday'), GETPOST('dateyear')); $fk_projet=GETPOST('fk_projet'); +$ref=GETPOST("ref",'alpha'); // If socid provided by ajax company selector if (! empty($_REQUEST['socid_id'])) @@ -92,7 +93,7 @@ if ($cancel) $action=''; if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->supprimer) { $object = new ExpenseReport($db); - $result=$object->delete($id); + $result=$object->delete($id, $user); if ($result >= 0) { header("Location: index.php"); @@ -214,59 +215,67 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user $expediteur->fetch($object->fk_user_author); $emailFrom = $expediteur->email; - // SUBJECT - $subject = $langs->trans("ExpenseReportWaitingForApproval"); + if ($emailTo && $emailFrom) + { + // SUBJECT + $subject = $langs->trans("ExpenseReportWaitingForApproval"); - // CONTENT - $link = $urlwithroot.'/expensereport/card.php?id='.$object->id; - $message = $langs->trans("ExpenseReportWaitingForApprovalMessage", $expediteur->getFullName($langs), get_date_range($object->date_debut,$object->date_fin,'',$langs), $link); + // CONTENT + $link = $urlwithroot.'/expensereport/card.php?id='.$object->id; + $message = $langs->trans("ExpenseReportWaitingForApprovalMessage", $expediteur->getFullName($langs), get_date_range($object->date_debut,$object->date_fin,'',$langs), $link); - // Rebuild pdf - /* - $object->setDocModel($user,""); - $resultPDF = expensereport_pdf_create($db,$id,'',"",$langs); + // Rebuild pdf + /* + $object->setDocModel($user,""); + $resultPDF = expensereport_pdf_create($db,$id,'',"",$langs); - if($resultPDF): - // ATTACHMENT - $filename=array(); $filedir=array(); $mimetype=array(); - array_push($filename,dol_sanitizeFileName($object->ref).".pdf"); - array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref).".pdf"); - array_push($mimetype,"application/pdf"); - */ + if($resultPDF): + // ATTACHMENT + $filename=array(); $filedir=array(); $mimetype=array(); + array_push($filename,dol_sanitizeFileName($object->ref).".pdf"); + array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref).".pdf"); + array_push($mimetype,"application/pdf"); + */ - // PREPARE SEND - $mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename); + // PREPARE SEND + $mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename); - if ($mailfile) - { - // SEND - $result=$mailfile->sendfile(); - if ($result) - { - $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($emailFrom,2),$mailfile->getValidAddress($emailTo,2)); - setEventMessage($mesg); - header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); - exit; - } - else + if ($mailfile) { - $langs->load("other"); - if ($mailfile->error) + // SEND + $result=$mailfile->sendfile(); + if ($result) { - $mesg=''; - $mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); - $mesg.='<br>'.$mailfile->error; - setEventMessage($mesg,'errors'); + $mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($emailFrom,2),$mailfile->getValidAddress($emailTo,2)); + setEventMessage($mesg); + header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); + exit; } else { - setEventMessage('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', 'warnings'); + $langs->load("other"); + if ($mailfile->error) + { + $mesg=''; + $mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); + $mesg.='<br>'.$mailfile->error; + setEventMessage($mesg,'errors'); + } + else + { + setEventMessage('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', 'warnings'); + } } } + else + { + setEventMessages($mailfile->error,$mailfile->errors,'errors'); + $action=''; + } } else { - setEventMessages($mailfile->error,$mailfile->errors,'errors'); + setEventMessage($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), 'warnings'); $action=''; } } @@ -304,66 +313,73 @@ if ($action == "confirm_save_from_refuse" && GETPOST("confirm") == "yes" && $id if ($result > 0) { - // Send mail if (! empty($conf->global->DEPLACEMENT_TO_CLEAN)) { + // Send mail + // TO $destinataire = new User($db); $destinataire->fetch($object->fk_user_validator); $emailTo = $destinataire->email; - // FROM - $expediteur = new User($db); - $expediteur->fetch($object->fk_user_author); - $emailFrom = $expediteur->email; - - // SUBJECT - $subject = "' ERP - Note de frais à re-approuver"; - - // CONTENT - $dateRefusEx = explode(" ",$object->date_refuse); - - $message = "Bonjour {$destinataire->firstname},\n\n"; - $message.= "Le {$dateRefusEx[0]} à {$dateRefusEx[1]} vous avez refusé d'approuver la note de frais \"{$object->ref}\". Vous aviez émis le motif suivant : {$object->detail_refuse}\n\n"; - $message.= "L'auteur vient de modifier la note de frais, veuillez trouver la nouvelle version en pièce jointe.\n"; - $message.= "- Déclarant : {$expediteur->firstname} {$expediteur->lastname}\n"; - $message.= "- Période : du {$object->date_debut} au {$object->date_fin}\n"; - $message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n"; - $message.= "Bien cordialement,\n' SI"; - - // Génération du pdf avant attachement - $object->setDocModel($user,""); - $resultPDF = expensereport_pdf_create($db,$object,'',"",$langs); + if ($emailTo) + { + // FROM + $expediteur = new User($db); + $expediteur->fetch($object->fk_user_author); + $emailFrom = $expediteur->email; - if($resultPDF): - // ATTACHMENT - $filename=array(); $filedir=array(); $mimetype=array(); - array_push($filename,dol_sanitizeFileName($object->ref).".pdf"); - array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref_number).".pdf"); - array_push($mimetype,"application/pdf"); + // SUBJECT + $subject = "' ERP - Note de frais à re-approuver"; - // PREPARE SEND - $mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename); + // CONTENT + $dateRefusEx = explode(" ",$object->date_refuse); - if(!$mailfile->error): + $message = "Bonjour {$destinataire->firstname},\n\n"; + $message.= "Le {$dateRefusEx[0]} à {$dateRefusEx[1]} vous avez refusé d'approuver la note de frais \"{$object->ref}\". Vous aviez émis le motif suivant : {$object->detail_refuse}\n\n"; + $message.= "L'auteur vient de modifier la note de frais, veuillez trouver la nouvelle version en pièce jointe.\n"; + $message.= "- Déclarant : {$expediteur->firstname} {$expediteur->lastname}\n"; + $message.= "- Période : du {$object->date_debut} au {$object->date_fin}\n"; + $message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n"; + $message.= "Bien cordialement,\n' SI"; - // SEND - $result=$mailfile->sendfile(); - if ($result): - Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); - exit; - endif; + // Génération du pdf avant attachement + $object->setDocModel($user,""); + $resultPDF = expensereport_pdf_create($db,$object,'',"",$langs); - else: + if($resultPDF) + { + // ATTACHMENT + $filename=array(); $filedir=array(); $mimetype=array(); + array_push($filename,dol_sanitizeFileName($object->ref).".pdf"); + array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref_number).".pdf"); + array_push($mimetype,"application/pdf"); - $mesg="Impossible d'envoyer l'email."; + // PREPARE SEND + $mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename); - endif; - // END - Send mail - else: - dol_print_error($db,$resultPDF); - exit; - endif; + if (! $mailfile->error) + { + // SEND + $result=$mailfile->sendfile(); + if ($result) + { + Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); + exit; + } + else + { + $mesg=$mailfile->error; + } + // END - Send mail + } + else + { + dol_print_error($db,$resultPDF); + exit; + } + } + } } } else @@ -1168,10 +1184,10 @@ if ($action == 'create') } else { - if($id > 0) + if($id > 0 || $ref) { $object = new ExpenseReport($db); - $result = $object->fetch($id); + $result = $object->fetch($id, $ref); if ($result > 0) { @@ -1218,7 +1234,7 @@ else // Ref print '<tr><td width="25%">'.$langs->trans("Ref").'</td><td>'; - print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', ''); + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); print '</td></tr>'; print '<tr>'; @@ -1376,7 +1392,7 @@ else // Ref print '<tr><td width="25%">'.$langs->trans("Ref").'</td><td>'; - print $form->showrefnav($object, 'id', $linkback, 1, 'ref', 'ref', ''); + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); print '</td></tr>'; print '<tr>'; @@ -1450,6 +1466,7 @@ else print '</tr>'; } + // User to inform if($object->fk_statut<3) // informed { print '<tr>'; @@ -1460,6 +1477,7 @@ else $userfee=new User($db); $userfee->fetch($object->fk_user_validator); print $userfee->getNomUrl(1); + if (empty($userfee->email) || ! isValidEmail($userfee->email)) print img_warning($langs->trans("EmailNotValid")); } print '</td></tr>'; } @@ -1530,7 +1548,7 @@ else $sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det as fde'; $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON fde.fk_c_type_fees=ctf.id'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pjt ON fde.fk_projet=pjt.rowid'; - $sql.= ' WHERE fde.fk_expensereport = '.$id; + $sql.= ' WHERE fde.fk_expensereport = '.$object->id; $resql = $db->query($sql); if ($resql) @@ -1692,8 +1710,8 @@ else print_fiche_titre($langs->trans("AddLine"),'',''); print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" name="addline">'; - print '<input type="hidden" name="id" value="'.$id.'">'; - print '<input type="hidden" name="fk_expensereport" value="'.$id.'" />'; + print '<input type="hidden" name="id" value="'.$object->id.'">'; + print '<input type="hidden" name="fk_expensereport" value="'.$object->id.'" />'; print '<input type="hidden" name="action" value="addline" />'; print '<table class="noborder" width="100%">'; @@ -1789,7 +1807,7 @@ print '<div class="tabsAction">'; if ($action != 'create' && $action != 'edit') { $object = new ExpenseReport($db); - $object->fetch($id); + $object->fetch($id, $ref); /* Si l'état est "Brouillon" @@ -1802,18 +1820,18 @@ if ($action != 'create' && $action != 'edit') if ($object->fk_user_author == $user->id) { // Modify - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$id.'">'.$langs->trans('Modify').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$object->id.'">'.$langs->trans('Modify').'</a>'; // Validate if (count($object->lines) > 0 || count($object->lignes) > 0) { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=save&id='.$id.'">'.$langs->trans('ValidateAndSubmit').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=save&id='.$object->id.'">'.$langs->trans('ValidateAndSubmit').'</a>'; } if ($user->rights->expensereport->supprimer) { // Delete - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>'; + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>'; } } } @@ -1828,17 +1846,17 @@ if ($action != 'create' && $action != 'edit') if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid) { // Modify - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$id.'">'.$langs->trans('Modify').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$object->id.'">'.$langs->trans('Modify').'</a>'; // Brouillonner (le statut refusée est identique à brouillon) //print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('BROUILLONNER').'</a>'; // Enregistrer depuis le statut "Refusée" - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=save_from_refuse&id='.$id.'">'.$langs->trans('ValidateAndSubmit').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=save_from_refuse&id='.$object->id.'">'.$langs->trans('ValidateAndSubmit').'</a>'; if ($user->rights->expensereport->supprimer) { // Delete - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>'; + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>'; } } } @@ -1848,7 +1866,7 @@ if ($action != 'create' && $action != 'edit') if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid) { // Brouillonner - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('SetToDraft').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$object->id.'">'.$langs->trans('SetToDraft').'</a>'; } } @@ -1862,7 +1880,7 @@ if ($action != 'create' && $action != 'edit') if ($object->fk_user_author == $user->id) { // Brouillonner - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('SetToDraft').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$object->id.'">'.$langs->trans('SetToDraft').'</a>'; } } @@ -1871,21 +1889,21 @@ if ($action != 'create' && $action != 'edit') //if($object->fk_user_validator==$user->id) //{ // Validate - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=validate&id='.$id.'">'.$langs->trans('Approve').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=validate&id='.$object->id.'">'.$langs->trans('Approve').'</a>'; // Deny - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=refuse&id='.$id.'">'.$langs->trans('Deny').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=refuse&id='.$object->id.'">'.$langs->trans('Deny').'</a>'; //} if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid) { // Cancel - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$object->id.'">'.$langs->trans('Cancel').'</a>'; } if($user->rights->expensereport->supprimer) { // Delete - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>'; + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>'; } } @@ -1896,18 +1914,18 @@ if ($action != 'create' && $action != 'edit') if ($user->rights->expensereport->to_paid && $object->fk_statut == 5) { // Pay - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=paid&id='.$id.'">'.$langs->trans('TO_PAID').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=paid&id='.$object->id.'">'.$langs->trans('TO_PAID').'</a>'; // Cancel if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid) { - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$object->id.'">'.$langs->trans('Cancel').'</a>'; } if($user->rights->expensereport->supprimer) { // Delete - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>'; + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>'; } } @@ -1919,11 +1937,11 @@ if ($action != 'create' && $action != 'edit') if ($user->rights->expensereport->approve && $user->rights->expensereport->to_paid && $object->fk_statut==6) { // Cancel - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$object->id.'">'.$langs->trans('Cancel').'</a>'; if($user->rights->expensereport->supprimer) { // Delete - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>'; + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>'; } } @@ -1937,11 +1955,11 @@ if ($action != 'create' && $action != 'edit') if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid) { // Brouillonner - print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('ReOpen').'</a>'; + print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$object->id.'">'.$langs->trans('ReOpen').'</a>'; } // Delete - print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>'; + print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>'; } } diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 3a0a15d6d819144ad6e9cd2d92084a7cd74f9fab..98a6aea00e7ebc268e59ecbc8764d73a8cbf9a0f 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -109,24 +109,9 @@ class ExpenseReport extends CommonObject $this->total_tva = 0; // List of language codes for status - $this->statuts[0]='Draft'; - $this->statuts[2]='Validated'; - $this->statuts[4]='Canceled'; - $this->statuts[5]='Approved'; - $this->statuts[6]='Paid'; - $this->statuts[99]='Refused'; - $this->statuts_short[0]='Draft'; - $this->statuts_short[2]='Validated'; - $this->statuts_short[4]='Canceled'; - $this->statuts_short[5]='Approved'; - $this->statuts_short[6]='Paid'; - $this->statuts_short[99]='Refused'; - $this->statuts_logo[0]='statut0'; - $this->statuts_logo[2]='statut1'; - $this->statuts_logo[4]='statut5'; - $this->statuts_logo[5]='statut3'; - $this->statuts_logo[6]='statut6'; - $this->statuts_logo[99]='statut8'; + $this->statuts_short = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused'); + $this->statuts = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused'); + $this->statuts_logo = array(0 => 'statut0', 2 => 'statut1', 4 => 'statut5', 5 => 'statut3', 6 => 'statut6', 99 => 'statut8'); return 1; } @@ -363,7 +348,8 @@ class ExpenseReport extends CommonObject $this->code_statut = $obj->code_statut; $this->code_paiement = $obj->code_paiement; - $this->lignes = array(); + $this->lignes = array(); // deprecated + $this->lines = array(); $result=$this->fetch_lines(); @@ -787,9 +773,10 @@ class ExpenseReport extends CommonObject * delete * * @param int $rowid Id to delete (optional) + * @param User $fuser User that delete * @return int <0 if KO, >0 if OK */ - function delete($rowid=0) + function delete($rowid=0, User $fuser=null) { global $user,$langs,$conf; @@ -825,10 +812,10 @@ class ExpenseReport extends CommonObject /** * Set to status validate * - * @param User $user User + * @param User $fuser User * @return int <0 if KO, >0 if OK */ - function setValidate($user) + function setValidate($fuser) { global $conf,$langs; @@ -851,13 +838,13 @@ class ExpenseReport extends CommonObject { $prefix="ER"; if (! empty($conf->global->EXPENSE_REPORT_PREFIX)) $prefix=$conf->global->EXPENSE_REPORT_PREFIX; - $this->ref = strtoupper($user->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d'); + $this->ref = strtoupper($fuser->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d'); } if ($this->fk_statut != 2) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$user->id.","; + $sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$fuser->id.","; $sql.= " ref_number_int = ".$ref_number_int; $sql.= ' WHERE rowid = '.$this->id; @@ -882,10 +869,10 @@ class ExpenseReport extends CommonObject /** * set_save_from_refuse * - * @param User $user User + * @param User $fuser User * @return int <0 if KO, >0 if OK */ - function set_save_from_refuse($user) + function set_save_from_refuse($fuser) { global $conf,$langs; @@ -927,10 +914,10 @@ class ExpenseReport extends CommonObject /** * Set status to approved * - * @param User $user User + * @param User $fuser User * @return int <0 if KO, >0 if OK */ - function setApproved($user) + function setApproved($fuser) { $now=dol_now(); @@ -939,7 +926,7 @@ class ExpenseReport extends CommonObject if ($this->fk_statut != 5) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET ref = '".$this->ref."', fk_statut = 5, fk_user_approve = ".$user->id.","; + $sql.= " SET ref = '".$this->ref."', fk_statut = 5, fk_user_approve = ".$fuser->id.","; $sql.= " date_approve='".$this->date_approve."'"; $sql.= ' WHERE rowid = '.$this->id; if ($this->db->query($sql)) @@ -961,10 +948,10 @@ class ExpenseReport extends CommonObject /** * setDeny * - * @param User $user User + * @param User $fuser User * @param Details $details Details */ - function setDeny($user,$details) + function setDeny($fuser,$details) { $now = dol_now(); @@ -972,7 +959,7 @@ class ExpenseReport extends CommonObject if ($this->fk_statut != 99) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET ref = '".$this->ref."', fk_statut = 99, fk_user_refuse = ".$user->id.","; + $sql.= " SET ref = '".$this->ref."', fk_statut = 99, fk_user_refuse = ".$fuser->id.","; $sql.= " date_refuse='".$this->db->idate($now)."',"; $sql.= " detail_refuse='".$this->db->escape($details)."'"; $sql.= " fk_user_approve=NULL,"; @@ -980,7 +967,7 @@ class ExpenseReport extends CommonObject if ($this->db->query($sql)) { $this->fk_statut = 99; - $this->fk_user_refuse = $user->id; + $this->fk_user_refuse = $fuser->id; $this->detail_refuse = $details; $this->date_refuse = $now; return 1; @@ -1000,10 +987,10 @@ class ExpenseReport extends CommonObject /** * setPaid * - * @param User $user User + * @param User $fuser User * @return int <0 if KO, >0 if OK */ - function setPaid($user) + function setPaid($fuser) { $now= dol_now(); @@ -1011,7 +998,7 @@ class ExpenseReport extends CommonObject if ($this->fk_statut != 6) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET fk_statut = 6, fk_user_paid = ".$user->id.","; + $sql.= " SET fk_statut = 6, fk_user_paid = ".$fuser->id.","; $sql.= " date_paiement='".$this->db->idate($this->date_paiement)."'"; $sql.= ' WHERE rowid = '.$this->id; @@ -1035,10 +1022,10 @@ class ExpenseReport extends CommonObject /** * set_unpaid * - * @param User $user User + * @param User $fuser User * @return int <0 if KO, >0 if OK */ - function set_unpaid($user) + function set_unpaid($fuser) { if ($this->fk_c_deplacement_statuts != 5) { @@ -1064,17 +1051,17 @@ class ExpenseReport extends CommonObject /** * set_cancel * - * @param User $user User + * @param User $fuser User * @param string $detail Detail * @return int <0 if KO, >0 if OK */ - function set_cancel($user,$detail) + function set_cancel($fuser,$detail) { $this->date_cancel = $this->db->idate(gmmktime()); if ($this->fk_statut != 4) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET fk_statut = 4, fk_user_cancel = ".$user->id; + $sql.= " SET fk_statut = 4, fk_user_cancel = ".$fuser->id; $sql.= ", date_cancel='".$this->date_cancel."'"; $sql.= " ,detail_cancel='".$this->db->escape($detail)."'"; $sql.= ' WHERE rowid = '.$this->id; @@ -1286,10 +1273,10 @@ class ExpenseReport extends CommonObject * deleteline * * @param int $rowid Row id - * @param User $user User + * @param User $fuser User * @return int <0 if KO, >0 if OK */ - function deleteline($rowid, $user='') + function deleteline($rowid, $fuser='') { $this->db->begin(); @@ -1314,16 +1301,16 @@ class ExpenseReport extends CommonObject /** * periode_existe * - * @param User $user User + * @param User $fuser User * @param Date $date_debut Start date * @param Date $date_fin End date * @return int <0 if KO, >0 if OK */ - function periode_existe($user, $date_debut, $date_fin) + function periode_existe($fuser, $date_debut, $date_fin) { $sql = "SELECT rowid, date_debut, date_fin"; $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element; - $sql.= " WHERE fk_user_author = '{$user->id}'"; + $sql.= " WHERE fk_user_author = '{$fuser->id}'"; dol_syslog(get_class($this)."::periode_existe sql=".$sql); $result = $this->db->query($sql); @@ -1632,12 +1619,12 @@ class ExpenseReportLine /** * update * - * @param User $user User + * @param User $fuser User * @return int <0 if KO, >0 if OK */ - function update($user) + function update($fuser) { - global $user,$langs,$conf; + global $fuser,$langs,$conf; $error=0; diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php index 4af39adb6333d2daed9fbd9cdee71bf1a85cb399..5b157f6df8bd3dc4c2e157ed40a7f26a4d99f170 100644 --- a/htdocs/expensereport/index.php +++ b/htdocs/expensereport/index.php @@ -107,7 +107,7 @@ print_fiche_titre($langs->trans("ExpensesArea")); print '<div class="fichecenter"><div class="fichethirdleft">'; -print '<table class="noborder" width="100%">'; +print '<table class="noborder nohover" width="100%">'; print '<tr class="liste_titre">'; print '<td colspan="4">'.$langs->trans("Statistics").'</td>'; print "</tr>\n"; diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 58002c19dbadd4bc9e0a9504ca384f59f21a0028..c0b30b6c87330b6f4ee1131065e7ec2233df2cd4 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -180,6 +180,7 @@ if ($resql) print_barre_liste($langs->trans("ListTripsAndExpenses"), $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords); print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">'."\n"; + print '<table class="noborder" width="100%">'; print "<tr class=\"liste_titre\">"; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"d.rowid","",$param,'',$sortfield,$sortorder); @@ -190,7 +191,7 @@ if ($resql) print_liste_field_titre($langs->trans("TotalVAT"),$_SERVER["PHP_SELF"],"d.total_tva","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("TotalTTC"),$_SERVER["PHP_SELF"],"d.total_ttc","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Statut"),$_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder); - print '<td class="liste_titre"> </td>'; + print_liste_field_titre(''); print "</tr>\n"; // Filters diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index dac78d9ae3bf610bb2ab1f91238c1cba4976c785..523b826ee903d04481843c7e2e0ad095d6504a85 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -5,6 +5,7 @@ * Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Ferran Marcet <fmarcet@2byte.es> + * Copyright (C) 201 Charlie Benke <charlies@patas-monkey.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -159,7 +160,7 @@ else if ($action == 'confirm_modify' && $confirm == 'yes' && $user->rights->fich else if ($action == 'add' && $user->rights->ficheinter->creer) { $object->socid = $socid; - $object->duree = GETPOST('duree','int'); + $object->duration = GETPOST('duration','int'); $object->fk_project = GETPOST('projectid','int'); $object->fk_contrat = GETPOST('contratid','int'); $object->author = $user->id; @@ -248,7 +249,14 @@ else if ($action == 'add' && $user->rights->ficheinter->creer) $prod = new Product($db); $prod->id=$lines[$i]->fk_product; $prod->getMultiLangs(); - + // We show if duration is present on service (so we get it) + $prod->fetch($lines[$i]->fk_product); + if ($prod->duration_value && $prod->duration_unit == 'h' && $conf->global->FICHINTER_USE_SERVICE_DURATION) + { + $durationproduct=$prod->duration_value * 3600 * $lines[$i]->qty; + } + else + $durationproduct=3600; $outputlangs = $langs; $newlang=''; if (empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id'); @@ -277,11 +285,11 @@ else if ($action == 'add' && $user->rights->ficheinter->creer) $date_intervention=dol_mktime(0,0,0,$timearray['mon'],$timearray['mday'],$timearray['year']); if ($product_type == 1) { //service - $duration = 3600; + $duration = $durationproduct; } else { //product - $duration = 0; + $duration = 0; } $predef = ''; @@ -1019,7 +1027,7 @@ if ($action == 'create') print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; dol_fiche_head(''); - + print '<table class="border" width="100%">'; print '<input type="hidden" name="socid" value='.$soc->id.'>'; @@ -1125,7 +1133,7 @@ if ($action == 'create') } dol_fiche_end(); - + print '<div class="center">'; print '<input type="submit" class="button" value="'.$langs->trans("CreateDraftIntervention").'">'; print '</div>'; @@ -1135,7 +1143,7 @@ if ($action == 'create') else { dol_fiche_head(''); - + print '<form name="fichinter" action="'.$_SERVER['PHP_SELF'].'" method="POST">'; print '<table class="border" width="100%">'; print '<tr><td class="fieldrequired">'.$langs->trans("ThirdParty").'</td><td>'; @@ -1144,7 +1152,7 @@ if ($action == 'create') print '</table>'; dol_fiche_end(); - + print '<div class="center">'; print '<input type="hidden" name="action" value="create">'; print '<input type="submit" class="button" value="'.$langs->trans("CreateDraftIntervention").'">'; @@ -1248,7 +1256,7 @@ else if ($id > 0 || ! empty($ref)) { // Duration print '<tr><td>'.$langs->trans("TotalDuration").'</td>'; - print '<td colspan="3">'.convertSecondToTime($object->duree, 'all', $conf->global->MAIN_DURATION_OF_WORKDAY).'</td>'; + print '<td colspan="3">'.convertSecondToTime($object->duration, 'all', $conf->global->MAIN_DURATION_OF_WORKDAY).'</td>'; print '</tr>'; } @@ -1701,7 +1709,6 @@ else if ($id > 0 || ! empty($ref)) if ($action != 'presend') { print '<div class="fichecenter"><div class="fichehalfleft">'; - //print '<table width="100%"><tr><td width="50%" valign="top">'; /* * Built documents @@ -1719,12 +1726,14 @@ else if ($id > 0 || ! empty($ref)) //print "<br>\n"; $somethingshown=$formfile->show_documents('ficheinter',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang); - /* - * Linked object block - */ - $somethingshown=$object->showLinkedObjectBlock(); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '<br>'.$linktoelem; + - //print '</td><td valign="top" width="50%">'; print '</div><div class="fichehalfright"><div class="ficheaddleft">'; // List of actions on element @@ -1733,7 +1742,6 @@ else if ($id > 0 || ! empty($ref)) $somethingshown=$formactions->showactions($object,'fichinter',$socid); print '</div></div></div>'; - //print "</td></tr></table>\n"; } @@ -1747,7 +1755,7 @@ else if ($id > 0 || ! empty($ref)) { $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $fileparams = dol_most_recent_file($conf->ficheinter->dir_output . '/' . $ref, preg_quote($ref,'/')); + $fileparams = dol_most_recent_file($conf->ficheinter->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); $file=$fileparams['fullname']; // Define output language @@ -1774,7 +1782,7 @@ else if ($id > 0 || ! empty($ref)) dol_print_error($db,$result); exit; } - $fileparams = dol_most_recent_file($conf->ficheinter->dir_output . '/' . $ref, preg_quote($ref,'/')); + $fileparams = dol_most_recent_file($conf->ficheinter->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); $file=$fileparams['fullname']; } diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index b72dec1f6fa9910393a48624886cc8dbaa70faf3..5e88cc94243cea0d7e612765c352e7f434469ed9 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -53,7 +53,7 @@ class Fichinter extends CommonObject var $datec; var $datev; var $datem; - var $duree; + var $duration; var $statut; // 0=draft, 1=validated, 2=invoiced var $description; var $note_private; @@ -116,7 +116,7 @@ class Fichinter extends CommonObject return -1; } } - if (! is_numeric($this->duree)) $this->duree = 0; + if (! is_numeric($this->duration)) $this->duration = 0; if ($this->socid <= 0) { @@ -234,8 +234,8 @@ class Fichinter extends CommonObject */ function update($user, $notrigger=0) { - if (! is_numeric($this->duree)) { - $this->duree = 0; + if (! is_numeric($this->duration)) { + $this->duration = 0; } if (! dol_strlen($this->fk_project)) { $this->fk_project = 0; @@ -245,7 +245,7 @@ class Fichinter extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."fichinter SET "; $sql.= "description = '".$this->db->escape($this->description)."'"; - $sql.= ", duree = ".$this->duree; + $sql.= ", duree = ".$this->duration; $sql.= ", fk_projet = ".$this->fk_project; $sql.= ", note_private = ".($this->note_private?"'".$this->db->escape($this->note_private)."'":"null"); $sql.= ", note_public = ".($this->note_public?"'".$this->db->escape($this->note_public)."'":"null"); @@ -306,7 +306,7 @@ class Fichinter extends CommonObject $this->description = $obj->description; $this->socid = $obj->fk_soc; $this->statut = $obj->fk_statut; - $this->duree = $obj->duree; + $this->duration = $obj->duree; $this->datec = $this->db->jdate($obj->datec); $this->datev = $this->db->jdate($obj->datev); $this->datem = $this->db->jdate($obj->datem); @@ -951,7 +951,7 @@ class Fichinter extends CommonObject $this->datec = $now; $this->note_private='Private note'; $this->note_public='SPECIMEN'; - $this->duree = 0; + $this->duration = 0; $nbp = 25; $xnbp = 0; while ($xnbp < $nbp) @@ -964,7 +964,7 @@ class Fichinter extends CommonObject $this->lines[$xnbp]=$line; $xnbp++; - $this->duree+=$line->duration; + $this->duration+=$line->duration; } } diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 7c0e9f14a0bb29a221dfedd47610044da71e31a5..45ba2b24f8c18356d675d1e0a4b38446a96dd813 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -37,22 +37,17 @@ if (! defined('EURO')) define('EURO',chr(128)); // Define syslog constants if (! defined('LOG_DEBUG')) { - if (function_exists("define_syslog_variables")) - { - define_syslog_variables(); // Deprecated since php 5.3.0, syslog variables no longer need to be initialized - } - else - { - // Pour PHP sans syslog (comme sous Windows) - define('LOG_EMERG',0); - define('LOG_ALERT',1); - define('LOG_CRIT',2); - define('LOG_ERR',3); - define('LOG_WARNING',4); - define('LOG_NOTICE',5); - define('LOG_INFO',6); - define('LOG_DEBUG',7); - } + if (! function_exists("syslog")) { + // For PHP versions without syslog (like running on Windows OS) + define('LOG_EMERG',0); + define('LOG_ALERT',1); + define('LOG_CRIT',2); + define('LOG_ERR',3); + define('LOG_WARNING',4); + define('LOG_NOTICE',5); + define('LOG_INFO',6); + define('LOG_DEBUG',7); + } } // End of common declaration part diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index ccd17a2f97bb33fa5159f58c22b271c8c98fbb4f..6628aeb19d772da80ad164e42ee60485ecf8dbd7 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -55,6 +55,7 @@ class CommandeFournisseur extends CommonOrder /** * TODO: Remove * @deprecated + * @see product_ref */ var $ref; var $product_ref; @@ -78,8 +79,13 @@ class CommandeFournisseur extends CommonOrder var $total_localtax2; // Total Local tax 2 var $total_ttc; var $source; + /** + * @deprecated + * @see note_private, note_public + */ var $note; - var $note_public; + public $note_private; + public $note_public; var $model_pdf; var $fk_project; var $cond_reglement_id; @@ -2465,6 +2471,7 @@ class CommandeFournisseurLigne extends CommonOrderLine * Supplier ref * @var string * @deprecated Use ref_supplier + * @see ref_supplier */ public $ref_fourn; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 1cfbe941d9aa9f37a2ad89eb9459b2e01e73e639..03ff0ff1eb2173c18f04c79bde371a482aa256db 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -58,12 +58,9 @@ class FactureFournisseur extends CommonInvoice var $type = self::TYPE_STANDARD; /** - * Check constants for more info: - * - STATUS_DRAFT - * - STATUS_VALIDATED - * - STATUS_PAID - * - STATUS_ABANDONED + * Supplier invoice status * @var int + * @see FactureFournisseur::STATUS_DRAFT, FactureFournisseur::STATUS_VALIDATED, FactureFournisseur::STATUS_PAID, FactureFournisseur::STATUS_ABANDONED */ var $statut; //! 1 si facture payee COMPLETEMENT, 0 sinon (ce champ ne devrait plus servir car insuffisant) @@ -85,7 +82,11 @@ class FactureFournisseur extends CommonInvoice var $total_localtax1; var $total_localtax2; var $total_ttc; - var $note; // deprecated + /** + * @deprecated + * @see note_private, note_public + */ + var $note; var $note_private; var $note_public; var $propalid; @@ -100,7 +101,10 @@ class FactureFournisseur extends CommonInvoice * @var SupplierInvoiceLine[] */ public $lines = array(); - var $fournisseur; // deprecated + /** + * @deprecated + */ + var $fournisseur; //Incorterms var $fk_incoterms; @@ -1896,9 +1900,17 @@ class SupplierInvoiceLine extends CommonObjectLine var $oldline; + /** + * @deprecated + * @see product_ref + */ public $ref; public $product_ref; public $ref_supplier; + /** + * @deprecated + * @see label + */ public $libelle; public $product_desc; @@ -1906,8 +1918,10 @@ class SupplierInvoiceLine extends CommonObjectLine * Unit price before taxes * @var float * @deprecated Use $subprice + * @see subprice */ public $pu_ht; + public $subprice; /** * Unit price included taxes @@ -1919,8 +1933,10 @@ class SupplierInvoiceLine extends CommonObjectLine * Total VAT amount * @var float * @deprecated Use $total_tva instead + * @see total_tva */ public $tva; + public $total_tva; /** * Id of the corresponding supplier invoice @@ -1932,7 +1948,7 @@ class SupplierInvoiceLine extends CommonObjectLine * Product label * @var string */ - var $label; // deprecated + var $label; /** * Description of the line diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 48c238d60beee80cc64e980490549e1de1c04355..9c4a95c7c52af5cccebcb771e024f4248f60ef89 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -42,7 +42,11 @@ class ProductFournisseur extends Product var $product_fourn_price_id; // id of ligne product-supplier var $id; // product id - var $fourn_ref; // deprecated + /** + * @deprecated + * @see ref_supplier + */ + var $fourn_ref; var $delivery_time_days; var $ref_supplier; // ref supplier (can be set by get_buyprice) var $vatrate_supplier; // default vat rate for this supplier/qty/product (can be set by get_buyprice) @@ -161,6 +165,7 @@ class ProductFournisseur extends Product function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges=0, $remise_percent=0, $remise=0, $newnpr=0, $delivery_time_days=0) { global $conf, $langs; + //global $mysoc; // Clean parameter if (empty($qty)) $qty=0; @@ -348,7 +353,8 @@ class ProductFournisseur extends Product if ($obj) { $this->product_fourn_price_id = $rowid; - $this->fourn_ref = $obj->ref_fourn; + $this->fourn_ref = $obj->ref_fourn; // deprecated + $this->ref_supplier = $obj->ref_fourn; $this->fourn_price = $obj->price; $this->fourn_charges = $obj->charges; $this->fourn_qty = $obj->quantity; diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 35165b3329888fda8c3f9456e416050ff4cdb9c0..b79663445ed4c7d1fc26f82062dff3d9508795c5 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2265,7 +2265,7 @@ elseif (! empty($object->id)) { $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $fileparams = dol_most_recent_file($conf->fournisseur->commande->dir_output . '/' . $ref, preg_quote($ref,'/')); + $fileparams = dol_most_recent_file($conf->fournisseur->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); $file=$fileparams['fullname']; // Define output language @@ -2292,7 +2292,7 @@ elseif (! empty($object->id)) dol_print_error($db,$result); exit; } - $fileparams = dol_most_recent_file($conf->fournisseur->commande->dir_output . '/' . $ref, preg_quote($ref,'/')); + $fileparams = dol_most_recent_file($conf->fournisseur->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+'); $file=$fileparams['fullname']; } @@ -2763,10 +2763,13 @@ elseif (! empty($object->id)) print $formfile->showdocuments('commande_fournisseur',$comfournref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,0,0,'','','',$object->thirdparty->default_lang); $somethingshown=$formfile->numoffiles; - /* - * Linked object block - */ - $somethingshown=$object->showLinkedObjectBlock(); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '<br>'.$linktoelem; + print '</div><div class="fichehalfright"><div class="ficheaddleft">'; diff --git a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php index 3fb22d4a1015bb862610c8b71be8c27875b4eb1f..0c2d5eed0afb5342593e5312f21f0e6dfe1271e8 100644 --- a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php @@ -39,6 +39,7 @@ print_titre($langs->trans('RelatedSupplierOrders')); <td align="right"><?php echo $langs->trans("Status"); ?></td> </tr> <?php +$total=0; $var=true; foreach($linkedObjectBlock as $object) { @@ -68,4 +69,4 @@ foreach($linkedObjectBlock as $object) </tr> </table> -<!-- END PHP TEMPLATE --> \ No newline at end of file +<!-- END PHP TEMPLATE --> diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index bf310d92f8d5c79056d6bd62663a48bc3766e72e..cda640f2f383017ad0058de514b42bd42605c32d 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1508,7 +1508,16 @@ if ($action == 'create') $langs->load('orders'); $txt=$langs->trans("SupplierOrder"); } - print '<tr><td>'.$txt.'</td><td colspan="2">'.$objectsrc->getNomUrl(1).'</td></tr>'; + print '<tr><td>'.$txt.'</td><td colspan="2">'.$objectsrc->getNomUrl(1); + //We check if Origin document has already an invoice attached to it + $objectsrc->fetchObjectLinked($originid,'','','invoice_supplier'); + $cntinvoice=count($objectsrc->linkedObjects['invoice_supplier']); + if ($cntinvoice>=1) + { + setEventMessage('WarningBillExist','warnings'); + echo ' ('.$langs->trans('LatestRelatedBill').end($objectsrc->linkedObjects['facture'])->getNomUrl(1).')'; + } + echo '</td></tr>'; print '<tr><td>'.$langs->trans('TotalHT').'</td><td colspan="2">'.price($objectsrc->total_ht).'</td></tr>'; print '<tr><td>'.$langs->trans('TotalVAT').'</td><td colspan="2">'.price($objectsrc->total_tva)."</td></tr>"; if ($mysoc->country_code=='ES') @@ -2403,80 +2412,14 @@ else print $formfile->showdocuments('facture_fournisseur',$subdir,$filedir,$urlsource,$genallowed,$delallowed,$modelpdf,1,0,0,40,0,'','','',$societe->default_lang); $somethingshown=$formfile->numoffiles; - /* - * Linked object block - */ - $somethingshown=$object->showLinkedObjectBlock(); - - $linktoelem=''; + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); - if (empty($somethingshown) && ! empty($conf->fournisseur->enabled)) - { - $linktoelem.=($linktoelem?' ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>'; - - print ' - <script type="text/javascript" language="javascript"> - jQuery(document).ready(function() { - jQuery("#linktoorder").click(function() { - jQuery("#orderlist").toggle(); - jQuery("#linktoorder").toggle(); - }); - }); - </script> - '; - - print '<div id="orderlist" style="display:none">'; - - $sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_supplier, c.total_ht"; - $sql .= " FROM " . MAIN_DB_PREFIX . "societe as s"; - $sql .= ", " . MAIN_DB_PREFIX . "commande_fournisseur as c"; - $sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $societe->id; - - $resqlorderlist = $db->query($sql); - if ($resqlorderlist) { - $num = $db->num_rows($resqlorderlist); - $i = 0; - - print '<br><form action="" method="POST" name="LinkedOrder">'; - print '<table class="noborder">'; - print '<tr class="liste_titre">'; - print '<td class="nowrap"></td>'; - print '<td align="center">' . $langs->trans("Ref") . '</td>'; - print '<td align="left">' . $langs->trans("RefSupplier") . '</td>'; - print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>'; - print '<td align="left">' . $langs->trans("Company") . '</td>'; - print '</tr>'; - while ($i < $num) { - $objp = $db->fetch_object($resqlorderlist); - if ($objp->socid == $societe->id) { - $var = ! $var; - print '<tr ' . $bc [$var] . '>'; - print '<td aling="left">'; - print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>'; - print '<td align="center">' . $objp->ref . '</td>'; - print '<td>' . $objp->ref_supplier . '</td>'; - print '<td>' . price($objp->total_ht) . '</td>'; - print '<td>' . $objp->name . '</td>'; - print '</td>'; - print '</tr>'; - } - - $i ++; - } - print '</table>'; - print '<br><div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '"> <input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>'; - print '</form>'; - $db->free($resqlorderlist); - } else { - dol_print_error($db); - } - - print '</div>'; - } - - // Show link to elements + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object,array('supplier_order')); if ($linktoelem) print '<br>'.$linktoelem; + print '</div><div class="fichehalfright"><div class="ficheaddleft">'; //print '</td><td valign="top" width="50%">'; //print '<br>'; @@ -2500,7 +2443,7 @@ else { $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/')); + $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/').'([^\-])+'); $file=$fileparams['fullname']; // Define output language @@ -2527,7 +2470,7 @@ else dol_print_error($db,$result); exit; } - $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/')); + $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/').'([^\-])+'); $file=$fileparams['fullname']; } diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 010e9b95ae6a5e02eb749ffcae51b49624be7a5c..26cfbacb6bfd35e3d01138a6b5b20cbb1e57a9f6 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -8,7 +8,8 @@ * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2015 juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Abbes Bahfir <bafbes@gmail.com> - + * Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es> + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or @@ -74,8 +75,12 @@ $search_company = GETPOST("search_company","alpha"); $search_amount_no_tax = GETPOST("search_amount_no_tax","alpha"); $search_amount_all_tax = GETPOST("search_amount_all_tax","alpha"); $search_status=GETPOST('search_status','alpha'); +$day = GETPOST("day","int"); $month = GETPOST("month","int"); $year = GETPOST("year","int"); +$day_lim = GETPOST('day_lim','int'); +$month_lim = GETPOST('month_lim','int'); +$year_lim = GETPOST('year_lim','int'); $filter = GETPOST("filtre"); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test must be present to be compatible with all browsers @@ -163,15 +168,30 @@ if ($search_ref_supplier) } if ($month > 0) { - if ($year > 0) + if ($year > 0 && empty($day)) $sql.= " AND fac.datef BETWEEN '".$db->idate(dol_get_first_day($year,$month,false))."' AND '".$db->idate(dol_get_last_day($year,$month,false))."'"; + else if ($year > 0 && ! empty($day)) + $sql.= " AND fac.datef BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month, $day, $year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month, $day, $year))."'"; else - $sql.= " AND date_format(fac.datef, '%m') = '$month'"; + $sql.= " AND date_format(fac.datef, '%m') = '".$month."'"; } else if ($year > 0) { $sql.= " AND fac.datef BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'"; } +if ($month_lim > 0) +{ + if ($year_lim > 0 && empty($day_lim)) + $sql.= " AND fac.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,$month_lim,false))."' AND '".$db->idate(dol_get_last_day($year_lim,$month_lim,false))."'"; + else if ($year_lim > 0 && ! empty($day_lim)) + $sql.= " AND fac.date_lim_reglement BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_lim, $day_lim, $year_lim))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month_lim, $day_lim, $year_lim))."'"; + else + $sql.= " AND date_format(fac.date_lim_reglement, '%m') = '".$month_lim."'"; +} +else if ($year_lim > 0) +{ + $sql.= " AND fac.datef BETWEEN '".$db->idate(dol_get_first_day($year_lim,1,false))."' AND '".$db->idate(dol_get_last_day($year_lim,12,false))."'"; +} if ($search_label) { $sql .= natural_search('fac.libelle', $search_label); @@ -260,11 +280,15 @@ if ($resql) print '</td>'; } print '<td class="liste_titre" colspan="1" align="center">'; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">'; print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">'; - $syear = $year; - $formother->select_year($syear?$syear:-1,'year',1, 20, 5); + $formother->select_year($year?$year:-1,'year',1, 20, 5); + print '</td>'; + print '<td class="liste_titre" colspan="1" align="center">'; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day_lim" value="'.$day_lim.'">'; + print '<input class="flat" type="text" size="1" maxlength="2" name="month_lim" value="'.$month_lim.'">'; + $formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5); print '</td>'; - print '<td class="liste_titre"> </td>'; print '<td class="liste_titre" align="left">'; print '<input class="flat" size="16" type="text" name="search_label" value="'.$search_label.'">'; print '</td>'; diff --git a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php index 6bbee5a33fc01c590c764478fb9056446b589956..81f259d67c6ae4e07084f5871bbadddf7252e9c5 100644 --- a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php @@ -40,6 +40,7 @@ print_titre($langs->trans("RelatedSupplierInvoices")); <td align="right"><?php echo $langs->trans("Status"); ?></td> </tr> <?php +$total=0; $var=true; foreach($linkedObjectBlock as $object) { @@ -68,4 +69,4 @@ foreach($linkedObjectBlock as $object) </tr> </table> -<!-- END PHP TEMPLATE --> \ No newline at end of file +<!-- END PHP TEMPLATE --> diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 90492fa16f11124ee55e802780136d84eb2ee3ca..f76d9843e026a8c448f3bbd8f5957f12b5319ecc 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -38,6 +38,10 @@ class Holiday extends CommonObject var $error; var $errors=array(); + /** + * @deprecated + * @see id + */ var $rowid; var $ref; diff --git a/htdocs/holiday/index.php b/htdocs/holiday/index.php index 86c4eca49eb27c5aa570502d9b3e13f289dff7c9..5b9e7d4c0babb29ebf40698053f46dcfbf8b164c 100644 --- a/htdocs/holiday/index.php +++ b/htdocs/holiday/index.php @@ -78,12 +78,15 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_statut=""; } + /* * Actions */ // None + + /* * View */ @@ -219,19 +222,19 @@ if ($id > 0) print '<table class="border" width="100%">'; // Ref - print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>'; + print '<tr><td width="25%">'.$langs->trans("Ref").'</td>'; print '<td colspan="2">'; print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin); print '</td>'; print '</tr>'; // LastName - print '<tr><td width="25%" valign="top">'.$langs->trans("LastName").'</td>'; + print '<tr><td width="25%">'.$langs->trans("LastName").'</td>'; print '<td colspan="2">'.$fuser->lastname.'</td>'; print "</tr>\n"; // FirstName - print '<tr><td width="25%" valign="top">'.$langs->trans("FirstName").'</td>'; + print '<tr><td width="25%">'.$langs->trans("FirstName").'</td>'; print '<td colspan="2">'.$fuser->firstname.'</td>'; print "</tr>\n"; @@ -250,14 +253,10 @@ $nbdeduced=$holiday->getConfCP('nbHolidayDeducted'); $nb_holiday = $nbaquis / $nbdeduced; print $langs->trans('SoldeCPUser',round($nb_holiday,2)).($nbdeduced != 1 ? ' ('.$nbaquis.' / '.$nbdeduced.')' : ''); -if ($id > 0) -{ - dol_fiche_end(); - print '</br>'; -} -else { - dol_fiche_end(); -} +dol_fiche_end(); + +if ($id > 0) print '</br>'; + print '<form method="get" action="'.$_SERVER["PHP_SELF"].'">'."\n"; print '<table class="noborder" width="100%;">'; @@ -387,7 +386,7 @@ if (! empty($holiday->holiday)) if($holiday_payes == '2') { print '<tr>'; - print '<td colspan="9" class="pair" style="text-align: center; padding: 5px;">'.$langs->trans('None').'</td>'; + print '<td colspan="9" '.$bc[false].'">'.$langs->trans('None').'</td>'; print '</tr>'; } diff --git a/htdocs/includes/printipp/BasicIPP.php b/htdocs/includes/printipp/BasicIPP.php index 1cc7851fab2e796db2d915625ac6ee0c3072c6c0..67f0bfaaa26ce69f5d01d5cd0c8c8ec747f460b8 100644 --- a/htdocs/includes/printipp/BasicIPP.php +++ b/htdocs/includes/printipp/BasicIPP.php @@ -42,20 +42,20 @@ class ippException extends \Exception { protected $errno; - public function __construct($msg, $errno = null) + public function __construct($msg, $errno = null) { parent::__construct($msg); $this->errno = $errno; } - public function getErrorFormatted() + public function getErrorFormatted() { $return = sprintf("[ipp]: %s -- " . _(" file %s, line %s"), $this->getMessage() , $this->getFile() , $this->getLine()); return $return; } - public function getErrno() + public function getErrno() { return $this->errno; } @@ -74,7 +74,7 @@ class BasicIPP public $ssl = false; public $debug_level = 3; // max 3: almost silent public $alert_on_end_tag; // debugging purpose: echo "END tag OK" if (1 and reads while end tag) - public $with_exceptions = 0; // compatibility mode for old scripts + public $with_exceptions = 1; // compatibility mode for old scripts // DOL_LDR_CHANGE set this to 1 public $handle_http_exceptions = 1; // readables variables @@ -136,7 +136,7 @@ class BasicIPP protected $unix = false; // true -> use unix sockets instead of http protected $output; - public function __construct() + public function __construct() { $tz = getenv("date.timezone"); if (!$tz) @@ -154,32 +154,32 @@ class BasicIPP self::_initTags(); } - public function setPort($port = '631') + public function setPort($port = '631') { $this->port = $port; self::_putDebug("Port is " . $this->port, 2); } - public function setUnix($socket = '/var/run/cups/cups.sock') + public function setUnix($socket = '/var/run/cups/cups.sock') { $this->host = $socket; $this->unix = true; self::_putDebug("Host is " . $this->host, 2); } - public function setHost($host = 'localhost') + public function setHost($host = 'localhost') { $this->host = $host; $this->unix = false; self::_putDebug("Host is " . $this->host, 2); } - public function setTimeout($timeout) + public function setTimeout($timeout) { $this->timeout = $timeout; } - public function setPrinterURI($uri) + public function setPrinterURI($uri) { $length = strlen($uri); $length = chr($length); @@ -193,19 +193,19 @@ class BasicIPP $this->setup->uri = 1; } - public function setData($data) + public function setData($data) { $this->data = $data; self::_putDebug("Data set", 2); } - public function setRawText() + public function setRawText() { $this->setup->datatype = 'TEXT'; $this->meta->mime_media_type = ""; $this->setup->mime_media_type = 1; $this->datahead = chr(0x16); - if (is_readable($this->data)) + if (is_readable($this->data)) { //It's a filename. Open and stream. $data = fopen($this->data, "rb"); @@ -224,7 +224,7 @@ class BasicIPP self::_putDebug(_("Forcing data to be interpreted as RAW TEXT") , 2); } - public function unsetRawText() + public function unsetRawText() { $this->setup->datatype = 'BINARY'; $this->datahead = ''; @@ -232,24 +232,24 @@ class BasicIPP self::_putDebug(_("Unset forcing data to be interpreted as RAW TEXT") , 2); } - public function setBinary() + public function setBinary() { self::unsetRawText(); } - public function setFormFeed() + public function setFormFeed() { $this->datatail = "\r\n" . chr(0x0c); unset($this->setup->noFormFeed); } - public function unsetFormFeed() + public function unsetFormFeed() { $this->datatail = ''; $this->setup->noFormFeed = 1; } - public function setCharset($charset = 'utf-8') + public function setCharset($charset = 'utf-8') { $charset = strtolower($charset); $this->charset = $charset; @@ -262,7 +262,7 @@ class BasicIPP $this->setup->charset = 1; } - public function setLanguage($language = 'en_us') + public function setLanguage($language = 'en_us') { $language = strtolower($language); $this->meta->language = chr(0x48) // natural-language type | value-tag @@ -274,7 +274,7 @@ class BasicIPP $this->setup->language = 1; } - public function setDocumentFormat($mime_media_type = 'application/octet-stream') + public function setDocumentFormat($mime_media_type = 'application/octet-stream') { self::setBinary(); $length = chr(strlen($mime_media_type)); @@ -287,12 +287,12 @@ class BasicIPP } // setDocumentFormat alias for backward compatibility - public function setMimeMediaType($mime_media_type = "application/octet-stream") + public function setMimeMediaType($mime_media_type = "application/octet-stream") { self::setDocumentFormat($mime_media_type); } - public function setCopies($nbrcopies = 1) + public function setCopies($nbrcopies = 1) { $this->meta->copies = ""; @@ -311,7 +311,7 @@ class BasicIPP $this->setup->copies = 1; } - public function setDocumentName($document_name = "") + public function setDocumentName($document_name = "") { $this->meta->document_name = ""; if (!$document_name) { @@ -329,10 +329,10 @@ class BasicIPP } - public function setJobName($jobname = '', $absolute = false) + public function setJobName($jobname = '', $absolute = false) { $this->meta->jobname = ''; - if ($jobname == '') + if ($jobname == '') { $this->meta->jobname = ''; return true; @@ -356,7 +356,7 @@ class BasicIPP $this->setup->jobname = 1; } - public function setUserName($username = 'PHP-SERVER') + public function setUserName($username = 'PHP-SERVER') { $this->requesting_user = $username; $this->meta->username = ''; @@ -368,7 +368,7 @@ class BasicIPP } /* $value_length = 0x00; - for ($i = 0; $i < strlen($username); $i++) + for ($i = 0; $i < strlen($username); $i++) { $value_length+= 0x01; } @@ -377,19 +377,19 @@ class BasicIPP */ $this->meta->username = chr(0x42) // keyword type || value-tag . chr(0x00) . chr(0x14) // name-length - . "requesting-user-name" + . "requesting-user-name" . self::_giveMeStringLength($username) // value-length . $username; self::_putDebug(sprintf(_("Username: %s") , $username) , 2); $this->setup->username = 1; } - public function setAuthentification($username, $password) + public function setAuthentification($username, $password) { self::setAuthentication($username, $password); } - public function setAuthentication($username, $password) + public function setAuthentication($username, $password) { $this->password = $password; $this->username = $username; @@ -397,7 +397,7 @@ class BasicIPP $this->setup->password = 1; } - public function setSides($sides = 2) + public function setSides($sides = 2) { $this->meta->sides = ''; if (!$sides) @@ -405,7 +405,7 @@ class BasicIPP return true; } - switch ($sides) + switch ($sides) { case 1: $sides = "one-sided"; @@ -428,7 +428,7 @@ class BasicIPP self::_putDebug(sprintf(_("Sides value set to %s") , $sides) , 2); } - public function setFidelity() + public function setFidelity() { // whether the server can't replace any attributes // (eg, 2 sided print is not possible, @@ -441,7 +441,7 @@ class BasicIPP self::_putDebug(_("Fidelity attribute is set (paranoid mode)") , 3); } - public function unsetFidelity() + public function unsetFidelity() { // whether the server can replace any attributes // (eg, 2 sided print is not possible, @@ -460,17 +460,17 @@ class BasicIPP if (!$message) { return true; } - $this->meta->message = + $this->meta->message = chr(0x41) // attribute type = textWithoutLanguage - . chr(0x00) - . chr(0x07) - . "message" + . chr(0x00) + . chr(0x07) + . "message" . self::_giveMeStringLength(substr($message, 0, 127)) . substr($message, 0, 127); self::_putDebug(sprintf(_('Setting message to "%s"') , $message) , 2); } - public function setPageRanges($page_ranges) + public function setPageRanges($page_ranges) { // $pages_ranges = string: "1:5 10:25 40:52 ..." // to unset, specify an empty string. @@ -482,37 +482,37 @@ class BasicIPP $first = true; #$page_ranges = split(' ', $page_ranges); $page_ranges = preg_split('# #', $page_ranges); - foreach($page_ranges as $page_range) + foreach($page_ranges as $page_range) { $value = self::_rangeOfIntegerBuild($page_range); if ($first) { - $this->meta->page_ranges .= - $this->tags_types['rangeOfInteger']['tag'] - . self::_giveMeStringLength('page-ranges') - . 'page-ranges' - . self::_giveMeStringLength($value) + $this->meta->page_ranges .= + $this->tags_types['rangeOfInteger']['tag'] + . self::_giveMeStringLength('page-ranges') + . 'page-ranges' + . self::_giveMeStringLength($value) . $value; } else { - $this->meta->page_ranges .= - $this->tags_types['rangeOfInteger']['tag'] - . self::_giveMeStringLength('') - . self::_giveMeStringLength($value) + $this->meta->page_ranges .= + $this->tags_types['rangeOfInteger']['tag'] + . self::_giveMeStringLength('') + . self::_giveMeStringLength($value) . $value; $first = false; } } } - public function setAttribute($attribute, $values) + public function setAttribute($attribute, $values) { $operation_attributes_tags = array_keys($this->operation_tags); $job_attributes_tags = array_keys($this->job_tags); $printer_attributes_tags = array_keys($this->printer_tags); self::unsetAttribute($attribute); - if (in_array($attribute, $operation_attributes_tags)) + if (in_array($attribute, $operation_attributes_tags)) { if (!is_array($values)) { @@ -526,13 +526,13 @@ class BasicIPP } } } - elseif (in_array($attribute, $job_attributes_tags)) + elseif (in_array($attribute, $job_attributes_tags)) { if (!is_array($values)) { self::_setJobAttribute($attribute, $values); } - else + else { foreach($values as $value) { @@ -540,7 +540,7 @@ class BasicIPP } } } - elseif (in_array($attribute, $printer_attributes_tags)) + elseif (in_array($attribute, $printer_attributes_tags)) { if (!is_array($values)) { @@ -569,14 +569,14 @@ class BasicIPP } } - public function unsetAttribute($attribute) + public function unsetAttribute($attribute) { $operation_attributes_tags = array_keys($this->operation_tags); $job_attributes_tags = array_keys($this->job_tags); $printer_attributes_tags = array_keys($this->printer_tags); - if (in_array($attribute, $operation_attributes_tags)) + if (in_array($attribute, $operation_attributes_tags)) { - unset( + unset( $this->operation_tags[$attribute]['value'], $this->operation_tags[$attribute]['systag'] ); @@ -595,7 +595,7 @@ class BasicIPP $this->printer_tags[$attribute]['systag'] ); } - else + else { trigger_error( sprintf(_('unsetAttribute: Tag "%s" is not a printer or a job attribute'), @@ -623,7 +623,7 @@ class BasicIPP * * @throws ippException */ - public function setLog($log_destination, $destination_type = 'file', $level = 2) + public function setLog($log_destination, $destination_type = 'file', $level = 2) { if (!file_exists($log_destination) && is_writable(dirname($log_destination))) { @@ -631,7 +631,7 @@ class BasicIPP chmod($log_destination, 0777); } - switch ($destination_type) + switch ($destination_type) { case 'file': case 3: @@ -654,7 +654,7 @@ class BasicIPP $this->log_level = $level; } - public function printDebug() + public function printDebug() { for ($i = 0; $i < $this->debug_count; $i++) { @@ -664,7 +664,7 @@ class BasicIPP $this->debug_count = 0; } - public function getDebug() + public function getDebug() { $debug = ''; for ($i = 0; $i < $this->debug_count; $i++) @@ -679,7 +679,7 @@ class BasicIPP // // OPERATIONS // - public function printJob() + public function printJob() { // this BASIC version of printJob do not parse server // output for job's attributes @@ -692,7 +692,7 @@ class BasicIPP if (!$this->_stringJob()) { return FALSE; } - if (is_readable($this->data)) + if (is_readable($this->data)) { self::_putDebug(_("Printing a FILE")); $this->output = $this->stringjob; @@ -718,7 +718,7 @@ class BasicIPP else { self::_putDebug(_("Printing DATA")); - $this->output = + $this->output = $this->stringjob . $this->datahead . $this->data @@ -732,7 +732,7 @@ class BasicIPP { self::_parseServerOutput(); } - if (isset($this->serveroutput) && isset($this->serveroutput->status)) + if (isset($this->serveroutput) && isset($this->serveroutput->status)) { $this->status = array_merge($this->status, array( $this->serveroutput->status @@ -740,25 +740,25 @@ class BasicIPP if ($this->serveroutput->status == "successfull-ok") { self::_errorLog( - sprintf("printing job %s: ", $this->last_job) + sprintf("printing job %s: ", $this->last_job) . $this->serveroutput->status, 3); } else { self::_errorLog( - sprintf("printing job: ", $this->last_job) + sprintf("printing job: ", $this->last_job) . $this->serveroutput->status, 1); } return $this->serveroutput->status; } - $this->status = + $this->status = array_merge($this->status, array("OPERATION FAILED")); - $this->jobs = + $this->jobs = array_merge($this->jobs, array("")); - $this->jobs_uri = + $this->jobs_uri = array_merge($this->jobs_uri, array("")); self::_errorLog("printing job : OPERATION FAILED", 1); @@ -768,7 +768,7 @@ class BasicIPP // // HTTP OUTPUT // - protected function _sendHttp($post_values, $uri) + protected function _sendHttp($post_values, $uri) { /* This function Copyright (C) 2005-2006 Thomas Harding, Manuel Lemos @@ -780,13 +780,15 @@ class BasicIPP $this->serveroutput->body = ""; $http = new http_class; if (!$this->unix) { + // DOL_LDR_CHANGE + if (empty($this->host)) $this->host='127.0.0.1'; $http->host = $this->host; } else { $http->host = "localhost"; } $http->with_exceptions = $this->with_exceptions; - if ($this->debug_http) + if ($this->debug_http) { $http->debug = 1; $http->html_debug = 0; @@ -824,20 +826,20 @@ class BasicIPP "File" => $post_values["File"] ); } - if (isset($post_values["FileType"]) + if (isset($post_values["FileType"]) && !strcmp($post_values["FileType"], "TEXT") ) { $arguments["BodyStream"][] = array("Data" => Chr(12)); } $arguments["RequestURI"] = $uri; - if ($this->with_exceptions && $this->handle_http_exceptions) + if ($this->with_exceptions && $this->handle_http_exceptions) { try { $success = $http->Open($arguments); } - catch(httpException $e) + catch(httpException $e) { throw new ippException( sprintf("http error: %s", $e->getMessage()), @@ -846,19 +848,19 @@ class BasicIPP } else { - $success = $http->Open($arguments); + $success = $http->Open($arguments); } - if ($success[0] == true) + if ($success[0] == true) { $success = $http->SendRequest($arguments); - if ($success[0] == true) + if ($success[0] == true) { self::_putDebug("H T T P R E Q U E S T :"); self::_putDebug("Request headers:"); - for (Reset($http->request_headers) , $header = 0; $header < count($http->request_headers); Next($http->request_headers) , $header++) + for (Reset($http->request_headers) , $header = 0; $header < count($http->request_headers); Next($http->request_headers) , $header++) { $header_name = Key($http->request_headers); - if (GetType($http->request_headers[$header_name]) == "array") + if (GetType($http->request_headers[$header_name]) == "array") { for ($header_value = 0; $header_value < count($http->request_headers[$header_name]); $header_value++) { @@ -872,7 +874,7 @@ class BasicIPP } self::_putDebug("Request body:"); self::_putDebug( - htmlspecialchars($http->request_body) + htmlspecialchars($http->request_body) . "*********** END REQUEST BODY *********" ); $i = 0; @@ -881,16 +883,16 @@ class BasicIPP $http->ReadReplyHeaders($headers); self::_putDebug("H T T P R E S P O N S E :"); self::_putDebug("Response headers:"); - for (Reset($headers) , $header = 0; $header < count($headers); Next($headers) , $header++) + for (Reset($headers) , $header = 0; $header < count($headers); Next($headers) , $header++) { $header_name = Key($headers); - if (GetType($headers[$header_name]) == "array") + if (GetType($headers[$header_name]) == "array") { - for ($header_value = 0; $header_value < count($headers[$header_name]); $header_value++) + for ($header_value = 0; $header_value < count($headers[$header_name]); $header_value++) { self::_putDebug($header_name . ": " . $headers[$header_name][$header_value]); - $this->serveroutput->headers[$i] = - $header_name . ": " + $this->serveroutput->headers[$i] = + $header_name . ": " . $headers[$header_name][$header_value]; $i++; } @@ -898,16 +900,16 @@ class BasicIPP else { self::_putDebug($header_name . ": " . $headers[$header_name]); - $this->serveroutput->headers[$i] = - $header_name - . ": " + $this->serveroutput->headers[$i] = + $header_name + . ": " . $headers[$header_name]; $i++; } } self::_putDebug("\n\nResponse body:\n"); $this->serveroutput->body = ""; - for (;;) + for (;;) { $http->ReadReplyBody($body, 1024); if (strlen($body) == 0) { @@ -927,7 +929,7 @@ class BasicIPP // // INIT // - protected function _initTags() + protected function _initTags() { $this->tags_types = array( "unsupported" => array( @@ -1090,7 +1092,7 @@ class BasicIPP // // SETUP // - protected function _setOperationId() + protected function _setOperationId() { $prepend = ''; $this->operation_id+= 1; @@ -1098,7 +1100,7 @@ class BasicIPP self::_putDebug("operation id is: " . $this->operation_id, 2); } - protected function _setJobId() + protected function _setJobId() { $this->meta->jobid+= 1; $prepend = ''; @@ -1109,7 +1111,7 @@ class BasicIPP return $prepend . $this->meta->jobid; } - protected function _setJobUri($job_uri) + protected function _setJobUri($job_uri) { $this->meta->job_uri = chr(0x45) // type uri . chr(0x00) . chr(0x07) // name-length @@ -1122,7 +1124,7 @@ class BasicIPP // // RESPONSE PARSING // - protected function _parseServerOutput() + protected function _parseServerOutput() { $this->serveroutput->response = array(); if (!self::_parseHttpHeaders()) { @@ -1141,10 +1143,10 @@ class BasicIPP return true; } - protected function _parseHttpHeaders() + protected function _parseHttpHeaders() { $response = ""; - switch ($this->serveroutput->headers[0]) + switch ($this->serveroutput->headers[0]) { case "http/1.1 200 ok: ": $this->serveroutput->httpstatus = "HTTP/1.1 200 OK"; @@ -1201,12 +1203,12 @@ class BasicIPP return TRUE; } - protected function _parseIppVersion() + protected function _parseIppVersion() { $ippversion = (ord($this->serveroutput->body[$this->_parsing->offset]) * 256) + ord($this->serveroutput->body[$this->_parsing->offset + 1]); - switch ($ippversion) + switch ($ippversion) { case 0x0101: $this->serveroutput->ipp_version = "1.1"; @@ -1229,7 +1231,7 @@ class BasicIPP return; } - protected function _parseStatusCode() + protected function _parseStatusCode() { $status_code = (ord($this->serveroutput->body[$this->_parsing->offset]) * 256) @@ -1240,27 +1242,27 @@ class BasicIPP { return false; } - if ($status_code < 0x00FF) + if ($status_code < 0x00FF) { $this->serveroutput->status = "successfull"; } - elseif ($status_code < 0x01FF) + elseif ($status_code < 0x01FF) { $this->serveroutput->status = "informational"; } - elseif ($status_code < 0x02FF) + elseif ($status_code < 0x02FF) { $this->serveroutput->status = "redirection"; } - elseif ($status_code < 0x04FF) + elseif ($status_code < 0x04FF) { $this->serveroutput->status = "client-error"; } - elseif ($status_code < 0x05FF) + elseif ($status_code < 0x05FF) { $this->serveroutput->status = "server-error"; } - switch ($status_code) + switch ($status_code) { case 0x0000: $this->serveroutput->status = "successfull-ok"; @@ -1407,7 +1409,7 @@ class BasicIPP return; } - protected function _parseRequestID() + protected function _parseRequestID() { $this->serveroutput->request_id = self::_interpretInteger( @@ -1418,7 +1420,7 @@ class BasicIPP return; } - protected function _interpretInteger($value) + protected function _interpretInteger($value) { // they are _signed_ integers $value_parsed = 0; @@ -1426,8 +1428,8 @@ class BasicIPP { $value_parsed += ( - (1 << (($i - 1) * 8)) - * + (1 << (($i - 1) * 8)) + * ord($value[strlen($value) - $i]) ); } @@ -1438,14 +1440,14 @@ class BasicIPP return $value_parsed; } - protected function _parseResponse() + protected function _parseResponse() { } // // REQUEST BUILDING // - protected function _stringJob() + protected function _stringJob() { if (!isset($this->setup->charset)) { self::setCharset(); @@ -1453,7 +1455,7 @@ class BasicIPP if (!isset($this->setup->datatype)) { self::setBinary(); } - if (!isset($this->setup->uri)) + if (!isset($this->setup->uri)) { $this->getPrinters(); unset($this->jobs[count($this->jobs) - 1]); @@ -1463,7 +1465,7 @@ class BasicIPP { self::setPrinterURI($this->available_printers[0]); } - else + else { trigger_error( _("_stringJob: Printer URI is not set: die"), @@ -1523,7 +1525,7 @@ class BasicIPP . $this->meta->document_name . $this->meta->mime_media_type . $operationattributes; - if ($this->meta->copies || $this->meta->sides || $this->meta->page_ranges || !empty($jobattributes)) + if ($this->meta->copies || $this->meta->sides || $this->meta->page_ranges || !empty($jobattributes)) { $this->stringjob .= chr(0x02) // start job-attributes | job-attributes-tag @@ -1540,31 +1542,31 @@ class BasicIPP return TRUE; } - protected function _buildValues(&$operationattributes, &$jobattributes, &$printerattributes) + protected function _buildValues(&$operationattributes, &$jobattributes, &$printerattributes) { $operationattributes = ''; - foreach($this->operation_tags as $key => $values) + foreach($this->operation_tags as $key => $values) { $item = 0; if (array_key_exists('value', $values)) { - foreach($values['value'] as $item_value) + foreach($values['value'] as $item_value) { if ($item == 0) { $operationattributes .= - $values['systag'] - . self::_giveMeStringLength($key) - . $key - . self::_giveMeStringLength($item_value) + $values['systag'] + . self::_giveMeStringLength($key) + . $key + . self::_giveMeStringLength($item_value) . $item_value; } else { - $operationattributes .= - $values['systag'] - . self::_giveMeStringLength('') - . self::_giveMeStringLength($item_value) + $operationattributes .= + $values['systag'] + . self::_giveMeStringLength('') + . self::_giveMeStringLength($item_value) . $item_value; } $item++; @@ -1572,17 +1574,17 @@ class BasicIPP } } $jobattributes = ''; - foreach($this->job_tags as $key => $values) + foreach($this->job_tags as $key => $values) { $item = 0; - if (array_key_exists('value', $values)) + if (array_key_exists('value', $values)) { - foreach($values['value'] as $item_value) + foreach($values['value'] as $item_value) { if ($item == 0) - { + { $jobattributes .= - $values['systag'] + $values['systag'] . self::_giveMeStringLength($key) . $key . self::_giveMeStringLength($item_value) @@ -1601,12 +1603,12 @@ class BasicIPP } } $printerattributes = ''; - foreach($this->printer_tags as $key => $values) + foreach($this->printer_tags as $key => $values) { $item = 0; if (array_key_exists('value', $values)) { - foreach($values['value'] as $item_value) + foreach($values['value'] as $item_value) { if ($item == 0) { @@ -1635,7 +1637,7 @@ class BasicIPP return true; } - protected function _giveMeStringLength($string) + protected function _giveMeStringLength($string) { $length = strlen($string); if ($length > ((0xFF << 8) + 0xFF) ) @@ -1660,12 +1662,12 @@ class BasicIPP return chr($int2) . chr($int1); } - protected function _enumBuild($tag, $value) + protected function _enumBuild($tag, $value) { - switch ($tag) + switch ($tag) { case "orientation-requested": - switch ($value) + switch ($value) { case 'portrait': $value = chr(3); @@ -1686,7 +1688,7 @@ class BasicIPP break; case "print-quality": - switch ($value) + switch ($value) { case 'draft': $value = chr(3); @@ -1703,7 +1705,7 @@ class BasicIPP break; case "finishing": - switch ($value) + switch ($value) { case 'none': $value = chr(3); @@ -1791,9 +1793,9 @@ class BasicIPP return $prepend . $value; } - protected function _integerBuild($value) + protected function _integerBuild($value) { - if ($value >= 2147483647 || $value < - 2147483648) + if ($value >= 2147483647 || $value < - 2147483648) { trigger_error( _("Values must be between -2147483648 and 2147483647: assuming '0'") , E_USER_WARNING); @@ -1820,7 +1822,7 @@ class BasicIPP return $value; } - protected function _rangeOfIntegerBuild($integers) + protected function _rangeOfIntegerBuild($integers) { #$integers = split(":", $integers); $integers = preg_split("#:#", $integers); @@ -1830,11 +1832,11 @@ class BasicIPP return $outvalue[0] . $outvalue[1]; } - protected function _setJobAttribute($attribute, $value) + protected function _setJobAttribute($attribute, $value) { //used by setAttribute $tag_type = $this->job_tags[$attribute]['tag']; - switch ($tag_type) + switch ($tag_type) { case 'integer': $this->job_tags[$attribute]['value'][] = self::_integerBuild($value); @@ -1889,11 +1891,11 @@ class BasicIPP $this->job_tags[$attribute]['systag'] = $this->tags_types[$tag_type]['tag']; } - protected function _setOperationAttribute($attribute, $value) + protected function _setOperationAttribute($attribute, $value) { //used by setAttribute $tag_type = $this->operation_tags[$attribute]['tag']; - switch ($tag_type) + switch ($tag_type) { case 'integer': $this->operation_tags[$attribute]['value'][] = self::_integerBuild($value); @@ -1914,11 +1916,11 @@ class BasicIPP $this->operation_tags[$attribute]['systag'] = $this->tags_types[$tag_type]['tag']; } - protected function _setPrinterAttribute($attribute, $value) + protected function _setPrinterAttribute($attribute, $value) { //used by setAttribute $tag_type = $this->printer_tags[$attribute]['tag']; - switch ($tag_type) + switch ($tag_type) { case 'integer': $this->printer_tags[$attribute]['value'][] = self::_integerBuild($value); @@ -1942,7 +1944,7 @@ class BasicIPP // // DEBUGGING // - protected function _putDebug($string, $level = 1) + protected function _putDebug($string, $level = 1) { if ($level === false) { return; @@ -1961,7 +1963,7 @@ class BasicIPP // // LOGGING // - protected function _errorLog($string_to_log, $level) + protected function _errorLog($string_to_log, $level) { if ($level > $this->log_level) { return; @@ -1969,7 +1971,7 @@ class BasicIPP $string = sprintf('%s : %s:%s user %s : %s', basename($_SERVER['PHP_SELF']) , $this->host, $this->port, $this->requesting_user, $string_to_log); - if ($this->log_type == 0) + if ($this->log_type == 0) { error_log($string); return; diff --git a/htdocs/index.php b/htdocs/index.php index 61f3f274ecf8bc70ae89784c0130349a04f94273..8c37688c0f8a75d4a1bc39b4ff8ed675f562d013 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -1,7 +1,7 @@ <?php /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * @@ -268,16 +268,16 @@ if (empty($user->societe_id)) else $board=$boardloaded[$classe]; $var=!$var; - if ($langfile[$key]) $langs->load($langfile[$key]); + if (!empty($langfile[$key])) $langs->load($langfile[$key]); $text=$langs->trans($titres[$key]); - print '<div class="boxstats">'; print '<a href="'.$links[$key].'" class="nobold nounderline">'; + print '<div class="boxstats">'; print img_object("",$icons[$key]).' '.$text.'<br>'; - print '</a>'; - print '<a href="'.$links[$key].'">'; + //print '</a>'; + //print '<a href="'.$links[$key].'">'; print $board->nb[$val]; - print '</a>'; print '</div>'; + print '</a>'; } } } diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql index e16643843233110d1ba92b0b82999a5842ad3956..6ef8096d8b42caaa8f3de51afee9403ab9d5a3a9 100644 --- a/htdocs/install/mysql/data/llx_10_c_regions.sql +++ b/htdocs/install/mysql/data/llx_10_c_regions.sql @@ -39,7 +39,8 @@ insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, 2,'97209',3,'Martinique'); insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, 3,'97302',3,'Guyane'); insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, 4,'97411',3,'Réunion'); -insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, 6,'',3,'Mayotte'); +insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, 6,'97601',3,'Mayotte'); + insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, 11,'75056',1,'Île-de-France'); insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, 21,'51108',0,'Champagne-Ardenne'); insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1, 22,'80021',0,'Picardie'); diff --git a/htdocs/install/mysql/data/llx_20_c_departements.sql b/htdocs/install/mysql/data/llx_20_c_departements.sql index 116f95720527e3522ac2033bac0deae7e44d4534..bc727447abebff8af382e40e12e829e6c81a3bb4 100644 --- a/htdocs/install/mysql/data/llx_20_c_departements.sql +++ b/htdocs/install/mysql/data/llx_20_c_departements.sql @@ -35,6 +35,12 @@ insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 0, '0', '0',0,'-','-'); -- Departements France (id country=1) +insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 1,'971','97105',3,'GUADELOUPE','Guadeloupe'); +insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 2,'972','97209',3,'MARTINIQUE','Martinique'); +insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 3,'973','97302',3,'GUYANE','Guyane'); +insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 4,'974','97411',3,'REUNION','Réunion'); +insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 6,'976','97601',3,'MAYOTTE','Mayotte'); + insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (82,'01','01053',5,'AIN','Ain'); insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (22,'02','02408',5,'AISNE','Aisne'); insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (83,'03','03190',5,'ALLIER','Allier'); @@ -131,11 +137,6 @@ insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,no insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (11,'93','93008',3,'SEINE-SAINT-DENIS','Seine-Saint-Denis'); insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (11,'94','94028',2,'VAL-DE-MARNE','Val-de-Marne'); insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (11,'95','95500',2,'VAL-D OISE','Val-d Oise'); -insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 1,'971','97105',3,'GUADELOUPE','Guadeloupe'); -insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 2,'972','97209',3,'MARTINIQUE','Martinique'); -insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 3,'973','97302',3,'GUYANE','Guyane'); -insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 4,'974','97411',3,'REUNION','Réunion'); -insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 6,'976','97601',3,'MAYOTTE','Mayotte'); -- Provinces Belgium (id country=2) diff --git a/htdocs/install/mysql/data/llx_c_forme_juridique.sql b/htdocs/install/mysql/data/llx_c_forme_juridique.sql index a0e1e05886085539080db866c134bcc32383752f..750ca7de9306219b10d6f8a8396017d3b12209d4 100644 --- a/htdocs/install/mysql/data/llx_c_forme_juridique.sql +++ b/htdocs/install/mysql/data/llx_c_forme_juridique.sql @@ -73,7 +73,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'31','Perso insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'32','Personne morale de droit étranger, non immatriculée au RCS'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'35','Régime auto-entrepreneur'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'41','Établissement public ou régie à caractère industriel ou commercial'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'41','Etablissement public ou régie à caractère industriel ou commercial'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'51','Société coopérative commerciale particulière'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'52','Société en nom collectif'); @@ -84,7 +84,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'56','Soci insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'57','Société par actions simplifiée (SAS)'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'58','Entreprise Unipersonnelle à Responsabilité Limitée (EURL)'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'59','Société par actions simplifiée unipersonnelle (SASU)'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'60', 'Entreprise Individuelle à Responsabilité Limitée (EIRL)'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'60','Entreprise Individuelle à Responsabilité Limitée (EIRL)'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'61','Caisse d''épargne et de prévoyance'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'62','Groupement d''intérêt économique (GIE)'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'63','Société coopérative agricole'); @@ -94,7 +94,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'69','Perso insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'71','Administration de l état'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'72','Collectivité territoriale'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'73','Établissement public administratif'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'73','Etablissement public administratif'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'74','Personne morale de droit public administratif'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'81','Organisme gérant régime de protection social à adhésion obligatoire'); diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index e73b716a654860099ac0b45117dd4c6487a8d7f5..dd0aba11632b67527e1397427907bebdc26b87f5 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -98,36 +98,36 @@ ALTER TABLE llx_accountingaccount add column fk_user_author integer DEFAULT NULL ALTER TABLE llx_accountingaccount add column fk_user_modif integer DEFAULT NULL AFTER fk_user_author; -- Qual -UPDATE llx_const SET name = 'ACCOUNTING_MODE' WHERE name = 'COMPTA_MODE'; -UPDATE llx_const SET name = 'ACCOUNTING_ACCOUNT_CUSTOMER' WHERE name = 'COMPTA_ACCOUNT_CUSTOMER'; -UPDATE llx_const SET name = 'ACCOUNTING_ACCOUNT_SUPPLIER' WHERE name = 'COMPTA_ACCOUNT_SUPPLIER'; -UPDATE llx_const SET name = 'ACCOUNTING_PRODUCT_BUY_ACCOUNT' WHERE name = 'COMPTA_PRODUCT_BUY_ACCOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_PRODUCT_SOLD_ACCOUNT' WHERE name = 'COMPTA_PRODUCT_SOLD_ACCOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_SERVICE_BUY_ACCOUNT' WHERE name = 'COMPTA_SERVICE_BUY_ACCOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_SERVICE_SOLD_ACCOUNT' WHERE name = 'COMPTA_SERVICE_SOLD_ACCOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_VAT_ACCOUNT' WHERE name = 'COMPTA_VAT_ACCOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_VAT_BUY_ACCOUNT' WHERE name = 'COMPTA_VAT_BUY_ACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_MODE')__ WHERE __DECRYPT('name')__ = 'COMPTA_MODE'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_ACCOUNT_CUSTOMER')__ WHERE __DECRYPT('name')__ = 'COMPTA_ACCOUNT_CUSTOMER'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_ACCOUNT_SUPPLIER')__ WHERE __DECRYPT('name')__ = 'COMPTA_ACCOUNT_SUPPLIER'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_PRODUCT_BUY_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_PRODUCT_BUY_ACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_PRODUCT_SOLD_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_PRODUCT_SOLD_ACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_SERVICE_BUY_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_SERVICE_BUY_ACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_SERVICE_SOLD_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_SERVICE_SOLD_ACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_VAT_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_VAT_ACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_VAT_BUY_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_VAT_BUY_ACCOUNT'; -- Compatibility with module Accounting Expert -UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_MODELCSV' WHERE name = 'ACCOUNTINGEX_MODELCSV'; -UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_SEPARATORCSV' WHERE name = 'ACCOUNTINGEX_SEPARATORCSV'; -UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_DATE' WHERE name = 'ACCOUNTINGEX_EXP_DATE'; -UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_PIECE' WHERE name = 'ACCOUNTINGEX_EXP_PIECE'; -UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_GLOBAL_ACCOUNT' WHERE name = 'ACCOUNTINGEX_EXP_GLOBAL_ACCOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_LABEL' WHERE name = 'ACCOUNTINGEX_EXP_LABEL'; -UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_AMOUNT' WHERE name = 'ACCOUNTINGEX_EXP_AMOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_DEVISE' WHERE name = 'ACCOUNTINGEX_EXP_DEVISE'; -UPDATE llx_const SET name = 'ACCOUNTING_ACCOUNT_SUSPENSE' WHERE name = 'ACCOUNTINGEX_ACCOUNT_SUSPENSE'; -UPDATE llx_const SET name = 'ACCOUNTING_SELL_JOURNAL' WHERE name = 'ACCOUNTINGEX_SELL_JOURNAL'; -UPDATE llx_const SET name = 'ACCOUNTING_PURCHASE_JOURNAL' WHERE name = 'ACCOUNTINGEX_PURCHASE_JOURNAL'; -UPDATE llx_const SET name = 'ACCOUNTING_SOCIAL_JOURNAL' WHERE name = 'ACCOUNTINGEX_SOCIAL_JOURNAL'; -UPDATE llx_const SET name = 'ACCOUNTING_MISCELLANEOUS_JOURNAL' WHERE name = 'ACCOUNTINGEX_MISCELLANEOUS_JOURNAL'; -UPDATE llx_const SET name = 'ACCOUNTING_ACCOUNT_TRANSFER_CASH' WHERE name = 'ACCOUNTINGEX_ACCOUNT_TRANSFER_CASH'; -UPDATE llx_const SET name = 'ACCOUNTING_LENGTH_GACCOUNT' WHERE name = 'ACCOUNTINGEX_LENGTH_GACCOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_LENGTH_AACCOUNT' WHERE name = 'ACCOUNTINGEX_LENGTH_AACCOUNT'; -UPDATE llx_const SET name = 'ACCOUNTING_LIMIT_LIST_VENTILATION' WHERE name = 'ACCOUNTINGEX_LIMIT_LIST_VENTILATION'; -UPDATE llx_const SET name = 'ACCOUNTING_LIST_SORT_VENTILATION_TODO' WHERE name = 'ACCOUNTINGEX_LIST_SORT_VENTILATION_TODO'; -UPDATE llx_const SET name = 'ACCOUNTING_LIST_SORT_VENTILATION_DONE' WHERE name = 'ACCOUNTINGEX_LIST_SORT_VENTILATION_DONE'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_MODELCSV')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_MODELCSV'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_SEPARATORCSV')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_SEPARATORCSV'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_DATE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_DATE'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_PIECE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_PIECE'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_GLOBAL_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_GLOBAL_ACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_LABEL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_LABEL'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_AMOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_AMOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_DEVISE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_DEVISE'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_ACCOUNT_SUSPENSE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_ACCOUNT_SUSPENSE'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_SELL_JOURNAL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_SELL_JOURNAL'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_PURCHASE_JOURNAL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_PURCHASE_JOURNAL'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_SOCIAL_JOURNAL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_SOCIAL_JOURNAL'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_MISCELLANEOUS_JOURNAL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_MISCELLANEOUS_JOURNAL'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_ACCOUNT_TRANSFER_CASH')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_ACCOUNT_TRANSFER_CASH'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LENGTH_GACCOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LENGTH_GACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LENGTH_AACCOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LENGTH_AACCOUNT'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LIMIT_LIST_VENTILATION')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LIMIT_LIST_VENTILATION'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LIST_SORT_VENTILATION_TODO')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LIST_SORT_VENTILATION_TODO'; +UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LIST_SORT_VENTILATION_DONE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LIST_SORT_VENTILATION_DONE'; -- Drop old table DROP TABLE llx_compta; @@ -208,10 +208,14 @@ UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type NOT IN (SELE ALTER TABLE llx_product_price ADD INDEX idx_product_price_fk_user_author (fk_user_author); UPDATE llx_product_price set fk_user_author = null where fk_user_author = 0; UPDATE llx_product_price set fk_user_author = null where fk_user_author not in (select rowid from llx_user); +-- drop foreign key for avoid a mysql crash +ALTER TABLE llx_product_price DROP FOREIGN KEY fk_product_price_user_author; ALTER TABLE llx_product_price ADD CONSTRAINT fk_product_price_user_author FOREIGN KEY (fk_user_author) REFERENCES llx_user (rowid); -- fk_product ALTER TABLE llx_product_price ADD INDEX idx_product_price_fk_product (fk_product); DELETE from llx_product_price where fk_product NOT IN (SELECT rowid from llx_product); +-- drop foreign key for avoid a mysql crash +ALTER TABLE llx_product_price DROP FOREIGN KEY fk_product_price_product; ALTER TABLE llx_product_price ADD CONSTRAINT fk_product_price_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid); ALTER TABLE llx_commande_fournisseur MODIFY COLUMN date_livraison datetime; @@ -1133,9 +1137,9 @@ ALTER TABLE llx_c_email_templates ADD UNIQUE INDEX uk_c_email_templates(entity, ALTER TABLE llx_c_email_templates ADD INDEX idx_type(type_template); -- Remove OSC module -DELETE FROM llx_const WHERE name = 'MAIN_MODULE_BOUTIQUE'; -DELETE FROM llx_const WHERE name = 'OSC_DB_HOST'; -DELETE FROM llx_menu WHERE module = 'boutique'; +DELETE FROM llx_const WHERE __DECRYPT('name')__ = 'MAIN_MODULE_BOUTIQUE'; +DELETE FROM llx_const WHERE __DECRYPT('name')__ = 'OSC_DB_HOST'; +DELETE FROM llx_menu WHERE __DECRYPT('module')__ = 'boutique'; -- Add option always editable on extrafield ALTER TABLE llx_extrafields ADD alwayseditable INTEGER DEFAULT 0 AFTER pos; @@ -1181,4 +1185,5 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,localtax1_typ ALTER TABLE llx_livraison MODIFY COLUMN date_delivery DATETIME NULL DEFAULT NULL; -INSERT INTO llx_const (name, value, type, note, visible, entity) SELECT 'PRODUCT_USE_OLD_PATH_FOR_PHOTO','1','chaine','Use old path for products images',0,1 FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL' AND value < '3.7.0'; +-- This constant is for compatibility if user come from 3.6 or lower. Must not be enabled on 3.7.0 or + +INSERT INTO llx_const (name, value, type, note, visible, entity) SELECT __ENCRYPT('PRODUCT_USE_OLD_PATH_FOR_PHOTO')__,__ENCRYPT('1')__,'chaine','Use old path for products images',1,0 FROM llx_const WHERE __DECRYPT('name')__ = 'MAIN_VERSION_LAST_INSTALL' AND __DECRYPT('value')__ < '3.7.0'; diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index c44fa88c49cf1c1990a983bd5a8a12f1fa5d3ea3..1b3633c9ae543dfcee9928d88fcc98e3c2fe6d5a 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -29,6 +29,11 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,localtax1_typ -- Taiwan VAT Rates insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 2131, 213, '5', '0', 'VAT 5%', 1); +ALTER TABLE llx_societe_rib ADD COLUMN rum varchar(32) after default_rib; +ALTER TABLE llx_societe_rib ADD COLUMN frstrecur varchar(16) default 'FRST' after rum; + +ALTER TABLE llx_cronjob ADD COLUMN entity integer DEFAULT 0; +ALTER TABLE llx_cronjob MODIFY COLUMN params text NULL; -- Loan create table llx_loan @@ -123,7 +128,10 @@ ALTER TABLE llx_product_fournisseur_price ADD COLUMN fk_supplier_price_expressio ALTER TABLE llx_product ADD COLUMN fk_price_expression integer DEFAULT NULL; ALTER TABLE llx_product_price ADD COLUMN fk_price_expression integer DEFAULT NULL; +ALTER TABLE llx_product ADD COLUMN fifo double(24,8) after pmp; +ALTER TABLE llx_product ADD COLUMN lifo double(24,8) after fifo; + --create table for user conf of printing driver CREATE TABLE llx_printing ( @@ -149,12 +157,12 @@ ALTER TABLE llx_facturedet ADD COLUMN situation_percent real; ALTER TABLE llx_facturedet ADD COLUMN fk_prev_id integer; -- Convert SMTP config to main entity, so new entities don't get the old values -UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SENDMODE"; -UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SMTP_PORT"; -UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SMTP_SERVER"; -UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SMTPS_ID"; -UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SMTPS_PW"; -UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_EMAIL_TLS"; +UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SENDMODE"; +UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SMTP_PORT"; +UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SMTP_SERVER"; +UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SMTPS_ID"; +UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SMTPS_PW"; +UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_EMAIL_TLS"; create table llx_bank_account_extrafields @@ -167,8 +175,10 @@ create table llx_bank_account_extrafields ALTER TABLE llx_stock_mouvement MODIFY COLUMN label varchar(255); +ALTER TABLE llx_stock_mouvement MODIFY COLUMN price double(24,8) DEFAULT 0; ALTER TABLE llx_stock_mouvement ADD COLUMN inventorycode varchar(128); + ALTER TABLE llx_product_association ADD COLUMN incdec integer DEFAULT 1; @@ -637,12 +647,12 @@ ALTER TABLE llx_actioncomm ADD COLUMN email_sender varchar(256); ALTER TABLE llx_actioncomm ADD COLUMN email_to varchar(256); ALTER TABLE llx_actioncomm ADD COLUMN errors_to varchar(256); --- Recuring events +-- Recurring events ALTER TABLE llx_actioncomm ADD COLUMN recurid varchar(128); ALTER TABLE llx_actioncomm ADD COLUMN recurrule varchar(128); ALTER TABLE llx_actioncomm ADD COLUMN recurdateend datetime; -ALTER TABLE llx_stcomm ADD COLUMN picto varchar(128); +ALTER TABLE llx_c_stcomm ADD COLUMN picto varchar(128); -- New trigger for Supplier invoice unvalidation INSERT INTO llx_c_action_trigger (code, label, description, elementtype, rang) VALUES ('BILL_SUPPLIER_UNVALIDATE','Supplier invoice unvalidated','Executed when a supplier invoice status is set back to draft','invoice_supplier',15); diff --git a/htdocs/install/mysql/tables/llx_actioncomm.sql b/htdocs/install/mysql/tables/llx_actioncomm.sql index a555d37c84dc08130567a3314fa8b2c9d885a227..62eaae22e6f133778c8af8b489705b16fb3e5583 100644 --- a/htdocs/install/mysql/tables/llx_actioncomm.sql +++ b/htdocs/install/mysql/tables/llx_actioncomm.sql @@ -40,7 +40,8 @@ create table llx_actioncomm fk_soc integer, fk_contact integer, fk_parent integer NOT NULL default 0, - fk_user_action integer, -- user id of owner of action (note that assigned users to event are store into another table) + fk_user_action integer, -- user id of owner of action (note that assigned users to event are store into another table) + fk_user_done integer, -- user id of user that has made action (deprecated) transparency integer, -- transparency (ical standard). used to say if user assigned to event are busy or not by event. This field may be deprecated if we want to store transparency for each assigned user, so into table llx_actioncomm_resources. diff --git a/htdocs/install/mysql/tables/llx_cronjob.sql b/htdocs/install/mysql/tables/llx_cronjob.sql index a7ed4858024ab9793b417596068e0efac713d817..5580b5ab83099bac71d5ab6587223f41fdfc1d44 100644 --- a/htdocs/install/mysql/tables/llx_cronjob.sql +++ b/htdocs/install/mysql/tables/llx_cronjob.sql @@ -29,7 +29,7 @@ CREATE TABLE llx_cronjob classesname varchar(255), objectname varchar(255), methodename varchar(255), - params text NOT NULL, + params text, md5params varchar(32), module_name varchar(255), priority integer DEFAULT 0, @@ -47,5 +47,6 @@ CREATE TABLE llx_cronjob fk_user_author integer DEFAULT NULL, fk_user_mod integer DEFAULT NULL, note text, - libname varchar(255) + libname varchar(255), + entity integer DEFAULT 0 )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql index 5abbdcdde97bda340c19e1c72c9160a77309e451..22006040327e9d2a5719ec576a282dda6488b571 100755 --- a/htdocs/install/mysql/tables/llx_product.sql +++ b/htdocs/install/mysql/tables/llx_product.sql @@ -71,7 +71,9 @@ create table llx_product volume float DEFAULT NULL, volume_units tinyint DEFAULT NULL, stock integer, -- Current physical stock (dernormalized field) - pmp double(24,8) DEFAULT 0 NOT NULL, + pmp double(24,8) DEFAULT 0 NOT NULL, -- To store valuation of stock calculated using average price method, for this product + fifo double(24,8), -- To store valuation of stock calculated using fifo method, for this product + lifo double(24,8), -- To store valuation of stock calculated using lifo method, for this product canvas varchar(32) DEFAULT NULL, finished tinyint DEFAULT NULL, hidden tinyint DEFAULT 0, -- Not used. Deprecated. diff --git a/htdocs/install/mysql/tables/llx_societe_rib.sql b/htdocs/install/mysql/tables/llx_societe_rib.sql index 0500c32c74443a4ae94de1f75150af4fe988e0ae..3331da246967a18ce84565c9488fb57a40f07386 100644 --- a/htdocs/install/mysql/tables/llx_societe_rib.sql +++ b/htdocs/install/mysql/tables/llx_societe_rib.sql @@ -37,7 +37,9 @@ create table llx_societe_rib proprio varchar(60), owner_address varchar(255), default_rib smallint NOT NULL DEFAULT 0, - import_key varchar(14) -- import key - + + rum varchar(32), -- RUM value to use for SEPA generation + frstrecur varchar(16) default 'FRST', -- 'FRST' or 'RECUR' + import_key varchar(14) -- import key )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_stock_mouvement.sql b/htdocs/install/mysql/tables/llx_stock_mouvement.sql index a367c6952c5a50e3e441572b669e82684247d515..3db9a4475cda39e7fac46be03d4423c9f2cff25b 100644 --- a/htdocs/install/mysql/tables/llx_stock_mouvement.sql +++ b/htdocs/install/mysql/tables/llx_stock_mouvement.sql @@ -1,6 +1,6 @@ -- ============================================================================ --- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> --- Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceofrge.net> +-- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> +-- Copyright (C) 2009-2015 Laurent Destailleur <eldy@users.sourceofrge.net> -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -21,18 +21,18 @@ create table llx_stock_mouvement ( rowid integer AUTO_INCREMENT PRIMARY KEY, tms timestamp, - datem datetime, - fk_product integer NOT NULL, - batch varchar(30) DEFAULT NULL, - eatby date DEFAULT NULL, - sellby date DEFAULT NULL, - fk_entrepot integer NOT NULL, - value real, - price float(13,4) DEFAULT 0, - type_mouvement smallint, - fk_user_author integer, - label varchar(255), -- comment on movement - inventorycode varchar(128), -- code used to group different movement line into one operation (may be an inventory, a mass picking) + datem datetime, -- Date and hour of movement + fk_product integer NOT NULL, -- Id of product + batch varchar(30) DEFAULT NULL, -- Lot or serial number + eatby date DEFAULT NULL, -- Eatby date + sellby date DEFAULT NULL, -- Sellby date + fk_entrepot integer NOT NULL, -- Id warehouse + value real, -- Qty of movement + price double(24,8) DEFAULT 0, -- Entry price (used to calculate PMP, FIFO or LIFO value) + type_mouvement smallint, -- Type/Direction of movement + fk_user_author integer, -- Id user making movement + label varchar(255), -- Comment on movement + inventorycode varchar(128), -- Code used to group different movement line into one operation (may be an inventory, a mass picking) fk_origin integer, origintype varchar(32) )ENGINE=innodb; diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 70ebd8550c5da4416a186924d47c72f57ceab4e9..6f14791f6b48a16215d65069a3bc778f07bfb26e 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -363,7 +363,13 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action'))) if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0) { migrate_event_assignement($db,$langs,$conf); - + } + + // Scripts for lat version + $afterversionarray=explode('.','3.7.9'); + $beforeversionarray=explode('.','3.8.9'); + if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0) + { // Reload modules (this must be always and only into last targeted version) $listofmodule=array( 'MAIN_MODULE_AGENDA', @@ -3680,7 +3686,7 @@ function migrate_delete_old_files($db,$langs,$conf) print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>'; } else - { + { //print $langs->trans("FileWasRemoved",$filetodelete); } } @@ -3818,8 +3824,9 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array()) if ($moduletoreload == 'MAIN_MODULE_SERVICE') // Permission has changed into 2.7 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Service"); + + $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modService.class.php'; if ($res) { - $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modService.class.php'; $mod=new modService($db); //$mod->remove('noboxes'); $mod->init('newboxdefonly'); @@ -3828,8 +3835,9 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array()) if ($moduletoreload == 'MAIN_MODULE_COMMANDE') // Permission has changed into 2.9 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Commande"); + + $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modCommande.class.php'; if ($res) { - $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modCommande.class.php'; $mod=new modCommande($db); //$mod->remove('noboxes'); $mod->init('newboxdefonly'); @@ -3838,8 +3846,8 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array()) if ($moduletoreload == 'MAIN_MODULE_FACTURE') // Permission has changed into 2.9 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Facture"); + $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modFacture.class.php'; if ($res) { - $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modFacture.class.php'; $mod=new modFacture($db); //$mod->remove('noboxes'); $mod->init('newboxdefonly'); @@ -3878,8 +3886,8 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array()) if ($moduletoreload == 'MAIN_MODULE_ECM') // Permission has changed into 3.0 and 3.1 { dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module ECM"); + $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modECM.class.php'; if ($res) { - $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modECM.class.php'; $mod=new modECM($db); $mod->remove('noboxes'); // We need to remove because a permission id has been removed $mod->init('newboxdefonly'); diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang index d0a43020f135b63b8d46bd51e28bd3d8fcbdbf35..f4954f84fc2e32ffd9b94b73262d56156dcaf712 100644 --- a/htdocs/langs/ar_SA/admin.lang +++ b/htdocs/langs/ar_SA/admin.lang @@ -1,175 +1,175 @@ # Dolibarr language file - Source file is en_US - admin -Foundation=أساس -Version=النسخة -VersionProgram=نسخة البرنامج +Foundation=جمعية +Version=إصدار +VersionProgram=إصدار البرنامج VersionLastInstall=تثبيت الإصدار الأولي -VersionLastUpgrade=آخر تحديث لهذه النسخة -VersionExperimental=تجريبية -VersionDevelopment=تطويرية -VersionUnknown=غير معروفة -VersionRecommanded=موصى بها -FileCheck=Files Integrity -FilesMissing=Missing Files -FilesUpdated=Updated Files -FileCheckDolibarr=Check Dolibarr Files Integrity -XmlNotFound=Xml File of Dolibarr Integrity Not Found -SessionId=رمز المرحلة -SessionSaveHandler=معالج لحفظ المراحل -SessionSavePath=مرحلة التخزين المحلية -PurgeSessions=إزالة المراحل -ConfirmPurgeSessions=Do you really want to purge all sessions ? This will disconnect every user (except yourself). -NoSessionListWithThisHandler=معالج حفظ المرحلة المهيأ في لغة البي إتش بي لا يسمح بسرد كل المراحل التي تعمل +VersionLastUpgrade=آخر تحديث لهذا الإصدار +VersionExperimental=إصدار تجريبي +VersionDevelopment=إصدارتطويري +VersionUnknown=إصدار غير معروف +VersionRecommanded=إصدار موصى به +FileCheck=تكامل الملفات +FilesMissing=الملفات المفقودة +FilesUpdated=الملفات المحدثة +FileCheckDolibarr=التحقق من تكامل الملفات +XmlNotFound= لم يتم العثور على الملف اكس أمال لدوليبار +SessionId=معرف الجلسة +SessionSaveHandler=مدير لحفظ الجلسات +SessionSavePath= موقع حفظ الجلسات +PurgeSessions=إزالة الجلسات +ConfirmPurgeSessions=هل تريد حقا تطهير جميع الجلسات؟ وهذا بفصل كل مستخدم (باستثناء نفسك). +NoSessionListWithThisHandler=مدير حفظ الجلسة المهيأ في لغة البي إتش بي لا يسمح بسرد كل الجلسات الجارية LockNewSessions=قم بإقفال الإتصالات الجديدة -ConfirmLockNewSessions=هل أنت متأكد من أنك تريد تقييد أي اتصال جديدة من دوليبار لنفسك. <b>%s</b> المستخدم الوحيد الذي سيتمكن من الإتصال بعد هذه العملية. -UnlockNewSessions=إزالة قفل الإتصال -YourSession=المرحلة الخاصة بك -Sessions=مرحلة المستخدمين +ConfirmLockNewSessions=هل أنت متأكد من أنك تريد تقييد أي اتصال جديد من دوليبار لشخصك. <b>%s</b> المستخدم الوحيد الذي سيتمكن من الإتصال بعد هذه العملية. +UnlockNewSessions=إزالة قفل الإتصالات +YourSession=الجلسة الخاصة بك +Sessions=جلسات المستخدمين WebUserGroup=خادم الويب المستخدم / المجموعة -NoSessionFound=يبدو أن البي إتش بي الخاص بك لا يسمح بسرد كل المراحل النشطة. الدليل (<b>%s</b>) المستخدم لحفظ المراحل قد يكون محمي (على سبيل المثال, محمي من قبل نظام الحماية الخاص ببرنامج التشغيل او لغة البي إتش بي.) -HTMLCharset=الترميزات الخاصة بصفحة الإتش تي إم إل +NoSessionFound=يبدو أن البي إتش بي الخاص بك لا يسمح بإعداد قائمة الجلسات النشطة.قد يكون الدليل (<b>%s</b>) المستخدم لحفظ الجلسات محمي (محمي من قبل نظام الحماية الخاص ببرنامج التشغيل او لغة البي إتش بي, على سبيل المثال.) +HTMLCharset=الترميزات الخاصة بصفحات الإتش تي إم إل DBStoringCharset=الترميز الخاص بقاعدة البيانات لتخزين المعلومات -DBSortingCharset=الترميز الخاص بقاعدة البيانات لتخزين المعلومات -WarningModuleNotActive=يجب أن يكون النموذج <b>%s</b> مفعل -WarningOnlyPermissionOfActivatedModules=فقط التصاريح المتعلقة بالنماذج المنشطة تظهر هنا. يمكنك تفعيل نماذج أخرى في الصفحة الرئيسية-> لإعداد ت-> صفحة النماذج -DolibarrSetup=تركيب أو تطوير دوليبار +DBSortingCharset=الترميز الخاص بقاعدة البيانات لفرز المعلومات +WarningModuleNotActive=يجب أن تكون الوحدة <b>%s</b> مفعلة لإستعمال هذه الوظيفة +WarningOnlyPermissionOfActivatedModules=حذاري،فقط التصاريح المتعلقة بالوحدات المنشطة تظهر هنا. يمكنك تفعيل وحدات أخرى في الصفحة الرئيسية-> الإعداد ت-> صفحة الوحدات +DolibarrSetup=تثبيت أو تطوير دوليبار DolibarrUser=مستخدم دوليبار InternalUser=مستخدم داخلي ExternalUser=مستخدم خارجي InternalUsers=مستخدمين داخليين ExternalUsers=مستخدمين خارجيين -GlobalSetup=الإعداد الكلية +GlobalSetup=الإعداد الكلي GUISetup=العرض SetupArea=منطقة الإعداد -FormToTestFileUploadForm=نموذج لاختبار تحميل ملف (وفقا لبرنامج الإعداد) -IfModuleEnabled=ملاحظة : نعم فعالة فقط في حال كان النموذج <b>%s</b> مفعل -RemoveLock=قم بحذف الملف <b>%s</b> إذا كان موجوداً لتمكن اداة التحديث +FormToTestFileUploadForm=وحدة لاختبار تحميل ملف (وفقا لبرنامج الإعداد) +IfModuleEnabled=ملاحظة : نعم فعال فقط في حال كانت الوحدة <b>%s</b> مفعلة +RemoveLock=قم بحذف الملف <b>%s</b> إذا كان موجوداً لتمكين اداة التحديث RestoreLock=قم بإستعادة الملف <b>%s</b> مع إذن القراءة فقط, وذلك لعرض أي استخدام خاص ب أداة التحديث SecuritySetup=الإعداد الأمني -ErrorModuleRequirePHPVersion=خطأ ، هذا النموذج يتطلب نسخة بي إتش بي %s أو أعلى -ErrorModuleRequireDolibarrVersion=خطأ ، هذا النموذج يتطلب نسخة دوليبار %s أو أعلى -ErrorDecimalLargerThanAreForbidden=خطأ, برنامج دوليبار <b>%s</b> الحالي لا يدعم دقة أعلى من الحالية -DictionarySetup=Dictionary setup -Dictionary=Dictionaries -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years -ErrorReservedTypeSystemSystemAuto=القيمة 'system' و 'systemauto' لهذا النوع محفوظ. يمكنك إستخدام 'user' كقيمة لإضافة السجل الخاص بك +ErrorModuleRequirePHPVersion=خطأ ، هذا الوحدة يتطلب نسخة بي إتش بي %s أو أعلى +ErrorModuleRequireDolibarrVersion=خطأ ، هذه الوحدة تتطلب إصدار دوليبار %s أو أعلى +ErrorDecimalLargerThanAreForbidden=خطأ, برنامج دوليبار الحالي لا يدعم دقة أعلى من <b>%s</b> +DictionarySetup=إعداد القواميس +Dictionary=القواميس +Chartofaccounts=الحسابات +Fiscalyear=السنة المالية +ErrorReservedTypeSystemSystemAuto=القيم 'system' و 'systemauto' لهذا النوع مخصص. يمكنك إستخدام 'user' كقيمة لإضافة التسجيلاتك الخاصة بك ErrorCodeCantContainZero=لا يمكن إستخدام القيمة 0 لهذا الكود -DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) -ConfirmAjax=إستخدم تأكيد أجاكس المنبثق -UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. -ActivityStateToSelectCompany= أضف فلتر كخيار لعرض/إخفاء الجهات الأخرى التي تقوم بنشاط حالياً أو توقفت عنه -UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). -DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties) -DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact) -SearchFilter=فلاتر خيارات البحث +DisableJavascript=تعطيل وظائف جافا سكريبت واياكس (مستحسن للشخص الاعمى أو لمتصفحات النصوص) +ConfirmAjax=إستخدام نوافذ تأكيد أجاكس +UseSearchToSelectCompanyTooltipp=إذا كان لديك عدد كبير من الأجزاء الثالثة (> 100000)، يمكنك زيادة السرعة من خلال وضع الثابت COMPANY_DONOTSEARCH_ANYWHERE إلى 1. في إعداد->أخرى. وبعد ذلك يقتصر البحث على بداية السلسلة. +UseSearchToSelectCompany=استخدام حقول التكملة لاختيار الأطراف الثالثة بدلا من استخدام list boxes +ActivityStateToSelectCompany= إضافة خيار للتصفية عند البحث لإظهار / إخفاء الأطراف الثالثة في الخدمة أو التي توقفت عن الخدمة + UseSearchToSelectContactTooltip=إذا كان لديك عدد كبير من الأجزاء الثالثة (> 100000)، يمكنك زيادة السرعة من خلال وضع الثابت COMPANY_DONOTSEARCH_ANYWHERE إلى 1. +UseSearchToSelectContact=استخدام حقول التكملة لاختيار الأطراف الثالثة بدلا من استخدام list boxes +DelaiedFullListToSelectCompany=الانتظار حتى الضغط على مفتاح قبل تحميل محتويات قائمة الاطراف الثالثة (يمكن هذا أن يزيد من الأداء إذا كان لديك عدد كبير من الاطراف الثالثة) +DelaiedFullListToSelectContact=الانتظار حتى الضغط على مفتاح قبل تحميل محتويات قائمة جهات الاتصال (يمكن هذا أن يزيد من الأداء إذا كان لديك عدد كبير من جهات الاتصال) +SearchFilter=خيارات عوامل تصفية البحث NumberOfKeyToSearch=عدد الحروف لبدء البحث: %s -ViewFullDateActions=أظهر التواريخ الكاملة للأحداث في الصفحة الثالثة +ViewFullDateActions=أظهر التواريخ الكاملة للأحداث في صفحة الاطراف الثالثة NotAvailableWhenAjaxDisabled=غير متوفر عندما يكون أجاكس معطلاً JavascriptDisabled=الجافا سكربت معطل UsePopupCalendar=استخدام الصفحات المنبثقة لإدخال التواريخ UsePreviewTabs=إستخدم زر المعاينة ShowPreview=آظهر المعاينة -PreviewNotAvailable=المعاينة غير متاحة -ThemeCurrentlyActive=الثيم النشط حالياً +PreviewNotAvailable=المعاينة غير جاهزة +ThemeCurrentlyActive=الثيم الناشط حالياً CurrentTimeZone=حسب توقيت خادم البي إتش بي -MySQLTimeZone=TimeZone MySql (database) -TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +MySQLTimeZone=حسب توقيت خادم MySql +TZHasNoEffect=يتم تخزين التواريخ و إعادتها من قبل خادم قاعدة البيانات كما لو كانت مخزنة كسلسلة. المنطقة الزمنية هي فعالة فقط عند استخدام وظيفة UNIX_TIMESTAMP (التي لا ينبغي أن تستخدم من قبل Dolibarr، لذلك لا يجب أن يكون أي تأثير للمنطقة الزمنية لقاعدة البيانات، حتى و لو تغيرت بعد أن تم إدخال البيانات ) Space=فراغ Table=جدول Fields=حقول Index=الفهرس Mask=القناع -NextValue=قيمة التالية +NextValue=القيمة التالية NextValueForInvoices=القيمة التالية (الفواتير) NextValueForCreditNotes=القيمة التالية (ملاحظات دائن) -NextValueForDeposit=Next value (deposit) -NextValueForReplacements=Next value (replacements) -MustBeLowerThanPHPLimit=ملاحظة : البي إتش بي الخاص بك يحد من حجم الملفات المرفوعة <b>%s</b> %s, مهما كان الحجم المدخل +NextValueForDeposit=القيمة التالية (المدفوعات) +NextValueForReplacements=القيمة التالية (فواتير الاستبدال) +MustBeLowerThanPHPLimit=ملاحظة : البي إتش بي الخاص بك يحدد من حجم الملفات المرسلة <b>%s</b> %s,مهما كانت قيمة هذه المعلمة NoMaxSizeByPHPLimit=ملاحظة : لم يتم وضح حد في إعدادات الـ PHP الخاص بك MaxSizeForUploadedFiles=الحجم الأقصى لتحميل الملفات (0 لمنع أي تحميل) -UseCaptchaCode=إستخدم الرسوم كرمز (كابتشا) في صفحة الدخول +UseCaptchaCode=إستخدم رسوم (كابتشا) في صفحة الدخول UseAvToScanUploadedFiles=استخدام مضاد الفيروسات لفحص الملفات المحملة AntiVirusCommand= المسار الكامل لبرنامج مكافحة الفيروسات -AntiVirusCommandExample= مثل ل ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe -AntiVirusParam= المزيد من الصلاحيات بإستخدام command line -AntiVirusParamExample= مثال على ClamWin:--database="C:\\Program Files (x86)\\ClamWin\\lib" -ComptaSetup=نموذج وحدة المحاسبة -UserSetup=إعداد مستخدم الإدارة -MenuSetup=إعداد قائمة الإدارة +AntiVirusCommandExample=كلاموين على سبيل المثال : "c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemple pour ClamAv : /usr/bin/clamscan" +AntiVirusParam= المزيد من الصلاحيات بإستخدام سطر الأوامر +AntiVirusParamExample=كلاموين على سبيل المثال :"--database="C:\\Program Files (x86)\\ClamWin\\lib" +ComptaSetup=إعداد وحدة المحاسبة +UserSetup=إعداد إدارة المستخدمين +MenuSetup=إعداد إدارة القوائم MenuLimits=الحدود و الدقة -MenuIdParent=رمز القائمة العليا -DetailMenuIdParent=رمز القائمة العليا (فراغ للقائمة العليا) -DetailPosition=رتب الرقم لتعريف موقع القائمة +MenuIdParent=معرف القائمة الوَالِدَةٌ +DetailMenuIdParent=معرف القائمة الوَالِدَةٌ (فراغ لقائمة عليا) +DetailPosition=رقم الترتيب لتعريف الموقع في القائمة PersonalizedMenusNotSupported=القوائم الشخصية غير مدعومة AllMenus=الكل -NotConfigured=النموذج غير مهيء -Setup=الإعداد -Activation=التفعيل +NotConfigured=وحدة غير مهيئة +Setup=إعداد +Activation=تفعيل Active=نشطة -SetupShort=الإعداد -OtherOptions=الخيارات الأخرى -OtherSetup=الإعدادات الأخرى +SetupShort=إعداد +OtherOptions=خيارات الأخرى +OtherSetup=إعدادات الأخرى CurrentValueSeparatorDecimal=الفاصلة العشرية CurrentValueSeparatorThousand=ألفاصلة الألفية -Destination=Destination -IdModule=Module ID -IdPermissions=Permissions ID -Modules=النموذج -ModulesCommon=النماذج الرئيسية -ModulesOther=نماذج أخرى -ModulesInterfaces=واجهة النماذج -ModulesSpecial=نماذج محددة للغاية -ParameterInDolibarr=الوحدة %s -LanguageParameter=وحدة اللغة %s -LanguageBrowserParameter=الوحدة %s -LocalisationDolibarrParameters=الوحدات المحلية -ClientTZ=Client Time Zone (user) -ClientHour=Client time (user) -OSTZ=Server OS Time Zone -PHPTZ=المنطقة الزمنية خادم PHP -PHPServerOffsetWithGreenwich=عرض وزنية جرينتش لخادم لغة الـ PHP (ثانية) -ClientOffsetWithGreenwich=عرض وزنية الجرينتش للعميل / المتصفح (ثانية) +Destination=المقصد +IdModule=معرف الوحدة +IdPermissions=معرف التصريح +Modules=الوحدات +ModulesCommon=الوحدات الرئيسية +ModulesOther=وحدات أخرى +ModulesInterfaces=واجهة الوحدات +ModulesSpecial=وحدات محددة الغاية +ParameterInDolibarr=المتغيرة %s +LanguageParameter=متغيرة اللغة %s +LanguageBrowserParameter=المتغيرة %s +LocalisationDolibarrParameters=متغيرات تحديد الموقع +ClientTZ=توقيت الزبون (المستخدم) +ClientHour=ساعة الزبون (المستخدم) +OSTZ=توقيت نظام التشغيل +PHPTZ=المنطقة الزمنية لخادم PHP +PHPServerOffsetWithGreenwich=فارق الزمن بين خط جرينتش و خادم الـ PHP (ثانية) +ClientOffsetWithGreenwich=فارق الزمن بين خط الجرينتش و العميل / المتصفح (ثانية) DaylingSavingTime=التوقيت الصيفي -CurrentHour=PHP خادم ساعة -CompanyTZ=المنطقة الزمنية لشركة من الشركات الرئيسية) -CompanyHour=ساعة وشركة من الشركات الرئيسية) -CurrentSessionTimeOut=إنتها مدة التصفح الحالية -YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a file .htacces with a line like this "SetEnv TZ Europe/Paris" +CurrentHour=ساعة خادم الـ PHP +CompanyTZ=المنطقة الزمنية للشركة الرئيسية +CompanyHour=ساعةالشركة الرئيسية +CurrentSessionTimeOut=مهلة مدة الجلسة الحالية +YouCanEditPHPTZ=لضبط منطقة زمنية أخرى لل PHP (غير ضروري)، يمكنك محاولة إضافة ملف .htaccess مع خط مثل "SetEnv TZ Europe/Paris" OSEnv=بيئة نظام التشغيل -Box=مربع -Boxes=مربعات -MaxNbOfLinesForBoxes=الحد الأقصى لعدد الخطوط في المربعات -PositionByDefault=الطلبية الإفتراضية -Position=Position -MenusDesc=يمكن لرؤساء القوائم تعريف المحتوى لعمودين من القوائم (عمود افقي وعمود عمودي). -MenusEditorDesc=محرر القوائم يسمح لك بتعريف مدخلات شخصية في القوائم. استخدامها بعناية لتجنب التأثير على برنامج دوليبار وجعله غير مستقر بالإضافة إلى جعل روابط القوائم غير متاحة. <br> بعض النماذج تظيف خانات في القوائم (في القائمة <b>الكل</b> في معظم الحالات). إذا أزلت بعض هذه القيود عن طريق الخطأ ، يمكنك ان تستعيدها وتعطيل وتمكين النموذج. +Box=صندوق +Boxes=صناديق +MaxNbOfLinesForBoxes=الحد الأقصى لعدد الخطوط في الصناديق +PositionByDefault=الموقع الإفتراضي +Position=الموقع +MenusDesc=مديري القوائم يحددون محتويات اثنين من أشرطة القوائم ( الشريط الأفقي و العمودي). فمن الممكن تعيين مدير مختلف اعتمادا على إذا ما كان المستخدم داخلي أو خارجي. +MenusEditorDesc=محرري القوائم يسمحون لك بتعريف مدخلات شخصية في القوائم. يجب استخدامها بعناية لتجنب التأثير على برنامج دوليبار وجعله غير مستقر بالإضافة إلى جعل روابط القوائم غير متاحة. <br> بعض الوحدات تظيف خانات في القوائم (في القائمة <b>الكل</b> في معظم الحالات). إذا أزلت بعض هذه القيود عن طريق الخطأ ، يمكنك ان تستعيدها بتعطيل وتمكين الوحدة. MenuForUsers=قائمة للمستخدمين -LangFile=ملف لانج -System=النظام -SystemInfo=نظام المعلومات +LangFile=ملف .lang +System=نظام +SystemInfo=معلومات النظام SystemTools=أدوات النظام SystemToolsArea=منظقة أدوات نظام -SystemToolsAreaDesc=هذه المنقة توفر مميزات إدارية. استخدام القائمة لاختيار الخصائص التي تبحث عنها. -Purge=أحذف -PurgeAreaDesc=تسمح لك هذه الصفحة بحذف كل الملفات التي بنيت أو تم تخزينها بواسطة دوليبار (الملفات المؤقتة ، أو كافة الملفات في المجلد <b>%s</b>) استخدام هذه الميزة ليست ضرورية. هذه الخدمة مقدمة للمستخدمين الذين يستخدمون برنامج دوليبار على خادم لا يوف لهم صلاحيات حذف الملفات التي أنشئت من قبل خادم الويب. -PurgeDeleteLogFile=قم بحذف ملفات السجلات <b>%s</b> المعرفة لنموذج النظام (لا يوجد خطر على المعلومات) -PurgeDeleteTemporaryFiles=قم بحذف جميع الملفات المؤقتة (لا يوجد خطر على البيانات) -PurgeDeleteAllFilesInDocumentsDir=حذف كل الملفات في المجلد <b>%s</b> الملفات المؤقتة ، بل أيضا ملفات استرجاع قاعدة البيانات, الملفات الملحقة بعناصر (أطراف ثالثة أو خارجية ، فواتير...) وتم تحمليها في نموذج إي سي إم, سيتم حذفها +SystemToolsAreaDesc=هذه المنظقة توفر مميزات إدارية. استخدام القائمة لاختيار الخصائص التي تبحث عنها. +Purge=حذف +PurgeAreaDesc=تسمح لك هذه الصفحة بحذف كل الملفات التي بنيت أو تم تخزينها بواسطة دوليبار (ملفات المؤقتة ،أو كافة الملفات في المجلد <b>%s</b>) استخدام هذه الميزة ليست ضرورية. هذه الخدمة مقدمة للمستخدمين الذين يستخدمون برنامج دوليبار على خادم لا يوفر لهم صلاحيات حذف الملفات التي أنشئت من قبل خادم الويب. +PurgeDeleteLogFile=حأذف الجريدة <b>%s</b> المعرفة لوحدة 'تسجيلات وآثار' (لا يوجد خطر على المعلومات) +PurgeDeleteTemporaryFiles=أحذف جميع الملفات المؤقتة (لا يوجد خطر على البيانات) +PurgeDeleteAllFilesInDocumentsDir=أحذف كل الملفات في المجلد <b>%s</b>. الملفات المؤقتة ، و أيضا ملفات استرجاع قاعدة البيانات, الملفات الملحقة بعناصر (الأطراف ثالالثة أو الخارجية ، الفواتير...) وتم تحمليها في وحدة إي ذي إم, سيتم حذفها PurgeRunNow=إحذف الآن -PurgeNothingToDelete=لم يتم حذف مجلد او ملف +PurgeNothingToDelete=لا دليل أو ملف للحذف. PurgeNDirectoriesDeleted=<b>%s</b> ملفات او مجلدات حذفت -PurgeAuditEvents=احذف جميع الأحداث المتعلقة بالأمان +PurgeAuditEvents=احذف جميع الأحداث المتعلقة بالأمن ConfirmPurgeAuditEvents=هل أنت متأكد من حذف جميع الأحداث الأمنية؟ جميع سجلات الأمن سيتم حذفها ولن يتم حذف أي بيانات أخرى. NewBackup=نسخة احتياطية جديدة GenerateBackup=قم بإنشاء نسخة احتياطية Backup=نسخة احتياطية Restore=استعادة -RunCommandSummary=تم إطلاق عملية النسخة الإحتياطية بالأمر التالي +RunCommandSummary=تتم إطلاق عملية النسخة الإحتياطية بالأمر التالي RunCommandSummaryToLaunch=يمكن إطلاق عمل النسخة الإحتياطية بالأمر التالي WebServerMustHavePermissionForCommand=يجب أن يحتوي خادم الويب على صلاحيات لتشغيل مثل هذا الأمر -BackupResult=نتيجة للنسخة الإحتياطية +BackupResult=نتيجة النسخة الإحتياطية BackupFileSuccessfullyCreated=تم إنشاء ملف النسخة الاحتياطية بنجاح YouCanDownloadBackupFile=يمكن الآن تنزيل ملف النسخة الإحتياطية NoBackupFileAvailable=لا يوجد ملفات احتياطية. @@ -177,426 +177,427 @@ ExportMethod=طريقة التصدير ImportMethod=طريقة الاستيراد ToBuildBackupFileClickHere=لعمل نسخة إحتياطية, اضغط <a href="%s">هنا</a>. ImportMySqlDesc=لاستيراد ملف النسخة الاحتياطية ، يجب استخدام mysql نافذة الأوامر للدوز او اللاينكس : -ImportPostgreSqlDesc=لاستيراد ملف النسخة الاحتياطية ، يجب استخدام pg_restore من نافذة الأوامر للدوز او اللاينكس : +ImportPostgreSqlDesc=لاستيراد ملف النسخة الاحتياطية ، يجب استخدام الأمر pg_restore ImportMySqlCommand=%s %s < mybackupfile.sql ImportPostgreSqlCommand=%s %s mybackupfile.sql FileNameToGenerate=اسم الملف المراد إنشائه Compression=ضغط الملف CommandsToDisableForeignKeysForImport=الأمر المستخدم لتعطيل المفتاح الخارجي في حالة الإستيراد CommandsToDisableForeignKeysForImportWarning=إجباري في حال اردت إسترجاع نسخة قاعدة البيانات الإحتياطية -ExportCompatibility=توفق الملف المصدر -MySqlExportParameters=تصدير قيم قاعدة البيانات MySql -PostgreSqlExportParameters= تصدير قيم قاعدة البيانات PostgreSQL +ExportCompatibility=توافق الملف المصدر +MySqlExportParameters=قيم تصدير قاعدة البيانات MySql +PostgreSqlExportParameters=قيم تصدير قاعدة البيانات PostgreSQL UseTransactionnalMode=إستخدم صيغة المعاملات -FullPathToMysqldumpCommand=المسار الكامل لأوامر mysqldump -FullPathToPostgreSQLdumpCommand=المسار الكامل لأوامر pg_dump +FullPathToMysqldumpCommand=المسار الكامل للامر mysqldump +FullPathToPostgreSQLdumpCommand=المسار الكامل للامر pg_dump ExportOptions=خيارات التصدير -AddDropDatabase=أمر إضافة, حذف قاعدة بيانات -AddDropTable=أمر إضافة حذف الجدول +AddDropDatabase= إضافةأوامر : DROP DATABASE +AddDropTable=إضافةأوامر : DROP TABLE ExportStructure=البنية Datas=البيانات NameColumn=اسم الأعمدة -ExtendedInsert=الإضافة الممددة -NoLockBeforeInsert=لا يوجد أوامر قفل حول الإضافة +ExtendedInsert=أوامر INSERT الممددة +NoLockBeforeInsert=لا أوامر قفل قبل الإضافة DelayedInsert=إضافة متأخرة EncodeBinariesInHexa=ترميز البيانات الأحادية لستة عشرية -IgnoreDuplicateRecords=تجاهل الأخطاء في السجلات المكررة (تجاهل الإدراج) +IgnoreDuplicateRecords=تجاهل الأخطاء في السجلات المكررة (INSERT IGNORE) Yes=نعم No=لا AutoDetectLang=اكتشاف تلقائي (لغة المتصفح) -FeatureDisabledInDemo=الميزة معلطة في العرض التجريبي +FeatureDisabledInDemo=الميزة معطلة في العرض التجريبي Rights=الصلاحيات -BoxesDesc=المربعات هي المناطق التي تُظهر بعض المعلومات في بعض الصفحات. يمكنك اختيار إظهار أو إخفائها بإختيار الصفحات المطلوبة و الضغط على 'تنشيط', او بالضغط على الزر الآخر لتعطيلها. -OnlyActiveElementsAreShown=فقط العناصر من <a href="%s">النماذج المفعلة </a> سوف تظهر. -ModulesDesc=Dolibarr تحديد الوحدات التي تم تمكين وظيفة في مجال البرمجيات. وتتطلب بعض وحدات الأذونات ، يجب ان تمنح للمستخدمين ، وبعد أن تمكن وحدة. -ModulesInterfaceDesc=فإن التفاعل بين وحدات Dolibarr يسمح لك بإضافة السمات الخارجية تعتمد على البرمجيات والنظم والخدمات. -ModulesSpecialDesc=وحدات خاصة أو محددة جدا ونادرا ما تستخدم وحدات. -ModulesJobDesc=توفير وحدات تجارية بسيطة ومحددة سلفا من Dolibarr الإعداد لأعمال معين. +BoxesDesc=الصناديق هي المناطق التي تُظهر بعض المعلومات في بعض الصفحات. يمكنك اختيار إظهارها أو إخفائها بإختيار الصفحات المطلوبة و الضغط على 'تنشيط', او بالضغط على الزر الآخر لتعطيلها. +OnlyActiveElementsAreShown=فقط العناصر من <a href="%s">الوحدات المفعلة </a> سوف تظهر. +ModulesDesc=الوحدات Dolibarr تحدد الميزات المتوفرة في التطبيق. وتتطلب بعض الوحدات حقوق يجب ان تمنح للمستخدمين بعد أن تمكن. +ModulesInterfaceDesc=وحدات التفاعل تسمح لك صلة DOLIBARR ببرمجيات ،نظم وخدمات خارجية +ModulesSpecialDesc=الوحدات الإضافية هي وحدات ذو استخدام محدد جدا و أقل من الوحدات البسيطة القياسية. +ModulesJobDesc=الوحدات الإضافية المهنية هي وحدات يسمحون إعداد مسبق لأعمال معينة. ModulesMarketPlaceDesc=يمكنك العثور على مزيد من وحدات للتحميل على مواقع الإنترنت الخارجية على شبكة الانترنت... -ModulesMarketPlaces=مزيد من وحدات... -DoliStoreDesc=DoliStore ، في السوق الرسمي لتخطيط موارد المؤسسات وحدات Dolibarr / خارجي إدارة علاقات العملاء -DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) -WebSiteDesc=مزودي موقع ويب يمكنك البحث للعثور على المزيد من وحدات... +ModulesMarketPlaces=المزيد من وحدات... +DoliStoreDesc=DoliStore ، السوق الرسمي للوحدات و الملحقات الإضافية ل Dolibarr +DoliPartnersDesc=قائمة بعض الشركات التي يمكن أن توفر / تطور وحدات أو وظائف مخصصة (ملاحظة: أي شركة للمصدر المفتوح تعرف لغة PHP يمكن أن توفرتطوير معين) +WebSiteDesc=موقع ويب لمزودي وحدات DOLIBARR يمكنك البحث فيهاللعثور على المزيد من الوحدات... URL=رابط -BoxesAvailable=صناديق متاحة -BoxesActivated=تفعيل صناديق -ActivateOn=على تفعيل -ActiveOn=على تفعيلها -SourceFile=ملف المصدر -AutomaticIfJavascriptDisabled=تلقائيا إذا تم تعطيل جافاسكريبت -AvailableOnlyIfJavascriptNotDisabled=متاحا إلا إذا كان جافا سكريبت غير المعوقين -AvailableOnlyIfJavascriptAndAjaxNotDisabled=متاحا إلا إذا كان جافا سكريبت غير المعوقين +BoxesAvailable=الصناديق المتاحة +BoxesActivated=الصناديق المفعلة +ActivateOn=للتفعيل على +ActiveOn=مفعلة على +SourceFile=الملف المصدر +AutomaticIfJavascriptDisabled=قدتم تعطيل جافاسكريبت التلقائي +AvailableOnlyIfJavascriptNotDisabled=متاحا إلا إذا كان جافاسكريبت معطل +AvailableOnlyIfJavascriptAndAjaxNotDisabled=متاحا إلا إذا كان جافاسكريبت و اجاكس معطلة Required=مطلوب -UsedOnlyWithTypeOption=Used by some agenda option only +UsedOnlyWithTypeOption=مستخدم من قبل بعض بنود جدول الأعمال فقط Security=الأمن -Passwords=كلمة السر -DoNotStoreClearPassword=لا تخزن كلمات السر في قاعدة بيانات واضحة في -MainDbPasswordFileConfEncrypted=كلمة السر في قاعدة بيانات مشفرة conf.php -InstrucToEncodePass=لديك كلمة المرور المشفرة في ملف <b>conf.php</b> ، استبدال خط <br> <b>dolibarr_main_db_pass $ ="..."</b> <br> من قبل <br> <b>"= $ crypted dolibarr_main_db_pass : ٪ ق"</b> +Passwords=كلمات السر +DoNotStoreClearPassword=لا تخزن كلمات السر واضحة في قاعدة البيانات (تفعيل مستحسن) +MainDbPasswordFileConfEncrypted=تشفير كلمة السر في قاعدة البيانات في conf.php (تفعيل مستحسن) +InstrucToEncodePass=للحصول على كلمة السر المشفرة في ملف التكوين conf.php، استبدل في هذا الملف الخط $dolibarr_main_db_pass="crypted:..." ب $dolibarr_main_db_pass="%s" InstrucToClearPass=لديك كلمة السر فك الشفرة (واضح) في <b>conf.php</b> الملف ، استبدال السطر <br> <b>dolibarr_main_db_pass $ = ":..." crypted</b> <br> من قبل <br> <b>dolibarr_main_db_pass $ = "٪ ق"</b> -ProtectAndEncryptPdfFiles=حماية الملفات ولدت الشعبي (لا recommandd ، تقتحم الجماهيري الشعبي وتوليد) -ProtectAndEncryptPdfFilesDesc=حماية وجود وثيقة من وثائق وتبقي الشعبي توفيرها لقراءة وطباعة أي متصفح الشعبي. ومع ذلك ، وتحريرها ونسخها وليس من الممكن بعد الآن. علما أن استخدام هذه الميزة تجعل بناء عالمي لا يعمل المتراكمة الشعبي (مثل الفواتير غير المدفوعة). +ProtectAndEncryptPdfFiles=حماية وثائق PDF المولدة (التنشيط غير مستحسن، يجعل توليد PDF الجماعي معطلة) +ProtectAndEncryptPdfFilesDesc=حماية وثائق PDF يترك الوثيقة حرة للقراءة والطباعة مع أي برنامج قارئ لل PDF. على العكس، التعديل و النسخ أصبح مستحيلا. ملاحظة أن، بالإضافة إلى ذلك، استخدام هذا الخيار يمنع توليد ال PDF التراكمي (مثل الفواتير غير المدفوعة). Feature=ميزة DolibarrLicense=الترخيص -DolibarrProjectLeader=المشروع -Developpers=مطوري / المساهمين -OtherDeveloppers=غيرها من مطوري / المساهمين +DolibarrProjectLeader=مدير المشروع +Developpers=المطورين / المساهمين +OtherDeveloppers=غيرها من المطورين / المساهمين OfficialWebSite=Dolibarr الدولي الموقع الرسمي -OfficialWebSiteFr=الفرنسية الموقع الرسمي -OfficialWiki=Dolibarr يكي -OfficialDemo=Dolibarr الانترنت التجريبي -OfficialMarketPlace=المسؤول عن وحدات السوق الخارجية / أدونس -OfficialWebHostingService=Referenced web hosting services (Cloud hosting) -ReferencedPreferredPartners=Preferred Partners -OtherResources=Autres ressources -ForDocumentationSeeWiki=For user's or developer's documentation (Doc, FAQs...),<br>take a look at the Dolibarr Wiki:<br><b><a href="%s" target=للمستخدم أو للتطوير وثائق (مستدات ،...)، أسئلة وأجوبة <br> إلقاء نظرة على ويكي Dolibarr : <br> <a href="%s" target="_blank"><b>ق ٪</b></a> -ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:<br><b><a href="%s" target=عن أي أسئلة أخرى / مساعدة ، يمكنك استخدام Dolibarr المنتدى : <br> <a href="%s" target="_blank"><b>ق ٪</b></a> -HelpCenterDesc1=هذا المجال يمكن أن تساعدك في الحصول على مساعدة لتقديم خدمات الدعم على Dolibarr. -HelpCenterDesc2=جزء من هذه الخدمة متوفرة باللغة <b>الانكليزية فقط.</b> -CurrentTopMenuHandler=مناول الحالية الأعلى -CurrentLeftMenuHandler=مناول الحالية القائمة اليمنى -CurrentMenuHandler=الحالية القائمة معالج -CurrentSmartphoneMenuHandler=معالج الحالية القائمة الذكي +OfficialWebSiteFr=الموقع الرسمي بالفرنسية +OfficialWiki=Dolibarr ويكي +OfficialDemo=عرض على الخط ل dolibarr +OfficialMarketPlace=السوق الرسمي للوحدات والملحقات المضافة +OfficialWebHostingService=خدمات الإقامة المشار إليها (السحاب) +ReferencedPreferredPartners=الشركاء المفضلين +OtherResources=ملتقيات أخرى +ForDocumentationSeeWiki= مما يخص وثائق المطور أو الأسئلة الشائعة استشارة الويكي دوليبار ,<br>consultez le wiki Dolibarr:<br><b><a href="%s" target="_blank">%s</a></b> +ForAnswersSeeForum=بالنسبة لكل المسائل الأخرى / مساعدة، يمكنك استخدام المنتدى دوليبار :<br><b><a href="%s" target="_blank">%s</a></b> +HelpCenterDesc1=هذا البرنامج يمكن أن يساعدك في الحصول على مساعدة لإيجاد خدمات دعم على دوليبار +HelpCenterDesc2=اختر الخدمة التي تناسب حاجتك من خلال النقر على الرابط المناسب (بعض هذه الخدمات متوفرة باللغة الإنجليزية فقط). +CurrentTopMenuHandler=المدير الحالي للقائمة الأعلى +CurrentLeftMenuHandler=المدير الحالي للقائمة اليمنى +CurrentMenuHandler=المدير الحالي للقائمة +CurrentSmartphoneMenuHandler=المدير الحالي للقائمة للهاتف الذكي MeasuringUnit=وحدة قياس Emails=البريد الإلكتروني EMailsSetup=إعداد رسائل البريد الإلكتروني -EMailsDesc=تسمح لك هذه الصفحة الخاصة بك فوق PHP معايير لإرسال رسائل البريد الإلكتروني. في معظم الحالات على يونيكس / نظام لينكس ، PHP الخاصة بك الإعداد صحيح وهذه الثوابت هي عديمة الفائدة. -MAIN_MAIL_SMTP_PORT=بروتوكول نقل البريد الإلكتروني / SMTPS ميناء (افتراضيا في php.ini : <b>٪)</b> -MAIN_MAIL_SMTP_SERVER=بروتوكول نقل البريد الإلكتروني / SMTPS المضيف (افتراضيا في php.ini : <b>٪)</b> -MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=بروتوكول نقل البريد الإلكتروني / SMTPS ميناء (غير محددة في مثل PHP على أنظمة يونكس) -MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=بروتوكول نقل البريد الإلكتروني / SMTPS المضيف (غير محددة في مثل PHP على أنظمة يونكس) -MAIN_MAIL_EMAIL_FROM=مرسل البريد الإلكتروني للرسائل البريد الإلكتروني تلقائيا (افتراضيا في php.ini : <b>٪)</b> -MAIN_MAIL_ERRORS_TO=أرسلت مرسل البريد الإلكتروني المستخدمة في رسائل البريد الإلكتروني عائدات خطأ -MAIN_MAIL_AUTOCOPY_TO= إرسال منهجية خفية الكربون نسخة من جميع رسائل البريد الإلكتروني المرسلة إلى -MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Send systematically a hidden carbon-copy of proposals sent by email to -MAIN_MAIL_AUTOCOPY_ORDER_TO= Send systematically a hidden carbon-copy of orders sent by email to -MAIN_MAIL_AUTOCOPY_INVOICE_TO= Send systematically a hidden carbon-copy of invoice sent by emails to -MAIN_DISABLE_ALL_MAILS=تعطيل جميع رسائل البريد الإلكتروني الإرسال (لأغراض الاختبار أو تجريبية) -MAIN_MAIL_SENDMODE=طريقة استخدام لإرسال رسائل البريد الإلكتروني -MAIN_MAIL_SMTPS_ID=إذا الهوية SMTP التوثيق اللازم -MAIN_MAIL_SMTPS_PW=كلمة السر اذا SMTP التوثيق اللازم -MAIN_MAIL_EMAIL_TLS= استخدام تلس (خدمة تصميم المواقع) تشفير -MAIN_DISABLE_ALL_SMS=تعطيل كافة sendings SMS (لأغراض الاختبار أو تجريبية) -MAIN_SMS_SENDMODE=طريقة استخدامه لإرسال الرسائل القصيرة SMS +EMailsDesc=تسمح لك هذه الصفحة الخاصة إستبدال معايير ال PHP لإرسال رسائل البريد الإلكتروني. في معظم الحالات على نظام يونيكس / لينكس ،لإعداد PHP لهذه الثوابت صحيح و هذه الصفحة عديمة الفائدة. +MAIN_MAIL_SMTP_PORT=منفذ إعداد PHP SMTP / SMTPS (افتراضيا في لغة PHP): <b>%s</b>) +MAIN_MAIL_SMTP_SERVER= اسم الضيف أو عنوان SMTP / SMTPS IP (افتراضيا في لغة PHP: <b>%s</b>) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=منفذ SMTP / SMTPS (غير معرف في PHP على الأنظمة شبه يونكس) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=سم الضيف أو عنوان SMTP / SMTPS IP (غير معرف في PHP على الأنظمة شبه يونكس) +MAIN_MAIL_EMAIL_FROM=مرسل البريد الإلكتروني لرسائل البريد الإلكتروني التلقائية (افتراضيا في php.ini : <b>٪)</b> +MAIN_MAIL_ERRORS_TO=عنوان بريد إلكتروني مستخدم في عائدات رسائل البريد الإلكتروني الخاطئة +MAIN_MAIL_AUTOCOPY_TO= إرسال منهجي لصورة مخبأة من رسائل البريد الإلكتروني المرسلة إلى +MAIN_MAIL_AUTOCOPY_PROPOSAL_TO=إرسال منهجي لصورة مخبأة من رسائل للفواتير الأولية المرسلة إلى +MAIN_MAIL_AUTOCOPY_ASKPRICESUPPLIER_TO=إرسال منهجي لصورة مخبأة من طلبات الأسعار المرسلة إلى +MAIN_MAIL_AUTOCOPY_ORDER_TO=إرسال منهجي لصورة مخبأة من الأوامر التجارية المرسلة إلى +MAIN_MAIL_AUTOCOPY_INVOICE_TO= إرسال منهجي لصورة مخبأة من رسائل للفواتير المرسلة إلى +MAIN_DISABLE_ALL_MAILS=تعطيل جميع رسائل البريد الإلكتروني الإرسال (لأغراض الاختبار أو التجريب) +MAIN_MAIL_SENDMODE=طريقة إرسال رسائل البريد الإلكتروني +MAIN_MAIL_SMTPS_ID= الهوية SMTP في حال يكون التوثيق SMTP لازم +MAIN_MAIL_SMTPS_PW=كلمة السر SMTP في حال يكون التوثيق SMTP لازم +MAIN_MAIL_EMAIL_TLS= استخدام تشفير TLS (خدمة تصميم المواقع) +MAIN_DISABLE_ALL_SMS=تعطيل كافة إرسالات SMS (لأغراض الاختبار أو التجريب) +MAIN_SMS_SENDMODE=طريقة إرسال الرسائل القصيرة SMS MAIN_MAIL_SMS_FROM=رقم الهاتف المرسل الافتراضي لإرسال الرسائل القصيرة -FeatureNotAvailableOnLinux=ميزة لا تتوفر على مثل أنظمة يونكس. sendmail برنامج الاختبار الخاص بك محليا. -SubmitTranslation=إذا كان ترجمة لهذه اللغة ليست كاملة أو تجد الأخطاء ، يمكنك تصحيح هذا عن طريق تحرير الملفات إلى الدليل <b>langs / ق ٪</b> ، وإرسال ملفات تعديل على www.dolibarr.org المنتدى. -ModuleSetup=إعداد وحدة -ModulesSetup=نمائط الإعداد +FeatureNotAvailableOnLinux=ميزة لا تتوفر على الأنظمة مثل يونكس. اختبر برنامج sendmail الخاص بك محليا. +SubmitTranslation=إذا كانت الترجمة لهذه اللغة ليست كاملة أو توجد الأخطاء ، يمكنك تصحيح ذلك عن طريق تحرير الملفات في الدليل <b>langs / s ٪</b> ، وإرسالها للتعديل على المنتدى www.dolibarr.org +ModuleSetup=إعداد الوحدة +ModulesSetup=إعداد الوحدات ModuleFamilyBase=نظام -ModuleFamilyCrm=Ressource العملاء إدارة (إدارة علاقات العملاء) +ModuleFamilyCrm=إدارة العلاقات مع الزبائن ModuleFamilyProducts=إدارة المنتجات ModuleFamilyHr=إدارة الموارد البشرية ModuleFamilyProjects=مشاريع / العمل التعاوني ModuleFamilyOther=أخرى -ModuleFamilyTechnic=Multi بين وحدات وأدوات -ModuleFamilyExperimental=نماذج تجريبية -ModuleFamilyFinancial=الوحدات المالية (المحاسبة / الخزانة) +ModuleFamilyTechnic=أدات بين عدة وحدات +ModuleFamilyExperimental=وحدات تجريبية +ModuleFamilyFinancial=وحدات المالية (المحاسبة / الخزانة) ModuleFamilyECM=إدارة المحتوى في المؤسسة -MenuHandlers=قائمة مناولي -MenuAdmin=قائمة تحرير -DoNotUseInProduction=Do not use in production +MenuHandlers=مديري القوائم +MenuAdmin=تحرير القائمة +DoNotUseInProduction=لا يستخدم في الإنتاج ThisIsProcessToFollow=هذا هو الإعداد لهذه العملية : -ThisIsAlternativeProcessToFollow=This is an alternative setup to process: -StepNb=الخطوة ق ٪ -FindPackageFromWebSite=العثور على الحزمة التي توفر ميزة تريد (على سبيل المثال على موقع الويب ق ٪). -DownloadPackageFromWebSite=Download package %s. -UnpackPackageInDolibarrRoot=Unpack package file into directory dedicated to external modules: <b>%s</b> -SetupIsReadyForUse=الانتهاء من تركيب وDolibarr على استعداد لاستخدام هذا العنصر الجديد. -NotExistsDirect=The alternative root directory is not defined.<br> -InfDirAlt=Since version 3 it is possible to define an alternative root directory.This allows you to store, same place, plug-ins and custom templates.<br>Just create a directory at the root of Dolibarr (eg: custom).<br> -InfDirExample=<br>Then declare it in the file conf.php<br> $dolibarr_main_url_root_alt='http://myserver/custom'<br>$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'<br>*These lines are commented with "#", to uncomment only remove the character. -YouCanSubmitFile=Select module: -CurrentVersion=Dolibarr النسخة الحالية -CallUpdatePage=الذهاب إلى صفحة التحديثات وdatas هيكل قاعدة البيانات : ٪ s. -LastStableVersion=آخر نسخة مستقرة -UpdateServerOffline=Update server offline -GenericMaskCodes=يمكنك إدخال أي قناع الترقيم. في هذا القناع ، وبعد ويمكن استخدام العلامات : <br> <b>(000000)</b> يطابق عدد الذي سيكون على كل يزداد ٪ s. كما تدخل العديد من أصفار على النحو المنشود طول المضادة. المضاد وسيتم الانتهاء من اصفار من اليسار من أجل الحصول على أكبر عدد اصفار كما القناع. <br> <b>000000 +000) (نفس</b> السابقة ولكن يقابل المقابلة لعدد للحق من علامة + يطبق اعتبارا من أول ٪ s. <br> <b>000000 @ (س)</b> نفس السابقة ولكن المضاد هو إعادة الصفر عندما يتم التوصل إلى الشهر خ خ ما بين 1 و 12). إذا كان هذا الخيار هو المستخدمة وس 2 أو أعلى ، ثم تسلسل (ذ ذ م م)) ((سنة أو ملم)) (مطلوب أيضا. <br> <b>(ب)</b> اليوم (01 الى 31). <br> <b>() ملم</b> في الشهر (01 الى 12). <br> <b>(كذا)</b> ، <b>(سنة))</b> أو <b>(ذ</b> السنة أكثر من 2 أو 4 أو 1 الأرقام. <br> -GenericMaskCodes2=<b>{cccc}</b> the client code on n characters<br><b>{cccc000}</b> the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter.<br><b>{tttt}</b> The code of thirdparty type on n characters (see dictionary-thirdparty types).<br> -GenericMaskCodes3=جميع الشخصيات الاخرى في قناع سوف تظل سليمة. <br> المساحات غير مسموح بها. <br> -GenericMaskCodes4a=<u>ومثال على 99th ق ٪ من طرف ثالث TheCompany عمله 2007-01-31 :</u> <br> -GenericMaskCodes4b=<u>ومثال على طرف ثالث على خلق 2007-03-01 :</u> <br> -GenericMaskCodes4c=<u>Example on product created on 2007-03-01:</u><br> -GenericMaskCodes5=<b>ABC{yy}{mm}-{000000}</b> will give <b>ABC0701-000099</b><br><b>{0000+100@1}-ZZZ/{dd}/XXX</b> will give <b>0199-ZZZ/31/XXX</b> -GenericNumRefModelDesc=العودة للتخصيص وفقا لعدد محدد القناع. -ServerAvailableOnIPOrPort=الخدمة متاحة في معالجة <b>٪ ق ق ٪</b> على الميناء -ServerNotAvailableOnIPOrPort=الخدمة غير متاحة في التصدي <b>٪ ق ق ٪</b> على الميناء -DoTestServerAvailability=اختبار خدمة التوصيل -DoTestSend=ارسال الاختبار -DoTestSendHTML=اختبار ارسال هتمل -ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. -ErrorCantUseRazInStartedYearIfNoYearMonthInMask=خطأ ، لا يمكن للمستخدم الخيار في حال تسلسل @ (ذ ذ م م)) ((سنة أو ملم)) (لا تخفي. -UMask=معلمة جديدة UMask صورة يونيكس / لينكس / بي إس دي نظام الملفات. -UMaskExplanation=تسمح لك هذه المعلمة لتحديد الاذونات التي حددها تقصير من الملفات التي أنشأتها Dolibarr على الخادم (خلال تحميلها على سبيل المثال). <br> يجب أن يكون ثمانية القيمة (على سبيل المثال ، 0666 وسائل القراءة والكتابة للجميع). <br> م شمال شرق paramètre سرت sous الامم المتحدة لتقييم الأداء ويندوز serveur. -SeeWikiForAllTeam=إلقاء نظرة على صفحة ويكي قائمة كاملة لجميع الجهات الفاعلة والمنظمة -UseACacheDelay= التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ) -DisableLinkToHelpCenter=الاختباء وصلة <b>"هل تحتاج إلى مساعدة أو دعم"</b> على صفحة تسجيل الدخول -DisableLinkToHelp=إخفاء ارتباط <b>"ق ٪ أخبار يساعد"</b> على القائمة اليمنى -AddCRIfTooLong=ليس هناك التفاف تلقائي ، حتى إذا خرج من خط صفحة على وثائق لفترة طويلة جدا ، يجب إضافة حرف إرجاع نفسك في ناحية النص. -ModuleDisabled=نميطة المعوقين -ModuleDisabledSoNoEvent=نميطة المعوقين بغية خلق حالة أبدا -ConfirmPurge=هل أنت متأكد من ذلك لتنفيذ تطهير؟ <br> وهذا من شأنه بالتأكيد حذف جميع بيانات ملفك بأي حال من الأحوال لترميمها (صورة إدارة المحتوى في المؤسسة ، والملفات المرفقة...). -MinLength=الحد الأدني لمدة +ThisIsAlternativeProcessToFollow=هذه هي العملية البديلة للإعداد: +StepNb=الخطوة رقم ٪s +FindPackageFromWebSite=العثور على الحزمة التي توفر الميزة تريد (على سبيل المثال على موقع الويب s٪). +DownloadPackageFromWebSite=تحميل الحزمة %s +UnpackPackageInDolibarrRoot=قم بفك الحزمة في الدليل المخصص للوحدات الخارجية +SetupIsReadyForUse=لقد إنتهى الاعداد. إن Dolibarr على استعداد لاستخدام هذا العنصر الجديد. +NotExistsDirect=لا يوجد أي دليل بديل. +InfDirAlt=منذ الإصدار 3 هو من الممكن تحديد دليل بديل يسمح لك بتخزين في نفس المكان وحدات ومواضيع مخصصة. بمجرد إنشاء دليل على جذر Dolibarr (مثل: custom) +InfDirExample=ثم أعلن في الملف conf.php::<br> $dolibarr_main_url_root_alt='http://monserveur/custom'<br>$dolibarr_main_document_root_alt='/repertoire/de/dolibarr/htdocs/custom'<br>.*لقد تم تعليق هذه الخطوط ب "#".لحذف هذا التعليق، عليكببحذف الحرف ببساطة. +YouCanSubmitFile=اختر الوحدة: +CurrentVersion= النسخة الحالية ل Dolibarr +CallUpdatePage= الذهاب إلى صفحة التحديثات و هيكل و قاعدة البيانات : %s. +LastStableVersion= آخر نسخة مستقرة +UpdateServerOffline=خادم التحديث غير متواجد حاليا +GenericMaskCodes=يمكنك إدخال أي قناع ترقيم. في هذا القناع،يمكن استخدام العلامات التالية :<br><b>{000000}</b> يوازي رقم يتزايد كل ٪s. وضع عدد الأصفار يوازي الطول المطلوب للعداد. سيتمم العداد بعدد من 0 على اليسار من أجل الحصول على العدد المطلوب في القناع.<br><b>{000000+000}</b> كما من قبل، ولكن بفارق مقابل للعدد على يمين ال + يتم تطبيقه من أول s٪ . <br><b> {000000@x}</b> كما في السابق، و لكن يعاد العداد الى صفر لتعيين الشهر س من العام (س بين 1 و 12، أو 0 لاستخدام شهر بداية العام المالي المحدد في التكوين الخاص بك، أو 99 للإعادة للصفركل شهر). إذا تم استخدام هذا الخيار وس هو 2 أو أكثر، كان التسلسل إلزامي. <br><b>{dd}</b> يوم (01-31). <br><b>{mm}</b> أشهر (01-12). <br><b>{yy}</b>, <b>{yyyy}</b>أو <b>{y}</b> سنة على 2 أو 4 أو 1 أرقام. +GenericMaskCodes2=رمز العميل على ن أحرف<br><b>{cccc000}</b> ويتبع رمز العميل على ن أحرف بعداد خاص بالعميل. هذا العداد خاص بالعميل هو أيضا يعاد ضبطه لصفر في نفس الوقت مع العداد العام. رمز نوع الطرف الثالث على ن أحرف (انظر معجم أنواع الأطراف الثالثة). +GenericMaskCodes3=جميع الأحرف الاخرى في القناع سوف تظل بدون تغيير. <br> الفراغات غير مسموح بها. <br> +GenericMaskCodes4a=<u>مثال على الطرف الثالث 99%s الشركة المنشئة في 2007-01-31 :</u><br> +GenericMaskCodes4b=<u>ومثال على طرف ثالث خلق في 2007-03-01 :</u> <br> +GenericMaskCodes4c=<u>ومثال على منتج خلق في 2007-03-01 :</u> <br> +GenericMaskCodes5=<b>ABC{yy}{mm}-{000000}</b>تعطي <b>ABC0703-000099</b><br><b>{0000+100@1}-XXX-{dd}-YYY</b> تعطي <b>0199-XXX-31-YYY</b> +GenericNumRefModelDesc=تعطي رقم يخصص وفقا لقناع يحدد. +ServerAvailableOnIPOrPort=الخادم شغال على العنوان %s على الميناء %s +ServerNotAvailableOnIPOrPort=الخادم غير شغال على العنوان %s على الميناء %s +DoTestServerAvailability=اختبار توفر الخادم +DoTestSend=اختبار الارسال +DoTestSendHTML=اختبار ارسال HTML +ErrorCantUseRazIfNoYearInMask=خطأ، لا يمكن استخدام الخيار @ لإعادة الضبط في بداية السنة، أو إذا كان التسلسل {yy} أو {yyyy} غير موجود في القناع. +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=خطأ، لا يمكن استخدام الخيار @ إذا كان التسلسل {yy}{mm} أو {mm}{yyyy} غير موجود في القناع +UMask=قناع من الملفات الجديدة تحت الأنظمة يونيكس / لينكس / بي إس دي. +UMaskExplanation=تسمح لك هذه المعلمة تحديد الاذونات على الملفات التي أنشأتها على الخادم Dolibarr (خلال تحميلها على سبيل المثال). <br> يجب أن يكون رقم ثماني (على سبيل المثال ، 0666 : وسائل القراءة والكتابة للجميع). <br> هذا الضبط ليس له أي تأثير على خادم ويندوز. +SeeWikiForAllTeam=إلقاء نظرة على صفحة الويكي لرؤية قائمة كاملة لجميع الجهات الفاعلة والمنظمة +UseACacheDelay= التأخير للتخزين المؤقت اللصادرات - ثانية (0 فارغ أو لا مخبأ) +DisableLinkToHelpCenter=اختباء وصلة <b>"هل تحتاج إلى مساعدة أو دعم"</b> على صفحة تسجيل الدخول +DisableLinkToHelp=إخفاء رابط "%sمساعدة عبر الإنترنت" من القائمة اليسرى اليمنى +AddCRIfTooLong=لا يوجد كسر خط التلقائي، حتى إذا كان النص طويل جدا على الوثائق، عليك أن تضيف بنفسك الإرجاع في مربع إدخال النص +ModuleDisabled=وحدة معطلة +ModuleDisabledSoNoEvent=وحدة معطلة,مما يجعل الحدث لن يخلق أبدا +ConfirmPurge=هل أنت متأكد من إرادة تنفيذ ذلك التطهير؟ <br> هذا من شأنه بالتأكيد حذف جميع ملفاتك (صورة إدارة المحتوى في المؤسسة ، والملفات المرفقة...). +MinLength=الحد الأدني LanguageFilesCachedIntoShmopSharedMemory=لانغ لتحميل الملفات. في الذاكرة المشتركة ExamplesWithCurrentSetup=أمثلة مع تشغيل الإعداد الحالي -ListOfDirectories=قائمة الدلائل المفتوحة قوالب -ListOfDirectoriesForModelGenODT=قائمة الدلائل التي تحتوي على ملفات ذات شكل قوالب المفتوحة. <br><br> هنا وضع المسار الكامل من الدلائل. <br> إضافة حرف إرجاع بين الدليل ايه. <br> لإضافة دليل وحدة [جد] ، أضيف هنا <b>DOL_DATA_ROOT / إدارة المحتوى في المؤسسة / yourdirectoryname.</b> <br><br> في هذه الدلائل يجب أن تنتهي مع <b>ملفات. odt.</b> -NumberOfModelFilesFound=Number of ODT/ODS templates files found in those directories -ExampleOfDirectoriesForModelGen=أمثلة على بناء الجملة : <br> ج : mydir \\ <br> / الوطن / mydir <br> DOL_DATA_ROOT / إدارة المحتوى في المؤسسة / ecmdir -FollowingSubstitutionKeysCanBeUsed=<br> لمعرفة كيفية إنشاء قوالب المستند ODT، قبل تخزينها في تلك الدلائل، وقراءة وثائق ويكي: -FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template -FirstnameNamePosition=موقف الإسم / اسم -DescWeather=سيتم عرض الصور التالية على لوحة أجهزة القياس عند عدد من الإجراءات في وقت متأخر تصل الى القيم التالية: -KeyForWebServicesAccess=مفتاح لاستخدام خدمات الشبكة العالمية (المعلمة "dolibarrkey" في webservices) -TestSubmitForm=اختبار شكل مساهمة -ThisForceAlsoTheme=وسوف تستخدم هذه القائمة أيضا استخدام مدير موضوعه الخاصة بكل ما هو خيار المستخدم. أيضا هذه القائمة مدير متخصصة للهواتف الذكية لا يعمل على جميع الهواتف الذكية. استخدم مدير آخر القائمة إذا واجهت مشاكل في يدكم. -ThemeDir=جلود دليل +ListOfDirectories=قائمة دلائل اللغة في الذاكرة المفتوحة +ListOfDirectoriesForModelGenODT=قائمة الدلائل التي تحتوي على ملفات ذات شكل قوالب مفتوحة. <br><br> ضع المسار الكامل من للدلائل. <br> إضافة حرف إرجاع بين الدلائل. <br> لإضافة دليل وحدة [GED] ، عين <br><b>DOL_DATA_ROOT/ecm/nomdurepertoireged</b><br><br>. الملفات ذات شكل قالب في هذه الدلائل يجب أن تنتهي ب <b>.odt</b> +NumberOfModelFilesFound=عدد الملفات ذو قالب ODT /ODS اللتي وجدت في هذه الدلائل +ExampleOfDirectoriesForModelGen=مثال في بناء الجملة: :<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=<br>لمعرفة كيفية كتابة قوالب مستندات ODT قبل وضعها في واحدة من هذه الدلائل، راجع وثائق الويكي: +FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Créer_un_modèle_de_document_ODT +FirstnameNamePosition=ترتيب العرض : الاسم / اللقب +DescWeather=سيتم عرض الصور التالية على لوحة القيادة عندما عدد العناصر المتأخرة تصل الى القيمة التالية: +KeyForWebServicesAccess=المفتاح لاستخدام خدمات الشبكة العالمية (المعلمة "dolibarrkey" في هذه الخدمات) +TestSubmitForm=استمارة اختبار الإدخال +ThisForceAlsoTheme=استخدام هذا المدير للقائمة يجبر أيضا استخدام الموضوع خاصة، مهما كان خيار المستخدم للموضوع. أيضا هذا المدير المتخصص بالهواتف الذكية لا يعمل على جميع الهواتف الذكية. استخدم مدير آخر القائمة إذا واجهت مشاكل في استخدامه. +ThemeDir=دليل المواضيع ConnectionTimeout=بمناسبه المهلة -ResponseTimeout=استجابة مهلة +ResponseTimeout= مهلة الاستجابة للتصالات SmsTestMessage=رسالة اختبار من __PHONEFROM__ إلى __PHONETO__ -ModuleMustBeEnabledFirst=يجب تمكين <b>%s</b> الوحدة الأولى قبل استخدام هذه الميزة. -SecurityToken=المفتاح لعناوين المواقع الآمنة -NoSmsEngine=لا مدير مرسل الرسائل القصيرة المتاحة. لم يتم تثبيت SMS المرسل مع مدير التوزيع الافتراضي (لأنها تعتمد على مورد خارجي)، ولكن يمكنك أن تجد بعض على http://www.dolistore.com +ModuleMustBeEnabledFirst=يجب تمكين الوحدة <b>%s</b> قبل استخدام هذه الميزة. +SecurityToken=مفتاح تأمين المواقع +NoSmsEngine=لا مدير مرسل للرسائل القصيرة متاح. لم يتم تثبيت مرسل SMS مع مدير التوزيع الافتراضي (لأنها تعتمد على مورد خارجي)، لكن يمكنك أن تجد بعض منها على http://www.dolistore.com PDF=PDF -PDFDesc=يمكنك تعيين كل الخيارات العالمية المتصلة جيل PDF -PDFAddressForging=قواعد لتشكيل مربعات العناوين -HideAnyVATInformationOnPDF=إخفاء كل المعلومات المتعلقة ضريبة القيمة المضافة على إنشاء قوات الدفاع الشعبي -HideDescOnPDF=Hide products description on generated PDF -HideRefOnPDF=Hide products ref. on generated PDF -HideDetailsOnPDF=Hide products lines details on generated PDF -Library=المكتبة -UrlGenerationParameters=المعلمات لتأمين عناوين المواقع -SecurityTokenIsUnique=استخدام معلمة securekey فريدة لكل URL -EnterRefToBuildUrl=أدخل مرجع لكائن %s -GetSecuredUrl=الحصول على عنوان محسوب -ButtonHideUnauthorized=Hide buttons for unauthorized actions instead of showing disabled buttons -OldVATRates=Old VAT rate -NewVATRates=New VAT rate -PriceBaseTypeToChange=Modify on prices with base reference value defined on -MassConvert=Launch mass convert +PDFDesc=يمكنك التعيين هنا خيارات عامة متعلقة بإنشاء وثائق PDF +PDFAddressForging=قواعد لتشكيل مناطق العناوين +HideAnyVATInformationOnPDF=إخفاء كل المعلومات المتعلقة بالضريبة على القيمة المضافة عند إنشاء وثائق PDF +HideDescOnPDF=إخفاءالوصف عند إنشاء وثائق PDF +HideRefOnPDF=إخفاءالمرجع عند إنشاء وثائق PDF +HideDetailsOnPDF=إخفاءالتفاصيل عند إنشاء وثائق PDF +Library=مكتبة +UrlGenerationParameters=تأمين عناوين المواقع +SecurityTokenIsUnique=استخدام معلمة securekey فريدة خاصة لكل URL +EnterRefToBuildUrl=أدخل المرجع لإنشاءالموقع %s +GetSecuredUrl=الحصول على عنوان محسوب للموقع +ButtonHideUnauthorized=إخفاء الأزرار الغير مأذون بها (بدلا من رؤيتها باللون الرمادي) +OldVATRates=قيمة الضريبة على القيمة المضافة السابقة +NewVATRates=قيمة الضريبة على القيمة المضافة الجديدة +PriceBaseTypeToChange=تعديل على الأسعار التي مرجعها الأساسي هو +MassConvert=تحويل جماعي String=سلسلة -TextLong=Long text -Int=Integer -Float=Float -DateAndTime=Date and hour -Unique=Unique -Boolean=Boolean (Checkbox) +TextLong=نص طويل +Int=عدد طبيعي +Float=عشري +DateAndTime=التاريخ و الوقت +Unique=وحيد +Boolean=قيمة منطقية (خانة اختيار) ExtrafieldPhone = هاتف ExtrafieldPrice = الأسعار -ExtrafieldMail = Email -ExtrafieldSelect = Select list -ExtrafieldSelectList = Select from table -ExtrafieldSeparator=Separator -ExtrafieldCheckBox=Checkbox -ExtrafieldRadio=Radio button -ExtrafieldCheckBoxFromList= Checkbox from table -ExtrafieldLink=Link to an object -ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key -ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>... -ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>... -ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter -LibraryToBuildPDF=Library used to build PDF -WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> -LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax) -SMS=SMS -LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user <strong>%s</strong> -RefreshPhoneLink=Refresh link -LinkToTest=Clickable link generated for user <strong>%s</strong> (click phone number to test) -KeepEmptyToUseDefault=Keep empty to use default value -DefaultLink=Default link -ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s -BarcodeInitForThirdparties=Mass barcode init for thirdparties -BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services -CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> records on <strong>%s</strong> %s without barcode defined. -InitEmptyBarCode=Init value for next %s empty records -EraseAllCurrentBarCode=Erase all current barcode values -ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ? -AllBarcodeReset=All barcode values have been removed -NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. -NoRecordWithoutBarcodeDefined=No record with no barcode value defined. +ExtrafieldMail = البريد الالكتروني +ExtrafieldSelect =قائمة اختيار +ExtrafieldSelectList =قائمة عقب جدول +ExtrafieldSeparator=فاصل بين الحقول +ExtrafieldCheckBox=خانة اختيار +ExtrafieldRadio=زر راديو +ExtrafieldCheckBoxFromList=قائمة صندوق عقب جدول +ExtrafieldLink=ربط على كائن +ExtrafieldParamHelpselect=يجب أن تكون القائمة على شكل مفتاح،قيمة<br><br>. على سبيل المثال: 1-v1,2-v2,3-v3... كي تكون القائمة لا تعتمد على أخرى:1,valeur1|code_liste_parent:clef_parent<br>2,valeur2|code_liste_parent:clef_parent +ExtrafieldParamHelpcheckbox=يجب أن تكون القائمة على شكل مفتاح، قيمة. على سبيل المثال: <br>1,valeur1<br>2,valeur2<br>3,valeur3<br>... +ExtrafieldParamHelpradio=يجب أن تكون القائمة على شكل مفتاح، قيمة. على سبيل المثال: <br>1,valeur1<br>2,valeur2<br>3,valeur3<br>... +ExtrafieldParamHelpsellist=القائمة تأتي من جدول <BR> بناء الجملة:... +ExtrafieldParamHelpchkbxlst=خانات الاختيارتأتي من جدول <BR> بناء الجملة:... +LibraryToBuildPDF=المكتبة المستخدمة لتوليد ...PDF +WarningUsingFPDF=تحذير: يحتوي الملف conf.php على التوجيه ...dolibarr_pdf_force_fpdf = 1 +LocalTaxDesc=بعض البلدان تطبق 2 أو 3 الضرائب على كل خط الفاتورة... +SMS=رسالةقصيرة +LinkToTestClickToDial=أدخل رقم الهاتف للاتصال لاختبار الارتباط دعوة "ClickToDial" للمستخدم %s +RefreshPhoneLink=تحديث الرابط +LinkToTest=صلة للنقر أنشئت للمستخدم (انقر على الرقم للاختبار) +KeepEmptyToUseDefault=أترك الحقل فارغا للاستخدام الافتراضي +DefaultLink=الارتباط الافتراضي +ValueOverwrittenByUserSetup=يرجى ملاحظة أن هذه القيمة يمكن تجاوزها من قبل قيمة محددة لتكوين المستخدم (يمكن لكل مستخدم أن يكون URL خاص به "ClickToDial") +ExternalModule=المساعد - مثبت في الدليل %s +BarcodeInitForThirdparties=تهيئة الباركود بالجملة للأطراف الثالثة +BarcodeInitForProductsOrServices=تهيئة أو تطهير الرموز الشريطية بالجملة للمنتجات أو الخدمات +CurrentlyNWithoutBarCode=حاليا لديك %s تسجيلات على %s دون باركود محدد. +InitEmptyBarCode=قم بتعيين القيم الفارغة للسجلات %s التالية +EraseAllCurrentBarCode=مسح كافة قيم الباركود +ConfirmEraseAllCurrentBarCode=هل أنت متأكد أنك تريد حذف كل القيم الباركود؟ +AllBarcodeReset=تم حذف كل الرموز الشريطية +NoBarcodeNumberingTemplateDefined=لم يتم تفعيل أي نمط ترقيم الباركود في وحدة الباركود. +NoRecordWithoutBarcodeDefined=لا يوجد سجل دون تعيين الباركود. # Modules -Module0Name=& مجموعات المستخدمين +Module0Name=المجموعات و المستخدمين Module0Desc=إدارة المستخدمين والمجموعات -Module1Name=أطراف ثالثة -Module1Desc=شركات الاتصالات وإدارة +Module1Name=الأطراف الثالثة +Module1Desc=شركات الاتصالات والإدارة Module2Name=التجارية Module2Desc=الإدارة التجارية Module10Name=المحاسبة Module10Desc=إدارة المحاسبة البسيطة (ارسال الفواتير والمدفوعات) -Module20Name=مقترحات -Module20Desc=مقترحات تجارية إدارة -Module22Name=كتلة بالبريد الإلكتروني -Module22Desc=البريد الإلكتروني الدمار إدارة -Module23Name= طاقة -Module23Desc= مراقبة استهلاك الطاقة +Module20Name=فواتير أولية (المقترحات التجارية) +Module20Desc=إدارة الفواتير الأولية +Module22Name=البريد الإلكتروني +Module22Desc=إدارة البريد الإلكتروني بالجملة +Module23Name=الطاقة +Module23Desc=مراقبة استهلاك الطاقة Module25Name=طلبات الزبائن -Module25Desc=طلبات الزبائن إدارة -Module30Name=فواتير -Module30Desc=ويلاحظ اعتماد الفواتير وإدارة العملاء. فواتير إدارة الموردين +Module25Desc=إدارة طلبات الزبائن +Module30Name=فواتير و موجودات +Module30Desc=إدارة فواتير و موجودات العملاء.إدارة فواتير الموردين Module40Name=الموردين -Module40Desc=الموردين وإدارة وشراء (الأوامر والفواتير) -Module42Name=Syslog -Module42Desc=قطع الأشجار مرافق (syslog) -Module49Name=المحررين -Module49Desc=المحررين إدارة +Module40Desc=إدارة الموردين والمشتريات (الأوامر والفواتير) +Module42Name=تسجيلات وآثار +Module42Desc=إنشاءالتسجيلات (ملفات، syslogs، ...) +Module49Name=برامج التحرير +Module49Desc=إدارة برامج التحرير Module50Name=المنتجات -Module50Desc=منتجات إدارة +Module50Desc=إدارة المنتجات Module51Name=الرسائل الجماعية -Module51Desc=الدمار ورقة الرسائل الإدارية -Module52Name=الاسهم -Module52Desc=مخزون إدارة المنتجات +Module51Desc=إدارة بعث الرسائل الجماعية +Module52Name=المخزونات +Module52Desc=إدارة مخازين المنتجات Module53Name=الخدمات -Module53Desc=الخدمات الإدارية -Module54Name=Contracts/Subscriptions -Module54Desc=Management of contracts (services or reccuring subscriptions) -Module55Name=Barcodes -Module55Desc=Barcodes إدارة +Module53Desc=إدارة الخدمات +Module54Name=العقود / الاشتراكات +Module54Desc=إدارة العقود (الخدمات أو الاشتراكات المتكررة) +Module55Name=الرموز الشريطية +Module55Desc=إدارة الرموز الشريطية Module56Name=الخدمات الهاتفية -Module56Desc=تكامل الخدمات الهاتفية +Module56Desc=إدارة الخدمات الهاتفية Module57Name=أوامر دائمة -Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries. +Module57Desc=الانسحابات Module58Name=ClickToDial -Module58Desc=ClickToDial التكامل +Module58Desc=إدماج أنظمة Asterisk,ClickToDial ... Module59Name=Bookmark4u -Module59Desc=إضافة مهمة لتوليد Bookmark4u الحساب من حساب Dolibarr +Module59Desc=إضافة مهمة لتوليد حساب Bookmark4u منذ حساب Dolibarr Module70Name=المداخلات -Module70Desc=التدخلات الإدارية -Module75Name=ويلاحظ نفقات رحلات -Module75Desc=ونفقات الرحلات تلاحظ إدارة -Module80Name=الإرسال -Module80Desc=الإرسال وتسليم الأوامر الإدارية -Module85Name=المصارف والنقد -Module85Desc=إدارة حسابات مصرفية أو نقدا -Module100Name=ExternalSite -Module100Desc=وتشمل أي موقع خارجي في القوائم Dolibarr ومشاهدته في إطار Dolibarr -Module105Name=ساعي البريد ورشفة -Module105Desc=ساعي البريد أو SPIP واجهة وحدة عضو +Module70Desc=إدارة المداخلات +Module75Name=ملاحظات النفقات و الرحلات +Module75Desc=إدارة ملاحظات النفقات و الرحلات +Module80Name=المرسلات +Module80Desc=إدارة المرسلات وإستلامات الزبائن +Module85Name=البنوك و الصناديق +Module85Desc=إدارة البنوك و الصناديق +Module100Name=مواقع خارجية +Module100Desc=يزيد مواقع خارجية في قوائم Dolibarr وإعلانها في إطار Dolibarr +Module105Name=Mailman و SPIP +Module105Desc=Mailman و SPIP واجهة للوحدة "أعضاء" Module200Name=LDAP -Module200Desc=دليل LDAP نمازتلا +Module200Desc=التزامن مع دليل LDAP Module210Name=PostNuke -Module210Desc=PostNuke التكامل -Module240Name=بيانات الصادرات -Module240Desc=أداة لتصدير Dolibarr datas (مساعدين) -Module250Name=بيانات الاستيراد -Module250Desc=أداة لاستيراد datas في Dolibarr (مساعدين) +Module210Desc=التكامل مع PostNuke +Module240Name=تصدير البيانات +Module240Desc=أداة لتصديربيانات Dolibarr (عن طريق مساعد) +Module250Name=استيراد البيانات +Module250Desc=أداة لاستيراد البيانات في Dolibarr (عن طريق مساعد) Module310Name=أعضاء -Module310Desc=أعضاء إدارة المؤسسة -Module320Name=تغذية RSS -Module320Desc=إضافة تغذية RSS داخل الشاشة صفحة Dolibarr -Module330Name=العناوين -Module330Desc=العناوين إدارة -Module400Name=Projects/Opportunities/Leads -Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module310Desc=إدارة أعضاء جمعية +Module320Name=تدفق RSS +Module320Desc=إضافة تدفق RSS داخل شاشات صفحة Dolibarr +Module330Name=إشارات مرجعية +Module330Desc=إدارة إشارات مرجعية +Module400Name=المشاريع / فرص التجارية +Module400Desc=إدارة المشاريع / فرص التجارية Module410Name=Webcalendar -Module410Desc=Webcalendar التكامل -Module500Name=Special expenses (tax, social contributions, dividends) -Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries -Module510Name=Salaries -Module510Desc=Management of employees salaries and payments -Module520Name=Loan -Module520Desc=Management of loans -Module600Name=الإخطارات -Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) +Module410Desc=واجهة مع الجدول الزمني Webcalendar +Module500Name=مصروفات خاصة (ضرائب,رسوم وأرباح) +Module500Desc=إدارة المصروفات الخاصة (الضرائب,الرسوم والأرباح) +Module510Name=الموظفين +Module510Desc=إدارة مدفوعات أجور الموظفين +Module520Name=القروض +Module520Desc=إدارة القروض +Module600Name=الإشعارات +Module600Desc=إرسال بريد إلكتروني للإشعار على بعض صفقات لأحداث Dolibarr، إلى الجهات الثالثة (بعدما نفذ التكوين على كل طرف ثالث) Module700Name=التبرعات -Module700Desc=التبرعات إدارة -Module770Name=Expense Report -Module770Desc=Management and claim expense reports (transportation, meal, ...) -Module1120Name=Supplier commercial proposal -Module1120Desc=Request supplier commercial proposal and prices -Module1200Name=فرس النبي -Module1200Desc=فرس النبي التكامل +Module700Desc=إدارة التبرعات +Module770Name=ملاحظات النفقات +Module770Desc=الإدارة والإبلاغ عن النفقات (النقل وجبات الطعام، ...) +Module1120Name=الفواتير الأولية للموردين +Module1120Desc=إدارة الفواتير الأولية للموردين +Module1200Name=مانتيس +Module1200Desc=التفاعل مع ال bug tracker مانتيس Module1400Name=المحاسبة -Module1400Desc=المحاسبة الإدارية (ضعف الأحزاب) -Module1520Name=Document Generation -Module1520Desc=Mass mail document generation -Module1780Name=Tags/Categories -Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members) +Module1400Desc=إدارة المحاسبة (طرف مزدوج) +Module1520Name=توليد الوثائق +Module1520Desc=توليد وثائق البريد المباشر +Module1780Name=تسميات / تصنيفات +Module1780Desc=خلق تسميات / تصنيفات (بالنسبة للمنتجات والعملاء والموردين، والاتصالات و أفراد) Module2000Name=Fckeditor -Module2000Desc=سوغ محرر -Module2200Name=Dynamic Prices -Module2200Desc=Enable the usage of math expressions for prices -Module2300Name=Cron -Module2300Desc=Scheduled job management +Module2000Desc=يسمح بمصادرة بعض الحقول النصية بفضل محرر متقدم +Module2200Name=أسعار محسوبة ديناميكيا +Module2200Desc=أفعال استخدام للعبارات الرياضية +Module2300Name=أشغال مبرمجة +Module2300Desc=أشغال مبرمجة Module2400Name=جدول الأعمال Module2400Desc=الأعمال / الإدارة المهام وجدول الأعمال Module2500Name=إدارة المحتوى الإلكتروني Module2500Desc=حفظ وتبادل الوثائق -Module2600Name=WebServices -Module2600Desc=تمكين خدمات الويب Dolibarr الملقم -Module2650Name=WebServices (client) -Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) +Module2600Name=خدمات الويب +Module2600Desc=تمكين خدمات الويب Dolibarr +Module2650Name=خدمات الويب(الزبائن) +Module2650Desc=تفعيل خدمات العملاء على شبكة الإنترنت (يمكن استخدامها لدفع البيانات لخادمين خارجيين. أوامر الموردين مستعملة فقط في الوقت الحاضر) Module2700Name=غرفتر -Module2700Desc=استخدام خدمة غرفتر على الانترنت (www.gravatar.com) لإظهار الصورة من المستخدمين / أعضاء (وجدت مع رسائل البريد الإلكتروني الخاصة بهم). في حاجة الى الوصول الى شبكة الانترنت -Module2800Desc=FTP Client +Module2700Desc=ااستخدام الخدمة عبر الإنترنت غرفتر (www.gravatar.com) لعرض الصور المستخدمين / الأعضاء (اعتمادا على بريدهم الإلكتروني ). تحتاج الوصول إلى الإنترنت. +Module2800Desc=زبون FTP Module2900Name=GeoIPMaxmind -Module2900Desc=GeoIP التحويلات Maxmind القدرات +Module2900Desc=قدرات التحويلات GeoIP Maxmind Module3100Name=Skype -Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module3100Desc=إضافة زر سكايب في الأوراق المنضمة /الأطراف الثالثة / الاتصالات Module5000Name=شركة متعددة -Module5000Desc=يسمح لك لإدارة الشركات المتعددة -Module6000Name=Workflow -Module6000Desc=Workflow management -Module20000Name=Leave Requests management -Module20000Desc=Declare and follow employees leaves requests -Module39000Name=Product lot -Module39000Desc=Lot or serial number, eat-by and sell-by date management on products +Module5000Desc=إدارة الشركات المتعددة +Module6000Name=تدفق العمل +Module6000Desc=إدارة تدفق العمل +Module20000Name=إدارة طلبات إجازة +Module20000Desc=إعلان ومتابعة طلبات إجازة للموظفين +Module39000Name=المنتجات بالقسمة و الرقم التسلسلي +Module39000Desc=إدارة المنتجات بالقسمة أو الرقم التسلسلي. Module50000Name=PayBox -Module50000Desc=وحدة لتقديم على صفحة الدفع عبر الإنترنت عن طريق بطاقة الائتمان مع PayBox +Module50000Desc=وحدة لتقديم الدفع على صفحة الإنترنت عن طريق بطاقة الائتمان مع PayBox Module50100Name=نقطة البيع -Module50100Desc=نقطة بيع وحدة +Module50100Desc=إدارة وحدة نقطة بيع Module50200Name=باي بال -Module50200Desc=وحدة لتقديم على صفحة الدفع عبر الإنترنت عن طريق بطاقة الائتمان مع بايبال -Module50400Name=Accounting (advanced) -Module50400Desc=Accounting management (double parties) +Module50200Desc=وحدة لتقديم الدفع على صفحة الإنترنت عن طريق بطاقة الائتمان مع بايبال +Module50400Name=المحاسبة (متقدمة) +Module50400Desc=إدارة المحاسبة (طرف مزدوج) Module54000Name=PrintIPP -Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installe on server). -Module55000Name=Open Poll -Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...) -Module59000Name=Margins -Module59000Desc=Module to manage margins -Module60000Name=Commissions -Module60000Desc=Module to manage commissions +Module54000Desc=الطباعة المباشرة (دون فتح الوثيقة) باستخدام تفاعل IPP (يجب أن تكون الطابعة مرئية من الخادم، يجب تثبيت CUPS على الخادم). +Module55000Name=استطلاعات الرأي +Module55000Desc=وحدة لدمجاستطلاعات الرأي (مثلDoodle, Studs, Rdvz, ...) +Module59000Name=الهوامش +Module59000Desc=وحدة لإدارة الهوامش +Module60000Name=اللجان +Module60000Desc=وحدة لإدارة اللجان Permission11=قراءة الفواتير -Permission12=خلق الفواتير -Permission13=تعديل الفواتير -Permission14=التحقق من صحة الفواتير -Permission15=ارسال الفواتير عن طريق البريد الإلكتروني -Permission16=خلق دفع الفواتير -Permission19=حذف الفواتير -Permission21=قراءة مقترحات تجارية -Permission22=إنشاء / تعديل مقترحات تجارية -Permission24=مصادقة على مقترحات تجارية -Permission25=ارسال مقترحات تجارية +Permission12=خلق فواتير الزبائن +Permission13=تعديل فواتير الزبائن +Permission14=التحقق من صحة فواتير الزبائن +Permission15=ارسال فواتير الزبائن عن طريق البريد الإلكتروني +Permission16=خلق دفع فواتير الزبائن +Permission19=حذف فواتير الزبائن +Permission21=قراءة المقترحات التجارية +Permission22=إنشاء / تعديل المقترحات التجارية +Permission24=مصادقة على المقترحات التجارية +Permission25=ارسال المقترحات التجارية Permission26=وثيقة المقترحات التجارية -Permission27=حذف مقترحات تجارية -Permission28=الصادرات التجارية مقترحات +Permission27=حذف المقترحات التجارية +Permission28=تصدير المقترحات التجارية Permission31=قراءة المنتجات Permission32=إنشاء / تعديل المنتجات Permission34=حذف المنتجات -Permission36=انظر / إدارة المنتجات المخفية -Permission38=منتجات التصدير -Permission41=قراءة المشاريع والمهام -Permission42=إنشاء / تعديل مشاريع تعديل مهام بلدي المشاريع -Permission44=حذف مشاريع +Permission36=نظر / إدارة المنتجات المخفية +Permission38=تصدير المنتجات +Permission41=قراءة المشاريع والمهام (المشتركة أو التي أنا بالاتصال معها) +Permission42=إنشاء / تعديل المشاريع مهام (المشتركة أو التي أنا بالاتصال معها) +Permission44=حذف المشاريع (المشتركة أو التي أنا بالاتصال معها) Permission61=قراءة التدخلات Permission62=إنشاء / تعديل التدخلات Permission64=حذف التدخلات Permission67=تصدير التدخلات Permission71=قراءة الأعضاء -Permission72=إنشاء / تعديل أعضاء -Permission74=حذف أعضاء -Permission75=Setup types of membership -Permission76=تصدير datas +Permission72=إنشاء / تعديل الأعضاء +Permission74=حذف الأعضاء +Permission75=تكوين أنواع الأعضاء +Permission76=تصدير الأعضاء Permission78=قراءة الاشتراكات -Permission79=إنشاء / تعديل والاشتراكات +Permission79=إنشاء / تعديل الاشتراكات Permission81=قراءة أوامر العملاء Permission82=إنشاء / تعديل أوامر العملاء -Permission84=صحة أوامر العملاء +Permission84=تأكيد أوامر العملاء Permission86=إرسال أوامر العملاء -Permission87=وثيقة أوامر العملاء +Permission87=إغلاق أوامر العملاء Permission88=إلغاء أوامر العملاء Permission89=حذف أوامر العملاء Permission91=قراءة المساهمات الاجتماعية وضريبة القيمة المضافة @@ -952,7 +953,7 @@ DelaysOfToleranceBeforeWarning=محذرا من التأخير قبل التسا DelaysOfToleranceDesc=تتيح لك هذه الشاشة لتحديد التأخير قبل السماح تنبيه يقال على الشاشة مع picto ٪ ق لكل عنصر في وقت متأخر. Delays_MAIN_DELAY_ACTIONS_TODO=تأخير التسامح (أيام) قبل اتخاذ إجراءات في حالة تأهب على المخطط لم تتحقق Delays_MAIN_DELAY_ORDERS_TO_PROCESS=تأخير التسامح (أيام) قبل تنبيه على أوامر لم -Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=التسامح التأخير (في أيام) قبل التنبيه على أوامر الموردين لم تتم معالجة حتى الآن +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=التسامح التأخير (في أيام) قبل التنبيه على أوامر الموردين لم تتم مديرة حتى الآن Delays_MAIN_DELAY_PROPALS_TO_CLOSE=التسامح التأخير (في يوم) في حالة تأهب على المقترحات المعروضة ليقفل Delays_MAIN_DELAY_PROPALS_TO_BILL=تأخير التسامح (أيام) قبل تنبيه بشأن المقترحات لا توصف Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=تأخير التسامح (في يوم) في حالة تأهب قبل يوم والخدمات لتفعيل @@ -1109,7 +1110,7 @@ UsersSetup=شاهد الإعداد وحدة UserMailRequired=مطلوب بريد إلكتروني لإنشاء مستخدم جديد ##### Company setup ##### CompanySetup=وحدة الإعداد للشركات -CompanyCodeChecker=نموذج للجيل الثالث لقانون الأحزاب ومراجعة (عميل أو مورد) +CompanyCodeChecker=وحدة للجيل الثالث لقانون الأحزاب ومراجعة (عميل أو مورد) AccountCodeManager=رمز وحدة لتوليد المحاسبة (عميل أو مورد) ModuleCompanyCodeAquarium=عودة رمز المحاسبة التي بناها: <br> يتبع %s بواسطة طرف ثالث رمز المورد عن مورد قانون المحاسبة، <br> يتبع %s بواسطة طرف ثالث رمز العملاء لعميل قانون المحاسبة. ModuleCompanyCodePanicum=العودة فارغة مدونة المحاسبة. @@ -1153,9 +1154,9 @@ WebCalCheckWebcalSetup=ربما Webcal نميطة الإعداد غير صحيح BillsSetup=وحدة إعداد الفواتير BillsDate=تاريخ الفواتير BillsNumberingModule=الفواتير والقروض وتلاحظ وحدة الترقيم -BillsPDFModules=فاتورة نماذج الوثائق +BillsPDFModules=فاتورة وحدات الوثائق CreditNoteSetup=علما الإعداد وحدة الائتمان -CreditNotePDFModules=المذكرة وثيقة من وثائق الائتمان النماذج +CreditNotePDFModules=المذكرة وثيقة من وثائق الائتمان الوحدات CreditNote=علما الائتمان CreditNotes=ويلاحظ الائتمان ForceInvoiceDate=قوة تاريخ الفاتورة تاريخ المصادقة على @@ -1170,8 +1171,8 @@ WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) PropalSetup=وحدة إعداد مقترحات تجارية CreateForm=خلق أشكال NumberOfProductLines=عدد خطوط الإنتاج -ProposalsNumberingModules=اقتراح نماذج تجارية الترقيم -ProposalsPDFModules=اقتراح نماذج الوثائق التجارية +ProposalsNumberingModules=اقتراح وحدات تجارية الترقيم +ProposalsPDFModules=اقتراح وحدات الوثائق التجارية ClassifiedInvoiced=صنف في الفاتورة HideTreadedPropal=إخفاء تعامل تجاري المقترحات الواردة في قائمة AddShippingDateAbility=إضافة قدرة الشحن والتاريخ @@ -1190,7 +1191,7 @@ BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination o ##### Orders ##### OrdersSetup=أوامر إدارة الإعداد OrdersNumberingModules=أوامر الترقيم نمائط -OrdersModelModule=وثائق من أجل النماذج +OrdersModelModule=وثائق من أجل الوحدات HideTreadedOrders=Hide the treated or cancelled orders in the list ValidOrderAfterPropalClosed=للمصادقة على النظام بعد اقتراح أوثق ، لا يجعل من الممكن للخطوة من جانب النظام المؤقت FreeLegalTextOnOrders=بناء على أوامر النص الحر @@ -1206,7 +1207,7 @@ Bookmark4uSetup=إعداد وحدة Bookmark4u InterventionsSetup=وحدة التدخل الإعداد FreeLegalTextOnInterventions=حرر النص على وثائق التدخل FicheinterNumberingModules=الترقيم وحدات التدخل -TemplatePDFInterventions=تدخل بطاقة نماذج الوثائق +TemplatePDFInterventions=تدخل بطاقة وحدات الوثائق WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty) ##### Contracts ##### ContractsSetup=Contracts/Subscriptions module setup @@ -1253,7 +1254,7 @@ LDAPUserDn=المستخدمين DN LDAPUserDnExample=Complete DN (ex: ou=users,dc=society,dc=DN الكامل (مثلا : où= المستخدمين ، العاصمة= المجتمع ، العاصمة= كوم) LDAPGroupDn=الجماعات DN LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=society,dc=DN الكامل (مثلا : où= المجموعات العاصمة= المجتمع ، العاصمة= كوم) -LDAPServerExample=خادم معالجة (مثلا : localhost ، 192.168.0.2 ، ldaps : / / ldap.example.com /) +LDAPServerExample=خادم مديرة (مثلا : localhost ، 192.168.0.2 ، ldaps : / / ldap.example.com /) LDAPServerDnExample=Complete DN (ex: dc=company,dc=DN الكامل (مثلا : العاصمة= شركة العاصمة= كوم) LDAPPasswordExample=كلمة السر الادارية LDAPDnSynchroActive=مستخدمين والمجموعات التزامن @@ -1442,14 +1443,14 @@ ListOfAvailableNotifications=List of events you can set notification on, for eac FixedEmailTarget=Fixed email target ##### Sendings ##### SendingsSetup=ارسال وحدة الإعداد -SendingsReceiptModel=ارسال استلام نموذج +SendingsReceiptModel=ارسال استلام وحدة SendingsNumberingModules=Sendings ترقيم الوحدات SendingsAbility=Support shipment sheets for customer deliveries NoNeedForDeliveryReceipts=في معظم الحالات ، تستخدم الإرسال إيصالات سواء صحائف لتسليم العميل (قائمة المنتجات ارسال) ، وصحائف التي وقعت عليها recevied الزبون. حتى المنتج تسليم الإيصالات هي سمة مزدوجة ونادرا ما تفعيلها. FreeLegalTextOnShippings=Free text on shipments ##### Deliveries ##### DeliveryOrderNumberingModules=تلقي شحنات المنتجات الترقيم وحدة -DeliveryOrderModel=تلقي شحنات المنتجات النموذجية +DeliveryOrderModel=تلقي شحنات المنتجات الوحدةية DeliveriesOrderAbility=دعم المنتجات تسليم الإيصالات FreeLegalTextOnDeliveryReceipts=نص حر بتسليم إيصالات ##### FCKeditor ##### @@ -1482,7 +1483,7 @@ MenuHandler=قائمة مناول MenuModule=مصدر في وحدة HideUnauthorizedMenu= إخفاء القوائم غير المصرح به (الرمادي) DetailId=معرف القائمة -DetailMenuHandler=قائمة المعالج حيث تظهر قائمة جديدة +DetailMenuHandler=قائمة المدير حيث تظهر قائمة جديدة DetailMenuModule=اسم وحدة قائمة في حال الدخول من وحدة DetailType=نوع القائمة (أعلى أو إلى اليسار) DetailTitre=قائمة علامة أو بطاقة رمز للترجمة @@ -1530,7 +1531,7 @@ AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filt AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda ##### ClickToDial ##### -ClickToDialDesc=هذا النموذج يسمح لإضافة رمز بعد رقم هاتف Dolibarr الاتصالات. وهناك اضغط على هذه الأيقونة ، سوف يطلب من أحد serveur معينة مع تحديد عنوان لكم أدناه. ويمكن استخدام هذه الكلمة لدعوة من مركز نظام Dolibarr التي يمكن الاتصال على رقم الهاتف هذا المسبار النظام على سبيل المثال. +ClickToDialDesc=هذا الوحدة يسمح لإضافة رمز بعد رقم هاتف Dolibarr الاتصالات. وهناك اضغط على هذه الأيقونة ، سوف يطلب من أحد serveur معينة مع تحديد عنوان لكم أدناه. ويمكن استخدام هذه الكلمة لدعوة من مركز نظام Dolibarr التي يمكن الاتصال على رقم الهاتف هذا المسبار النظام على سبيل المثال. ##### Point Of Sales (CashDesk) ##### CashDesk=نقاط البيع CashDeskSetup=مكتب الإعداد وحدة نقدية @@ -1545,7 +1546,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=إعداد وحدة المرجعية -BookmarkDesc=هذا النموذج يسمح لك لإدارة العناوين. يمكنك أيضا إضافة أي Dolibarr اختصارات لصفحات أو مواقع الويب externale على القائمة اليمنى. +BookmarkDesc=هذا الوحدة يسمح لك لإدارة العناوين. يمكنك أيضا إضافة أي Dolibarr اختصارات لصفحات أو مواقع الويب externale على القائمة اليمنى. NbOfBoomarkToShow=أكبر عدد ممكن من العناوين تظهر في القائمة اليمنى ##### WebServices ##### WebServicesSetup=إعداد وحدة Webservices @@ -1561,7 +1562,7 @@ BankOrderGlobalDesc=عرض عام النظام BankOrderES=الأسبانية BankOrderESDesc=الأسبانية عرض النظام ##### Multicompany ##### -MultiCompanySetup=نموذج متعدد شركة الإعداد +MultiCompanySetup=وحدة متعدد شركة الإعداد ##### Suppliers ##### SuppliersSetup=المورد الإعداد وحدة SuppliersCommandModel=قالب كاملة من أجل المورد (logo...) @@ -1578,7 +1579,7 @@ TestGeoIPResult=اختبار لتحويل الملكية الفكرية --> ال ##### Projects ##### ProjectsNumberingModules=مشاريع وحدة الترقيم ProjectsSetup=مشروع إعداد وحدة -ProjectsModelModule=المشروع نموذج التقرير وثيقة +ProjectsModelModule=المشروع وحدة التقرير وثيقة TasksNumberingModules=Tasks numbering module TaskModelModule=Tasks reports document model ##### ECM (GED) ##### diff --git a/htdocs/langs/ar_SA/install.lang b/htdocs/langs/ar_SA/install.lang index b805743f44f987ba6d24e5fc35fb3e1a9424ffdd..7536fe5bf4aa68a62ac9efd59c36651ba815df21 100644 --- a/htdocs/langs/ar_SA/install.lang +++ b/htdocs/langs/ar_SA/install.lang @@ -2,19 +2,19 @@ InstallEasy=فقط اتبع التعليمات خطوة بخطوة. MiscellaneousChecks=التحقق من الشروط الأساسية DolibarrWelcome=مرحبا بكم في Dolibarr -ConfFileExists=ملفات موجودة <b>٪ ق.</b> -ConfFileDoesNotExists=ملفات <b>ل ٪</b> لا وجود له! -ConfFileDoesNotExistsAndCouldNotBeCreated=ملفات <b>ل ٪</b> لا وجود له وأنه لا يمكن خلق! -ConfFileCouldBeCreated=ملفات <b>ل ٪</b> ويمكن أن تنشأ. -ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( "chmod 666" على سبيل المثال ، مثل نظام التشغيل يونكس). -ConfFileIsWritable=ملفات للكتابة هو <b>٪ ق.</b> -ConfFileReload=تحديث جميع المعلومات من ملف التكوين. -PHPSupportSessions=ويدعم هذا PHP الدورات. -PHPSupportPOSTGETOk=ويدعم هذا PHP المتغيرات والحصول على الوظائف. -PHPSupportPOSTGETKo=فمن الممكن PHP الإعداد الخاص بك لا يدعم الوظائف المتغيرات و / أو الحصول عليه. التحقق من اتصالك <b>variables_order</b> معلمة في php.ini. -PHPSupportGD=PHP هذا الدعم البيانية ش ج المهام. -PHPSupportUTF8=PHP دعم UTF8 هذه المهام. -PHPMemoryOK=الحد الأقصى الخاص بك PHP دورة الذاكرة ومن المقرر <b>٪ ق.</b> وينبغي أن يكون هذا كافيا. +ConfFileExists=ملف الإعداد <b>%s</b> موجود مسبقاً +ConfFileDoesNotExists=ملف الإعداد <b>%s</b> غير موجود +ConfFileDoesNotExistsAndCouldNotBeCreated=ملف الإعداد <b>%s</b> مفقود ولا يمكن إنشائه. +ConfFileCouldBeCreated=يمكن إنشاء ملف الإعداد <b>%s</b> +ConfFileIsNotWritable=لا يمكن الكتابة الى ملف الإعداد <b>%s</b>. تحقق من الصلاحيات. اذا كان هذا التنصيب هو الأول، تحقق من أن السيرفر قادر ولديه جميع صلاحيات الكتابة والقراءة خلال عملية التنصيب، مثال: (chmod 666) لمستخدمي سيرفرات يونكس. +ConfFileIsWritable=ملف الإعداد <b>%s</b> قابل للكتابة. +ConfFileReload=إعادة تحميل جميع المعلومات من ملف الإعداد. +PHPSupportSessions=يدعم هذا الـ PHP ميزة الجلسات الزمنية. +PHPSupportPOSTGETOk=يدعم هذا الـ PHP وظائف POST و GET. +PHPSupportPOSTGETKo=من المحتمل أن نسخة الـ PHP لديك لاتدعم وظائف POST - GET. تحقق من <b>variables_order</b> في ملف php.ini +PHPSupportGD=يدعم اصدار الـ PHP هذا وظائف GD الرسومية. +PHPSupportUTF8=يدعم هذاا الاصدار من PHP وظائف الترميز UTF8. +PHPMemoryOK=تم إعداد الجلسة الزمنية للذاكرة في PHP الى <b>%s</b> . من المفترض ان تكون كافية. PHPMemoryTooLow=الحد الأقصى الخاص بك PHP دورة الذاكرة ومن المقرر <b>٪ ق</b> بايت. لهذا ينبغي أن يكون منخفضا جدا. تغيير <b>php.ini</b> وضع <b>memory_limit</b> المعلم إلى ما لا يقل عن <b>٪ ق</b> بايت. Recheck=اضغط هنا لمزيد من الاختبار ذو معنى ErrorPHPDoesNotSupportSessions=PHP تركيب الخاص بك لا يدعم الدورات. هذه الميزة هو مطلوب لجعل العمل Dolibarr. التحقق من اتصالك PHP الإعداد. diff --git a/htdocs/langs/ca_ES/accountancy.lang b/htdocs/langs/ca_ES/accountancy.lang index bb9b358c045f01051eecca5063c4127d6cb21672..00a9929f987df2b06382a167ce577c79b72db5a4 100644 --- a/htdocs/langs/ca_ES/accountancy.lang +++ b/htdocs/langs/ca_ES/accountancy.lang @@ -1,19 +1,19 @@ # Dolibarr language file - en_US - Accounting Expert CHARSET=UTF-8 -Accounting=Accounting -Globalparameters=Global parameters -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years -Menuaccount=Accounting accounts +Accounting=Comptabilitat experta +Globalparameters=Paràmetres globals +Chartofaccounts=Pla comptable +Fiscalyear=Anys fiscals +Menuaccount=Comptes de comptabilitat Menuthirdpartyaccount=Thirdparty accounts -MenuTools=Tools +MenuTools=Utilitats ConfigAccountingExpert=Configuration of the module accounting expert Journaux=Journals JournalFinancial=Financial journals Exports=Exports -Export=Export +Export=Exporta Modelcsv=Model of export OptionsDeactivatedForThisExportModel=For this export model, options are deactivated Selectmodelcsv=Select a model of export @@ -124,8 +124,8 @@ CustomerInvoicePayment=Payment of invoice customer ThirdPartyAccount=Thirdparty account -NewAccountingMvt=New movement -NumMvts=Number of movement +NewAccountingMvt=Nou moviment +NumMvts=Nombre de moviment ListeMvts=List of the movement ErrorDebitCredit=Debit and Credit cannot have a value at the same time @@ -134,7 +134,7 @@ DescThirdPartyReport=Consult here the list of the thirdparty customers and the s ListAccounts=List of the accounting accounts -Pcgversion=Version of the plan +Pcgversion=Versió del pla Pcgtype=Class of account Pcgsubtype=Under class of account Accountparent=Root of the account diff --git a/htdocs/langs/ca_ES/trips.lang b/htdocs/langs/ca_ES/trips.lang index 5e9ca6a8d9f74f416c00841a7c5389f456902168..47d44923fa4272d96a951bb2ff4d690e8e59687d 100644 --- a/htdocs/langs/ca_ES/trips.lang +++ b/htdocs/langs/ca_ES/trips.lang @@ -32,14 +32,14 @@ ConfirmDeleteLine=Are you sure you want to delete this line ? PDFStandardExpenseReports=Standard template to generate a PDF document for expense report ExpenseReportLine=Expense report line TF_OTHER=Altre -TF_TRANSPORTATION=Transportation +TF_TRANSPORTATION=Transport TF_LUNCH=Dieta TF_METRO=Metro -TF_TRAIN=Train +TF_TRAIN=Tren TF_BUS=Bus -TF_CAR=Car -TF_PEAGE=Toll -TF_ESSENCE=Fuel +TF_CAR=Cotxe +TF_PEAGE=Peatge +TF_ESSENCE=Combustible TF_HOTEL=Hostel TF_TAXI=Taxi @@ -75,7 +75,7 @@ DATE_PAIEMENT=Payment date TO_PAID=Pay BROUILLONNER=Reopen SendToValid=Sent to approve -ModifyInfoGen=Edit +ModifyInfoGen=Edita ValidateAndSubmit=Validate and submit for approval NOT_VALIDATOR=You are not allowed to approve this expense report diff --git a/htdocs/langs/cs_CZ/accountancy.lang b/htdocs/langs/cs_CZ/accountancy.lang index bb9b358c045f01051eecca5063c4127d6cb21672..62ec8d5c6ade16db5ac64d204ee32ff2945dc345 100644 --- a/htdocs/langs/cs_CZ/accountancy.lang +++ b/htdocs/langs/cs_CZ/accountancy.lang @@ -1,160 +1,160 @@ # Dolibarr language file - en_US - Accounting Expert CHARSET=UTF-8 -Accounting=Accounting -Globalparameters=Global parameters -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years -Menuaccount=Accounting accounts -Menuthirdpartyaccount=Thirdparty accounts -MenuTools=Tools - -ConfigAccountingExpert=Configuration of the module accounting expert -Journaux=Journals -JournalFinancial=Financial journals -Exports=Exports +Accounting=Účetnictví +Globalparameters=Globální parametry +Chartofaccounts=Graf účtů +Fiscalyear=Fiskální roky +Menuaccount=Účetní závěrka +Menuthirdpartyaccount=Účty třetích stran +MenuTools=Nástroje + +ConfigAccountingExpert=Konfigurace modulu účetního experta +Journaux=Deníky +JournalFinancial=Finanční deníky +Exports=Exporty Export=Export -Modelcsv=Model of export -OptionsDeactivatedForThisExportModel=For this export model, options are deactivated -Selectmodelcsv=Select a model of export -Modelcsv_normal=Classic export -Modelcsv_CEGID=Export towards CEGID Expert -BackToChartofaccounts=Return chart of accounts -Back=Return - -Definechartofaccounts=Define a chart of accounts -Selectchartofaccounts=Select a chart of accounts -Validate=Validate -Addanaccount=Add an accounting account -AccountAccounting=Accounting account -Ventilation=Breakdown -ToDispatch=To dispatch -Dispatched=Dispatched - -CustomersVentilation=Breakdown customers -SuppliersVentilation=Breakdown suppliers -TradeMargin=Trade margin -Reports=Reports -ByCustomerInvoice=By invoices customers -ByMonth=By Month -NewAccount=New accounting account -Update=Update -List=List -Create=Create -UpdateAccount=Modification of an accounting account -UpdateMvts=Modification of a movement -WriteBookKeeping=Record accounts in general ledger -Bookkeeping=General ledger -AccountBalanceByMonth=Account balance by month - -AccountingVentilation=Breakdown accounting -AccountingVentilationSupplier=Breakdown accounting supplier -AccountingVentilationCustomer=Breakdown accounting customer -Line=Line - -CAHTF=Total purchase supplier HT -InvoiceLines=Lines of invoice to be ventilated -InvoiceLinesDone=Ventilated lines of invoice -IntoAccount=In the accounting account - -Ventilate=Ventilate -VentilationAuto=Automatic breakdown - -Processing=Processing -EndProcessing=The end of processing -AnyLineVentilate=Any lines to ventilate -SelectedLines=Selected lines -Lineofinvoice=Line of invoice -VentilatedinAccount=Ventilated successfully in the accounting account -NotVentilatedinAccount=Not ventilated in the accounting account - -ACCOUNTING_SEPARATORCSV=Column separator in export file - -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements -ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements - -AccountLength=Length of the accounting accounts shown in Dolibarr -AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. -ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts -ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts - -ACCOUNTING_SELL_JOURNAL=Sell journal -ACCOUNTING_PURCHASE_JOURNAL=Purchase journal -ACCOUNTING_BANK_JOURNAL=Bank journal -ACCOUNTING_CASH_JOURNAL=Cash journal -ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal -ACCOUNTING_SOCIAL_JOURNAL=Social journal - -ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer -ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait - -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) - -Doctype=Type of document -Docdate=Date +Modelcsv=Model exportu +OptionsDeactivatedForThisExportModel=Možnosti pro tento exportní model jsou deaktivovány +Selectmodelcsv=Vyberte způsob exportu +Modelcsv_normal=Klasický export +Modelcsv_CEGID=Export směrem CEGID Expert +BackToChartofaccounts=Návrat účtové osnovy +Back=Návrat + +Definechartofaccounts=Definovat účtové osnovy +Selectchartofaccounts=Vyberte účtové osnovy +Validate=Potvrdit +Addanaccount=Přidat účetní účet +AccountAccounting=Účetní účet +Ventilation=Přerušení +ToDispatch=Nahlásit +Dispatched=Odesláno + +CustomersVentilation=Členění zákazníků +SuppliersVentilation=Členění dodvatelů +TradeMargin=Obchodní marže +Reports=Zprávy +ByCustomerInvoice=Fakturováno zákazníky +ByMonth=Měsíčně +NewAccount=Nový účetní účet +Update=Aktualizovat +List=Seznam +Create=Vytvořit +UpdateAccount=Změna účetního účtu +UpdateMvts=Změna pohybu +WriteBookKeeping=Účetní záznamy v hlavní účetní knize +Bookkeeping=Hlavní účetní kniha +AccountBalanceByMonth=Zůstatek na účtu podle měsíce + +AccountingVentilation=Členění účetnictví +AccountingVentilationSupplier=Členění účetnictví dodavatel +AccountingVentilationCustomer=Členění účetnictví zákazník +Line=Linka + +CAHTF=Celkové platby dodavatele HT +InvoiceLines=Řádky faktury, které mají být prověřeny +InvoiceLinesDone=Prověření řádků faktury +IntoAccount=V účetním účtu + +Ventilate=Prověřit +VentilationAuto=Automatické členění + +Processing=Pracuji ..... +EndProcessing=Konec zpracování +AnyLineVentilate=Prověřit všechny řádky +SelectedLines=Vybrané řádky +Lineofinvoice=Řádky faktury +VentilatedinAccount=Úspěšně prověření v účetním účtu +NotVentilatedinAccount=Neprověřeno v účetním účtu + +ACCOUNTING_SEPARATORCSV=Oddělovač sloupců v souboru exportu + +ACCOUNTING_LIMIT_LIST_VENTILATION=Počet prvků, které mají být zobrazeny rozdělením podle stránky (doporučené maximum: 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Začněte třídění rozkladných stránek "Má k rozdělení" nejnovějšími elementy +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Začněte třídění rozpisu stránek "Breakdown", podle nejnovějších prvků + +AccountLength=Délka účetnické osnovy uvedené v Dolibarr +AccountLengthDesc=Funkce povolující simulovat délku účetního účtu nahrazením místa prostřednictvím nulového obrázku. Tato funkce se týká pouze zobrazení, to nemění účetní účty zaregistrované v Dolibarr. Pro export této funkce je nutné, aby byla kompatibilní s daným softwarem. +ACCOUNTING_LENGTH_GACCOUNT=Délka hlavních účtů +ACCOUNTING_LENGTH_AACCOUNT=Délka účtů třetích stran + +ACCOUNTING_SELL_JOURNAL=Prodejní deník +ACCOUNTING_PURCHASE_JOURNAL=Nákupní deník +ACCOUNTING_BANK_JOURNAL=Bankovní deník +ACCOUNTING_CASH_JOURNAL=Peněžní deník +ACCOUNTING_MISCELLANEOUS_JOURNAL=Ostatní deník +ACCOUNTING_SOCIAL_JOURNAL=Sociální deník + +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Převodní účet +ACCOUNTING_ACCOUNT_SUSPENSE=Čekající účet + +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Účetní účet ve výchozím nastavení pro zakoupené produkty (pokud není definován v listu produktu) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Účetní účet ve výchozím nastavení pro prodané produkty (pokud není definován v listu produktu) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Účetní účet ve výchozím nastavení pro zakoupené služby (pokud není definován v servisním listu) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Účetní účet ve výchozím nastavení pro prodané služby (pokud není definován v servisním listu) + +Doctype=Typ dokumentu +Docdate=Datum Docref=Reference -Numerocompte=Account -Code_tiers=Thirdparty -Labelcompte=Label account -Debit=Debit -Credit=Credit -Amount=Amount +Numerocompte=Účet +Code_tiers=Třetí strana +Labelcompte=Štítek účtu +Debit=Debet +Credit=Kredit +Amount=Částka Sens=Sens -Codejournal=Journal +Codejournal=Deník -DelBookKeeping=Delete the records of the general ledger +DelBookKeeping=Odstranit záznamy hlavní knihy -SellsJournal=Sells journal -PurchasesJournal=Purchases journal -DescSellsJournal=Sells journal -DescPurchasesJournal=Purchases journal -BankJournal=Bank journal -DescBankJournal=Bank journal including all the types of payments other than cash -CashJournal=Cash journal -DescCashJournal=Cash journal including the type of payment cash +SellsJournal=Prodejní denák +PurchasesJournal=Nákupní deník +DescSellsJournal=Prodejní deník +DescPurchasesJournal=Nákupní deník +BankJournal=Bankovní deník +DescBankJournal=Bankovní deník včetně všech typů jiných než hotovostních plateb +CashJournal=Peněžní deník +DescCashJournal=Peněžní deník včetně typů platby v hotovosti -CashPayment=Cash Payment +CashPayment=Platba v hotovosti -SupplierInvoicePayment=Payment of invoice supplier -CustomerInvoicePayment=Payment of invoice customer +SupplierInvoicePayment=Platba dodavatelské faktury +CustomerInvoicePayment=Platba zákaznické faktury -ThirdPartyAccount=Thirdparty account +ThirdPartyAccount=Účet třetí strany -NewAccountingMvt=New movement -NumMvts=Number of movement -ListeMvts=List of the movement -ErrorDebitCredit=Debit and Credit cannot have a value at the same time +NewAccountingMvt=Nový pohyb +NumMvts=Číslo pohybu +ListeMvts=Seznam pohybů +ErrorDebitCredit=Debetní a kreditní nemůže mít hodnotu ve stejnou dobu -ReportThirdParty=List thirdparty account -DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts +ReportThirdParty=Seznam účtů třetí strany +DescThirdPartyReport=Poraďte se zde seznam třetích stran, zákazníky a dodavateli a jejich účetní účty -ListAccounts=List of the accounting accounts +ListAccounts=Seznam účetních účtů -Pcgversion=Version of the plan -Pcgtype=Class of account -Pcgsubtype=Under class of account -Accountparent=Root of the account -Active=Statement +Pcgversion=Verze plánu +Pcgtype=Třída účtu +Pcgsubtype=Podle třídy účtu +Accountparent=kořen účtu +Active=Prohlášení -NewFiscalYear=New fiscal year +NewFiscalYear=Nový fiskální rok -DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers -TotalVente=Total turnover HT -TotalMarge=Total sales margin -DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account -DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account -ChangeAccount=Change the accounting account for lines selected by the account: +DescVentilCustomer=Seznamte se zde s ročním rozdělením účetnictví faktur zákazníků +TotalVente=Celkový obrat HT +TotalMarge=Celkové tržby marže +DescVentilDoneCustomer=Seznamte se zde se seznamem linek faktur zákazníků a jejich účetních účtů +DescVentilTodoCustomer=Prověřte své řádky zákaznické faktury s účetním účtem. +ChangeAccount=Změna účetních účtů pro řádky vybraných účtů: Vide=- -DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers -DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account -DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account +DescVentilSupplier=Poraďte se zde s ročním rozdělením účetnictví faktur dodavatelů +DescVentilTodoSupplier=Prověřte zde své řádky dodavatelských faktur s účetním účtem +DescVentilDoneSupplier=Poraďte se zde se seznamem linek faktur dodavatele a jejich účetních účtů -ValidateHistory=Validate Automatically +ValidateHistory=Ověřit automaticky -ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used +ErrorAccountancyCodeIsAlreadyUse=Chyba, nelze odstranit tento účetní účet, protože ho zrovna používáte -FicheVentilation=Breakdown card +FicheVentilation=Karta členění diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang index 05b7ea91f2821bf13e08994fa2f268941f6b0731..c41c67ab5728d4fe75bed633b811ea879dc292a3 100644 --- a/htdocs/langs/cs_CZ/admin.lang +++ b/htdocs/langs/cs_CZ/admin.lang @@ -8,11 +8,11 @@ VersionExperimental=Experimentální VersionDevelopment=Vývoj VersionUnknown=Neznámý VersionRecommanded=Doporučené -FileCheck=Files Integrity -FilesMissing=Missing Files -FilesUpdated=Updated Files -FileCheckDolibarr=Check Dolibarr Files Integrity -XmlNotFound=Xml File of Dolibarr Integrity Not Found +FileCheck=Soubory Integrity +FilesMissing=Chybějící soubory +FilesUpdated=Aktualizované soubory +FileCheckDolibarr=Zkontrolujte Dolibarr soubory Integrity +XmlNotFound=Soubor XML ze Dolibarr integrity nebyly načteny SessionId=ID relace SessionSaveHandler=Manipulátor uložených relací SessionSavePath=Místo uložení relace @@ -48,19 +48,19 @@ SecuritySetup=Bezpečnostní nastavení ErrorModuleRequirePHPVersion=Chyba, tento modul vyžaduje PHP verze %s nebo vyšší ErrorModuleRequireDolibarrVersion=Chyba, tento modul vyžaduje Dolibarr verze %s nebo vyšší ErrorDecimalLargerThanAreForbidden=Chyba, přesnost vyšší než <b>%s</b> není podporována. -DictionarySetup=Dictionary setup -Dictionary=Dictionaries -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years +DictionarySetup=Nastavení slovníku +Dictionary=Slovníky +Chartofaccounts=Graf účtů +Fiscalyear=Fiskální roky ErrorReservedTypeSystemSystemAuto=Hodnota "system" a "systemauto" je vyhrazena. Můžete použít "user" k pŕidání vlastního záznamu ErrorCodeCantContainZero=Kód nemůže obsahovat hodnotu 0 -DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) +DisableJavascript=Vypnout JavaScript a Ajax funkce (Doporučuje se pro nevidomého či textové prohlížeče) ConfirmAjax=Použít Ajax potvrzovací okénka UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. +UseSearchToSelectCompany=Používat automatické doplňování polí pro výběr třetích stran namísto použití pole se seznamem. ActivityStateToSelectCompany= Přidat možnost filtru pro zobrazení / skrytí třetích stran, které jsou v současné době v činnosti nebo ji ukončili UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). +UseSearchToSelectContact=Používat automatické doplňování polí výběr kontaktu (namísto použití seznamu). DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties) DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact) SearchFilter=Nastavení vyhledávání @@ -113,9 +113,9 @@ OtherOptions=Další možnosti OtherSetup=Další nastavení CurrentValueSeparatorDecimal=Desetinný oddělovač CurrentValueSeparatorThousand=Oddělovač tisíců -Destination=Destination -IdModule=Module ID -IdPermissions=Permissions ID +Destination=Destinace +IdModule=Modul ID +IdPermissions=Oprávnění ID Modules=Moduly ModulesCommon=Hlavní moduly ModulesOther=Další moduly @@ -127,7 +127,7 @@ LanguageBrowserParameter=Parametr %s LocalisationDolibarrParameters=Lokalizační parametry ClientTZ=Časové pásmo klienta (uživatele) ClientHour=Klientův čas (uživatelův) -OSTZ=Server OS Time Zone +OSTZ=Server OS Časové pásmo PHPTZ=Časové pásmo PHP serveru PHPServerOffsetWithGreenwich=Vyrovnání PHP serveru se šířkou Greenwich (v sekundách) ClientOffsetWithGreenwich=Vyrovnání prohlížeče se šířkou Greenwich (v sekundách) @@ -142,7 +142,7 @@ Box=Box Boxes=Boxy MaxNbOfLinesForBoxes=Maximální počet řádků pro boxy PositionByDefault=Výchozí pořadí -Position=Position +Position=Pozice MenusDesc=V nastavení menu nastavíte obsah obou panelů nabídek (horizontální i vertikální). MenusEditorDesc=Edito menu vám umožní upravovat položky v menu. Používejte jej opatrně, při nesprávném použití může dojít k nestabilnímu chodu systému Dolibarr nebo ke ztrátě některých položek v menu. <br> Některé moduly přidají položky v menu. Pokud jste omylem odstranili některé z těchto položek, můžete je obnovit vypnutím a opětovným zapnutím modulu. MenuForUsers=Menu pro uživatele @@ -246,8 +246,8 @@ OfficialWebSiteFr=Oficiální francouzské internetové stránky OfficialWiki=Dolibarr dokumentace na Wiki OfficialDemo=Dolibarr on-line demo OfficialMarketPlace=Oficiální trh pro externí moduly / addons -OfficialWebHostingService=Referenced web hosting services (Cloud hosting) -ReferencedPreferredPartners=Preferred Partners +OfficialWebHostingService=Odkazované webhostingové služby (Cloud hosting) +ReferencedPreferredPartners=Preferovaní partneři OtherResources=Autres ressources ForDocumentationSeeWiki=Pro uživatelskou nebo vývojářskou dokumentaci (Doc, FAQs ...) <br> navštivte Dolibarr Wiki: <br> <a href="%s" target="_blank"><b>%s</b></a> ForAnswersSeeForum=V případě jakýchkoliv dalších dotazů nebo nápovědy použijte fórum Dolibarr: <br> <a href="%s" target="_blank"><b>%s</b></a> @@ -297,11 +297,11 @@ MenuHandlers=Menu handlery MenuAdmin=Menu editor DoNotUseInProduction=Nepoužívejte ve výrobě ThisIsProcessToFollow=Nastaveno na proces: -ThisIsAlternativeProcessToFollow=This is an alternative setup to process: +ThisIsAlternativeProcessToFollow=To je alternativa k nastavení procesu: StepNb=Krok %s FindPackageFromWebSite=Nalezni balíček, obsahující funkci jež chcete (např. na oficiálních stránkách %s). -DownloadPackageFromWebSite=Download package %s. -UnpackPackageInDolibarrRoot=Unpack package file into directory dedicated to external modules: <b>%s</b> +DownloadPackageFromWebSite=Download balíčku %s. +UnpackPackageInDolibarrRoot=Rozbalte soubor balíčku do adresáře, vyhrazenému pro externí moduly: <b>%s</b> SetupIsReadyForUse=Instalace je dokončena a Dolibarr je připraven k použití. NotExistsDirect=Alternativní kořenový adresář není definován. <br> InfDirAlt=Od verze 3 je možné definovat alternativní kořenovou složku. To umožňuje ukládat na stejné místo plug-iny a vlastní šablony. <br> Stačí vytvořit adresář v kořenovém adresáři Dolibarr (např.: custom). <br> @@ -310,7 +310,7 @@ YouCanSubmitFile=Vyberte modul: CurrentVersion=Dolibarr aktuální verze CallUpdatePage=Přejděte na stránku, která aktualizuje databázovou strukturu a údaje: %s. LastStableVersion=Poslední stabilní verze -UpdateServerOffline=Update server offline +UpdateServerOffline=Aktualizace serveru v režimu offline GenericMaskCodes=Můžete zadat jakoukoliv masku číselné řady. V masce můžete použít následující značky: <br><b>{000000}</b> číslo, automaticky inkrementované o 1 při každým %s. Počet nul odpovídá požadovanému počtu číslic. Číslo se zleva doplní nulami pro dosažení požadovaného počtu číslic. <br><b>{000000+000}</b> stejné jako předchozí, ale ofset odpovídající číslu napravo od znaku + bude použit pro první %s. <br><b>{000000@x}</b> stejné jako předchozí, ale počítadlo se resetuje na nulu, když je dosaženo měsíce x (x je v rozmezí 1 ~ 12, nebo 0 pro použití prvního měsíce fiskálního roku definované ve vaší konfiguraci, nebo 99 pro vynulování každý měsíc ). Pokud se tato volba používá, a x je 2 nebo vyšší, pak je rovněž požadovaná posloupnost {yy}{mm} či {yyyy}{mm}. <br><b>{dd}</b> den (01 až 31).<br><b>{mm}</b> měsíc (01 to 12).<br><b>{yy}</b>, <b>{yyyy}</b> nebo <b>{y}</b> rok, 2, 4 nebo 1 číslo. <br> GenericMaskCodes2=<b>{cccc}</b> the client code on n characters<br><b>{cccc000}</b> the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter.<br><b>{tttt}</b> The code of thirdparty type on n characters (see dictionary-thirdparty types).<br> GenericMaskCodes3=Všechny ostatní znaky v masce zůstanou nedotčeny. <br> Mezery nejsou povoleny. <br> @@ -324,7 +324,7 @@ ServerNotAvailableOnIPOrPort=Server není k dispozici na adrese <b>%s</b> na por DoTestServerAvailability=Zkouška spojení se serverem DoTestSend=Vyzkoušet odeslání DoTestSendHTML=Vyzkoušet odesílání HTML -ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. +ErrorCantUseRazIfNoYearInMask=Chyba, nelze použít volbu @ pro reset čítače každý rok, když posloupnost {yy} nebo {yyyy} není v masce. ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Chyba, nelze použít volbu @ pokud posloupnost {yy}{mm} or {yyyy}{mm} není uvedena v masce. UMask=Umask parametr pro nové soubory na Unix / Linux / BSD / Mac systému souborů. UMaskExplanation=Tento parametr umožňuje definovat výchozí oprávnění souborl vytvořených Dolibarr systémem na serveru (např. během nahrávání). <br> Musí se jednat o osmičkovou hodnotu (např. 0666 znamená číst a psát pro všechny). <br> Tento parametr je na serverech Windows k ničemu. @@ -389,8 +389,8 @@ ExtrafieldSelectList = Vyberte z tabulky ExtrafieldSeparator=Oddělovač ExtrafieldCheckBox=Zaškrtávací políčko ExtrafieldRadio=Přepínač -ExtrafieldCheckBoxFromList= Checkbox from table -ExtrafieldLink=Link to an object +ExtrafieldCheckBoxFromList= Kontrolní pole z tabulky +ExtrafieldLink=Odkaz na objekt ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>... @@ -398,7 +398,7 @@ ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_ ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter LibraryToBuildPDF=Knihovna použít k vytvoření PDF WarningUsingFPDF=Upozornění: Váš <b>conf.php</b> obsahuje direktivu <b>dolibarr_pdf_force_fpdf = 1.</b> To znamená, že můžete používat knihovnu FPDF pro generování PDF souborů. Tato knihovna je stará a nepodporuje mnoho funkcí (Unicode, obraz transparentnost, azbuka, arabské a asijské jazyky, ...), takže může dojít k chybám při generování PDF. <br> Chcete-li vyřešit tento a mají plnou podporu generování PDF, stáhněte si <a href="http://www.tcpdf.org/" target="_blank">TCPDF knihovny</a> , pak komentář nebo odebrat řádek <b>$ dolibarr_pdf_force_fpdf = 1,</b> a místo něj doplnit <b>$ dolibarr_lib_TCPDF_PATH = 'path_to_TCPDF_dir "</b> -LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax) +LocalTaxDesc=Některé země uplatňovat 2 nebo 3 daně na každé faktuře řádek. Pokud se jedná o tento případ, zvolit typ pro druhé a třetí daňové a jeho rychlosti. Možné typ jsou: <br> 1: místní daň vztahovat na výrobky a služby bez DPH (localtax je vypočtena na částku bez daně) <br> 2: místní daň platí o produktech a službách, včetně DPH (localtax je vypočtena na částku + hlavní daně) <br> 3: místní daň vztahovat na výrobky bez DPH (localtax je vypočtena na částku bez daně) <br> 4: místní daň vztahovat na produkty, včetně DPH (DPH se vypočítá na množství + hlavní DPH) <br> 5: místní daň platí o službách bez DPH (localtax je vypočtena na částku bez daně) <br> 6: místní daň platí o službách, včetně DPH (localtax je vypočtena na částku + daň) SMS=SMS LinkToTestClickToDial=Zadejte telefonní číslo pro volání ukázat odkaz na test ClickToDial URL pro <strong>%s</strong> RefreshPhoneLink=Obnovit odkaz @@ -406,16 +406,16 @@ LinkToTest=Klikací odkaz generovány pro uživatele <strong>%s</strong> (klikn KeepEmptyToUseDefault=Mějte prázdný použít výchozí hodnoty DefaultLink=Výchozí odkaz ValueOverwrittenByUserSetup=Pozor, tato hodnota může být přepsána uživatelem specifické nastavení (každý uživatel může nastavit vlastní clicktodial url) -ExternalModule=External module - Installed into directory %s -BarcodeInitForThirdparties=Mass barcode init for thirdparties -BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services -CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> records on <strong>%s</strong> %s without barcode defined. -InitEmptyBarCode=Init value for next %s empty records -EraseAllCurrentBarCode=Erase all current barcode values -ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ? -AllBarcodeReset=All barcode values have been removed -NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. -NoRecordWithoutBarcodeDefined=No record with no barcode value defined. +ExternalModule=Externí modul - instalován do adresáře %s +BarcodeInitForThirdparties=Mass čárový kód init pro thirdparties +BarcodeInitForProductsOrServices=Mass init čárový kód nebo reset pro výrobky nebo služby +CurrentlyNWithoutBarCode=V současné době máte <strong>%s</strong> záznamů <strong>s%</strong> s bez čárového kódu definována. +InitEmptyBarCode=Init hodnota pro příští %s prázdnými záznamů +EraseAllCurrentBarCode=Vymazat všechny aktuální hodnoty čárových kódů +ConfirmEraseAllCurrentBarCode=Jste si jisti, že chcete vymazat všechny aktuální hodnoty čárových kódů? +AllBarcodeReset=Byly odstraněny všechny hodnoty čárových kódů +NoBarcodeNumberingTemplateDefined=Žádné šablony číslování čárových kódů aktivované v nastavení modulu čárových kódů. +NoRecordWithoutBarcodeDefined=Žádný záznam s žádnou hodnotou čárového kódu definována. # Modules Module0Name=Uživatelé a skupiny @@ -450,14 +450,14 @@ Module52Name=Zásoby Module52Desc=Skladové hospodářství (výrobky) Module53Name=Služby Module53Desc=Správa služeb -Module54Name=Contracts/Subscriptions -Module54Desc=Management of contracts (services or reccuring subscriptions) +Module54Name=Smlouvy/Objednávky +Module54Desc=Správa smluv (služeb nebo reccuring předplatné) Module55Name=Čárové kódy Module55Desc=Barcode řízení Module56Name=Telefonie Module56Desc=Telefonie integrace Module57Name=Trvalé příkazy -Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries. +Module57Desc=Trvalé příkazy a řízení výběrů. Také zahrnuje generování souboru SEPA pro evropské země. Module58Name=ClickToDial Module58Desc=Integrace ClickToDial systému (Asterisk, ...) Module59Name=Bookmark4u @@ -488,45 +488,45 @@ Module320Name=RSS Feed Module320Desc=Přidat RSS kanál uvnitř obrazovek Dolibarr Module330Name=Záložky Module330Desc=Správa záložek -Module400Name=Projects/Opportunities/Leads -Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module400Name=Projekty/Příležitosti/Vedení +Module400Desc=Řízení projektů, příležitostí nebo vedení. Můžete přiřadit libovolný prvek (faktura, objednávka, návrh, intervence, ...) na projekt a získat příčný pohled z pohledu projektu. Module410Name=WebCalendar Module410Desc=WebCalendar integrace Module500Name=Zvláštní náklady (daně, sociální příspěvky a dividendy) -Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries -Module510Name=Salaries -Module510Desc=Management of employees salaries and payments -Module520Name=Loan -Module520Desc=Management of loans +Module500Desc=Řízení zvláštních výdajů, jako jsou daně, sociální příspěvky, divideny a platy +Module510Name=Platy +Module510Desc=Řízení výplat zaměstnanců a plateb +Module520Name=Půjčka +Module520Desc=Správa úvěrů Module600Name=Upozornění -Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) +Module600Desc=Posílat e-mailové upozornění na některé Dolibarr firemních akcí až kontaktů třetích stran (nastavení definován na každém thirdparty) Module700Name=Dary Module700Desc=Darování řízení -Module770Name=Expense Report +Module770Name=Seznam rozšíření Module770Desc=Management and claim expense reports (transportation, meal, ...) -Module1120Name=Supplier commercial proposal +Module1120Name=Dodavatel obchodní nabídky Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integrace Module1400Name=Účetnictví Module1400Desc=Vedení účetnictví (dvojité strany) -Module1520Name=Document Generation +Module1520Name=Dokument Generation Module1520Desc=Mass mail document generation -Module1780Name=Tags/Categories -Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members) +Module1780Name=Tagy/Kategorie +Module1780Desc=Vytvořit tagy/kategorie (produkty, zákazníci, dodavatelé, kontakty nebo členi) Module2000Name=WYSIWYG editor Module2000Desc=Nechte upravit některé textové pole pomocí pokročilého editoru -Module2200Name=Dynamic Prices -Module2200Desc=Enable the usage of math expressions for prices +Module2200Name=Dynamické ceny +Module2200Desc=Povolit použití matematických výrazů pro ceny Module2300Name=Cron -Module2300Desc=Scheduled job management +Module2300Desc=Plánovaná správa úloh Module2400Name=Pořad jednání Module2400Desc=Události / úkoly a agendy vedení Module2500Name=Elektronický Redakční Module2500Desc=Uložit a sdílet dokumenty Module2600Name=WebServices Module2600Desc=Povolit Dolibarr webových služeb serveru -Module2650Name=WebServices (client) +Module2650Name=WebServices (klient) Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) Module2700Name=Gravatar Module2700Desc=Pomocí on-line služby (Gravatar www.gravatar.com) ukázat fotku uživatelů / členů (nalezen s jejich e-maily). Potřebujete přístup k internetu @@ -534,14 +534,14 @@ Module2800Desc=FTP klient Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind konverze možnosti Module3100Name=Skype -Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module3100Desc=Přidat tlačítko Skype do karty přívrženců / třetích stran / kontakty Module5000Name=Multi-společnost Module5000Desc=Umožňuje spravovat více společností Module6000Name=Workflow Module6000Desc=Workflow management -Module20000Name=Leave Requests management -Module20000Desc=Declare and follow employees leaves requests -Module39000Name=Product lot +Module20000Name=Nechte řízení požadavků +Module20000Desc=Deklarovat a dodržovat zaměstnanci opustí požadavky +Module39000Name=Množství produktu Module39000Desc=Lot or serial number, eat-by and sell-by date management on products Module50000Name=Paybox Module50000Desc=Modul nabídnout on-line platby kreditní kartou stránku s Paybox @@ -549,12 +549,12 @@ Module50100Name=Bod prodeje Module50100Desc=Místě prodeje modulu Module50200Name=Paypal Module50200Desc=Modul nabídnout on-line platby kreditní kartou stránku s Paypal -Module50400Name=Accounting (advanced) -Module50400Desc=Accounting management (double parties) +Module50400Name=Účetnictví (pokročilé) +Module50400Desc=Manažerské účetnictví (dvojité strany) Module54000Name=PrintIPP -Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installe on server). -Module55000Name=Open Poll -Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...) +Module54000Desc=Přímý tisk (bez otevření dokumentů) pomocí poháry IPP rozhraní (tiskárna musí být viditelné ze serveru, a CUPS musí být installe na serveru). +Module55000Name=Otevřít anketu +Module55000Desc=Modul, tvorbu on-line průzkumů a anket (jako Doodle, šroub, Rdvz, ...) Module59000Name=Okraje Module59000Desc=Modul pro správu marže Module60000Name=Provize @@ -588,7 +588,7 @@ Permission67=Vývozní intervence Permission71=Přečtěte členů Permission72=Vytvořit / upravit členů Permission74=Smazat členů -Permission75=Setup types of membership +Permission75=Nastavení typu uživatele Permission76=Export údaje Permission78=Přečtěte si předplatné Permission79=Vytvořit / upravit předplatné @@ -611,8 +611,8 @@ Permission106=Export sendings Permission109=Odstranit sendings Permission111=Přečtěte finančních účtů Permission112=Vytvořit / upravit / smazat a porovnat transakce -Permission113=Setup financial accounts (create, manage categories) -Permission114=Reconciliate transactions +Permission113=Nastavení finančních účtů (vytváření, správa kategorií) +Permission114=Konsolidace transakce Permission115=Vývozních transakcí, a výpisy z účtů Permission116=Převody mezi účty Permission117=Správa kontroly dispečinku @@ -629,22 +629,22 @@ Permission151=Přečtěte si trvalé příkazy Permission152=Vytvořit / upravit trvalých příkazů žádost Permission153=Převodovka trvalých příkazů příjmy Permission154=Kredit / odmítnout trvalých příkazů příjmy -Permission161=Read contracts/subscriptions +Permission161=Přečtené smlouvy/předplatné Permission162=Create/modify contracts/subscriptions -Permission163=Activate a service/subscription of a contract -Permission164=Disable a service/subscription of a contract -Permission165=Delete contracts/subscriptions -Permission171=Read trips and expenses (own and his subordinates) -Permission172=Create/modify trips and expenses -Permission173=Delete trips and expenses -Permission174=Read all trips and expenses -Permission178=Export trips and expenses +Permission163=Aktivace služby / předplatné smlouvy +Permission164=Zakázat servisní / předplatné smlouvy +Permission165=Smazat zakázky / předplatné +Permission171=Přečtěte si výlety a náklady (vlastní a jeho podřízené) +Permission172=Vytvořit / upravit výlety a výdaje +Permission173=Odstranění výlety a výdaje +Permission174=Přečtěte si všechny výlety a výdaje +Permission178=Export výlety a výdaje Permission180=Přečtěte si dodavatele Permission181=Přečtěte si dodavatelských objednávek Permission182=Vytvořit / upravit dodavatelské objednávky Permission183=Ověřit dodavatelských objednávek Permission184=Schválit dodavatelských objednávek -Permission185=Order or cancel supplier orders +Permission185=Objednat nebo zrušit dodavately objednávky Permission186=Příjem objednávek s dodavately Permission187=Zavřít dodavatelské objednávky Permission188=Zrušit dodavatelských objednávek @@ -695,7 +695,7 @@ Permission300=Přečtěte čárových kódů Permission301=Vytvořit / upravit čárových kódů Permission302=Odstranit čárových kódů Permission311=Přečtěte služby -Permission312=Assign service/subscription to contract +Permission312=Přiřadit službu / předplatné smlouvu Permission331=Přečtěte si záložky Permission332=Vytvořit / upravit záložky Permission333=Odstranění záložky @@ -712,15 +712,15 @@ Permission401=Přečtěte slevy Permission402=Vytvořit / upravit slevy Permission403=Ověřit slevy Permission404=Odstranit slevy -Permission510=Read Salaries -Permission512=Create/modify salaries -Permission514=Delete salaries -Permission517=Export salaries -Permission520=Read Loans -Permission522=Create/modify loans -Permission524=Delete loans -Permission525=Access loan calculator -Permission527=Export loans +Permission510=Číst platy +Permission512=Vytvořit/upravit platy +Permission514=Smazat platy +Permission517=Export výplat +Permission520=Přečtěte si Úvěry +Permission522=Vytvořit/upravit úvěry +Permission524=Smazat úvěry +Permission525=Přístup na úvěrovou kalkulačku +Permission527=Export úvěrů Permission531=Přečtěte služby Permission532=Vytvořit / upravit služby Permission534=Odstranit služby @@ -729,16 +729,16 @@ Permission538=Export služeb Permission701=Přečtěte si dary Permission702=Vytvořit / upravit dary Permission703=Odstranit dary -Permission771=Read expense reports (own and his subordinates) -Permission772=Create/modify expense reports -Permission773=Delete expense reports -Permission774=Read all expense reports (even for user not subordinates) -Permission775=Approve expense reports -Permission776=Pay expense reports -Permission779=Export expense reports +Permission771=Přečtěte si přehled výdajů (vlastní i jeho podřízení) +Permission772=Vytvořit/upravit vyúčtování výdajů +Permission773=Smazat zprávy o výdajích +Permission774=Přečtěte si všechny zprávy o výdajích (a to i pro uživatele, ne podřízení) +Permission775=Schválit vyúčtování výdajů +Permission776=Zaplatit vyúčtování výdajů +Permission779=Export výkazů o výdajích Permission1001=Přečtěte si zásoby -Permission1002=Create/modify warehouses -Permission1003=Delete warehouses +Permission1002=Vytvoření/úprava skladišť +Permission1003=Odstranění skladišť Permission1004=Přečtěte skladové pohyby Permission1005=Vytvořit / upravit skladové pohyby Permission1101=Přečtěte si dodací @@ -753,7 +753,7 @@ Permission1185=Schválit dodavatelských objednávek Permission1186=Objednávky Objednat dodavatel Permission1187=Potvrzení přijetí dodavatelských objednávek Permission1188=Odstranit dodavatelských objednávek -Permission1190=Approve (second approval) supplier orders +Permission1190=Schválit (druhé schválení) dodavatele zakázky Permission1201=Získejte výsledek exportu Permission1202=Vytvořit / Upravit vývoz Permission1231=Přečtěte si dodavatelské faktury @@ -766,10 +766,10 @@ Permission1237=Export dodavatelské objednávky a informace o nich Permission1251=Spustit Hmotné dovozy externích dat do databáze (načítání dat) Permission1321=Export zákazníků faktury, atributy a platby Permission1421=Export objednávek zákazníků a atributy -Permission23001=Read Scheduled job -Permission23002=Create/update Scheduled job -Permission23003=Delete Scheduled job -Permission23004=Execute Scheduled job +Permission23001=Čtení naplánovaných úloh +Permission23002=Vytvoření/aktualizace naplánované úlohy +Permission23003=Smazat naplánovanou úlohu +Permission23004=Provést naplánovanou úlohu Permission2401=Přečtěte akce (události nebo úkoly) které souvisí s jeho účet Permission2402=Vytvořit / upravit akce (události nebo úkoly) které souvisí s jeho účet Permission2403=Odstranit akce (události nebo úkoly) které souvisí s jeho účet @@ -786,40 +786,40 @@ Permission50101=Použijte místě prodeje Permission50201=Přečtěte transakce Permission50202=Importní operace Permission54001=Vytisknout -Permission55001=Read polls -Permission55002=Create/modify polls -Permission59001=Read commercial margins -Permission59002=Define commercial margins -Permission59003=Read every user margin -DictionaryCompanyType=Thirdparties type -DictionaryCompanyJuridicalType=Juridical kinds of thirdparties -DictionaryProspectLevel=Prospect potential level -DictionaryCanton=State/Cantons -DictionaryRegion=Regions -DictionaryCountry=Countries -DictionaryCurrency=Currencies -DictionaryCivility=Civility title -DictionaryActions=Type of agenda events -DictionarySocialContributions=Social contributions types -DictionaryVAT=VAT Rates or Sales Tax Rates -DictionaryRevenueStamp=Amount of revenue stamps -DictionaryPaymentConditions=Payment terms -DictionaryPaymentModes=Payment modes -DictionaryTypeContact=Contact/Address types +Permission55001=Přečtěte si průzkumy +Permission55002=Vytvořit/upravit ankety +Permission59001=Přečtěte si obchodní marže +Permission59002=Definovat obchodní marže +Permission59003=Přečtěte si všechny marže uživatele +DictionaryCompanyType=Typy třetích stran +DictionaryCompanyJuridicalType=Právní formy třetích stran +DictionaryProspectLevel=Potencionální úroveň cílů +DictionaryCanton=Stát/Kantony +DictionaryRegion=Regiony +DictionaryCountry=Země +DictionaryCurrency=Měny +DictionaryCivility=Zdvořilostní oslovení +DictionaryActions=Typ agendy událostí +DictionarySocialContributions=Typy příspěvků na sociální zabezpečení +DictionaryVAT=Sazby DPH nebo daň z prodeje +DictionaryRevenueStamp=Výše příjmů známek +DictionaryPaymentConditions=Platební podmínky +DictionaryPaymentModes=Platební režimy +DictionaryTypeContact=Typy kontaktů/adres DictionaryEcotaxe=Ecotax (WEEE) -DictionaryPaperFormat=Paper formats -DictionaryFees=Type of fees -DictionarySendingMethods=Shipping methods -DictionaryStaff=Staff -DictionaryAvailability=Delivery delay -DictionaryOrderMethods=Ordering methods -DictionarySource=Origin of proposals/orders -DictionaryAccountancyplan=Chart of accounts -DictionaryAccountancysystem=Models for chart of accounts -DictionaryEMailTemplates=Emails templates +DictionaryPaperFormat=Formáty papíru +DictionaryFees=Druh poplatků +DictionarySendingMethods=Metody dopravy +DictionaryStaff=Zaměstnanci +DictionaryAvailability=Zpoždění dodávky +DictionaryOrderMethods=Metody objednávání +DictionarySource=Původ nabídky/objednávky +DictionaryAccountancyplan=Graf účtů +DictionaryAccountancysystem=Modely pro účetní osnovy +DictionaryEMailTemplates=E-maily šablony SetupSaved=Nastavení uloženo BackToModuleList=Zpět na seznam modulů -BackToDictionaryList=Back to dictionaries list +BackToDictionaryList=Zpět k seznamu slovníků VATReceivedOnly=Zvláštní sazba není účtován VATManagement=DPH řízení VATIsUsedDesc=Sazba DPH ve výchozím nastavení při vytváření vyhlídky, faktury, objednávky atd. sledovat aktivní standardní pravidlo: <br> Pokud prodávající není předmětem DPH, pak se DPH ve výchozím nastavení = 0. Konec vlády. <br> Je-li (prodejní country = nákup zemi), pak se DPH standardně = DPH výrobku v zemi prodeje. Konec vlády. <br> Pokud se prodávající a kupující v Evropském společenství a zboží je doprava výrobků (auto, loď, letadlo), výchozí DPH = 0 (DPH by měla být věnována ze strany kupujícího v customoffice své země, a ne u prodejce). Konec vlády. <br> Pokud se prodávající a kupující v Evropském společenství a kupujícím není společnost, pak se DPH standardně = DPH z výrobků prodaných. Konec vlády. <br> Pokud se prodávající a kupující v Evropském společenství a kupujícím je společnost, pak se DPH ve výchozím nastavení = 0. Konec vlády. <br> Jinak navrhovaná výchozí DPH = 0. Konec vlády. @@ -827,7 +827,7 @@ VATIsNotUsedDesc=Ve výchozím nastavení je navrhovaná DPH 0, který lze použ VATIsUsedExampleFR=Ve Francii, to znamená, že podniky a organizace, které mají skutečnou fiskální systém (zjednodušený reálný nebo normální reálné). Systém, v němž je deklarován DPH. VATIsNotUsedExampleFR=Ve Francii, to znamená, asociace, které jsou bez DPH prohlášené nebo společnosti, organizace nebo svobodných povolání, které se rozhodly pro Micro Enterprise daňového systému (s DPH v povolení) a placenými franšízové DPH bez DPH prohlášení. Tato volba se zobrazí odkaz "nepoužitelné DPH - art-293B CGI" na fakturách. ##### Local Taxes ##### -LTRate=Rate +LTRate=Rychlost LocalTax1IsUsed=Použití druhé daně LocalTax1IsNotUsed=Nepoužívejte druhá daň LocalTax1IsUsedDesc=Použijte druhý typ daně (kromě DPH) @@ -852,12 +852,12 @@ LocalTax2IsUsedDescES= RE sazba ve výchozím nastavení při vytváření vyhl LocalTax2IsNotUsedDescES= Ve výchozím nastavení je navrhovaná IRPF je 0. Konec vlády. LocalTax2IsUsedExampleES= Ve Španělsku, na volné noze a nezávislí odborníci, kteří poskytují služby a firmy, kteří se rozhodli daňového systému modulů. LocalTax2IsNotUsedExampleES= Ve Španělsku jsou bussines, které nejsou předmětem daňového systému modulů. -CalcLocaltax=Reports on local taxes -CalcLocaltax1=Sales - Purchases +CalcLocaltax=Zprávy o místních daních +CalcLocaltax1=Prodej - Nákupy CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases -CalcLocaltax2=Purchases -CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases -CalcLocaltax3=Sales +CalcLocaltax2=Nákupy +CalcLocaltax2Desc=Místní zprávy Daně jsou celkem localtaxes nákupů +CalcLocaltax3=Odbyt CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales LabelUsedByDefault=Label používá ve výchozím nastavení, pokud není překlad lze nalézt kód LabelOnDocuments=Štítek na dokumenty @@ -926,7 +926,7 @@ PermanentLeftSearchForm=Permanentní vyhledávací formulář na levém menu DefaultLanguage=Výchozí jazyk používat (kód jazyka) EnableMultilangInterface=Povolit vícejazyčné rozhraní EnableShowLogo=Zobrazit logo na levém menu -EnableHtml5=Enable Html5 (Developement - Only available on Eldy template) +EnableHtml5=Povolit HTML5 (Developement - k dispozici pouze na Eldy šablony) SystemSuccessfulyUpdated=Systém byl úspěšně aktualizován CompanyInfo=Společnosti / Nadace informace CompanyIds=Společnost / nadace identity @@ -971,14 +971,14 @@ EventsSetup=Nastavení pro akce kulatiny LogEvents=Události bezpečnostní audit Audit=Audit InfoDolibarr=Informace Dolibarr -InfoBrowser=Infos Browser +InfoBrowser=Informace o prohlížeči InfoOS=Informace OS InfoWebServer=Informace webový server InfoDatabase=Informace databáze InfoPHP=Informace PHP InfoPerf=Infos představení -BrowserName=Browser name -BrowserOS=Browser OS +BrowserName=Název prohlížeče +BrowserOS=Prohlížeč OS ListEvents=Audit událostí ListOfSecurityEvents=Seznam Dolibarr událostí zabezpečení SecurityEventsPurged=Bezpečnostní akce očistil @@ -999,7 +999,7 @@ TriggerDisabledAsModuleDisabled=Trigger v tomto souboru jsou zakázány jako mod TriggerAlwaysActive=Trigger v tomto souboru jsou vždy aktivní, ať už jsou aktivované Dolibarr moduly. TriggerActiveAsModuleActive=Trigger v tomto souboru jsou aktivní jako modul <b>%s</b> je povoleno. GeneratedPasswordDesc=Definujte zde pravidlo, které chcete použít k vytvoření nového hesla, pokud se zeptáte mít automaticky generované heslo -DictionaryDesc=Define here all reference datas. You can complete predefined value with yours. +DictionaryDesc=Definujte zde všechny referenční data. Můžete doplnit předdefinovanou hodnotu s vašimi. ConstDesc=Na této stránce můžete upravovat všechny ostatní parametry nejsou k dispozici v předchozích stránkách. Oni jsou vyhrazeny parametry pro zkušené vývojáře nebo troubleshouting. OnceSetupFinishedCreateUsers=Upozornění, že jste správce Dolibarr uživatel. Správce Uživatelské slouží k nastavení Dolibarr. Pro běžné použití Dolibarr, se doporučuje používat non správce uživateli vytvořené od uživatelů a skupin Menu. MiscellaneousDesc=Definujte zde všechny ostatní parametry vztahující se k bezpečnosti. @@ -1017,14 +1017,14 @@ NoEventOrNoAuditSetup=Žádná událost zabezpečení byl zaznamenán ještě. T NoEventFoundWithCriteria=Žádná událost zabezpečení byl nalezen na těchto vyhledávacích kritérii. SeeLocalSendMailSetup=Podívejte se na místní sendmail nastavení BackupDesc=Chcete-li provést kompletní zálohu Dolibarr, musíte: -BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example). -BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant. +BackupDesc2=Uložení obsahu dokumentů adresáře <b>(% s),</b> který obsahuje všechny nahrané a vytvořené soubory (můžete udělat zip například). +BackupDesc3=Uložte obsah databáze <b>(%s),</b> do souboru výpisu. K tomu můžete použít následující asistenta. BackupDescX=Archivní adresář by měl být skladován na bezpečném místě. BackupDescY=Vygenerovaný soubor výpisu by měl být skladován na bezpečném místě. BackupPHPWarning=Záloha nemůže být garantováno s touto metodou. Preferuji předchozí RestoreDesc=Chcete-li obnovit zálohu Dolibarr, musíte: -RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>). -RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. +RestoreDesc2=Obnovit archivní soubor (soubor zip například) z adresáře dokumentů extrahovat strom souborů v dokumentech adresáři nového zařízení Dolibarr nebo do tohoto aktuálních dokumentech directoy <b>(%s).</b> +RestoreDesc3=Obnovení dat, ze záložního souboru výpisu, do databáze nové instalace Dolibarr nebo do databáze tohoto stávající instalace <b>(%s).</b> Varování, po obnovení je dokončeno, musíte použít login / heslo, které existovaly, když byla provedena záloha, se znovu připojit. Chcete-li obnovit záložní databázi do této stávající instalace, můžete sledovat tento asistenta. RestoreMySQL=MySQL import ForcedToByAModule= Toto pravidlo je nucen <b>%s</b> aktivovaným modulem PreviousDumpFiles=Dostupné databázové soubory zálohování výpisu @@ -1051,26 +1051,26 @@ MAIN_PROXY_PASS=Heslo používat proxy server DefineHereComplementaryAttributes=Definujte zde všechny atributy, které ještě nejsou k dispozici ve výchozím nastavení, a že chcete být podporovány %s. ExtraFields=Doplňkové atributy ExtraFieldsLines=Doplňkové atributy (linky) -ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) -ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) +ExtraFieldsSupplierOrdersLines=Doplňkové atributy (objednávka linky) +ExtraFieldsSupplierInvoicesLines=Doplňkové atributy (linky faktura) ExtraFieldsThirdParties=Doplňkové atributy (thirdparty) ExtraFieldsContacts=Doplňkové atributy (kontakt / adresa) ExtraFieldsMember=Doplňkové atributy (člen) ExtraFieldsMemberType=Doplňkové atributy (člen typ) -ExtraFieldsCustomerOrders=Complementary attributes (orders) -ExtraFieldsCustomerInvoices=Complementary attributes (invoices) +ExtraFieldsCustomerOrders=Doplňkové atributy (objednávky) +ExtraFieldsCustomerInvoices=Doplňkové atributy (faktury) ExtraFieldsSupplierOrders=Doplňkové atributy (objednávky) ExtraFieldsSupplierInvoices=Doplňkové atributy (faktury) ExtraFieldsProject=Doplňkové atributy (projekty) ExtraFieldsProjectTask=Doplňkové atributy (úkoly) -ExtraFieldHasWrongValue=Attribute %s has a wrong value. +ExtraFieldHasWrongValue=Atribut %s má nesprávnou hodnotu. AlphaNumOnlyCharsAndNoSpace=pouze alphanumericals znaky bez mezer -AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space +AlphaNumOnlyLowerCharsAndNoSpace=pouze alfanumerické znaky s malými písmeny bez mezer SendingMailSetup=Nastavení sendings e-mailem SendmailOptionNotComplete=Upozornění na některých operačních systémech Linux, posílat e-maily z vašeho e-mailu, musíte sendmail provedení instalace obsahuje volbu-BA (parametr mail.force_extra_parameters do souboru php.ini). Pokud někteří příjemci nikdy přijímat e-maily, zkuste upravit tento parametr společně s PHP mail.force_extra_parameters =-BA). PathToDocuments=Cesta k dokumentům PathDirectory=Adresář -SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. +SendmailOptionMayHurtBuggedMTA=Funkce se odesílat e-maily pomocí metody "PHP mail direct" bude generovat e-mailové zprávy, které by mohly být není správně analyzovat některými dostávají poštovní servery. Výsledkem je, že některé maily nelze číst lidé hostovaných těmito platformami odposloucháván. To je případ některých poskytovatelů služeb Internetu (Ex: Orange ve Francii). To není problém do Dolibarr ani do PHP, ale na přijímání e-mailový server. Můžete však přidat možnost MAIN_FIX_FOR_BUGGED_MTA do 1 do nastavení - jiné upravovat Dolibarr k tomu nedošlo. Nicméně, může dojít k problému s jinými servery, které respektují přísně standard SMTP. Jiné řešení (doporučeno), je použít metodu "SMTP socket knihovnu", které nemá žádné nevýhody. TranslationSetup=Konfigurace de la traduction TranslationDesc=Volba jazyka viditelné na obrazovce lze měnit: <br> * Globálně z menu <strong>Domů - Nastavení - Zobrazení</strong> <br> * Pro uživatele pouze ze <strong>zobrazení</strong> na kartě <strong>Uživatelské</strong> uživatelského karty (klikněte na přihlášení v horní části obrazovky). TotalNumberOfActivatedModules=Celkový počet aktivovaných funkcí modulů: <b>%s</b> @@ -1081,20 +1081,20 @@ OnlyFollowingModulesAreOpenedToExternalUsers=Na vědomí, že pouze následujíc SuhosinSessionEncrypt=Úložiště relace šifrována Suhosin ConditionIsCurrently=Podmínkou je v současné době %s YouUseBestDriver=Pomocí ovladače %s, že je nejlepší řidič současné době k dispozici. -YouDoNotUseBestDriver=You use drive %s but driver %s is recommended. +YouDoNotUseBestDriver=Můžete použít disk %s, ale ovladač %s je doporučen. NbOfProductIsLowerThanNoPb=Máte jen %s produktů / služeb do databáze. To však není nutné žádné zvláštní optimalizace. SearchOptim=Optimalizace pro vyhledávače YouHaveXProductUseSearchOptim=Máte %s produkt do databáze. Měli byste přidat konstantní PRODUCT_DONOTSEARCH_ANYWHERE do 1 do Home-Nastavení-Ostatní, můžete omezit vyhledávání na začátku řetězce, která umožňují pro databáze používat index, a vy byste měli dostat okamžitou odpověď. BrowserIsOK=Používáte %s webovém prohlížeči. Tento prohlížeč je v pořádku pro bezpečnost a výkon. BrowserIsKO=Používáte %s webovém prohlížeči. Tento prohlížeč je známo, že špatná volba pro bezpečnost, výkon a spolehlivost. Jsme Doporučuji vám používat Firefox, Chrome, Operu nebo Safari. -XDebugInstalled=XDebug is loaded. +XDebugInstalled=Xdebug je načten. XCacheInstalled=XCache načten. -AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". -FieldEdition=Edition of field %s +AddRefInList=Displej zákazník / dodavatel ref do seznamu (vyberte seznam nebo ComboBox) a většina z hypertextový odkaz. Třetí strany budou zobrazí s názvem "CC12345 - SC45678 - Velké firmy coorp", namísto "The velké společnosti coorp". +FieldEdition=Editace položky %s FixTZ=TimeZone fix FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) -GetBarCode=Get barcode -EmptyNumRefModelDesc=The code is free. This code can be modified at any time. +GetBarCode=Získat čárový kód +EmptyNumRefModelDesc=Kód je volný. Tento kód můžete kdykoliv změnit. ##### Module password generation PasswordGenerationStandard=Zpět heslo generované podle interního algoritmu Dolibarr: 8 znaků obsahující sdílené čísla a znaky malými písmeny. PasswordGenerationNone=Nenaznačují žádné vygenerované heslo. Heslo musí být v provedení ručně. @@ -1122,8 +1122,8 @@ WatermarkOnDraft=Vodoznak na návrhu dokumentu JSOnPaimentBill=Activate feature to autofill payment lines on payment form CompanyIdProfChecker=Pravidla pro profesionální IDs MustBeUnique=Musí být jedinečný? -MustBeMandatory=Mandatory to create third parties ? -MustBeInvoiceMandatory=Mandatory to validate invoices ? +MustBeMandatory=Musí být povinné pro třetí strany? +MustBeInvoiceMandatory=Povinné pro ověření faktur? Miscellaneous=Smíšený ##### Webcal setup ##### WebCalSetup=WebCalendar LINK @@ -1137,7 +1137,7 @@ WebCalServer=Server hosting kalendář databáze WebCalDatabaseName=Název databáze WebCalUser=Uživatel přístup k databázi WebCalSetupSaved=WebCalendar nastavení bylo úspěšně uloženo. -WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful. +WebCalTestOk=Připojení k serveru "% s" na databázi '% s' s uživatelem '% s' je úspěšné. WebCalTestKo1=Připojení k "%s" serveru úspěšná, ale databáze "%s" by nebylo možno dosáhnout. WebCalTestKo2=Připojení k serveru "%s" s uživatelem "%s 'se nezdařilo. WebCalErrorConnectOkButWrongDatabase=Připojení úspěšné, ale databáze nevypadá být WebCalendar databáze. @@ -1179,24 +1179,24 @@ AddDeliveryAddressAbility=Přidat dodací lhůta schopnost UseOptionLineIfNoQuantity=Řada výrobků / služeb s nulové hodnoty je považován za možnost FreeLegalTextOnProposal=Volný text o obchodních návrhů WatermarkOnDraftProposal=Vodoznak na předloh návrhů komerčních (none-li prázdný) -BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Zeptejte se na umístění bankovního účtu nabídky ##### AskPriceSupplier ##### -AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierSetup=Cena požaduje nastavení dodavatelé modul AskPriceSupplierNumberingModules=Price requests suppliers numbering models AskPriceSupplierPDFModules=Price requests suppliers documents models -FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +FreeLegalTextOnAskPriceSupplier=Volný text na žádosti o cenový dodavatele WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) -BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Zeptejte se na bankovní účet destinaci nabídce ceny ##### Orders ##### OrdersSetup=Objednat řízení nastavení OrdersNumberingModules=Objednávky číslování modelů OrdersModelModule=Objednat dokumenty modely -HideTreadedOrders=Hide the treated or cancelled orders in the list +HideTreadedOrders=Skrýt ošetřené nebo zrušené objednávky v seznamu ValidOrderAfterPropalClosed=Pro potvrzení objednávky po návrhu užší, umožňuje, aby krok za prozatímní pořadí FreeLegalTextOnOrders=Volný text o objednávkách WatermarkOnDraftOrders=Vodoznak na konceptech objednávek (pokud žádný prázdný) ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable -BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Zeptejte se na bankovní účet destinaci objednávky ##### Clicktodial ##### ClickToDialSetup=Klikněte pro Dial Nastavení modulu ClickToDialUrlDesc=Url volána, když se provádí kliknutím na tel. Piktogram. Do pole URL můžete použít značky <br> <b>__PHONETO__</b> Který bude nahrazen s telefonním číslem osoby volat <br> <b>__PHONEFROM__</b> Který bude nahrazen tel. číslo volajícího (vaše) <br> <b>__LOGIN__</b> Který bude nahrazen s clicktodial přihlášení (definované na kartě uživatele) <br> <b>__PASS__</b> Který bude nahrazen s clicktodial heslo (definované na kartě uživatele). @@ -1209,11 +1209,11 @@ FicheinterNumberingModules=Intervenční číslování modely TemplatePDFInterventions=Intervenční karet dokumenty modely WatermarkOnDraftInterventionCards=Vodoznak na dokumentech intervenčních karty (pokud žádný prázdný) ##### Contracts ##### -ContractsSetup=Contracts/Subscriptions module setup +ContractsSetup=Nastavení modulu Zakázky/předplatné ContractsNumberingModules=Zakázky číslování moduly -TemplatePDFContracts=Contracts documents models -FreeLegalTextOnContracts=Free text on contracts -WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) +TemplatePDFContracts=Kontrakty dokumenty modely +FreeLegalTextOnContracts=Volný text na smlouvách +WatermarkOnDraftContractCards=Vodoznak o návrzích smluv (none-li prázdný) ##### Members ##### MembersSetup=Členové modul nastavení MemberMainOptions=Hlavní volby @@ -1288,9 +1288,9 @@ LDAPSynchroKO=Nepodařilo synchronizace testu LDAPSynchroKOMayBePermissions=Nepodařilo synchronizace test. Zkontrolujte, zda je přípojka na server je správně nakonfigurován a umožňuje LDAP udpates LDAPTCPConnectOK=TCP připojení k LDAP serveru (Server úspěšných = %s, %s port =) LDAPTCPConnectKO=TCP připojení k LDAP serveru selhalo (Server = %s, Port = %s) -LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindOK=Připojení/Autentifikace k LDAP serveru úspěšná (Server =%s, Port =%s Admin =%s, Heslo =%s) LDAPBindKO=Připojit / Authentificate k LDAP serveru selhalo (Server = %s, Port = %s, Admin = %s, Password = %s) -LDAPUnbindSuccessfull=Disconnect successful +LDAPUnbindSuccessfull=Odpojení úspěšné LDAPUnbindFailed=Odpojení se nezdařilo LDAPConnectToDNSuccessfull=Připojení k DN (%s) úspěšná LDAPConnectToDNFailed=Připojení k DN (%s) se nezdařila @@ -1336,8 +1336,8 @@ LDAPFieldCountry=Země LDAPFieldCountryExample=Příklad: c LDAPFieldDescription=Popis LDAPFieldDescriptionExample=Příklad: popis -LDAPFieldNotePublic=Public Note -LDAPFieldNotePublicExample=Example : publicnote +LDAPFieldNotePublic=Veřejná poznámka +LDAPFieldNotePublicExample=Příklad: publicnote LDAPFieldGroupMembers= Členové skupiny LDAPFieldGroupMembersExample= Příklad: uniqueMember LDAPFieldBirthdate=Datum narození @@ -1349,7 +1349,7 @@ LDAPFieldSidExample=Příklad: objectSID LDAPFieldEndLastSubscription=Datum ukončení předplatného LDAPFieldTitle=Post / Funkce LDAPFieldTitleExample=Příklad: title -LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class) +LDAPParametersAreStillHardCoded=Parametry LDAP jsou stále napevno (v třídě kontaktu) LDAPSetupNotComplete=Nastavení LDAP není úplná (přejděte na záložku Ostatní) LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Žádný správce nebo heslo k dispozici. LDAP přístup budou anonymní a pouze pro čtení. LDAPDescContact=Tato stránka umožňuje definovat atributy LDAP název stromu LDAP pro každý údajům o kontaktech Dolibarr. @@ -1362,9 +1362,9 @@ PerfDolibarr=Výkon Nastavení / optimalizace zpráva YouMayFindPerfAdviceHere=Najdete na této stránce nějaké kontroly nebo rad týkajících se výkonnosti. NotInstalled=Ne, takľe není váš server zpomalit tím. ApplicativeCache=Aplikačních mezipaměti -MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.<br>More information here <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>Note that a lot of web hosting provider does not provide such cache server. -MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete. -MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. +MemcachedNotAvailable=Žádné applicative mezipaměti nalezen. Můžete zvýšit výkon instalací Memcached mezipaměti serveru a modul schopný použít tento mezipaměti serveru. <br> Více informací zde <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a> . <br> Všimněte si, že spousta poskytovatele web hosting neposkytuje takovou mezipaměti serveru. +MemcachedModuleAvailableButNotSetup=Modul Memcached pro aplikační mezipaměť nalezen, ale nastavení modulu není kompletní. +MemcachedAvailableAndSetup=Modul Memcached určené k použití Memcached serveru je povoleno. OPCodeCache=Opcode mezipaměti NoOPCodeCacheFound=Žádné opcode nalezená keš. Může být použít další opcode paměť než XCache nebo eAccelerator (dobré), může být, že nemáte opcode cache (velmi špatně). HTTPCacheStaticResources=HTTP cache pro statické zdroje (css, img, javascript) @@ -1386,7 +1386,7 @@ ModifyProductDescAbility=Personalizace popisy produktů ve formách ViewProductDescInFormAbility=Vizualizace popisy produktů ve formách (jinak jako vyskakovací bublině) ViewProductDescInThirdpartyLanguageAbility=Vizualizace Popisy výrobků v thirdparty jazyce UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list). +UseSearchToSelectProduct=Použijte vyhledávací formulář pro výběr produku (spíše než rozevíracího seznamu). UseEcoTaxeAbility=Podpora Eco-taxe (WEEE) SetDefaultBarcodeTypeProducts=Výchozí typ čárového kódu použít pro produkty SetDefaultBarcodeTypeThirdParties=Výchozí typ čárového kódu použít k třetím osobám @@ -1420,9 +1420,9 @@ BarcodeDescUPC=Čárových kódů typu UPC BarcodeDescISBN=Čárový kód typu ISBN BarcodeDescC39=Čárový kód typu C39 BarcodeDescC128=Čárový kód typu C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".<br>For example: /usr/local/bin/genbarcode +GenbarcodeLocation=Čárový kód generování nástroj pro příkazovou řádku (používaný vnitřním motorem u některých typů čárových kódů). Musí být v souladu s "genbarcode". <br> Například: / usr / local / bin / genbarcode BarcodeInternalEngine=Vnitřní motor -BarCodeNumberManager=Manager to auto define barcode numbers +BarCodeNumberManager=Manažer automatického definování čísel čárových kódů ##### Prelevements ##### WithdrawalsSetup=Odstoupení modul nastavení ##### ExternalRSS ##### @@ -1434,19 +1434,19 @@ RSSUrlExample=Zajímavý RSS zdroj MailingSetup=E-mailem Nastavení modulu MailingEMailFrom=Odesílatele (From) pro emailů zasílaných e-mailem na modul MailingEMailError=Zpět E-mail (chyby-do) e-maily s chybami -MailingDelay=Seconds to wait after sending next message +MailingDelay=Sekund čekání po odeslání další zprávy ##### Notification ##### -NotificationSetup=EMail notification module setup +NotificationSetup=Nastavení modulu e-mailových oznámení NotificationEMailFrom=Odesílatele (From) e-maily zaslané na oznámení -ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules) -FixedEmailTarget=Fixed email target +ListOfAvailableNotifications=Seznam akcí můžete nastavit upozornění na, pro každou thirdparty (jít do thirdparty karty do nastavení), nebo tím, že stanoví fixní e-mail (seznam závisí na aktivovaných modulech) +FixedEmailTarget=Pevná emailový cíl ##### Sendings ##### SendingsSetup=Odeslání Nastavení modulu SendingsReceiptModel=Odeslání stvrzenky modelu SendingsNumberingModules=Sendings číslování moduly -SendingsAbility=Support shipment sheets for customer deliveries +SendingsAbility=Podpora zásilka listy pro dodávky zákazníkům NoNeedForDeliveryReceipts=Ve většině případů jsou sendings příjmy použity jak listů pro dodávky zákazníkům (seznam výrobků k odeslání) a na arších, které je recevied a podepsán zákazníkem. Takže dodávek výrobků příjmy je duplicitní funkce a je zřídka aktivován. -FreeLegalTextOnShippings=Free text on shipments +FreeLegalTextOnShippings=Volný text o přepravě ##### Deliveries ##### DeliveryOrderNumberingModules=Produkty dodávky příjem číslování modul DeliveryOrderModel=Produkty dodávky přijetí modelu @@ -1457,7 +1457,7 @@ AdvancedEditor=Rozšířené editor ActivateFCKeditor=Aktivace pokročilé editor pro: FCKeditorForCompany=WYSIWIG vytvoření / edici prvky popisu a poznámka (s výjimkou výrobků / služeb) FCKeditorForProduct=WYSIWIG vytvoření / edice produktů / služeb popis a poznámky -FCKeditorForProductDetails=WYSIWIG creation/edition of products details lines for all entities (proposals, orders, invoices, etc...). <font class="warning">Warning: Using this option for this case is seriously not recommended as it can create problems with special characters and page formating when building PDF files.</font> +FCKeditorForProductDetails=WYSIWIG tvorba / vydání z výrobků Detaily linky pro všechny subjekty (návrhy, objednávky, faktury, atd ...). <font class="warning">Upozornění: Použití této možnosti pro tento případ je vážně nedoporučuje, protože to může způsobit problémy se speciálními znaky a formátování stránky při vytváření PDF soubory.</font> FCKeditorForMailing= WYSIWIG vytvoření / edice pro hromadné eMailings (Nástroje-> e-mailem) FCKeditorForUserSignature=WYSIWIG vytvoření / edice uživatelského podpisu FCKeditorForMail=WYSIWIG vytvoření / edice pro veškerou poštu (kromě outils-> e-mailem) @@ -1467,8 +1467,8 @@ OSCommerceTestOk=Připojení k serveru "%s" na databázi "%s" OSCommerceTestKo1=Připojení k "%s" serveru úspěšná, ale databáze "%s" by nebylo možno dosáhnout. OSCommerceTestKo2=Připojení k serveru "%s" s uživatelem "%s 'se nezdařilo. ##### Stock ##### -StockSetup=Warehouse module setup -UserWarehouse=Use user personal warehouses +StockSetup=Konfigurace modulu Sklady +UserWarehouse=Používejte osobní uživatelské sklady IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up. ##### Menu ##### MenuDeleted=Menu smazán @@ -1504,11 +1504,11 @@ ConfirmDeleteLine=Jste si jisti, že chcete smazat tento řádek? ##### Tax ##### TaxSetup=Daně, sociální příspěvky a dividendy modul nastavení OptionVatMode=DPH z důvodu -OptionVATDefault=Cash basis -OptionVATDebitOption=Accrual basis +OptionVATDefault=Cash základ +OptionVATDebitOption=Akruální báze OptionVatDefaultDesc=DPH je splatná: <br> - Na dobírku za zboží (používáme data vystavení faktury) <br> - Plateb za služby OptionVatDebitOptionDesc=DPH je splatná: <br> - Na dobírku za zboží (používáme data vystavení faktury) <br> - Na fakturu (debetní) na služby -SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option: +SummaryOfVatExigibilityUsedByDefault=Čas DPH exigibility standardně dle zvolené varianty: OnDelivery=Na dobírku OnPayment=Na zaplacení OnInvoice=Na faktuře @@ -1526,20 +1526,20 @@ AgendaSetup=Akce a agenda Nastavení modulu PasswordTogetVCalExport=Klíč povolit export odkaz PastDelayVCalExport=Neexportovat události starší než AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events) -AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filter of agenda view -AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view -AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda +AGENDA_DEFAULT_FILTER_TYPE=Nastavit automaticky tento typ události do vyhledávacího filtru pohledu agendy +AGENDA_DEFAULT_FILTER_STATUS=Nastavit automaticky tento stav pro události do vyhledávacího filtru pohledu agendy +AGENDA_DEFAULT_VIEW=Karta, kterou chcete otevřít ve výchozím nastavení při výběru v menu Agenda ##### ClickToDial ##### ClickToDialDesc=Tento modul umožňuje přidat ikonu po telefonních čísel. Klepnutím na tuto ikonu bude volat server s konkrétní URL, kterou definujete níže. To lze použít k volání call centra systému z Dolibarr které mohou volat na telefonní číslo SIP systému pro příklad. ##### Point Of Sales (CashDesk) ##### CashDesk=Bod prodeje CashDeskSetup=Místě prodeje modulu nastavení -CashDeskThirdPartyForSell=Default generic third party to use for sells +CashDeskThirdPartyForSell=Výchozí obecná třetí strana použitá pro prodej CashDeskBankAccountForSell=Výchozí účet použít pro příjem plateb v hotovosti CashDeskBankAccountForCheque= Výchozí účet použít pro příjem plateb šekem CashDeskBankAccountForCB= Výchozí účet použít pro příjem plateb prostřednictvím kreditní karty CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). -CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease +CashDeskIdWareHouse=Vynutit a omezit sklad používat pro pokles zásob StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. @@ -1567,7 +1567,7 @@ SuppliersSetup=Dodavatel modul nastavení SuppliersCommandModel=Kompletní šablona se s dodavately řádu (logo. ..) SuppliersInvoiceModel=Kompletní šablona dodavatelské faktury (logo. ..) SuppliersInvoiceNumberingModel=Dodavatelských faktur číslování modelů -IfSetToYesDontForgetPermission=If set to yes, don't forget to provide permissions to groups or users allowed for the second approval +IfSetToYesDontForgetPermission=Pokud je nastaveno na ano, nezapomeňte poskytnout oprávnění skupiny nebo uživatele povolených pro druhou schválení ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind modul nastavení PathToGeoIPMaxmindCountryDataFile=Cesta k souboru obsahující Maxmind IP pro země překladu. <br> Příklady: <br> / Usr / local / share / GeoIP / GeoIP.dat <br> / Usr / share / GeoIP / GeoIP.dat @@ -1585,40 +1585,40 @@ TaskModelModule=Úkoly zprávy Vzor dokladu ECMSetup = GED Setup ECMAutoTree = Automatické strom složek a dokumentů ##### Fiscal Year ##### -FiscalYears=Fiscal years -FiscalYear=Fiscal year -FiscalYearCard=Fiscal year card -NewFiscalYear=New fiscal year -EditFiscalYear=Edit fiscal year -OpenFiscalYear=Open fiscal year -CloseFiscalYear=Close fiscal year -DeleteFiscalYear=Delete fiscal year -ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? -Opened=Opened -Closed=Closed -AlwaysEditable=Can always be edited +FiscalYears=Fiskální roky +FiscalYear=Fiskální rok +FiscalYearCard=Karta fiskálního roku +NewFiscalYear=Nový fiskální rok +EditFiscalYear=Upravit fiskální rok +OpenFiscalYear=Otevřeno fiskální rok +CloseFiscalYear=Zavřít fiskální rok +DeleteFiscalYear=Smazat fiskální rok +ConfirmDeleteFiscalYear=Jste si jisti, že chcete tento fiskální rok smazat? +Opened=Otevřeno +Closed=Zavřeno +AlwaysEditable=Může být vždy upraveno MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) -NbMajMin=Minimum number of uppercase characters -NbNumMin=Minimum number of numeric characters -NbSpeMin=Minimum number of special characters -NbIteConsecutive=Maximum number of repeating same characters +NbMajMin=Minimální počet velkých písmen +NbNumMin=Minimální počet číselných znaků +NbSpeMin=Minimální počet speciálních znaků +NbIteConsecutive=Maximální počet opakování stejných znaků NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation -SalariesSetup=Setup of module salaries -SortOrder=Sort order -Format=Format +SalariesSetup=Nastavení modulu platů +SortOrder=Řazení objedávek +Format=Formát TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type -IncludePath=Include path (defined into variable %s) -ExpenseReportsSetup=Setup of module Expense Reports -TemplatePDFExpenseReports=Document templates to generate expense report document -NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +IncludePath=Zahrnout cestu (definováno v proměnné% s) +ExpenseReportsSetup=Nastavení modulu Expense Reports +TemplatePDFExpenseReports=Šablon dokumentů ke generování dokumentu sestavy výdajů +NoModueToManageStockDecrease=Žádný modul schopen řídit automatickou legální pokles byl aktivován. Sklad snížení bude provedeno pouze na ruční zadávání. NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for EMail notifications by enabling and configuring the module "Notification". -ListOfNotificationsPerContact=List of notifications per contact* -ListOfFixedNotifications=List of fixed notifications +ListOfNotificationsPerContact=Seznam oznámení na kontakt * +ListOfFixedNotifications=Seznam pevných oznámení GoOntoContactCardToAddMore=Go on the tab "Notifications" of a thirdparty contact to add or remove notifications for contacts/addresses -Threshold=Threshold -BackupDumpWizard=Wizard to build database backup dump file -SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason: -SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is only manual steps a privileged user can do. +Threshold=Práh +BackupDumpWizard=Průvodce vybudovat záložní databázi soubor s výpisem +SomethingMakeInstallFromWebNotPossible=Instalace externího modulu není možné z webového rozhraní z tohoto důvodu: +SomethingMakeInstallFromWebNotPossible2=Z tohoto důvodu, proces upgradovat popsáno zde je pouze ruční kroky privilegovaný uživatel může dělat. InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file <strong>%s</strong> to allow this feature. ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br>- <strong>$dolibarr_main_url_root_alt</strong> enabled to value <strong>$dolibarr_main_url_root_alt="/custom"</strong><br>- <strong>$dolibarr_main_document_root_alt</strong> enabled to value <strong>"%s/custom"</strong> diff --git a/htdocs/langs/cs_CZ/agenda.lang b/htdocs/langs/cs_CZ/agenda.lang index 4d1d71528a4029aecf0174faec7c90775f3e3702..b7222546db9030d35cda24955dba6f01e9d4f34f 100644 --- a/htdocs/langs/cs_CZ/agenda.lang +++ b/htdocs/langs/cs_CZ/agenda.lang @@ -1,69 +1,69 @@ # Dolibarr language file - Source file is en_US - agenda IdAgenda=ID události Actions=Události -ActionsArea=Akce plocha (Akce a úkoly) -Agenda=Pořad jednání -Agendas=Pořad +ActionsArea=Plocha událostí (Akce a úkoly) +Agenda=Agenda +Agendas=Agendy Calendar=Kalendář Calendars=Kalendáře -LocalAgenda=Internal calendar -ActionsOwnedBy=Event owned by +LocalAgenda=Interní kalendář +ActionsOwnedBy=Vlastnictví události AffectedTo=Přiřazeno DoneBy=Provedl -Event=Event +Event=Událost Events=Události EventsNb=Počet událostí MyEvents=Moje události -OtherEvents=Další akce +OtherEvents=Další události ListOfActions=Seznam událostí Location=Umístění -EventOnFullDay=Akce po celý den (y) -SearchAnAction= Hledat událost / úkol +EventOnFullDay=Událost pro celý den (y) +SearchAnAction= Hledat událost/úkol MenuToDoActions=Všechny neúplné události -MenuDoneActions=Všechny ukončené akce +MenuDoneActions=Všechny ukončené události MenuToDoMyActions=Moje neúplné události -MenuDoneMyActions=Moje ukončených akcí -ListOfEvents=List of events (internal calendar) -ActionsAskedBy=Akce hlášeny -ActionsToDoBy=Akce přiřazené -ActionsDoneBy=Akce provedené -ActionsForUser=Events for user -ActionsForUsersGroup=Events for all users of group -ActionAssignedTo=Event assigned to -AllMyActions= Všechny mé akce / úkoly +MenuDoneMyActions=Moje ukončené události +ListOfEvents=Výpis událostí (interní kalendář) +ActionsAskedBy=Nahlášené události +ActionsToDoBy=Přiřazené události +ActionsDoneBy=Provedené události +ActionsForUser=Události pro uživatele +ActionsForUsersGroup=Události pro všechny uživatelské skupiny +ActionAssignedTo=Událost přiřazena +AllMyActions= Všechny mé události/úkoly AllActions= Všechny události / úkoly ViewList=Zobrazení seznamu -ViewCal=Měsíční pohled +ViewCal=Měsíční zobrazení ViewDay=Denní zobrazení -ViewWeek=Zobrazit týden -ViewPerUser=Per user view +ViewWeek=Týdenní zobrazení +ViewPerUser=Zobrazení za uživatele ViewWithPredefinedFilters= Zobrazit s předem definovanými filtry -AutoActions= Automatické plnění -AgendaAutoActionDesc= Definujte zde události, na které chcete Dolibarr vytvořit automaticky událost v programu. Pokud není zaškrtnutá (ve výchozím nastavení), bude pouze manuální činnosti být zahrnuty do pořadu jednání. -AgendaSetupOtherDesc= Tato stránka poskytuje možnosti, jak dát export vašich akcí Dolibarr do externího kalendáře (thunderbird, Google kalendář, ...) -AgendaExtSitesDesc=Tato stránka umožňuje deklarovat externí zdroje kalendářů vidět své akce do programu Dolibarr. +AutoActions= Automatické naplnění +AgendaAutoActionDesc= Definujte zde události, pro které chcete vytvořit automaticky událost v programu. Pokud není ve výchozím nastavení zaškrtnuta, budou zahrnuty pouze manuální akce v agendě. +AgendaSetupOtherDesc= Tato stránka poskytuje možnosti, jak povolit export vašich akcí do externího kalendáře (Thunderbird, Google kalendář, ...) +AgendaExtSitesDesc=Tato stránka umožňuje deklarovat externí zdroje kalendářů pro možnost vidět své akce v agendách programu. ActionsEvents=Události, pro které Dolibarr vytvoří akci v programu automaticky -PropalValidatedInDolibarr=Návrh %s ověřena +PropalValidatedInDolibarr=Návrh %s ověřen InvoiceValidatedInDolibarr=Faktura %s ověřena -InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS -InvoiceBackToDraftInDolibarr=Faktura %s vrátit do stavu návrhu +InvoiceValidatedInDolibarrFromPos=Faktura %s ověřena z POS +InvoiceBackToDraftInDolibarr=Faktura %s vrácena do stavu návrhu InvoiceDeleteDolibarr=Faktura %s smazána -OrderValidatedInDolibarr=Objednat %s ověřena -OrderDeliveredInDolibarr=Order %s classified delivered -OrderCanceledInDolibarr=Objednat %s zrušen -OrderBilledInDolibarr=Order %s classified billed -OrderApprovedInDolibarr=Objednat %s schválen -OrderRefusedInDolibarr=Order %s refused -OrderBackToDraftInDolibarr=Objednat %s vrátit do stavu návrhu -OrderCanceledInDolibarr=Objednat %s zrušen -ProposalSentByEMail=Komerční návrh %s zaslána e-mailem -OrderSentByEMail=%s zákazníků objednávka zaslána e-mailem -InvoiceSentByEMail=%s faktuře Zákazníka zaslána e-mailem -SupplierOrderSentByEMail=%s Dodavatel objednávka zaslána e-mailem -SupplierInvoiceSentByEMail=%s dodavatelské faktury zasílané e-mailem -ShippingSentByEMail=Shipment %s sent by EMail -ShippingValidated= Shipment %s validated -InterventionSentByEMail=Intervention %s sent by EMail +OrderValidatedInDolibarr=Objednávka %s ověřena +OrderDeliveredInDolibarr=Objednávka %s označena jako dodaná +OrderCanceledInDolibarr=Objednávka %s zrušena +OrderBilledInDolibarr=Objednávka %s označena jako zaúčtovaná +OrderApprovedInDolibarr=Objednávka %s schválena +OrderRefusedInDolibarr=Objednávka %s zamítnuta +OrderBackToDraftInDolibarr=Objednávka %s vrácena do stavu návrhu +OrderCanceledInDolibarr=Objednávka %s zrušena +ProposalSentByEMail=Komerční návrh %s zaslán e-mailem +OrderSentByEMail=Zákaznická objednávka %s zaslána e-mailem +InvoiceSentByEMail=Zákaznická faktura %s zaslána e-mailem +SupplierOrderSentByEMail=Dodavatelská objednávka %s zaslána e-mailem +SupplierInvoiceSentByEMail=Dodavatelská faktura %s zaslána e-mailem +ShippingSentByEMail=Zásilka %s zaslána na e-mail +ShippingValidated= Zásilka %s ověřena +InterventionSentByEMail=Intervenceí %s zaslána e-mailem NewCompanyToDolibarr= Třetí strana vytvořena DateActionPlannedStart= Plánované datum zahájení DateActionPlannedEnd= Plánované datum ukončení @@ -72,27 +72,27 @@ DateActionDoneEnd= Skutečné datum ukončení DateActionStart= Datum zahájení DateActionEnd= Datum ukončení AgendaUrlOptions1=Můžete také přidat následující parametry filtrování výstupu: -AgendaUrlOptions2=<b>login=%s</b> to restrict output to actions created by or assigned to user <b>%s</b>. -AgendaUrlOptions3=<b>logina=%s</b> to restrict output to actions owned by a user <b>%s</b>. +AgendaUrlOptions2=<b>login=%s</b> omezuje výstup do akcí vytvořených nebo přiřazených uživateli <b>%s</b>. +AgendaUrlOptions3=<b>logina=%s</b> omezuje výstup na akce vlastněné uživatelem <b>%s</b>. AgendaUrlOptions4=<b>logint = %s</b> omezit výstup na akce přiřazených uživatelských <b>%s.</b> -AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> to restrict output to actions associated to project <b>PROJECT_ID</b>. +AgendaUrlOptionsProject=<b>projekt=PROJECT_ID</b> omezit výstup na akce spojené s projektem <b>PROJECT_ID</b>. AgendaShowBirthdayEvents=Zobrazit narozeniny kontaktů AgendaHideBirthdayEvents=Skrýt narozeniny kontaktů Busy=Zaneprázdněný ExportDataset_event1=Seznam agendy událostí -DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) -DefaultWorkingHours=Default working hours in day (Example: 9-18) +DefaultWorkingDays=Výchozí pracovní dny se pohybují v týdnu. (Příklad: 1-5, 1-6) +DefaultWorkingHours=Výchozí pracovní hodiny dne. (Příklad: 9-18) # External Sites ical -ExportCal=Export kalendář +ExportCal=Export kalendáře ExtSites=Importovat externí kalendáře -ExtSitesEnableThisTool=Show external calendars (defined into global setup) into agenda. Does not affect external calendars defined by users. +ExtSitesEnableThisTool=Zobrazit externí kalendáře (definováno v globálním nastavení) do agendy. Nemá vliv na externí kalendáře definované uživateli. ExtSitesNbOfAgenda=Počet kalendářů AgendaExtNb=Kalendář nb %s -ExtSiteUrlAgenda=URL pro přístup. Soubor iCal -ExtSiteNoLabel=Ne Popis -WorkingTimeRange=Working time range -WorkingDaysRange=Working days range -AddEvent=Create event -MyAvailability=My availability -ActionType=Event type -DateActionBegin=Start event date +ExtSiteUrlAgenda=URL pro přístup *.iCal souboru +ExtSiteNoLabel=Nepodepsáno +WorkingTimeRange=Rozsah pracovní doby +WorkingDaysRange=Rozsah pracovních dnů +AddEvent=Vytvořit událost +MyAvailability=Moje dostupnost +ActionType=Typ události +DateActionBegin=Datum zahájení události diff --git a/htdocs/langs/cs_CZ/bills.lang b/htdocs/langs/cs_CZ/bills.lang index 56e82e77ef45764f2f2f3a2130c69c7e313a5cbf..3357958b063459df018c36b34d752849a00b269a 100644 --- a/htdocs/langs/cs_CZ/bills.lang +++ b/htdocs/langs/cs_CZ/bills.lang @@ -1,204 +1,204 @@ # Dolibarr language file - Source file is en_US - bills Bill=Faktura Bills=Faktury -BillsCustomers=Customers invoices -BillsCustomer=Customers invoice -BillsSuppliers=Suppliers invoices -BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomers=Zákaznické faktury +BillsCustomer=Zákaznická faktura +BillsSuppliers=Dodavatelské faktury +BillsCustomersUnpaid=Nezaplacené faktury zákazníků BillsCustomersUnpaidForCompany=Nezaplacené faktury pro zákazníka %s BillsSuppliersUnpaid=Nezaplacené faktury dodavatele BillsSuppliersUnpaidForCompany=Nezaplacené faktury dodavatele pro %s BillsLate=Opožděné platby -BillsStatistics=Customers invoices statistics -BillsStatisticsSuppliers=Suppliers invoices statistics -DisabledBecauseNotErasable=Zakázáno, protože nelze smazat +BillsStatistics=Statistiky zákaznických faktur +BillsStatisticsSuppliers=Statistiky dodavatelských faktur +DisabledBecauseNotErasable=Zakázáno, protože nelze odstranit InvoiceStandard=Standardní faktura InvoiceStandardAsk=Standardní faktura -InvoiceStandardDesc=Tento druh faktury je společná faktura. -InvoiceDeposit=Zálohové faktury -InvoiceDepositAsk=Zálohové faktury -InvoiceDepositDesc=Tento druh faktury se děje, když je záloha byla přijata. +InvoiceStandardDesc=Tento druh faktury je obyčejná faktura. +InvoiceDeposit=Zálohová faktura +InvoiceDepositAsk=Zálohová faktura +InvoiceDepositDesc=Tento druh faktury se vystaví, když je záloha přijata. InvoiceProForma=Proforma faktura InvoiceProFormaAsk=Proforma faktura -InvoiceProFormaDesc=<b>Proforma faktura</b> je obraz skutečné faktury, ale nemá evidence hodnotu. +InvoiceProFormaDesc=<b>Proforma faktura</b> je obraz skutečné faktury, ale nemá účetní hodnotu. InvoiceReplacement=Náhradní faktura InvoiceReplacementAsk=Náhradní faktura faktury -InvoiceReplacementDesc=<b>Replacement invoice</b> is used to cancel and replace completely an invoice with no payment already received.<br><br>Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'. +InvoiceReplacementDesc=<b>Náhradní faktura</b> se používá ke zrušení a nahrazení neuhrazené a vrácené faktury. <br><br> Poznámka: Pouze neuhrazená faktura může být nahrazena. Pokud není uzavřena, bude automaticky nastavena jako 'opuštěná '. InvoiceAvoir=Dobropis -InvoiceAvoirAsk=Dobropis opravit fakturu -InvoiceAvoirDesc=<b>Dobropis</b> je negativní faktura slouží k řešení skutečnost, že faktura je množství, které se liší než částka skutečně vyplacena (protože zákazník zaplatil příliš mnoho omylem, nebo nebude vyplacena úplně, protože on se vrátil některé produkty, například). -invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice -invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice -invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount -ReplaceInvoice=Vyměňte faktury %s +InvoiceAvoirAsk=Opravit fakturu na dobropis +InvoiceAvoirDesc=<b>Dobropis</b> je negativní faktura řešící skutečnost, že na původní faktuře je částka, které se liší od částky skutečně vyplacené. (zákazník zaplatil více omylem, nebo nezaplatil vše, protože například vrátil některé produkty). +invoiceAvoirWithLines=Vytvořit dobropis s linkami od počátku faktury +invoiceAvoirWithPaymentRestAmount=Vytvořit dobropis se zbývající neuhrazenou původní fakturou +invoiceAvoirLineWithPaymentRestAmount=Dobropis na zbývající nezaplacené částky +ReplaceInvoice=Nahradit faktury %s ReplacementInvoice=Náhradní faktura ReplacedByInvoice=Nahrazeno faktuře %s ReplacementByInvoice=Nahrazeno faktuře CorrectInvoice=Správné faktura %s CorrectionInvoice=Oprava faktury -UsedByInvoice=Použita na úhradu faktur %s +UsedByInvoice=Použito na úhradu faktur %s ConsumedBy=Spotřebované -NotConsumed=Která nebyla spotřebována, -NoReplacableInvoice=Žádné výměnné faktury -NoInvoiceToCorrect=Ne fakturu opravit -InvoiceHasAvoir=Opraveno jedním nebo několika faktur -CardBill=Faktura karty -PredefinedInvoices=Předdefinované Faktury +NotConsumed=Nebylo spotřebováno +NoReplacableInvoice=Žádné faktury k výměně +NoInvoiceToCorrect=Źádné faktury k opravě +InvoiceHasAvoir=Opravena jedna nebo několik faktur +CardBill=Karta faktury +PredefinedInvoices=Předdefinované faktury Invoice=Faktura Invoices=Faktury InvoiceLine=Faktura linka -InvoiceCustomer=Zákazník faktura -CustomerInvoice=Zákazník faktura -CustomersInvoices=Zákazníci faktury -SupplierInvoice=Dodavatel fakturu -SuppliersInvoices=Dodavatelé faktury -SupplierBill=Dodavatel fakturu -SupplierBills=dodavatelé faktury +InvoiceCustomer=Faktura zákazníka +CustomerInvoice=Faktura zákazníka +CustomersInvoices=Faktury zákazníků +SupplierInvoice=Faktura dodavatele +SuppliersInvoices=Faktury dodavatelů +SupplierBill=Faktura dodavatele +SupplierBills=Faktury dodavatelů Payment=Platba -PaymentBack=Platba zpět +PaymentBack=Vrácení platby Payments=Platby -PaymentsBack=Platby zpět -PaidBack=Placené zpět +PaymentsBack=Vrácení plateb +PaidBack=Navrácené DatePayment=Datum platby DeletePayment=Odstranit platby ConfirmDeletePayment=Jste si jisti, že chcete smazat tuto platbu? -ConfirmConvertToReduc=Chcete převést tento dobropis nebo ukládáním do absolutního slevu? <br> Částka bude tak uložena mezi všemi slevy a může být použit jako slevu pro aktuální nebo budoucí faktury pro tohoto zákazníka. -SupplierPayments=Dodavatelé platby +ConfirmConvertToReduc=Chcete převést tento dobropis nebo depozit na absolutní slevu? <br> Částka bude tak uložena ke všem slevám a může být použit jako sleva pro aktuální nebo budoucí faktury tohoto zákazníka. +SupplierPayments=Platby dodavatelům ReceivedPayments=Přijaté platby ReceivedCustomersPayments=Platby přijaté od zákazníků -PayedSuppliersPayments=Payments payed to suppliers -ReceivedCustomersPaymentsToValid=Přijaté platby zákazníci ověřují -PaymentsReportsForYear=Platby zprávy pro %s -PaymentsReports=Platby zprávy -PaymentsAlreadyDone=Platby neučinily -PaymentsBackAlreadyDone=Platby zpět neučinily -PaymentRule=Platba pravidlo +PayedSuppliersPayments=Platby uhrazené dodavatelům +ReceivedCustomersPaymentsToValid=Ověřené přijaté platby od zákazníků +PaymentsReportsForYear=Zprávy o platbách pro %s +PaymentsReports=Zprávy o platbách +PaymentsAlreadyDone=Provedené platby +PaymentsBackAlreadyDone=Provedené platby zpět +PaymentRule=Pravidlo platby PaymentMode=Typ platby -PaymentTerm=Payment term -PaymentConditions=Payment terms -PaymentConditionsShort=Payment terms +PaymentTerm=Termín platby +PaymentConditions=Platební podmínky +PaymentConditionsShort=Platební podmínky PaymentAmount=Částka platby ValidatePayment=Ověření platby -PaymentHigherThanReminderToPay=Platební vyšší než upomínce k zaplacení -HelpPaymentHigherThanReminderToPay=Pozor, výše platby z jednoho nebo více účtů je vyšší než ve zbytku platit. <br> Upravte položky, jinak potvrdí a přemýšlet o vytvoření dobropisu přeplatku obdrží pro každou přeplatku faktury. -HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the rest to pay. <br> Edit your entry, otherwise confirm. -ClassifyPaid=Klasifikaci "Zaplaceno" -ClassifyPaidPartially=Klasifikovat "Placené částečně" -ClassifyCanceled=Klasifikovat "Opuštěné" -ClassifyClosed=Klasifikaci "uzavřeným" -ClassifyUnBilled=Classify 'Unbilled' +PaymentHigherThanReminderToPay=Platba vyšší než upomínka k zaplacení +HelpPaymentHigherThanReminderToPay=Pozor, výše platby z jednoho nebo více účtů je vyšší než v zůstatku. <br> Upravte položky nebo potvrďte a připravte vytvoření dobropisu přeplatku přijatého pro každou fakturu. +HelpPaymentHigherThanReminderToPaySupplier=Pozor, částka platby z jednoho nebo více účtů je vyšší, než ostatní úhrady. <br> Upravte položku, nebo potvrďte. +ClassifyPaid=Klasifikace 'Zaplaceno' +ClassifyPaidPartially=Klasifikace 'Částečně uhrazeno' +ClassifyCanceled=Klasifikace 'Opuštěné' +ClassifyClosed=Klasifikace 'Uzavřeno' +ClassifyUnBilled=Označit jako "Nevyfakturovaný" CreateBill=Vytvořit fakturu -AddBill=Create invoice or credit note +AddBill=Vytvořit fakturu nebo dobropis AddToDraftInvoices=Přidat k návrhu fakturu DeleteBill=Odstranit fakturu -SearchACustomerInvoice=Hledat zákaznické faktuře -SearchASupplierInvoice=Hledat na dodavatelské faktury +SearchACustomerInvoice=Hledat zákaznickou fakturu +SearchASupplierInvoice=Hledat dodavatelskou fakturu CancelBill=Storno faktury -SendRemindByMail=Poslat připomínku EMail -DoPayment=Do platbu -DoPaymentBack=Do platební záda -ConvertToReduc=Převod do budoucnosti slevou -EnterPaymentReceivedFromCustomer=Zadejte platby, které obdržel od zákazníka -EnterPaymentDueToCustomer=Provést platbu ze strany zákazníka -DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero +SendRemindByMail=Poslat upomínku e-mailem +DoPayment=Proveďte platbu +DoPaymentBack=Vraťte platbu +ConvertToReduc=Převod do budoucí slevy +EnterPaymentReceivedFromCustomer=Zadejte platbu obdrženoou od zákazníka +EnterPaymentDueToCustomer=Provést platbu pro zákazníka +DisabledBecauseRemainderToPayIsZero=Zakázáno, protože zbývající nezaplacená částka je nula Amount=Množství -PriceBase=Cena základní +PriceBase=Základní cena BillStatus=Stav faktury -BillStatusDraft=Návrh (musí být ověřena) -BillStatusPaid=Placený -BillStatusPaidBackOrConverted=Placené nebo převedeny na slevu -BillStatusConverted=Placená (připravena pro závěrečné faktuře) -BillStatusCanceled=Opuštěný -BillStatusValidated=Ověřené (třeba věnovat) +BillStatusDraft=Návrh (musí být ověřeno) +BillStatusPaid=Placeno +BillStatusPaidBackOrConverted=Placeno nebo převedeno na slevu +BillStatusConverted=Placeno (připraveno na závěrečné faktuře) +BillStatusCanceled=Opuštěno +BillStatusValidated=Ověřeno (je třeba uhradit) BillStatusStarted=Začínáme -BillStatusNotPaid=Nezaplatil -BillStatusClosedUnpaid=Uzavřená (neplacené) -BillStatusClosedPaidPartially=Placené (částečně) +BillStatusNotPaid=Nezaplaceno +BillStatusClosedUnpaid=Uzavřeno (neuhrazené) +BillStatusClosedPaidPartially=Placeno (částečně) BillShortStatusDraft=Návrh -BillShortStatusPaid=Placený +BillShortStatusPaid=Placeno BillShortStatusPaidBackOrConverted=Zpracované BillShortStatusConverted=Zpracované -BillShortStatusCanceled=Opuštěný -BillShortStatusValidated=Ověřené +BillShortStatusCanceled=Opuštěno +BillShortStatusValidated=Ověřeno BillShortStatusStarted=Začínáme -BillShortStatusNotPaid=Nezaplatil +BillShortStatusNotPaid=Nezaplaceno BillShortStatusClosedUnpaid=Zavřeno -BillShortStatusClosedPaidPartially=Placené (částečně) +BillShortStatusClosedPaidPartially=Placeno (částečně) PaymentStatusToValidShort=Chcete-li ověřit -ErrorVATIntraNotConfigured=Intracommunautary DIČ zatím není definován -ErrorNoPaiementModeConfigured=Žádná výchozí platební režim definován. Přejít na faktury modulu nastavení to opravit. -ErrorCreateBankAccount=Vytvořte si bankovní účet, pak přejděte na nastavení panelu faktur modulu definovat platebních režimů +ErrorVATIntraNotConfigured=Intracommunautary DIČ zatím není definováno +ErrorNoPaiementModeConfigured=Není definován žádný výchozí platební režim. Přejděte do modulu nastavení faktur a opravte to. +ErrorCreateBankAccount=Vytvořte si bankovní účet a pak přejděte do modulu nastavení faktur a nadefinujte platební režimy ErrorBillNotFound=Faktura %s neexistuje -ErrorInvoiceAlreadyReplaced=Chyba pokusu o ověření fakturu nahradit faktury %s. Ale tenhle byl již nahrazen faktuře %s. -ErrorDiscountAlreadyUsed=Chyba sleva již používá -ErrorInvoiceAvoirMustBeNegative=Chyba musí být správná faktura mít zápornou částku -ErrorInvoiceOfThisTypeMustBePositive=Chyba musí být tento typ faktury mají kladné hodnoty -ErrorCantCancelIfReplacementInvoiceNotValidated=Chyba, nelze zrušit, pokud faktura, která byla nahrazena jinou fakturu, která je stále ve stavu návrhu +ErrorInvoiceAlreadyReplaced=Chyba při pokusu o ověření faktury a nahrazení fakturou %s. Ta byla již nahrazena fakturou %s. +ErrorDiscountAlreadyUsed=Chyba, sleva byla již použita +ErrorInvoiceAvoirMustBeNegative=Chyba, správná faktura musí mít zápornou částku +ErrorInvoiceOfThisTypeMustBePositive=Chyba, tento typ faktury musí mít kladnou částku +ErrorCantCancelIfReplacementInvoiceNotValidated=Chyba, nelze zrušit, pokud faktura, která byla nahrazena jinou fakturu je stále ve stavu návrhu BillFrom=Z BillTo=Na ActionsOnBill=Akce na faktuře NewBill=Nová faktura LastBills=Poslední %s faktury -LastCustomersBills=Poslední %s zákazníkům faktury -LastSuppliersBills=Poslední %s dodavatelů faktury +LastCustomersBills=Poslední %s zákazníci faktury +LastSuppliersBills=Poslední %s dodavatelé faktury AllBills=Všechny faktury OtherBills=Ostatní faktury DraftBills=Návrhy faktury -CustomersDraftInvoices=Zákazníci návrh faktury -SuppliersDraftInvoices=Dodavatelé návrh faktury -Unpaid=Nezaplacený +CustomersDraftInvoices=Návrh zákaznické faktury +SuppliersDraftInvoices=Návrh dodavatelské faktury +Unpaid=Nezaplaceno ConfirmDeleteBill=Jste si jisti, že chcete smazat tuto fakturu? -ConfirmValidateBill=Jste si jisti, že chcete ověřit tuto fakturu s referenčními <b>%s?</b> -ConfirmUnvalidateBill=Jste si jisti, že chcete změnit fakturační <b>%s</b> do stavu návrhu? -ConfirmClassifyPaidBill=Jste si jisti, že chcete změnit fakturační <b>%s</b> do stavu placené? -ConfirmCancelBill=Jste si jisti, že chcete zrušit faktury <b>%s?</b> -ConfirmCancelBillQuestion=Proč chcete klasifikovat faktura "opuštěný"? -ConfirmClassifyPaidPartially=Jste si jisti, že chcete změnit fakturační <b>%s</b> do stavu placené? -ConfirmClassifyPaidPartiallyQuestion=Tato faktura nebyla zaplacena úplně. Jaké jsou důvody pro vás zavřít tuto fakturu? -ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I regularise the VAT with a credit note. -ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I accept to lose the VAT on this discount. -ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note. -ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad zákazník -ConfirmClassifyPaidPartiallyReasonProductReturned=Produkty částečně vrátil +ConfirmValidateBill=Jste si jisti, že chcete ověřit tuto fakturu s referenčním <b>%s?</b> +ConfirmUnvalidateBill=Jste si jisti, že chcete změnit fakturu <b>%s</b> do stavu návrhu? +ConfirmClassifyPaidBill=Jste si jisti, že chcete změnit fakturu <b>%s</b> do stavu uhrazeno? +ConfirmCancelBill=Jste si jisti, že chcete zrušit fakturu <b>%s?</b> +ConfirmCancelBillQuestion=Proč chcete klasifikovat fakturu jako 'opuštěnou' ? +ConfirmClassifyPaidPartially=Jste si jisti, že chcete změnit fakturu <b>%s</b> do stavu placeno? +ConfirmClassifyPaidPartiallyQuestion=Tato faktura nebyla zaplacena úplně. Z jakých důvodů chcete uzavřít tuto fakturu? +ConfirmClassifyPaidPartiallyReasonAvoir=Zbývající neuhrazené <b>(%s %s),</b> je poskytnutá sleva, protože platba byla provedena před termínem splatnosti. Opravte částku DPH dobropisem. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Zbývající neuhrazené <b>(%s %s),</b> je poskytnutá sleva, protože platba byla provedena před termínem splatnosti. Souhlasím se ztrátou DPH z této slevy. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Zbývající neuhrazené <b>(%s %s),</b> je poskytnutá sleva, protože platba byla provedena před termínem splatnosti. Vrátím zpět DPH na této slevě bez dobropisu +ConfirmClassifyPaidPartiallyReasonBadCustomer=Špatný zákazník +ConfirmClassifyPaidPartiallyReasonProductReturned=Produkty částečně vrácené ConfirmClassifyPaidPartiallyReasonOther=Částka opuštěná jiného důvodu -ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Tato volba je možné, pokud faktura byly opatřeny vhodným komentářem. (Příklad "Pouze daň odpovídající ceně, která byla skutečně zaplacena dává práva na odpočet") -ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=V některých zemích by tato volba být možné pouze tehdy, pokud faktura obsahuje správnou notu. -ConfirmClassifyPaidPartiallyReasonAvoirDesc=Použijte tuto volbu, pokud všechny ostatní nesluší -ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=<b>Špatný zákazník</b> je zákazník, který odmítne zaplatit svůj dluh. -ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Tato volba se používá, když platba není kompletní, protože některé z výrobků byly vráceny -ConfirmClassifyPaidPartiallyReasonOtherDesc=Použijte tuto volbu, pokud všechny ostatní nehodí, například v následující situaci: <br> - Platba není kompletní, protože některé výrobky byly odeslány zpět <br> - Nárokovaná částka příliš důležité, protože sleva byla zapomenuta <br> Ve všech případech, částku přes nárokované musí být opraven v systému evidence vytvořením dobropisu. +ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Tato volba je možná, pokud faktura byla opatřena vhodným komentářem. (Příklad: "Pouze daň odpovídající ceně, která byla skutečně zaplacena dává práva na odpočet") +ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=V některých zemích je tato volba možná pouze tehdy, pokud faktura obsahuje správnou poznámku. +ConfirmClassifyPaidPartiallyReasonAvoirDesc=Použijte tuto volbu, pokud všechny ostatní volby nelze použít +ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=<b>Špatný zákazník</b> je zákazník, který odmítá zaplatit svůj dluh. +ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Tato volba se používá když platba není kompletní, protože některé z výrobků byly vráceny +ConfirmClassifyPaidPartiallyReasonOtherDesc=Použijte tuto volbu, pokud se všechny ostatní nehodí, například v následujících situacích: <br> - Platba není kompletní, protože některé výrobky byly vráceny <br> - Nárokovaná částka je příliš důležitá, protože sleva nebyla uplatněna <br> Ve všech případech, kdy se částka liší od nárokované, musí být provedena oprava v systému evidence vytvořením dobropisu. ConfirmClassifyAbandonReasonOther=Ostatní ConfirmClassifyAbandonReasonOtherDesc=Tato volba se používá ve všech ostatních případech. Například proto, že máte v plánu vytvořit nahrazující fakturu. -ConfirmCustomerPayment=Myslíte si potvrzení této platební vstup pro %s <b>%s?</b> -ConfirmSupplierPayment=Do you confirm this payment input for <b>%s</b> %s ? -ConfirmValidatePayment=Jste si jisti, že chcete ověřit tuto platbu? Žádná změna může být provedena, jakmile je platba ověřena. +ConfirmCustomerPayment=Chcete potvrdit tento platební vstup pro %s <b>%s?</b> +ConfirmSupplierPayment=Chcete potvrdit tento platební vstup pro <b>%s</b> %s ? +ConfirmValidatePayment=Jste si jisti, že chcete ověřit tuto platbu? Po ověření platby už nebudete moci provést žádnou změnu. ValidateBill=Ověřit fakturu -UnvalidateBill=Unvalidate fakturu +UnvalidateBill=Neověřit fakturu NumberOfBills=Nb faktur -NumberOfBillsByMonth=Nb faktur měsíce -AmountOfBills=Výše faktur -AmountOfBillsByMonthHT=Výše faktur měsíčně (bez daně) +NumberOfBillsByMonth=Nb faktury měsíce +AmountOfBills=Částka faktur +AmountOfBillsByMonthHT=Čýstka faktur měsíčně (bez daně) ShowSocialContribution=Zobrazit sociální příspěvek ShowBill=Zobrazit fakturu ShowInvoice=Zobrazit fakturu -ShowInvoiceReplace=Zobrazit výměně fakturu +ShowInvoiceReplace=Zobrazit opravenou fakturu ShowInvoiceAvoir=Zobrazit dobropis ShowInvoiceDeposit=Zobrazit zálohovou fakturu ShowPayment=Zobrazit platbu File=Soubor AlreadyPaid=Již zaplacené -AlreadyPaidBack=Již vrátí -AlreadyPaidNoCreditNotesNoDeposits=Již zaplacena (bez dobropisů a vklady) -Abandoned=Opuštěný -RemainderToPay=Remaining unpaid -RemainderToTake=Remaining amount to take -RemainderToPayBack=Remaining amount to pay back -Rest=Až do -AmountExpected=Nárokované částky -ExcessReceived=Nadbytek obdržel -EscompteOffered=Sleva nabídl (platba před semestru) -SendBillRef=Submission of invoice %s -SendReminderBillRef=Submission of invoice %s (reminder) +AlreadyPaidBack=Již vrácené platby +AlreadyPaidNoCreditNotesNoDeposits=Již zaplacené (bez dobropisů a vkladů) +Abandoned=Opuštěné +RemainderToPay=Zbývající nezaplacené +RemainderToTake=Zbývající částku, která se +RemainderToPayBack=Splatit zbývající částku +Rest=Čeká +AmountExpected=Nárokovaná částka +ExcessReceived=Přeplatek obdržel +EscompteOffered=Nabídnutá sleva (platba před termínem) +SendBillRef=Předložení faktury %s +SendReminderBillRef=Předložení faktury %s (upomínka) StandingOrders=Trvalé příkazy StandingOrder=Trvalý příkaz NoDraftBills=Žádné návrhy faktury @@ -206,44 +206,44 @@ NoOtherDraftBills=Žádné jiné návrhy faktury NoDraftInvoices=Žádné návrhy faktury RefBill=Faktura ref ToBill=K účtu -RemainderToBill=Zbývající část zákona +RemainderToBill=Zbývající část k placení SendBillByMail=Poslat e-mailem fakturu SendReminderBillByMail=Poslat upozornění e-mailem RelatedCommercialProposals=Související obchodní návrhy -MenuToValid=Chcete-li platné +MenuToValid=Platné DateMaxPayment=Platba musí proběhnout do -DateEcheance=Datum splatnosti omezení -DateInvoice=Faktura Datum -NoInvoice=No faktura +DateEcheance=Omezení data splatnosti +DateInvoice=Fakturační datum +NoInvoice=Žádná faktura ClassifyBill=Klasifikovat fakturu -SupplierBillsToPay=Dodavatelé faktury platit -CustomerBillsUnpaid=Nezaplacené faktury zákazníky -DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters +SupplierBillsToPay=Platba dodavatelské faktury +CustomerBillsUnpaid=Nezaplacené faktury zákazníků +DispenseMontantLettres=Písemné faktury až mecanographic postupy jsou vydávány podle pořadí objednávek v dopisech NonPercuRecuperable=Nevratná -SetConditions=Nastavit platební podmínky +SetConditions=Nastavení platebních podmínek SetMode=Nastavit platební režim Billed=Účtováno -RepeatableInvoice=Template invoice -RepeatableInvoices=Template invoices -Repeatable=Template -Repeatables=Templates -ChangeIntoRepeatableInvoice=Convert into template invoice -CreateRepeatableInvoice=Create template invoice -CreateFromRepeatableInvoice=Create from template invoice -CustomersInvoicesAndInvoiceLines=Zákazníků faktury a faktura je vedení -CustomersInvoicesAndPayments=Zákazníků faktury a platby -ExportDataset_invoice_1=Zákazník faktury a faktura je seznam linek -ExportDataset_invoice_2=Zákazníků faktury a platby -ProformaBill=Proforma Bill: +RepeatableInvoice=Šablona faktury +RepeatableInvoices=Šablony faktur +Repeatable=Šablona +Repeatables=Šablony +ChangeIntoRepeatableInvoice=Převést do šablony faktury +CreateRepeatableInvoice=Vytvořit šablonu faktury +CreateFromRepeatableInvoice=Vytvořit ze šablony faktury +CustomersInvoicesAndInvoiceLines=Zákaznické faktury a linky faktur +CustomersInvoicesAndPayments=Zákaznické faktury a platby +ExportDataset_invoice_1=Zákaznické faktury a seznam linek faktur +ExportDataset_invoice_2=Zákaznické faktury a platby +ProformaBill=Proforma účet: Reduction=Snížení -ReductionShort=Reduction. +ReductionShort=red. Reductions=Slevy -ReductionsShort=Reduction. +ReductionsShort=sl. Discount=Sleva Discounts=Slevy AddDiscount=Vytvořte slevu AddRelativeDiscount=Vytvořte relativní slevu -EditRelativeDiscount=Úprava relativní slevu +EditRelativeDiscount=Úpravit relativní slevu AddGlobalDiscount=Vytvořte absolutní slevu EditGlobalDiscounts=Upravit absolutní slevy AddCreditNote=Vytvořte dobropis @@ -253,51 +253,52 @@ RelativeDiscount=Relativní sleva GlobalDiscount=Globální sleva CreditNote=Dobropis CreditNotes=Dobropisy -Deposit=Záloha +Deposit=Vklad Deposits=Vklady DiscountFromCreditNote=Sleva z %s dobropisu -DiscountFromDeposit=Platby z %s zálohovou fakturu -AbsoluteDiscountUse=Tento druh úvěru je možné použít na faktuře před jeho ověření -CreditNoteDepositUse=Faktura musí být validován pro použití tohoto krále kreditů -NewGlobalDiscount=Nový absolutní sleva -NewRelativeDiscount=Nový relativní sleva -NoteReason=Poznámka / příčina +DiscountFromDeposit=Platby z %s zze zálohové faktury +AbsoluteDiscountUse=Tento druh úvěru je možné použít na faktuře před jeho ověřením +CreditNoteDepositUse=Faktura musí být validována pro použití tohoto druhu kreditu +NewGlobalDiscount=Nová absolutní sleva +NewRelativeDiscount=Nová relativní sleva +NoteReason=Poznámka/důvod ReasonDiscount=Důvod DiscountOfferedBy=Poskytnuté -DiscountStillRemaining=Slevy ještě zbývající -DiscountAlreadyCounted=Slevy již počítá -BillAddress=Bill adresa -HelpEscompte=Tato sleva je sleva poskytnuta zákazníkovi, protože její platba byla provedena před horizontu. -HelpAbandonBadCustomer=Tato částka byla opuštěna (zákazník řekl, aby byl špatný zákazník) a je považován za výjimečný volné. -HelpAbandonOther=Tato částka byla opuštěna, protože došlo k chybě (chybný zákazník nebo faktura nahrazen jiný například) -IdSocialContribution=Sociální příspěvek id -PaymentId=Platba id -InvoiceId=Faktura id +DiscountStillRemaining=Zbývající slevy +DiscountAlreadyCounted=Započítané slevy +BillAddress=Účetní adresa +HelpEscompte=Tato sleva je sleva poskytnuta zákazníkovi, protože jeho platba byla provedena před termínem splatnosti. +HelpAbandonBadCustomer=Tato částka byla opuštěna (zákazník řekl, aby byl špatný zákazník) a je považována za výjimečně volnou. +HelpAbandonOther=Tato částka byla opuštěna, protože došlo k chybě (například špatný zákazník nebo faktura nahrazena jinou) +IdSocialContribution=ID sociálního příspěvku +PaymentId=ID platby +InvoiceId=ID faktury InvoiceRef=Faktura čj. -InvoiceDateCreation=Faktura Datum vytvoření +InvoiceDateCreation=Datum vytvoření faktury InvoiceStatus=Stav faktury InvoiceNote=Faktura poznámka InvoicePaid=Faktura zaplacena PaymentNumber=Platba číslo RemoveDiscount=Odebrat slevu -WatermarkOnDraftBill=Vodoznak k návrhům faktur (pokud nic prázdný) +WatermarkOnDraftBill=Vodoznak k návrhům faktur (prázdný, pokud není nic vloženo) InvoiceNotChecked=Není vybrána žádná faktura -CloneInvoice=Klon fakturu +CloneInvoice=Kopírovat fakturu ConfirmCloneInvoice=Jste si jisti, že chcete kopírovat tuto fakturu <b>%s?</b> -DisabledBecauseReplacedInvoice=Akce zakázáno, protože faktura byla nahrazena -DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payment during the fixed year are included here. -NbOfPayments=Nb plateb -SplitDiscount=Rozdělit slevu ve dvou +DisabledBecauseReplacedInvoice=Akce zakázána, protože faktura byla nahrazena +DescTaxAndDividendsArea=Tato oblast představuje souhrn všech plateb za zvláštní výdaje. Zde jsou zahrnuty pouze záznamy s platbou v průběhu účetního roku. +NbOfPayments=Nějaké platby +SplitDiscount=Rozdělit slevu na dvě ConfirmSplitDiscount=Jste si jisti, že chcete rozdělit tuto slevu <b>%s</b> %s do 2 nižších slev? TypeAmountOfEachNewDiscount=Vstupní hodnota pro každou ze dvou částí: -TotalOfTwoDiscountMustEqualsOriginal=Celkem dva nové slevy musí být roven původní částku slevy. +TotalOfTwoDiscountMustEqualsOriginal=Celkem dvě nové slevy musí být rovny původní částce slevy. ConfirmRemoveDiscount=Jste si jisti, že chcete odstranit tuto slevu? RelatedBill=Související faktura RelatedBills=Související faktury -RelatedCustomerInvoices=Related customer invoices -RelatedSupplierInvoices=Related supplier invoices -LatestRelatedBill=Latest related invoice -WarningBillExist=Warning, one or more invoice already exist +RelatedCustomerInvoices=Související faktury zákazníka +RelatedSupplierInvoices=Související faktury dodavatele +LatestRelatedBill=Nejnovější související faktura +WarningBillExist=Varování, jedna nebo více faktur již existují +MergingPDFTool=Nástroj pro spojení PDF # PaymentConditions PaymentConditionShortRECEP=Bezprostřední @@ -316,13 +317,13 @@ PaymentConditionShortPT_ORDER=Na objednávku PaymentConditionPT_ORDER=Na objednávku PaymentConditionShortPT_5050=50-50 PaymentConditionPT_5050=50%% předem, 50%% při dodání -FixAmount=Fix množství +FixAmount=Pevné množství VarAmount=Variabilní částka (%% celk.) # PaymentType PaymentTypeVIR=Bankovní vklad PaymentTypeShortVIR=Bankovní vklad -PaymentTypePRE=Banky, aby -PaymentTypeShortPRE=Banky, aby +PaymentTypePRE=Bankovní objednávka +PaymentTypeShortPRE=Bankovní objednávky PaymentTypeLIQ=Hotovost PaymentTypeShortLIQ=Hotovost PaymentTypeCB=Kreditní karta @@ -331,103 +332,103 @@ PaymentTypeCHQ=Kontrola PaymentTypeShortCHQ=Kontrola PaymentTypeTIP=TIP PaymentTypeShortTIP=TIP -PaymentTypeVAD=On line platby +PaymentTypeVAD=On line platba PaymentTypeShortVAD=On line platby -PaymentTypeTRA=Bill platba +PaymentTypeTRA=Účet platby PaymentTypeShortTRA=Účet BankDetails=Bankovní spojení BankCode=Kód banky -DeskCode=Stůl kód +DeskCode=Desk kód BankAccountNumber=Číslo účtu BankAccountNumberKey=Klíč Residence=Domicil IBANNumber=IBAN IBAN=IBAN -BIC=BIC / SWIFT -BICNumber=BIC / SWIFT číslo -ExtraInfos=Extra infos +BIC=BIC/SWIFT +BICNumber=BIC/SWIFT číslo +ExtraInfos=Extra informace RegulatedOn=Regulovány ChequeNumber=Zkontrolujte N ° -ChequeOrTransferNumber=Zkontrolujte / Přenos č. -ChequeMaker=Zkontrolujte vysílač -ChequeBank=Bank of Check -CheckBank=Check -NetToBePaid=Net má být zaplacena -PhoneNumber=Tel +ChequeOrTransferNumber=Kontrola/převod č. +ChequeMaker=Zkontrolujte převod +ChequeBank=Šek z banky +CheckBank=Kontrola (šek) +NetToBePaid=Částka má být zaplacena +PhoneNumber=Tel. FullPhoneNumber=Telefon TeleFax=Fax -PrettyLittleSentence=Přijměte výši splátek splatných šeků vystavených ve jménu mém, jako člen účetního sdružení schváleného správy státního rozpočtu. +PrettyLittleSentence=Přijměte výši splátek splatných šeků vystavených na mé jméno, jako člen účetního sdružení schváleného správou státního rozpočtu. IntracommunityVATNumber=Intrakomunitární číslo DPH -PaymentByChequeOrderedTo=Podívejte se platba (včetně daně) jsou splatné %s poslat -PaymentByChequeOrderedToShort=Podívejte se platba (včetně daně) jsou splatné -SendTo=odeslána +PaymentByChequeOrderedTo=Zkontrolujte platbu (včetně daně) splatnou %s odeslanou +PaymentByChequeOrderedToShort=Zkontrolujte splatnou platbu (včetně daně) +SendTo=odesláno PaymentByTransferOnThisBankAccount=Platba převodem na bankovní účet VATIsNotUsedForInvoice=* Nepoužije DPH art-293B CGI LawApplicationPart1=Návrhem zákona 80,335 z 12.05.80 LawApplicationPart2=Zboží zůstává majetkem -LawApplicationPart3=prodávající až do úplné proplacení +LawApplicationPart3=prodávajícího až do úplného zaplacení LawApplicationPart4=jejich cena. LimitedLiabilityCompanyCapital=SARL s kapitálem -UseLine=Platit +UseLine=Aplikovat UseDiscount=Použití slevu -UseCredit=Použití úvěru -UseCreditNoteInInvoicePayment=Snížení částky platit tento úvěr -MenuChequeDeposits=Kontroly vklady +UseCredit=Pouřít úvěr +UseCreditNoteInInvoicePayment=Snížení částky platby pro tento úvěr +MenuChequeDeposits=Kontroly vkladů MenuCheques=Kontroly -MenuChequesReceipts=Kontroly příjmy +MenuChequesReceipts=Kontroly příjmů NewChequeDeposit=Nový vklad -ChequesReceipts=Kontroly příjmy +ChequesReceipts=Kontroly příjmů ChequesArea=Kontroly oblasti depozit -ChequeDeposits=Kontroly vklady +ChequeDeposits=Kontroly vkladů Cheques=Kontroly -CreditNoteConvertedIntoDiscount=Tento dobropis nebo zálohové faktury byl přeměněn %s -UsBillingContactAsIncoiveRecipientIfExist=Použití zákazníků fakturační kontaktní adresu místo adresy třetích stran jako příjemce u faktur +CreditNoteConvertedIntoDiscount=Tento dobropis nebo zálohová faktura byla přecvedena do %s +UsBillingContactAsIncoiveRecipientIfExist=Použijte zákaznickou fakturační kontaktní adresu namísto adresy třetích stran jako příjemce pro faktury ShowUnpaidAll=Zobrazit všechny neuhrazené faktury -ShowUnpaidLateOnly=Zobrazit pozdní neuhrazené faktury pouze -PaymentInvoiceRef=%s fakturu +ShowUnpaidLateOnly=Zobrazit jen pozdní neuhrazené faktury +PaymentInvoiceRef=Platba faktury %s ValidateInvoice=Ověřit fakturu Cash=Hotovost Reported=Zpožděný -DisabledBecausePayments=Not possible since there are some payments -CantRemovePaymentWithOneInvoicePaid=Can't remove payment since there is at least one invoice classified paid -ExpectedToPay=Předpokládaný platba -PayedByThisPayment=Paid by this payment -ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. -ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. -AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid". +DisabledBecausePayments=Není možné, protože jsou zde některé platby +CantRemovePaymentWithOneInvoicePaid=Nelze odstranit platbu protože je k dispozici alespoň jedna faktura označená jako zaplacená +ExpectedToPay=Očekávaná platba +PayedByThisPayment=Uhrazeno touto platbou +ClosePaidInvoicesAutomatically=Označit jako "Placeno" všechny standardní situace nebo náhradní faktury v plné výši. +ClosePaidCreditNotesAutomatically=Označit jako "Placeno" všechny dobropisy zcela splaceny. +AllCompletelyPayedInvoiceWillBeClosed=Všechny faktury s žádnými dalšími platbami bude automaticky uzavřeny ve stavu "Placené". ToMakePayment=Zaplatit -ToMakePaymentBack=Oplatit +ToMakePaymentBack=Vrátit ListOfYourUnpaidInvoices=Seznam nezaplacených faktur -NoteListOfYourUnpaidInvoices=Poznámka: Tento seznam obsahuje pouze faktury pro třetí strany si jsou propojeny jako obchodního zástupce. +NoteListOfYourUnpaidInvoices=Poznámka: Tento seznam obsahuje pouze faktury pro třetí strany které jsou propojeny na obchodního zástupce. RevenueStamp=Kolek -YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty -PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) -TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 -MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 -TerreNumRefModelError=Bill počínaje $ syymm již existuje a není kompatibilní s tímto modelem sekvence. Vyjměte ji nebo přejmenujte jej na aktivaci tohoto modulu. +YouMustCreateInvoiceFromThird=Tato možnost je dostupná pouze při vytváření faktury ze záložky "zákazníka" z třetí strany +PDFCrabeDescription= PDF šablona faktur Crabe. Kompletní šablona faktury (doporučená šablona) +TerreNumRefModelDesc1=Vrátí číslo ve formátu %s yymm-nnnn pro standardní faktury a %s yymm-nnnn pro dobropisy, kde yy je rok, mm je měsíc a nnnn je sekvence bez přerušení a bez návratu k 0 +MarsNumRefModelDesc1=Vrátí číslo ve formátu %s yymm-nnnn pro standardní faktury, %s yymm-nnnn pro náhradní faktury, %s yymm-nnnn pro dobropisy a %s yymm-nnnn pro dobropisy, kde yy je rok, mm je měsíc a nnnn je sekvence bez přerušení a bez návratu k 0 +TerreNumRefModelError=Účet počínaje $syymm již existuje a není kompatibilní s tímto modelem sekvence. Vyjměte ji nebo přejmenujte jej aktivací tohoto modulu. ##### Types de contacts ##### -TypeContact_facture_internal_SALESREPFOLL=Zástupce následující-up zákazník fakturu -TypeContact_facture_external_BILLING=Zákazník faktura kontakt -TypeContact_facture_external_SHIPPING=Zákazník doprava kontakt -TypeContact_facture_external_SERVICE=Zákaznický servis kontakt -TypeContact_invoice_supplier_internal_SALESREPFOLL=Zástupce následující-up dodavatelské faktury -TypeContact_invoice_supplier_external_BILLING=Dodavatel fakturu kontakt -TypeContact_invoice_supplier_external_SHIPPING=Dodavatel doprava kontakt -TypeContact_invoice_supplier_external_SERVICE=Dodavatel služby kontakt +TypeContact_facture_internal_SALESREPFOLL=Zástupce následující zákaznické faktury +TypeContact_facture_external_BILLING=Fakturační kontakt zákazníka +TypeContact_facture_external_SHIPPING=Zasílací kontakt zákazníka +TypeContact_facture_external_SERVICE=Kontakt zákaznického servisu +TypeContact_invoice_supplier_internal_SALESREPFOLL=Zástupce následující dodavatelské faktury +TypeContact_invoice_supplier_external_BILLING=Fakturační kontakt dodavatele +TypeContact_invoice_supplier_external_SHIPPING=Zasílací kontakt dodavatele +TypeContact_invoice_supplier_external_SERVICE=Kontakt dodavatele služby # Situation invoices -InvoiceFirstSituationAsk=First situation invoice -InvoiceFirstSituationDesc=The <b>situation invoices</b> are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. -InvoiceSituation=Situation invoice -InvoiceSituationAsk=Invoice following the situation -InvoiceSituationDesc=Create a new situation following an already existing one -SituationAmount=Situation invoice amount(net) -SituationDeduction=Situation subtraction -Progress=Progress -ModifyAllLines=Modify all lines -CreateNextSituationInvoice=Create next situation -NotLastInCycle=This invoice in not the last in cycle and must not be modified. -DisabledBecauseNotLastInCycle=The next situation already exists. -DisabledBecauseFinal=This situation is final. -CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. -NoSituations=No opened situations -InvoiceSituationLast=Final and general invoice +InvoiceFirstSituationAsk=Faktura první situace +InvoiceFirstSituationDesc=<b>Situace faktury</b> jsou vázány na situace do progrese, například průběh stavby. Každá situace je vázána k faktuře. +InvoiceSituation=Situace faktury +InvoiceSituationAsk=Faktura v návaznosti na situaci +InvoiceSituationDesc=Vytvořit novou situaci v návaznosti na již existující +SituationAmount=Částka situace faktury (netto) +SituationDeduction=Situace odčítání +Progress=Pokrok +ModifyAllLines=Změnit všechny řádky +CreateNextSituationInvoice=Vytvořit další situaci +NotLastInCycle=Tato faktura není poslední v cyklu, a nesmí být změněna. +DisabledBecauseNotLastInCycle=Další situace již existuje. +DisabledBecauseFinal=Tato situace je konečné. +CantBeLessThanMinPercent=Pokrok nemůže být menší, než je jeho hodnota v předchozí situaci. +NoSituations=Žádné otevřené situace +InvoiceSituationLast=Závěrečná a hlavní faktura diff --git a/htdocs/langs/cs_CZ/boxes.lang b/htdocs/langs/cs_CZ/boxes.lang index 0fa28ad9184d02c67b1babe2ed8662a40b300788..6689b66b7a4ac59de62a5b944731152f930484a7 100644 --- a/htdocs/langs/cs_CZ/boxes.lang +++ b/htdocs/langs/cs_CZ/boxes.lang @@ -12,11 +12,11 @@ BoxLastProspects=Naposledy měnění prospekti BoxLastCustomers=Naposledy měnění zákazníci BoxLastSuppliers=Naposledy měnění dodavatelé BoxLastCustomerOrders=Poslední zákaznické objednávky -BoxLastValidatedCustomerOrders=Last validated customer orders +BoxLastValidatedCustomerOrders=Poslední potvrzené objednávky zákazníků BoxLastBooks=Poslední knihy BoxLastActions=Poslední akce BoxLastContracts=Poslední smlouvy -BoxLastContacts=Poslední kontakty / adresy +BoxLastContacts=Poslední kontakty/adresy BoxLastMembers=Poslední členové BoxFicheInter=Poslední intervence BoxCurrentAccounts=Stavy otevřených účtů @@ -26,72 +26,72 @@ BoxTotalUnpaidSuppliersBills=Nezaplacené dodavatelské faktury celkem BoxTitleLastBooks=Poslední %s nahrané knihy BoxTitleNbOfCustomers=Počet klientů BoxTitleLastRssInfos=Poslední %s zprávy z %s -BoxTitleLastProducts=Poslední %s modifikované produkty / služby -BoxTitleProductsAlertStock=Produkty skladem pohotovosti -BoxTitleLastCustomerOrders=Last %s customer orders -BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders -BoxTitleLastSuppliers=Poslední %s zaznamenán dodavatele -BoxTitleLastCustomers=Poslední %s nahrané zákazníky -BoxTitleLastModifiedSuppliers=Poslední %s upravené dodavatele -BoxTitleLastModifiedCustomers=Poslední %s modifikované zákazníky -BoxTitleLastCustomersOrProspects=Last %s customers or prospects -BoxTitleLastPropals=Last %s proposals -BoxTitleLastModifiedPropals=Last %s modified proposals -BoxTitleLastCustomerBills=Minulý %s zákazníka faktury -BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices -BoxTitleLastSupplierBills=Minulý %s dodavatelských faktur -BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices -BoxTitleLastModifiedProspects=Poslední %s upravené vyhlídky -BoxTitleLastProductsInContract=Poslední %s produkty / služby ve smlouvě -BoxTitleLastModifiedMembers=Last %s members +BoxTitleLastProducts=Poslední %s upravené produkty/služby +BoxTitleProductsAlertStock=Produkty skladem v pohotovosti +BoxTitleLastCustomerOrders=Poslední %s objednávky zákazníka +BoxTitleLastModifiedCustomerOrders=Poslední %s modifikované objednávky zákazníků +BoxTitleLastSuppliers=Poslední %s zaznamenaní dodavatelé +BoxTitleLastCustomers=Poslední %s zaznamenaní zákazníci +BoxTitleLastModifiedSuppliers=Poslední %s upravení dodavatelé +BoxTitleLastModifiedCustomers=Poslední %s modifikovaní zákazníci +BoxTitleLastCustomersOrProspects=Poslední %s zákazníci nebo cíle +BoxTitleLastPropals=Poslední %s nabídky +BoxTitleLastModifiedPropals=Poslední %s upravené nabídky +BoxTitleLastCustomerBills=Poslední %s zákaznické faktury +BoxTitleLastModifiedCustomerBills=Poslední %s modifikované zákaznické faktury +BoxTitleLastSupplierBills=Poslední %s dodavatelské faktury +BoxTitleLastModifiedSupplierBills=Poslední %s modifikované dodavatelské faktury +BoxTitleLastModifiedProspects=Poslední %s upravené cíle +BoxTitleLastProductsInContract=Poslední %s produkty/služby ve smlouvě +BoxTitleLastModifiedMembers=Poslední %s uživatelé BoxTitleLastFicheInter=Poslední %s upravený zásah -BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices -BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices -BoxTitleCurrentAccounts=Opened account's balances -BoxTitleSalesTurnover=Obrat -BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices -BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices -BoxTitleLastModifiedContacts=Poslední %s upravené kontakty / adresy +BoxTitleOldestUnpaidCustomerBills=Nejstarší %s nezaplacené faktury zákazníků +BoxTitleOldestUnpaidSupplierBills=Nejstarší %s nezaplacené faktury dodavatelů +BoxTitleCurrentAccounts=Zůstatky otevřených účtů +BoxTitleSalesTurnover=Prodejní obrat +BoxTitleTotalUnpaidCustomerBills=Nezaplacené faktury zákazníků +BoxTitleTotalUnpaidSuppliersBills=Nezaplacené faktury dodavatelů +BoxTitleLastModifiedContacts=Poslední %s upravené kontakty/adresy BoxMyLastBookmarks=Moje poslední %s záložky -BoxOldestExpiredServices=Nejstarší aktivní vypršela služby -BoxLastExpiredServices=Poslední %s nejstarší kontakty s aktivními vypršela služeb -BoxTitleLastActionsToDo=Poslední %s akce dělat +BoxOldestExpiredServices=Nejstarší aktivní expirované služby +BoxLastExpiredServices=Poslední %s nejstarší kontakty s aktivními expiracemi služeb +BoxTitleLastActionsToDo=Poslední %s vykonané akce BoxTitleLastContracts=Poslední %s smlouvy BoxTitleLastModifiedDonations=Poslední %s upravené dary BoxTitleLastModifiedExpenses=Poslední %s upravené výdaje BoxGlobalActivity=Globální aktivita (faktury, návrhy, objednávky) -FailedToRefreshDataInfoNotUpToDate=Nepodařilo se obnovit RSS toku. Poslední úspěšný refresh Datum: %s +FailedToRefreshDataInfoNotUpToDate=Nepodařilo se obnovit RSS zdroj. Poslední úspěšný refresh dne: %s LastRefreshDate=Poslední obnovovací data -NoRecordedBookmarks=Žádné záložky definovány. +NoRecordedBookmarks=Nejsou definované žádné záložky. ClickToAdd=Klikni pro přidání. -NoRecordedCustomers=Žádné zaznamenané zákazníky -NoRecordedContacts=Zaznamenány žádné kontakty -NoActionsToDo=Žádné akce dělat -NoRecordedOrders=Žádné zaznamenané zákazníkovy objednávky -NoRecordedProposals=Zaznamenány žádné návrhy -NoRecordedInvoices=Žádné zaznamenané zákazníka faktury -NoUnpaidCustomerBills=Bez neplacených zákazníka faktury -NoRecordedSupplierInvoices=Žádné zaznamenané dodavatelských faktur -NoUnpaidSupplierBills=Bez neplacených dodavatelských faktur -NoModifiedSupplierBills=Žádné zaznamenané dodavatelských faktur -NoRecordedProducts=Žádné zaznamenané produkty / služby -NoRecordedProspects=Zaznamenány žádné vyhlídky -NoContractedProducts=Žádné produkty / služby smluvně +NoRecordedCustomers=Žádní zaznamenaní zákazníci +NoRecordedContacts=Žádné zaznamenané kontakty +NoActionsToDo=Žádné vykonané akce +NoRecordedOrders=Žádné zaznamenané zákaznické objednávky +NoRecordedProposals=Žádné zaznamenané návrhy +NoRecordedInvoices=Žádné zaznamenané faktury zákazníků +NoUnpaidCustomerBills=Žádné nezaplacené faktury zákazníků +NoRecordedSupplierInvoices=Žádné zaznamenané dodavatelské faktury +NoUnpaidSupplierBills=Žádné nezaplacené dodavatelské faktury +NoModifiedSupplierBills=Žádné zaznamenané dodavatelské faktury +NoRecordedProducts=Žádné zaznamenané produkty/služby +NoRecordedProspects=Žádné zaznamenané cíle +NoContractedProducts=Žádné nasmlouvané produkty/služby NoRecordedContracts=Žádné zaznamenané smlouvy NoRecordedInterventions=Žádné zaznamenané zásahy BoxLatestSupplierOrders=Nejnovější dodavatelské objednávky -BoxTitleLatestSupplierOrders=Last %s supplier orders -BoxTitleLatestModifiedSupplierOrders=Last %s modified supplier orders -NoSupplierOrder=Žádné zaznamenané dodavatele, aby -BoxCustomersInvoicesPerMonth=Zákazníků faktury za měsíc -BoxSuppliersInvoicesPerMonth=Dodavatelských faktur za měsíc +BoxTitleLatestSupplierOrders=Poslední %s dodavatelské objednávky +BoxTitleLatestModifiedSupplierOrders=Poslední %s modifikované dodavatelské objednávky +NoSupplierOrder=Žádné zaznamenané dodavatelské objednávky +BoxCustomersInvoicesPerMonth=Faktury zákazníků za měsíc +BoxSuppliersInvoicesPerMonth=Faktury dodavatelů za měsíc BoxCustomersOrdersPerMonth=Objednávky zákazníků za měsíc -BoxSuppliersOrdersPerMonth=Dodavatel objednávky za měsíc -BoxProposalsPerMonth=Návrhy za měsíc -NoTooLowStockProducts=Žádný výrobek na základě nízkého limitu skladem -BoxProductDistribution=Produkty / služby distribuce +BoxSuppliersOrdersPerMonth=Objednávky dodavatelů za měsíc +BoxProposalsPerMonth=Nabídky za měsíc +NoTooLowStockProducts=Žádný výrobek pod nízkým limitem skladem +BoxProductDistribution=Produkty/služby distribuce BoxProductDistributionFor=Distribuce %s pro %s -ForCustomersInvoices=Zákazníci faktury -ForCustomersOrders=Zákazníci objednávky -ForProposals=Návrhy -LastXMonthRolling=The last %s month rolling +ForCustomersInvoices=Zákaznické faktury +ForCustomersOrders=Zákaznické objednávky +ForProposals=Nabídky +LastXMonthRolling=Poslední %s měsíc válcování diff --git a/htdocs/langs/cs_CZ/cashdesk.lang b/htdocs/langs/cs_CZ/cashdesk.lang index 8582cf2df3a5e7d017ee199f138c1b3c7bedfdbd..89f541a8862ceec611f5a93e6a47ceb35344335f 100644 --- a/htdocs/langs/cs_CZ/cashdesk.lang +++ b/htdocs/langs/cs_CZ/cashdesk.lang @@ -1,40 +1,40 @@ # Language file - Source file is en_US - cashdesk CashDeskMenu=Prodejní místo CashDesk=Prodejní místo -CashDesks=Bod prodeje +CashDesks=Prodejní místa CashDeskBank=Bankovní účet -CashDeskBankCash=Bankovní účet (cash) +CashDeskBankCash=Bankovní účet (hotovost) CashDeskBankCB=Bankovní účet (karta) -CashDeskBankCheque=Bankovní účet (kontrola) -CashDeskWarehouse=Sklad +CashDeskBankCheque=Bankovní účet (šek) +CashDeskWarehouse=Skladiště CashdeskShowServices=Prodej služeb CashDeskProducts=Produkty CashDeskStock=Sklad CashDeskOn=na -CashDeskThirdParty=Třetí stranou -CashdeskDashboard=V místě prodeje přístupu +CashDeskThirdParty=Třetí strana +CashdeskDashboard=Přístupový bod prodeje ShoppingCart=Nákupní vozík -NewSell=Nový prodat +NewSell=Nový prodej BackOffice=Back office AddThisArticle=Přidat tento článek RestartSelling=Vraťte se na prodej -SellFinished=Prodej skončil -PrintTicket=Tisk vstupenek -NoProductFound=Žádný článek nalezeno -ProductFound=výrobky, které se +SellFinished=Prodej skončen +PrintTicket=Tisk dokladu +NoProductFound=Žádný článek nalezen +ProductFound=vyhledané výrobky ProductsFound=Nalezeno výrobků NoArticle=Žádný článek Identification=Identifikace Article=Článek Difference=Rozdíl -TotalTicket=Celkem vstupenek +TotalTicket=Celkem účtenka NoVAT=Bez DPH pro tento prodej Change=Nadbytek obdržel CalTip=Klikněte pro zobrazení kalendáře -CashDeskSetupStock=Ptáte se sníží zásoby na faktuře vytvoření skladu, ale k tomu je nebyl definován <br> Změna stavu zásob modul nastavení, nebo zvolit sklad +CashDeskSetupStock=Ptáte se na snížení zásoby na vytvořené faktuře, ale k tomu nebylo definováno žádné skladiště <br> Změte stav zásob v nastavení modulu, nebo zvolte skladiště BankToPay=Úvěrové konto ShowCompany=Zobrazit společnost -ShowStock=Zobrazit skladu +ShowStock=Zobrazit skladiště DeleteArticle=Klepnutím odeberete tento článek -FilterRefOrLabelOrBC=Vyhledávání (Ref / Label) -# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. +FilterRefOrLabelOrBC=Vyhledávání (Ref./Štítekl) +UserNeedPermissionToEditStockToUsePos=Ptáte se na snížení zásoby na vytvořené faktuře, ale uživatel, který používá POS musí mít oprávnění k úpravám zásob. diff --git a/htdocs/langs/cs_CZ/categories.lang b/htdocs/langs/cs_CZ/categories.lang index f4249b7c085b88bbcfa87703121e31403b048319..072d0b22eac6a3289a5e72f71c165b51bddc0c57 100644 --- a/htdocs/langs/cs_CZ/categories.lang +++ b/htdocs/langs/cs_CZ/categories.lang @@ -1,110 +1,110 @@ # Dolibarr language file - Source file is en_US - categories -Rubrique=Tag/Category -Rubriques=Tags/Categories -categories=tags/categories -TheCategorie=The tag/category -NoCategoryYet=No tag/category of this type created +Rubrique=Tag/Kategorie +Rubriques=Tagy/Kategorie +categories=tagy/kategorie +TheCategorie=Tag/Kategorie +NoCategoryYet=Žádný tag/kategorie tohoto typu nebyla vytvořena In=V AddIn=Přidejte modify=upravit -Classify=Klasifikovat -CategoriesArea=Tags/Categories area -ProductsCategoriesArea=Products/Services tags/categories area -SuppliersCategoriesArea=Suppliers tags/categories area -CustomersCategoriesArea=Customers tags/categories area -ThirdPartyCategoriesArea=Third parties tags/categories area -MembersCategoriesArea=Members tags/categories area -ContactsCategoriesArea=Contacts tags/categories area -MainCats=Main tags/categories +Classify=Třídit +CategoriesArea=Oblast tagy/kategorie +ProductsCategoriesArea=Oblast Produkty/Služby tagy/kategorie +SuppliersCategoriesArea=Oblast dodavatelské tagy/kategorie +CustomersCategoriesArea=Oblast zákaznické tagy/kategorie +ThirdPartyCategoriesArea=Oblast třetí strany tagy/kategorie +MembersCategoriesArea=Oblast uživatelské tagy/kategorie +ContactsCategoriesArea=Oblast tagy/kategorie kontakty +MainCats=Hlavní tagy/kategorie SubCats=Podkategorie CatStatistics=Statistika -CatList=List of tags/categories -AllCats=All tags/categories -ViewCat=View tag/category -NewCat=Add tag/category -NewCategory=New tag/category -ModifCat=Modify tag/category -CatCreated=Tag/category created -CreateCat=Create tag/category -CreateThisCat=Create this tag/category +CatList=Výpis tagů/kategorií +AllCats=Všechny tagy/kategorie +ViewCat=Zobrazit tag/kategorii +NewCat=Přidat tag/kategorii +NewCategory=Nový tag/kategorie +ModifCat=Upravit tag/kategorii +CatCreated=Tag/kategorie byla vytvořená +CreateCat=Vytvořit tag/kategorii +CreateThisCat=Vytvořit tento tag/kategorii ValidateFields=Ověření pole -NoSubCat=Podkategorie. +NoSubCat=Chybí podkategorie. SubCatOf=Podkategorie -FoundCats=Found tags/categories -FoundCatsForName=Tags/categories found for the name : -FoundSubCatsIn=Subcategories found in the tag/category -ErrSameCatSelected=You selected the same tag/category several times -ErrForgotCat=You forgot to choose the tag/category -ErrForgotField=Zapomněli jste informovat pole +FoundCats=Nalezené tagy/kategorie +FoundCatsForName=Nalezené tagy/kategorie pro název: +FoundSubCatsIn=Podkategorie nalezené v tagu/kategorii +ErrSameCatSelected=Vybrali jste stejný tag/kategorii několikrát +ErrForgotCat=Zapomněli jste zvolit tag/kategorii +ErrForgotField=Zapomněli jste informaci o tomto poli ErrCatAlreadyExists=Tento název je již používán -AddProductToCat=Add this product to a tag/category? -ImpossibleAddCat=Impossible to add the tag/category -ImpossibleAssociateCategory=Impossible to associate the tag/category to +AddProductToCat=Přidat tento produkt do tagu/kategorie? +ImpossibleAddCat=Nelze přidat do tagu/kategorie +ImpossibleAssociateCategory=Nelze spojit tag/kategorii s WasAddedSuccessfully=<b>%s</b> bylo úspěšně přidáno. -ObjectAlreadyLinkedToCategory=Element is already linked to this tag/category. -CategorySuccessfullyCreated=This tag/category %s has been added with success. -ProductIsInCategories=Product/service owns to following tags/categories -SupplierIsInCategories=Third party owns to following suppliers tags/categories -CompanyIsInCustomersCategories=This third party owns to following customers/prospects tags/categories -CompanyIsInSuppliersCategories=This third party owns to following suppliers tags/categories -MemberIsInCategories=This member owns to following members tags/categories -ContactIsInCategories=This contact owns to following contacts tags/categories -ProductHasNoCategory=This product/service is not in any tags/categories -SupplierHasNoCategory=This supplier is not in any tags/categories -CompanyHasNoCategory=This company is not in any tags/categories -MemberHasNoCategory=This member is not in any tags/categories -ContactHasNoCategory=This contact is not in any tags/categories -ClassifyInCategory=Classify in tag/category +ObjectAlreadyLinkedToCategory=Element je již propojen s tímto tagem/kategorií. +CategorySuccessfullyCreated=Tag/kategorie %s byla úspěšně přidána. +ProductIsInCategories=Produkt/služba vlastní následjící tagy/kategorie +SupplierIsInCategories=Třetí strany vlastní následující dodavatelské tagy/kategorie +CompanyIsInCustomersCategories=Tato třetí strana vlastní následující zákazníci/cíle tagy/kategorie +CompanyIsInSuppliersCategories=Tato třetí strana vlastní dodavatelské tagy/kategorie +MemberIsInCategories=Tento uživatel vlastní následující uživatelské tagy/kategorie +ContactIsInCategories=Tento kontakt je vlastníkem z následujících kontaktů tagy/kategorií +ProductHasNoCategory=Tento produkt/služba není v žádném tagu/kategoriích +SupplierHasNoCategory=Tento dodavatel není v žádném tagu/kategoriích +CompanyHasNoCategory=Tato společnost není v žádném tagu/kategoriích +MemberHasNoCategory=Tento uživatel není v žádném tagu/kategoriích +ContactHasNoCategory=Tento kontakt není v žádném tagu/kategorii +ClassifyInCategory=Zařadit do tagu/kategorie NoneCategory=Nikdo -NotCategorized=Without tag/category +NotCategorized=Bez tagu/kategorie CategoryExistsAtSameLevel=Tato kategorie již existuje s tímto čj -ReturnInProduct=Zpět na produkt / službu kartu -ReturnInSupplier=Zpět na dodavatele karty -ReturnInCompany=Zpět na zákazníka / Vyhlídka karty -ContentsVisibleByAll=Obsah bude vidět všichni -ContentsVisibleByAllShort=Obsah viditelné všemi -ContentsNotVisibleByAllShort=Obsah není vidět všichni -CategoriesTree=Tags/categories tree -DeleteCategory=Delete tag/category -ConfirmDeleteCategory=Are you sure you want to delete this tag/category ? -RemoveFromCategory=Remove link with tag/categorie -RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the tag/category ? -NoCategoriesDefined=No tag/category defined -SuppliersCategoryShort=Suppliers tags/category -CustomersCategoryShort=Customers tags/category -ProductsCategoryShort=Products tags/category -MembersCategoryShort=Members tags/category -SuppliersCategoriesShort=Suppliers tags/categories -CustomersCategoriesShort=Customers tags/categories -CustomersProspectsCategoriesShort=Custo. / Prosp. kategorie -ProductsCategoriesShort=Products tags/categories -MembersCategoriesShort=Members tags/categories -ContactCategoriesShort=Contacts tags/categories +ReturnInProduct=Zpět na kartu služby/produktu +ReturnInSupplier=Zpět na kartu dodavatele +ReturnInCompany=Zpět na kartu zákazníka/cíle +ContentsVisibleByAll=Obsah bude viditelný pro všechny +ContentsVisibleByAllShort=Obsah viditelný všemi +ContentsNotVisibleByAllShort=Obsah není viditelný pro všechny +CategoriesTree=Strom tagů/kategorií +DeleteCategory=Smazat tag/kategorii +ConfirmDeleteCategory=Jste si opravdu jistý, že chcete odstranit tento tag/kategorii? +RemoveFromCategory=Odstranit spojení s tagem/kategorií +RemoveFromCategoryConfirm=Jste si opravdu jistý, že chcete odstranit toto spojení mezi transakcí a tagem/kategorií? +NoCategoriesDefined=Není definován žádný tag/kategorie +SuppliersCategoryShort=Tagy/kategorie dodavatelé +CustomersCategoryShort=Tagy/kategorie zákazníci +ProductsCategoryShort=Tagy/kategorie produkty +MembersCategoryShort=Tagy/kategorie uživatelé +SuppliersCategoriesShort=Dodavatelé tagy/kategorie +CustomersCategoriesShort=Zákazníci tagy/kategorie +CustomersProspectsCategoriesShort=Zák./Cíl. kategorie +ProductsCategoriesShort=Produkty tagy/kategorie +MembersCategoriesShort=Uživatelé tagy/kategorie +ContactCategoriesShort=Tagy/kategorie kontakty ThisCategoryHasNoProduct=Tato kategorie neobsahuje žádný produkt. ThisCategoryHasNoSupplier=Tato kategorie neobsahuje žádné dodavatele. -ThisCategoryHasNoCustomer=Tato kategorie neobsahuje žádné zákazníka. -ThisCategoryHasNoMember=Tato kategorie neobsahuje žádné člena. +ThisCategoryHasNoCustomer=Tato kategorie neobsahuje žádné zákazníky. +ThisCategoryHasNoMember=Tato kategorie neobsahuje žádné uživatele. ThisCategoryHasNoContact=Tato kategorie neobsahuje žádný kontakt. AssignedToCustomer=Účelově vázané k zákazníkovi AssignedToTheCustomer=Přiřazené zákazníkovi InternalCategory=Vnitřní kategorie -CategoryContents=Tag/category contents -CategId=Tag/category id -CatSupList=List of supplier tags/categories -CatCusList=List of customer/prospect tags/categories -CatProdList=List of products tags/categories -CatMemberList=List of members tags/categories -CatContactList=List of contact tags/categories and contact -CatSupLinks=Links between suppliers and tags/categories -CatCusLinks=Links between customers/prospects and tags/categories -CatProdLinks=Links between products/services and tags/categories -CatMemberLinks=Links between members and tags/categories -DeleteFromCat=Remove from tags/category -DeletePicture=Picture delete -ConfirmDeletePicture=Confirm picture deletion? -ExtraFieldsCategories=Complementary attributes -CategoriesSetup=Tags/categories setup -CategorieRecursiv=Link with parent tag/category automatically -CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory -AddProductServiceIntoCategory=Add the following product/service -ShowCategory=Show tag/category +CategoryContents=Obsah tagu/kategorie +CategId=ID tagu/kategorie +CatSupList=Seznam tagů/kategorií dodavatelů +CatCusList=Seznam tagů/kategorií zákazníků/cílů +CatProdList=Seznam tagů/kategorií produktů +CatMemberList=Seznam tagů/kategorií uživatelů +CatContactList=Seznam kontaktních tagů/kategorií a kontaktů +CatSupLinks=Spojení mezi dodavateli a tagy/kategoriemi +CatCusLinks=Spojení mezi zákazníky/cíly a tagy/kategoriemi +CatProdLinks=Spojení mezi produkty/službami a tagy/kategoriemi +CatMemberLinks=Spojení mezi uživateli a tagy/kategoriemi +DeleteFromCat=Odebrat z tagů/kategorií +DeletePicture=Odstranit obrázek +ConfirmDeletePicture=Potvrdit odstranění obrázku? +ExtraFieldsCategories=Doplňkové atributy +CategoriesSetup=Nastavení tagů/kategorií +CategorieRecursiv=Odkaz na nadřazený tag/kategorii automaticky +CategorieRecursivHelp=Je-li aktivován, bude produkt spojen s nadřazenou kategorií při přidávání do podkategorie +AddProductServiceIntoCategory=Přidejte následující produkt/službu +ShowCategory=Zobrazit tag/kategorii diff --git a/htdocs/langs/cs_CZ/commercial.lang b/htdocs/langs/cs_CZ/commercial.lang index 7886122e1246b794b333bf493ab9f3762a49494f..e70be787f8fa48ac51914ce179def88da7eb1cff 100644 --- a/htdocs/langs/cs_CZ/commercial.lang +++ b/htdocs/langs/cs_CZ/commercial.lang @@ -1,20 +1,20 @@ # Dolibarr language file - Source file is en_US - commercial Commercial=Obchodní -CommercialArea=Komerční prostory -CommercialCard=Obchodní karty -CustomerArea=Zákazníci oblast +CommercialArea=Obchodní oblast +CommercialCard=Obchodní karta +CustomerArea=Zákaznícká oblast Customer=Zákazník Customers=Zákazníci -Prospect=Vyhlídka -Prospects=Vyhlídky -DeleteAction=Odstranit událost / úkol -NewAction=Nová událost / úkol -AddAction=Create event/task -AddAnAction=Create an event/task -AddActionRendezVous=Create a Rendez-vous event +Prospect=Cíl +Prospects=Cíle +DeleteAction=Odstranit událost/úkol +NewAction=Nová událost/úkol +AddAction=Vytvořit událost/úkol +AddAnAction=Vytvořit další událost/úkol +AddActionRendezVous=Vytvořit schůzku Rendez-Vous=Schůzka -ConfirmDeleteAction=Jste si jisti, že chcete smazat tuto událost / úkol? -CardAction=Událost karty +ConfirmDeleteAction=Jste si jisti, že chcete smazat tuto událost/úkol? +CardAction=Karta události PercentDone=Procento dokončení ActionOnCompany=Úkol o společnosti ActionOnContact=Úkol o kontaktu @@ -22,47 +22,47 @@ TaskRDV=Schůze TaskRDVWith=Setkání s %s ShowTask=Zobrazit úkol ShowAction=Zobrazit akce -ActionsReport=Události zprávu -ThirdPartiesOfSaleRepresentative=Thirdparties s obchodním zástupcem +ActionsReport=Zpráva událostí +ThirdPartiesOfSaleRepresentative=Třetí strany s obchodním zástupcem SalesRepresentative=Obchodní zástupce SalesRepresentatives=Obchodní zástupci SalesRepresentativeFollowUp=Obchodní zástupce (pokračování) SalesRepresentativeSignature=Obchodní zástupce (podpis) CommercialInterlocutor=Obchodní partner ErrorWrongCode=Chybný kód -NoSalesRepresentativeAffected=Žádná konkrétní obchodní Stanovený zástupce -ShowCustomer=Zobrazit zákazníkovi -ShowProspect=Zobrazit vyhlídky -ListOfProspects=Seznam vyhlídky +NoSalesRepresentativeAffected=Nepřidělen žádný konkrétní obchodní zástupce +ShowCustomer=Zobrazit zákazníka +ShowProspect=Zobrazit cíl +ListOfProspects=Seznam cílů ListOfCustomers=Seznam zákazníků -LastDoneTasks=Poslední %s dokončení úkolů +LastDoneTasks=Poslednch %s dokončených úkolů LastRecordedTasks=Poslední zaznamenané úkoly -LastActionsToDo=Poslední %s nejstarší akce nebyly dokončeny -DoneAndToDoActionsFor=Dokončeno a to akcí pro %s -DoneAndToDoActions=Dokončeno a Chcete-li události +LastActionsToDo=Poslední %s nejstarší akce, které nebyly dokončeny +DoneAndToDoActionsFor=Dokončeno a doděláno akcí pro %s +DoneAndToDoActions=Dokončeno a doděláno událostí DoneActions=Dokončené akce DoneActionsFor=Dokončené akce pro %s ToDoActions=Neúplné události ToDoActionsFor=Neúplné akce pro %s -SendPropalRef=Submission of commercial proposal %s -SendOrderRef=Submission of order %s +SendPropalRef=Předložení obchodního návrhu %s +SendOrderRef=Podání objednávky %s StatusNotApplicable=Nevztahuje se StatusActionToDo=Chcete-li StatusActionDone=Dokončit -MyActionsAsked=Události jsem nahrané +MyActionsAsked=Události jsou uložené MyActionsToDo=Události, které musím udělat, MyActionsDone=Události přiřazené ke mně StatusActionInProcess=V procesu TasksHistoryForThisContact=Akce pro tento kontakt -LastProspectDoNotContact=Nedotýkejte se -LastProspectNeverContacted=Nikdy nekontaktoval +LastProspectDoNotContact=Nekontaktovat +LastProspectNeverContacted=Nikdy nekontaktovat LastProspectToContact=Chcete-li kontaktovat LastProspectContactInProcess=Kontakt v procesu -LastProspectContactDone=Spojit se provádí -DateActionPlanned=Datum Akce plánované na -DateActionDone=Datum Akce provedeno +LastProspectContactDone=Kontakt hotový +DateActionPlanned=Datum akce plánované na +DateActionDone=Datum akce provedeno ActionAskedBy=Akce hlášeny -ActionAffectedTo=Event assigned to +ActionAffectedTo=Akce přiřazeny k ActionDoneBy=Událost provádí ActionUserAsk=Zpracoval ErrorStatusCantBeZeroIfStarted=Pokud pole <b>'Datum udělat</b> "je naplněn, je akce zahájena (nebo dokončený), tak pole" <b>Stav</b> "nemůže být 0%%. @@ -71,15 +71,15 @@ ActionAC_FAX=Odeslat fax ActionAC_PROP=Poslat e-mailem návrh ActionAC_EMAIL=Odeslat e-mail ActionAC_RDV=Schůze -ActionAC_INT=Intervention on site -ActionAC_FAC=Poslat zákazníka fakturu poštou -ActionAC_REL=Poslat zákazníka fakturu poštou (připomínka) +ActionAC_INT=Intervence na místě +ActionAC_FAC=Poslat zákazníkovi fakturu poštou +ActionAC_REL=Poslat zákazníkovi fakturu poštou (upomínka) ActionAC_CLO=Zavřít ActionAC_EMAILING=Poslat hromadný email ActionAC_COM=Poslat objednávky zákazníka e-mailem -ActionAC_SHIP=Poslat přepravu poštou -ActionAC_SUP_ORD=Poslat e-mailem objednávku s dodavately -ActionAC_SUP_INV=Poslat dodavatelské faktury poštou +ActionAC_SHIP=Poslat přepravu na mail +ActionAC_SUP_ORD=Poslat objednávku dodavatele e-mailem +ActionAC_SUP_INV=Poslat dodavatelské faktury e-mailem ActionAC_OTH=Ostatní ActionAC_OTH_AUTO=Ostatní (automaticky vkládané události) ActionAC_MANUAL=Ručně vložené události @@ -90,7 +90,7 @@ FromTo=od %s na %s MargeOrder=Okraje (ověřené objednávky) RecapAnnee=Shrnutí roku NoData=Nejsou k dispozici žádné údaje -StatusProsp=Prospect stav +StatusProsp=Stav cíle DraftPropals=Navrhnout obchodní návrhy SearchPropal=Hledat obchodní návrh CommercialDashboard=Obchodní shrnutí diff --git a/htdocs/langs/cs_CZ/companies.lang b/htdocs/langs/cs_CZ/companies.lang index 4508bdde30d97f9c20545eb4f45de6a51126a7e8..570418200063298175c843047e4700d703e9819d 100644 --- a/htdocs/langs/cs_CZ/companies.lang +++ b/htdocs/langs/cs_CZ/companies.lang @@ -43,13 +43,13 @@ ThirdPartyCustomersStats=Zákazníci ThirdPartyCustomersWithIdProf12=Zákazníci s %s nebo %s ThirdPartySuppliers=Dodavatelé ThirdPartyType=Typ třetí strany -Company/Fundation=Společnosti / Nadace +Company/Fundation=Společnosti/Nadace Individual=Soukromá osoba -ToCreateContactWithSameName=Automaticky vytvoří fyzický kontakt s stejnými informacemi +ToCreateContactWithSameName=Automaticky vytvoří fyzický kontakt se stejnými informacemi ParentCompany=Mateřská společnost -Subsidiary=Dceřiná +Subsidiary=Dceřiná společnost Subsidiaries=Dceřiné společnosti -NoSubsidiary=Žádná dceřiná +NoSubsidiary=Žádná dceřiná společnost ReportByCustomers=Reporty dle zákazníků ReportByQuarter=Reporty dle sazby CivilityCode=Etický kodex @@ -57,11 +57,11 @@ RegisteredOffice=Sídlo společnosti Name=Název Lastname=Příjmení Firstname=Křestní jméno -PostOrFunction=Post / Funkce +PostOrFunction=Post/Funkce UserTitle=Titul -Surname=Příjmení / Pseudo +Surname=Příjmení/Přezdívka Address=Adresa -State=Stát / Provincie +State=Stát/Okres Region=Kraj Country=Země CountryCode=Kód země @@ -71,7 +71,7 @@ Skype=Skype Call=Hovor Chat=Chat PhonePro=Telefon [práce] -PhonePerso=Telefon [osob.] +PhonePerso=Telefon osobní PhoneMobile=Mobil No_Email=Nezasílat hromadné e-maily Fax=Fax @@ -91,14 +91,14 @@ LocalTax2IsUsedES= IRPF se používá LocalTax2IsNotUsedES= IRPF se nepoužívá LocalTax1ES=RE LocalTax2ES=IRPF -TypeLocaltax1ES=RE Type -TypeLocaltax2ES=IRPF Type -TypeES=Type +TypeLocaltax1ES=RE Typ +TypeLocaltax2ES=IRPF Typ +TypeES=Typ ThirdPartyEMail=%s WrongCustomerCode=Neplatný kód zákazníka WrongSupplierCode=Neplatný kód dodavatele -CustomerCodeModel=Model kódu zákazníka -SupplierCodeModel=Model kódu dodavatele +CustomerCodeModel=Vzorový kód zákazníka +SupplierCodeModel=Vzorový kód dodavatele Gencod=Čárový kód ##### Professional ID ##### ProfId1Short=Prof id 1 @@ -164,7 +164,7 @@ ProfId6DE=- ProfId1ES=Prof Id 1 (CIF/NIF) ProfId2ES=Prof Id 2 (Číslo sociálního pojištění) ProfId3ES=Prof Id 3 (CNAE) -ProfId4ES=Prof Id 4 (Collegiate number) +ProfId4ES=Prof Id 4 (Collegiate číslo) ProfId5ES=- ProfId6ES=- ProfId1FR=Prof Id 1 (SIREN) @@ -259,17 +259,17 @@ AvailableGlobalDiscounts=Možné absolutní slevy DiscountNone=Nikdo Supplier=Dodavatel CompanyList=Seznam společností -AddContact=Přidat kontakt -AddContactAddress=Přidat kontakt / adresu +AddContact=Vytvořit kontakt +AddContactAddress=Vytvořit kontakt/adresu EditContact=Upravit kontakt -EditContactAddress=Upravit kontakt / adresu +EditContactAddress=Upravit kontakt/adresu Contact=Kontakt -ContactsAddresses=Kontakty / adresy +ContactsAddresses=Kontakty/adresy NoContactDefinedForThirdParty=Žádný kontakt není definován této třetí straně NoContactDefined=Žádný kontakt není definován DefaultContact=Výchozí kontakty / adresy -AddCompany=Přidat společnost -AddThirdParty=Přidat třetí stranu +AddCompany=Vytvořit společnost +AddThirdParty=Vytvořit třetí stranu DeleteACompany=Odstranit společnost PersonalInformations=Osobní údaje AccountancyCode=Účetní kód @@ -286,7 +286,7 @@ ThisIsModuleRules=Toto jsou pravidla pro tento modul LastProspect=Poslední ProspectToContact=Cíl ke kontaktování CompanyDeleted=Společnost %s odstraněna z databáze. -ListOfContacts=Seznam kontaktů / adres +ListOfContacts=Seznam kontaktů/adres ListOfContactsAddresses=Seznam kontaktů / adres ListOfProspectsContacts=Seznam kontaktů cíle ListOfCustomersContacts=Seznam kontaktů zákazníka @@ -306,7 +306,7 @@ NoContactForAnyProposal=Tento kontakt není přiřazen k žádné obchodní nab NoContactForAnyContract=Tento kontakt není přiřazen k žádné smlouvě NoContactForAnyInvoice=Tento kontakt není přiřazen k žádné faktuře NewContact=Nový kontakt -NewContactAddress=Nový kontakt / adresa +NewContactAddress=Nový kontakt/adresa LastContacts=Poslední kontakty MyContacts=Moje kontakty Phones=Telefony @@ -316,7 +316,7 @@ EditCompany=Upravit společnost EditDeliveryAddress=Upravit dodací adresu ThisUserIsNot=Tento uživatel není cíl, zákazník ani dodavatel VATIntraCheck=Kontrola -VATIntraCheckDesc=Odkaz <b>%s</b> umožňuje zkontrolovat VAT. Je potřeba přístup k internetu. +VATIntraCheckDesc=Odkaz <b>%s</b> umožňuje zkontrolovat DIČ/VAT. Je potřeba přístup k internetu. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Kontrola VAT na stránkách Evropské Komise VATIntraManualCheck=Můžete také zkontrolovat ručně na evropských stránkách <a href="%s" target="_blank">%s</a> @@ -365,7 +365,7 @@ NoParentCompany=Nikdo ExportImport=Import-Export ExportCardToFormat=Exportovat kartu do formátu ContactNotLinkedToCompany=Kontakt není spojen s žádnou třetí stranou -DolibarrLogin=Dolibarr login +DolibarrLogin=Přihlášení do Dolibarru NoDolibarrAccess=Žádný přístup k Dolibarr ExportDataset_company_1=Třetí strany (Společnosti/nadace/osoby) a vlastnosti ExportDataset_company_2=Kontakty a vlastnosti @@ -379,8 +379,8 @@ DeliveryAddressLabel=Štítek dodací adresy DeleteDeliveryAddress=Smazat dodací adresu ConfirmDeleteDeliveryAddress=Jste si jisti, že chcete smazat tuto dodací adresu? NewDeliveryAddress=Nová doručovací adresa -AddDeliveryAddress=Přidat adresu -AddAddress=Přidat adresu +AddDeliveryAddress=Přidat adresy +AddAddress=Přidat adresy NoOtherDeliveryAddress=Žádná náhradní doručení adresa SupplierCategory=Kategorie dodavatele JuridicalStatus200=Nezávislý @@ -393,22 +393,22 @@ Organization=Organizace AutomaticallyGenerated=Automaticky generováno FiscalYearInformation=Informace o fiskálním roce FiscalMonthStart=Počáteční měsíc fiskálního roku -YouMustCreateContactFirst=Pro přidání e-mailových notifikací musíte přidat e-mailové kontakty k třetí straně +YouMustCreateContactFirst=Pro přidání e-mailových notifikací musíte přidat e-mailové kontakty ke třetí straně ListSuppliersShort=Seznam dodavatelů ListProspectsShort=Seznam cílů ListCustomersShort=Seznam zákazníků -ThirdPartiesArea=Third parties and contact area +ThirdPartiesArea=Kontakty třetích stran LastModifiedThirdParties=Posledních %s editovaných třetích stran UniqueThirdParties=Celkem unikátních třetích stran InActivity=Otevřeno ActivityCeased=Uzavřeno ActivityStateFilter=Stav činnosti -ProductsIntoElements=List of products into %s +ProductsIntoElements=Seznam produktů do %s CurrentOutstandingBill=Momentální nezaplacený účet OutstandingBill=Max. za nezaplacený účet OutstandingBillReached=Dosaženo max. pro nezaplacený účet -MonkeyNumRefModelDesc=Vrátí číslo ve formátu %syymm-nnnn pro kód zákazníka a %syymm-nnnn pro ód dodavatele kde yy je rok, mm měsíc a nnnn je číselná řada bez přerušení a bez návratu k 0. -LeopardNumRefModelDesc=Kód je zdarma. Tento kód lze kdykoli změnit. +MonkeyNumRefModelDesc=Vrátí číslo ve formátu %syymm-nnnn pro kód zákazníka a %syymm-nnnn pro kód dodavatele kde yy je rok, mm měsíc a nnnn je číselná řada bez přerušení a bez návratu k 0. +LeopardNumRefModelDesc=Kód je volný. Tento kód lze kdykoli změnit. ManagingDirectors=Jméno vedoucího (CEO, ředitel, předseda ...) -SearchThirdparty=Search thirdparty -SearchContact=Search contact +SearchThirdparty=Hledat třetí stranu +SearchContact=Hledat kontakt diff --git a/htdocs/langs/cs_CZ/compta.lang b/htdocs/langs/cs_CZ/compta.lang index bcd22190e9e111628701f8b127e64dfa51e820ed..3f170dea2d12875d5deec2e059b39abc1196fb0f 100644 --- a/htdocs/langs/cs_CZ/compta.lang +++ b/htdocs/langs/cs_CZ/compta.lang @@ -1,20 +1,20 @@ # Dolibarr language file - Source file is en_US - compta Accountancy=Účetnictví -AccountancyCard=Účetnictví karty +AccountancyCard=Karta účetnictví Treasury=Pokladna MenuFinancial=Finanční TaxModuleSetupToModifyRules=Přejít na <a href="%s">Nastavení daní</a> pro změnu výpočtu daní -TaxModuleSetupToModifyRulesLT=Go to <a href="%s">Company setup</a> to modify rules for calculation +TaxModuleSetupToModifyRulesLT=Jděte na <a href="%s">Nastavení firmy</a> pro úpravu podmínek pro kalkulaci OptionMode=Volba pro účetnictví OptionModeTrue=Možnost Příjmy-Výdaje -OptionModeVirtual=Možnost deklaracemi Pohledávky -OptionModeTrueDesc=V této souvislosti se počítá obrat přes platby (datum platby). Platnost údajů je zajištěna pouze tehdy, pokud je vedení účetnictví zkoumal přes vstup / výstup na účty prostřednictvím faktur. -OptionModeVirtualDesc=V této souvislosti se počítá obrat přes faktur (datum schválení). Jsou-li tyto faktury jsou splatné, zda byly zaplaceny či nikoliv, jsou uvedeny v obratu výstupu. -FeatureIsSupportedInInOutModeOnly=Funkce dostupné pouze v ÚVĚRY-dluhy účetního režimu (viz konfigurace modulu Účetnictví) +OptionModeVirtual=Možnost Pohledávky-Dluhy +OptionModeTrueDesc=V této souvislosti se počítá obrat přes platby (datum platby). Platnost údajů je zajištěna pouze tehdy, pokud je vedení účetnictví zkoumá přes vstup/výstup na účty prostřednictvím faktur. +OptionModeVirtualDesc=V této souvislosti se počítá obrat přes faktury (datum schválení). Jsou-li tyto faktury jsou splatné, přestože byly zaplaceny či nikoliv, jsou uvedeny v obratu výstupu. +FeatureIsSupportedInInOutModeOnly=Funkce dostupné pouze v ÚVĚRY-DLUHY účetního režimu. (viz konfigurace modulu Účetnictví) VATReportBuildWithOptionDefinedInModule=Částky uvedené zde jsou vypočteny na základě nastavených daňových pravidel. -LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup. +LTReportBuildWithOptionDefinedInModule=Částky se zde uvedené jsou vypočítány na základě pravidel definovaných nastavení firmy. Param=Nastavení -RemainingAmountPayment=Částka platby svátku: +RemainingAmountPayment=Zbývající částka platby: AmountToBeCharged=Celková částka k zaplacení: AccountsGeneral=Účty Account=Účet @@ -24,184 +24,184 @@ Accountsparent=Účty rodič BillsForSuppliers=Účty pro dodavatele Income=Příjem Outcome=Výdaj -ReportInOut=Výnosy / náklady +ReportInOut=Výnosy/náklady ReportTurnover=Obrat -PaymentsNotLinkedToInvoice=Platby nesouvisející s jakoukoli fakturu, takže nejsou spojeny žádné třetí straně -PaymentsNotLinkedToUser=Platby nesouvisející všechny uživatele +PaymentsNotLinkedToInvoice=Platby nepropojené s jakoukoli fakturu, takže nejsou spojeny k žádné třetí straně +PaymentsNotLinkedToUser=Platby nepropojené s libovolným uživatelem Profit=Zisk -AccountingResult=Accounting result +AccountingResult=Účetní výsledek Balance=Zůstatek Debit=Debet -Credit=Úvěr -Piece=Accounting Doc. -Withdrawal=Odnětí +Credit=Kredit +Piece=Účetnictví Doc. +Withdrawal=Výběr Withdrawals=Výběry -AmountHTVATRealReceived=Net shromážděný -AmountHTVATRealPaid=Čisté placené -VATToPay=DPH prodává +AmountHTVATRealReceived=Net shromážděné +AmountHTVATRealPaid=Net placené +VATToPay=DPH prodejní VATReceived=DPH zaplacená -VATToCollect=DPH nákupy -VATSummary=DPH Balance -LT2SummaryES=IRPF Balance -LT1SummaryES=RE Balance +VATToCollect=DPH nákupní +VATSummary=DPH zůstatek +LT2SummaryES=IRPF zůstatek +LT1SummaryES=RE Zůstatek VATPaid=DPH zaplacená -SalaryPaid=Salary paid -LT2PaidES=IRPF Placené -LT1PaidES=RE Paid +SalaryPaid=Platba mzdy +LT2PaidES=IRPF zaplacená +LT1PaidES=RE Placeno LT2CustomerES=IRPF prodej LT2SupplierES=IRPF nákupy -LT1CustomerES=RE sales -LT1SupplierES=RE purchases -VATCollected=Vybrané DPH +LT1CustomerES=RE odbyt +LT1SupplierES=RE nákupy +VATCollected=Vybraná DPH ToPay=Zaplatit ToGet=Chcete-li získat zpět -SpecialExpensesArea=Area for all special payments -TaxAndDividendsArea=Daňové, sociální příspěvky a dividendy oblasti +SpecialExpensesArea=Oblast pro všechny speciální platby +TaxAndDividendsArea=Oblast pro daně, sociální příspěvky a dividendy SocialContribution=Sociální příspěvek SocialContributions=Sociální příspěvky -MenuSpecialExpenses=Special expenses +MenuSpecialExpenses=Zvláštní výdaje MenuTaxAndDividends=Daně a dividendy -MenuSalaries=Salaries +MenuSalaries=Mzdy MenuSocialContributions=Sociální příspěvky MenuNewSocialContribution=Nový příspěvek NewSocialContribution=Nový příspěvek na sociální zabezpečení -ContributionsToPay=Příspěvky platit -AccountancyTreasuryArea=Účetnictví / Treasury oblast +ContributionsToPay=Platba příspěvků +AccountancyTreasuryArea=Oblast Účetnictví/Pokladna AccountancySetup=Nastavení účetnictví -NewPayment=Nový platební +NewPayment=Nová platba Payments=Platby -PaymentCustomerInvoice=Zákazník fakturu -PaymentSupplierInvoice=Dodavatel fakturu -PaymentSocialContribution=Sociální příspěvek platba -PaymentVat=DPH platba -PaymentSalary=Salary payment +PaymentCustomerInvoice=Platba zákaznické faktury +PaymentSupplierInvoice=Platba dodavatelské faktury +PaymentSocialContribution=Platba sociálního příspěvku +PaymentVat=Platba DPH +PaymentSalary=Výplaty ListPayment=Seznam plateb ListOfPayments=Seznam plateb ListOfCustomerPayments=Seznam zákaznických plateb ListOfSupplierPayments=Seznam plateb dodavatelům DatePayment=Datum platby -DateStartPeriod=Date start period -DateEndPeriod=Date end period -NewVATPayment=New DPH platba -newLT2PaymentES=Nový IRPF platba -newLT1PaymentES=New RE payment -LT2PaymentES=IRPF platby +DateStartPeriod=Datum zahájení období +DateEndPeriod=Datum konce období +NewVATPayment=Nová platba DPH +newLT2PaymentES=Nová platba IRPF +newLT1PaymentES=Nová RE platba +LT2PaymentES=IRPF platba LT2PaymentsES=IRPF Platby -LT1PaymentES=RE Payment -LT1PaymentsES=RE Payments +LT1PaymentES=RE Platba +LT1PaymentsES=RE Platby VATPayment=Platba DPH VATPayments=Platby DPH -SocialContributionsPayments=Sociální příspěvky platby -ShowVatPayment=Zobrazit DPH platbu +SocialContributionsPayments=Platby sociálních příspěvků +ShowVatPayment=Zobrazit platbu DPH TotalToPay=Celkem k zaplacení -TotalVATReceived=Celkem bez DPH obdržel -CustomerAccountancyCode=Zákazník účetnictví kód -SupplierAccountancyCode=Dodavatel účetnictví kód +TotalVATReceived=Obdržené DPH celkem +CustomerAccountancyCode=Kód účetnictví zákazník +SupplierAccountancyCode=Kód účetnictví dodavatel AccountNumberShort=Číslo účtu AccountNumber=Číslo účtu NewAccount=Nový účet SalesTurnover=Obrat SalesTurnoverMinimum=Minimální obrat z prodeje ByThirdParties=Třetími stranami -ByUserAuthorOfInvoice=Fakturou autorovi -AccountancyExport=Účetnictví export -ErrorWrongAccountancyCodeForCompany=Bad zákazník účetní kód pro %s +ByUserAuthorOfInvoice=Fakturu vystavil +AccountancyExport=Export účetnictví +ErrorWrongAccountancyCodeForCompany=Špatný zákaznický účetní kód pro %s SuppliersProductsSellSalesTurnover=Celkový obrat z prodeje výrobků dodavatele. -CheckReceipt=Podívejte se vklad -CheckReceiptShort=Podívejte se vklad -LastCheckReceiptShort=Last %s check receipts +CheckReceipt=Zkontrolujte vklad +CheckReceiptShort=Zkontrolujte vklad +LastCheckReceiptShort=Poslední %s kontrola příjmu NewCheckReceipt=Nová sleva -NewCheckDeposit=Nová kontrola záloha +NewCheckDeposit=Nová kontrola zálohy NewCheckDepositOn=Vytvořte potvrzení o vkladu na účet: %s NoWaitingChecks=Žádné kontroly čekání na vklad. DateChequeReceived=Zkontrolujte datum příjmu -NbOfCheques=Nb kontrol -PaySocialContribution=Platit sociální příspěvek -ConfirmPaySocialContribution=Jste si jisti, že chcete klasifikovat jako sociální příspěvek vyplácí? -DeleteSocialContribution=Odstranění sociální příspěvek +NbOfCheques=Nb kontroly +PaySocialContribution=Platba sociálního příspěvku +ConfirmPaySocialContribution=Jste si jisti, že chcete klasifikovat tento sociální příspěvek jako vyplacený? +DeleteSocialContribution=Odstranit sociální příspěvek ConfirmDeleteSocialContribution=Jste si jisti, že chcete smazat tento příspěvek na sociální zabezpečení? ExportDataset_tax_1=Sociální příspěvky a platby -CalcModeVATDebt=Režim <b>%sVAT na závazky accounting%s.</b> -CalcModeVATEngagement=Režim <b>%sVAT z příjmů-expense%sS.</b> -CalcModeDebt=Režim <b>%sClaims-Debt%sS</b> řekl <b>Závazek účetnictví.</b> -CalcModeEngagement=Režim <b>%sIncomes-Expense%sS</b> řekl <b>hotovostní účetnictví</b> -CalcModeLT1= Mode <b>%sRE on customer invoices - suppliers invoices%s</b> -CalcModeLT1Debt=Mode <b>%sRE on customer invoices%s</b> -CalcModeLT1Rec= Mode <b>%sRE on suppliers invoices%s</b> -CalcModeLT2= Mode <b>%sIRPF on customer invoices - suppliers invoices%s</b> -CalcModeLT2Debt=Mode <b>%sIRPF on customer invoices%s</b> -CalcModeLT2Rec= Mode <b>%sIRPF on suppliers invoices%s</b> +CalcModeVATDebt=Režim <b>%sDPH zápočtu na závazky%s.</b> +CalcModeVATEngagement=Režim <b>%sDPH z rozšířených příjmů%s.</b> +CalcModeDebt=Režim <b>%sPohledávky-závazky%s</b> zobrazí <b>Závazky účetnictví.</b> +CalcModeEngagement=Režim <b>%sPříjmy-Výdaje%s</b> zobrazí <b>hotovostní účetnictví</b> +CalcModeLT1= Mod <b>%sRE na zákaznické faktury - dodavatelské faktury%s</b> +CalcModeLT1Debt=Mod <b>%sRE na zákaznické faktury%s</b> +CalcModeLT1Rec= Mod <b>%sRE na dodavatelské faktury%s</b> +CalcModeLT2= Mod <b>%sIRPF na zákaznické faktury - dodavatelské faktury%s</b> +CalcModeLT2Debt=Mod <b>%sIRPF na zákaznické faktury%s</b> +CalcModeLT2Rec= Mod <b>%sIRPF dodavatelské faktury%s</b> AnnualSummaryDueDebtMode=Bilance příjmů a výdajů, roční shrnutí AnnualSummaryInputOutputMode=Bilance příjmů a výdajů, roční shrnutí -AnnualByCompaniesDueDebtMode=Bilance příjmů a výdajů, detail třetích stran, režim <b>%sClaims-Debt%sS</b> řekl <b>účtování závazků.</b> -AnnualByCompaniesInputOutputMode=Bilance příjmů a výdajů, detail třetích stran, režim <b>%sIncomes-Expense%sS</b> řekla <b>pokladní účetnictví.</b> -SeeReportInInputOutputMode=Viz zpráva <b>%sIncomes-Expense%sS</b> řekl <b>hotovostního účetnictví</b> pro výpočet na skutečných platbách -SeeReportInDueDebtMode=Viz zpráva <b>%sClaims-Debt%sS</b> řekl <b>účtování závazků</b> pro výpočet na vystavených faktur +AnnualByCompaniesDueDebtMode=Bilance příjmů a výdajů, detail třetích stran, režim <b>%sPohledávky-závazky%sS</b> řekl <b>účtování závazků.</b> +AnnualByCompaniesInputOutputMode=Bilance příjmů a výdajů, detail třetích stran, režim <b>%Příjmy-výdaje%sS</b> řekla <b>pokladní účetnictví.</b> +SeeReportInInputOutputMode=Viz zpráva <b>%s Příjmy-Výdaje %s </b> řekl <b>hotovostní účetnictví</b> pro výpočet na skutečných platbách +SeeReportInDueDebtMode=Viz zpráva <b>%s Pohledávky-Závazky %s</b> řekl <b>účtování závazků</b> pro výpočet na vystavených fakturách RulesAmountWithTaxIncluded=- Uvedené částky jsou se všemi daněmi -RulesResultDue=- To zahrnuje neuhrazené faktury, výdaje a DPH, zda byly zaplaceny či nikoliv. <br> - Je založen na validační data faktur a DPH a ke dni splatnosti na náklady. -RulesResultInOut=- It includes the real payments made on invoices, expenses and VAT. <br>- It is based on the payment dates of the invoices, expenses and VAT. -RulesCADue=- Obsahuje klienta splatných faktur, zda jsou placené či nikoliv. <br> - Je založen na validační data těchto faktur. <br> +RulesResultDue=- To zahrnuje neuhrazené faktury, výdaje a DPH, zda byly zaplaceny či nikoliv. <br> - Je založen na ověřených datech faktur a DPH a ke dni splatnosti pro náklady. +RulesResultInOut=- To zahrnuje skutečné platby provedené na fakturách, výdaje a DPH. <br> - Je založen na splatností faktur, nákladech a DPH. +RulesCADue=- Obsahuje klienta splatných faktur, zda jsou placené či nikoliv. <br> - Je založen na validačních datech těchto faktur. <br> RulesCAIn=- Obsahuje všechny účinné platby faktury přijaté od klientů. <br> - Je založen na datu úhrady těchto faktur <br> -DepositsAreNotIncluded=- Kauce faktury, ani zahrnuty -DepositsAreIncluded=- Kauce faktury jsou zahrnuty -LT2ReportByCustomersInInputOutputModeES=Zpráva o třetí stranou IRPF -LT1ReportByCustomersInInputOutputModeES=Report by third party RE -VATReportByCustomersInInputOutputMode=Zpráva zákazníka DPH vyzvednout a zaplatit -VATReportByCustomersInDueDebtMode=Zpráva zákazníka DPH vyzvednout a zaplatit -VATReportByQuartersInInputOutputMode=Zpráva sazby daně z přidané hodnoty vybrané a odvedené -LT1ReportByQuartersInInputOutputMode=Report by RE rate -LT2ReportByQuartersInInputOutputMode=Report by IRPF rate -VATReportByQuartersInDueDebtMode=Zpráva sazby daně z přidané hodnoty vybrané a odvedené -LT1ReportByQuartersInDueDebtMode=Report by RE rate -LT2ReportByQuartersInDueDebtMode=Report by IRPF rate -SeeVATReportInInputOutputMode=Viz zprávu <b>%sVAT encasement%s</b> pro standardní výpočet -SeeVATReportInDueDebtMode=Viz zpráva <b>%sVAT na flow%s</b> pro výpočet s možností na toku +DepositsAreNotIncluded=- Zálohové faktury nejsou zahrnuty +DepositsAreIncluded=- Zálohové faktury jsou zahrnuty +LT2ReportByCustomersInInputOutputModeES=Zpráva o třetí straně IRPF +LT1ReportByCustomersInInputOutputModeES=Zpráva třetí strany RE +VATReportByCustomersInInputOutputMode=Zpráva o vybrané a zaplacené DPH zákazníka +VATReportByCustomersInDueDebtMode=Zpráva o vybrané a zaplacené DPH zákazníka +VATReportByQuartersInInputOutputMode=Zpráva o sazbách DPH vybrané a odvedené +LT1ReportByQuartersInInputOutputMode=Zpráva RE hodnocení +LT2ReportByQuartersInInputOutputMode=Zpráva IRPF hodnocení +VATReportByQuartersInDueDebtMode=Zpráva o sazbách DPH vybrané a odvedené +LT1ReportByQuartersInDueDebtMode=Zpráva RE hodnocení +LT2ReportByQuartersInDueDebtMode=Zpráva IRPF hodnocení +SeeVATReportInInputOutputMode=Viz zprávu <b>%s uzavřená DPH %s</b> pro standardní výpočet +SeeVATReportInDueDebtMode=Viz zpráva <b>%sDPH na průběhu%s</b> pro výpočet s možností průběhu RulesVATInServices=- V případě služeb, zpráva obsahuje DPH předpisy skutečně přijaté nebo vydané na základě data splatnosti. -RulesVATInProducts=- U hmotného majetku, ale zahrnuje DPH faktury na základě data vystavení faktury. -RulesVATDueServices=- V případě služeb, zpráva obsahuje faktur s DPH z důvodu, placené, či nikoli, na základě data vystavení faktury. -RulesVATDueProducts=- U hmotného majetku, ale zahrnuje faktur s DPH, na základě data vystavení faktury. -OptionVatInfoModuleComptabilite=Poznámka: U hmotného majetku, měl by používat termín dodání bude spravedlivější. -PercentOfInvoice=%% / Faktura -NotUsedForGoods=Nepoužívá se na zboží -ProposalStats=Statistiky o návrzích -OrderStats=Statistika objednávek +RulesVATInProducts=- U hmotného majetku zde zahrnuje DPH faktury na základě data vystavení faktury. +RulesVATDueServices=- V případě služeb, zpráva obsahuje faktury s DPH se stavem placené či nikoli, na základě data vystavení faktury. +RulesVATDueProducts=- U hmotného majetku zahrnuje faktury s DPH, na základě data vystavení faktury. +OptionVatInfoModuleComptabilite=Poznámka: U hmotného majetku, by měl být používat termín dodání pro přesnější zobrazení. +PercentOfInvoice=%% /Faktura +NotUsedForGoods=Nepoužívá se pro zboží +ProposalStats=Statistiky o nabídkách +OrderStats=Statistiky objednávek InvoiceStats=Statistika účty -Dispatch=Dispečink -Dispatched=Odešle se, +Dispatch=Odesílání +Dispatched=Odesláno ToDispatch=K odeslání -ThirdPartyMustBeEditAsCustomer=Třetí strana musí být definován jako zákazník -SellsJournal=Prodej Journal -PurchasesJournal=Nákupy Journal -DescSellsJournal=Prodej Journal -DescPurchasesJournal=Nákupy Journal +ThirdPartyMustBeEditAsCustomer=Třetí strana musí být definována jako zákazník +SellsJournal=Prodejní deník +PurchasesJournal=Nákupní deník +DescSellsJournal=Prodejní deník +DescPurchasesJournal=Nákupní deník InvoiceRef=Faktura čj. CodeNotDef=Není definováno -AddRemind=Expedice k dispozici množství +AddRemind=Množství k expedici RemainToDivide= Zbývá k odeslání: -WarningDepositsNotIncluded=Vklady faktury nejsou zahrnuty v této verzi tohoto modulu účetnictví. -DatePaymentTermCantBeLowerThanObjectDate=Termín vyplacení datum nemůže být nižší než objektu data. -Pcg_version=PCG verze -Pcg_type=PCG typ -Pcg_subtype=PCG podtyp -InvoiceLinesToDispatch=Faktura linky na expedici -InvoiceDispatched=Je vyslána, faktury -AccountancyDashboard=Účetnictví shrnutí -ByProductsAndServices=Výrobky a službami +WarningDepositsNotIncluded=Zálohové faktury nejsou zahrnuty v této verzi tohoto modulu účetnictví. +DatePaymentTermCantBeLowerThanObjectDate=Datum termínu platby nemůže být nižší než datum objektu. +Pcg_version=Pcg verze +Pcg_type=Pcg typ +Pcg_subtype=Pcg podtyp +InvoiceLinesToDispatch=Řádky faktury pro odeslání +InvoiceDispatched=Odeslané faktury +AccountancyDashboard=Shrnutí účetnictví +ByProductsAndServices=Výrobky a služby RefExt=Externí ref -ToCreateAPredefinedInvoice=Chcete-li vytvořit předem definovaný fakturu, vytvořte standardní fakturu a pak, aniž by ji potvrdíte, klikněte na tlačítko "Převést do předem faktura". -LinkedOrder=Link to order +ToCreateAPredefinedInvoice=Chcete-li vytvořit předem definovaný fakturu, vytvořte standardní fakturu a pak, aniž by ji potvrdíte, klikněte na tlačítko "Převést do předdefinovaných faktur" +LinkedOrder=Odkaz na objednávku ReCalculate=Přepočítat -Mode1=Method 1 +Mode1=Metoda 1 Mode2=Metoda 2 -CalculationRuleDesc=Chcete-li vypočítat celkovou částku DPH, tam jsou dvě metody: <br> Metoda 1 je zaokrouhlení DPH na každém řádku, pak se sečtou tak. <br> Metoda 2 je součtem všech sud na každém řádku, pak se výsledek zaokrouhlování. <br> Konečný výsledek může se liší od několika centů. Výchozí režim je režim <b>%s.</b> -CalculationRuleDescSupplier=podle dodavatele zvolit vhodnou metodu použít stejné pravidlo pro výpočet a dostat stejný výsledek očekává od svého dodavatele. -TurnoverPerProductInCommitmentAccountingNotRelevant=Obrat zpráva za zboží, při použití <b>hotovosti evidence</b> režim není relevantní. Tato zpráva je k dispozici pouze při použití <b>zásnubní evidence</b> režimu (viz nastavení účetního modulu). -CalculationMode=Výpočet režim -AccountancyJournal=Accountancy code journal -ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT -ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT -ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties -ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties -CloneTax=Clone a social contribution -ConfirmCloneTax=Confirm the clone of a social contribution -CloneTaxForNextMonth=Clone it for next month +CalculationRuleDesc=Chcete-li vypočítat celkovou částku DPH, jsou k dispozici dvě metody: <br> Metoda 1 je zaokrouhlení DPH na každém řádku, částky se sečtou. <br> Metoda 2 je součtem všech sum na každém řádku, pak se výsledek zaokrouhlí. <br> Konečný výsledek může se liší od několika haléřů. Výchozí režim je režim <b>%s.</b> +CalculationRuleDescSupplier=podle dodavatele zvolte vhodnou metodu použití stejného pravidla pro výpočet a dostanete stejný výsledek, který očekáváte od svého dodavatele. +TurnoverPerProductInCommitmentAccountingNotRelevant=Obratová zpráva za zboží při použití režimu <b>hotovostního účetnictví</b> není relevantní. Tato zpráva je k dispozici pouze při použití režimu <b>zapojeného účetnictví</b> (viz nastavení účetního modulu). +CalculationMode=Výpočetní režim +AccountancyJournal=Deník účetnických kódů +ACCOUNTING_VAT_ACCOUNT=Výchozí účetnické kódy pro vybírání DPH +ACCOUNTING_VAT_BUY_ACCOUNT=Výchozí účetnické kódy pro placení DPH +ACCOUNTING_ACCOUNT_CUSTOMER=Účetnické kódy ve výchozím nastavení pro zákazníka třetích stran +ACCOUNTING_ACCOUNT_SUPPLIER=Výchozí účetnické kódy pro dodavatele třetích stran +CloneTax=Kopírovat sociální příspěvek +ConfirmCloneTax=Potvrďte kopírování sociálního příspěvku +CloneTaxForNextMonth=Kopírovat pro příští měsíc diff --git a/htdocs/langs/cs_CZ/contracts.lang b/htdocs/langs/cs_CZ/contracts.lang index 40188328aaec949c928232d91775d76da61229b2..e109df83a7412f952026f9742b906a8589bffa24 100644 --- a/htdocs/langs/cs_CZ/contracts.lang +++ b/htdocs/langs/cs_CZ/contracts.lang @@ -1,63 +1,63 @@ # Dolibarr language file - Source file is en_US - contracts -ContractsArea=Zakázky oblast +ContractsArea=Oblast smluv ListOfContracts=Přehled smluv -LastModifiedContracts=Last %s modified contracts +LastModifiedContracts=Poslední %s upravené smlouvy AllContracts=Všechny smlouvy -ContractCard=Smlouva karty +ContractCard=Karta smlouvy ContractStatus=Stav smlouvy ContractStatusNotRunning=Neběží -ContractStatusRunning=Běh +ContractStatusRunning=Probíhá ContractStatusDraft=Návrh ContractStatusValidated=Ověřené -ContractStatusClosed=Zavřeno +ContractStatusClosed=Uzavřené ServiceStatusInitial=Neběží -ServiceStatusRunning=Běh -ServiceStatusNotLate=Běh, neuplynula +ServiceStatusRunning=Běží +ServiceStatusNotLate=Probíhá, neuplynula ServiceStatusNotLateShort=Neuplynula -ServiceStatusLate=Běh, uplynula +ServiceStatusLate=Probíhá, uplynula ServiceStatusLateShort=Vypršela ServiceStatusClosed=Zavřeno -ServicesLegend=Služby legenda +ServicesLegend=Legenda služeb Contracts=Smlouvy -ContractsAndLine=Contracts and line of contracts +ContractsAndLine=Smlouvy a řádky smluv Contract=Smlouva NoContracts=Žádné smlouvy MenuServices=Služby MenuInactiveServices=Služby, které nejsou aktivní MenuRunningServices=Spuštěné služby -MenuExpiredServices=Propadlé služby +MenuExpiredServices=Expirované služby MenuClosedServices=Uzavřené služby NewContract=Nová smlouva -AddContract=Create contract +AddContract=Vytvoření smlouvy SearchAContract=Hledat smlouvu -DeleteAContract=Odstranění smlouvu +DeleteAContract=Odstranit smlouvu CloseAContract=Zavřít smlouvu -ConfirmDeleteAContract=Jste si jisti, že chcete smazat tuto smlouvu a všechny jeho služby? -ConfirmValidateContract=Jste si jisti, že chcete ověřit tuto smlouvu pod názvem <b>%s?</b> -ConfirmCloseContract=Tím se uzavře všechny služby (aktivní nebo ne). Jste si jisti, že chcete ukončit tuto smlouvu? -ConfirmCloseService=Jste si jisti, že chcete ukončit tuto službu s datem <b>%s?</b> -ValidateAContract=Ověření smlouvu +ConfirmDeleteAContract=Jste si jisti, že chcete smazat tuto smlouvu a všechny tyto služby? +ConfirmValidateContract=Jste si jisti, že chcete ověřit tuto smlouvu pod názvem <b>%s</b> ? +ConfirmCloseContract=Tím uzavřete všechny služby (aktivní nebo neaktivní). Jste si jisti, že chcete ukončit tuto smlouvu? +ConfirmCloseService=Jste si jisti, že chcete ukončit tuto službu s datem <b>%s</b> ? +ValidateAContract=Ověření smlouvy ActivateService=Aktivace služby -ConfirmActivateService=Jste si jisti, že chcete aktivovat tuto službu s datem <b>%s?</b> -RefContract=Smlouva reference +ConfirmActivateService=Jste si jisti, že chcete aktivovat tuto službu s datem <b>%s</b> ? +RefContract=Reference smlouvy DateContract=Datum smlouvy -DateServiceActivate=Aktivace služby Datum -DateServiceUnactivate=Servis deaktivace datum +DateServiceActivate=Datum aktivace služby +DateServiceUnactivate=Datum deaktivace služby DateServiceStart=Termín zahájení služby DateServiceEnd=Termín ukončení služby -ShowContract=Zobrazit smlouvy +ShowContract=Zobrazit smlouvu ListOfServices=Seznam služeb -ListOfInactiveServices=Seznam není aktivní služby +ListOfInactiveServices=Seznam neaktivních služeb ListOfExpiredServices=Seznam prošlých aktivních služeb ListOfClosedServices=Seznam uzavřených služeb -ListOfRunningContractsLines=Seznam běžících smluv linek +ListOfRunningContractsLines=Seznam běžících smluv řádků ListOfRunningServices=Seznam spuštěných služeb NotActivatedServices=Neaktivní služby (u ověřených smluv) BoardNotActivatedServices=Služby pro aktivaci u ověřených smluv -LastContracts=Last %s contracts -LastActivatedServices=Poslední %s aktivaci služby +LastContracts=Poslední %s smlouvy +LastActivatedServices=Poslední %s aktivované služby LastModifiedServices=Poslední %s upravené služby -EditServiceLine=Upravit linka +EditServiceLine=Upravit řádek služby ContractStartDate=Datum zahájení ContractEndDate=Datum ukončení DateStartPlanned=Plánované datum zahájení @@ -75,29 +75,29 @@ RunningServices=Spuštěné služby BoardRunningServices=Prošlé spuštěné služby ServiceStatus=Stav služby DraftContracts=Koncepty smlouvy -CloseRefusedBecauseOneServiceActive=Smlouva nemůže být uzavřen Tam je alespoň jedna otevřená služba na něj -CloseAllContracts=Zavřete všechny smluvní linky +CloseRefusedBecauseOneServiceActive=Smlouva nemůže být uzavřena Je zde na ní alespoň jedna otevřená služba +CloseAllContracts=Zavřete všechny smluvní řádky DeleteContractLine=Odstranění řádku smlouvy -ConfirmDeleteContractLine=Jste si jisti, že chcete smazat tuto řádku smlouvy? -MoveToAnotherContract=Přesuňte službu do jiné smlouvě. -ConfirmMoveToAnotherContract=Vybral jsem novou cílovou smlouvy, a potvrzuji, že chcete přesunout tuto službu do tohoto smluvního vztahu. -ConfirmMoveToAnotherContractQuestion=Vyberte by stávající smlouvy (z téže třetí osobě), kterou chcete přesunout tuto službu? -PaymentRenewContractId=Obnovit smlouvu linie (číslo %s) -ExpiredSince=Datum spotřeby +ConfirmDeleteContractLine=Jste si jisti, že chcete smazat tento řádek smlouvy? +MoveToAnotherContract=Přesuňte službu do jiné smlouvy. +ConfirmMoveToAnotherContract=Vybral jste novou cílovou smlouvu, a potvrzujete vlastní krví, že chcete přesunout tuto službu do tohoto smluvního vztahu. +ConfirmMoveToAnotherContractQuestion=Vybral jste ze stávajících smluv (z téže třetí strany) tu, na kterou chcete přesunout tuto službu? +PaymentRenewContractId=Obnovit smlouvu na řádku (číslo %s) +ExpiredSince=Datum expirace RelatedContracts=Související smlouvy -NoExpiredServices=Žádné skončila aktivní služby -ListOfServicesToExpireWithDuration=Seznam služeb, které vyprší v %s dnů -ListOfServicesToExpireWithDurationNeg=Seznam služeb uplynula od více než %s dnů -ListOfServicesToExpire=Seznam služeb vyprší -NoteListOfYourExpiredServices=Tento seznam obsahuje pouze služby smluv pro třetí strany si jsou propojeny jako obchodního zástupce. -StandardContractsTemplate=Standard contracts template -ContactNameAndSignature=For %s, name and signature: -OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned. +NoExpiredServices=Žádné expirované aktivní služby +ListOfServicesToExpireWithDuration=Seznam služeb, které expirují v %s dnů +ListOfServicesToExpireWithDurationNeg=Seznam služeb expirovaných od více než %s dnů +ListOfServicesToExpire=Seznam expirujících služeb +NoteListOfYourExpiredServices=Tento seznam obsahuje pouze služby smluv pro třetí strany, které jsou propojeny na obchodního zástupce. +StandardContractsTemplate=Šablony standardních smluv +ContactNameAndSignature=Pro %s, jméno a podpis: +OnlyLinesWithTypeServiceAreUsed=Pouze řádky s typem "Služby" budou zkopírovány. ##### Types de contacts ##### -TypeContact_contrat_internal_SALESREPSIGN=Obchodní zástupce podpisu smlouvy +TypeContact_contrat_internal_SALESREPSIGN=Obchodní zástupce podepsal smlouvu TypeContact_contrat_internal_SALESREPFOLL=Obchodní zástupce následující-up smlouva -TypeContact_contrat_external_BILLING=Fakturační kontakt se zákazníkem +TypeContact_contrat_external_BILLING=Fakturační kontakt zákazníka TypeContact_contrat_external_CUSTOMER=Navazující kontakt se zákazníkem -TypeContact_contrat_external_SALESREPSIGN=Podepsání kontraktu kontakt se zákazníkem -Error_CONTRACT_ADDON_NotDefined=Konstantní CONTRACT_ADDON není definováno +TypeContact_contrat_external_SALESREPSIGN=Podepsání smlouvy kontakt se zákazníkem +Error_CONTRACT_ADDON_NotDefined=Konstanta CONTRACT_ADDON není definována diff --git a/htdocs/langs/cs_CZ/cron.lang b/htdocs/langs/cs_CZ/cron.lang index b9411cbeda27251a6d4dab1dcc184a37b6834eab..695153d122f3d5abf700990a251cad0522f8e7c8 100644 --- a/htdocs/langs/cs_CZ/cron.lang +++ b/htdocs/langs/cs_CZ/cron.lang @@ -1,81 +1,81 @@ # Dolibarr language file - Source file is en_US - cron # About page -About = O -CronAbout = O Cron +About = O aplikaci +CronAbout = O cronu CronAboutPage = Cron o stránce # Right -Permission23101 = Přečtěte si naplánovaná úloha -Permission23102 = Vytvořit / aktualizovat naplánovanou úlohu -Permission23103 = Odstranit naplánovaná úloha -Permission23104 = Provést naplánované úlohy, +Permission23101 = Číst naplánovanou úlohu +Permission23102 = Vytvořit/aktualizovat naplánovanou úlohu +Permission23103 = Odstranit naplánovanou úlohu +Permission23104 = Provést naplánované úlohy # Admin CronSetup= Nastavení naplánovaných úloh -URLToLaunchCronJobs=URL to check and launch cron jobs if required -OrToLaunchASpecificJob=Or to check and launch a specific job -KeyForCronAccess=Bezpečnostní klíč pro URL spustit cron -FileToLaunchCronJobs=Příkazový řádek spustit cron -CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes +URLToLaunchCronJobs=URL ke kontrole a spuštění úlohy v případě potřeby +OrToLaunchASpecificJob=Nebo zkontrolovat a zahájit konkrétní práci +KeyForCronAccess=Bezpečnostní klíč URL spuštění úlohy +FileToLaunchCronJobs=Příkazový řádek pro spuštění úlohy +CronExplainHowToRunUnix=Na Unixových systémech by jste měli použít následující položku crontab ke spuštění příkazového řádku každých 5 minut +CronExplainHowToRunWin=Na Microsoft Windows systémech můžete použít naplánováné nástroje úloh ke spuštění příkazového řádku každých 5 minut # Menu CronJobs=Naplánované úlohy -CronListActive=List of active/scheduled jobs -CronListInactive=Seznam postižených míst +CronListActive=Výpis aktivních/naplánovaných úloh +CronListInactive=Seznam vypnutých úloh # Page list -CronDateLastRun=Poslední běh -CronLastOutput=Poslední běh výstup -CronLastResult=Poslední kód výsledku +CronDateLastRun=Poslední úloha +CronLastOutput=Výstup poslední úlohy +CronLastResult=Výstup posledního kódu CronListOfCronJobs=Seznam naplánovaných úloh CronCommand=Příkaz -CronList=Scheduled job -CronDelete=Delete scheduled jobs -CronConfirmDelete=Are you sure you want to delete this scheduled jobs ? -CronExecute=Launch scheduled jobs -CronConfirmExecute=Are you sure to execute this scheduled jobs now ? -CronInfo=Scheduled job module allow to execute job that have been planned -CronWaitingJobs=Waiting jobs +CronList=Naplánovaná úloha +CronDelete=Smazat naplánované úlohy +CronConfirmDelete=Jste si jisti, že chcete smazat tyto naplánované úlohy? +CronExecute=Spuštění naplánovaných úloh +CronConfirmExecute=Opravdu chcete provést tyto naplánované úlohy nyní? +CronInfo=Plánovací modul úloh umožňují provádět úlohy, které byly plánované +CronWaitingJobs=Čekající úlohy CronTask=Práce CronNone=Nikdo CronDtStart=Datum zahájení CronDtEnd=Datum ukončení CronDtNextLaunch=Další provedení -CronDtLastLaunch=Poslední poprava +CronDtLastLaunch=Poslední provedení CronFrequency=Frekvenční -CronClass=Classe +CronClass=Třída CronMethod=Metoda CronModule=Modul CronAction=Akce -CronStatus=Postavení +CronStatus=Status CronStatusActive=Povoleno -CronStatusInactive=Invalidní -CronNoJobs=Žádní registrovaní práce +CronStatusInactive=Vypnuto +CronNoJobs=Žádné registrované úkoly CronPriority=Priorita CronLabel=Popis CronNbRun=Nb. zahájit CronEach=Každý JobFinished=Práce zahájena a dokončena #Page card -CronAdd= Přidat pracovních míst -CronHourStart= Začněte hodinu a datum úkolu +CronAdd= Přidat práci +CronHourStart= Hodina a datum startu úkolu CronEvery= A úkol provést každý -CronObject= Instance / objekt vytvořit +CronObject= Vytvoření Instance/objektu CronArgs=Parametry -CronSaveSucess=Uložit úspěšně +CronSaveSucess=Úspěšně uloženo CronNote=Komentář -CronFieldMandatory=Pole je povinné %s +CronFieldMandatory=Pole %s je povinné CronErrEndDateStartDt=Datum ukončení nemůže být před datem zahájení CronStatusActiveBtn=Umožnit CronStatusInactiveBtn=Zakázat -CronTaskInactive=Tato úloha je zakázán -CronDtLastResult=Poslední výsledek Datum +CronTaskInactive=Tato úloha je zakázána +CronDtLastResult=Datum posledního výsledku CronId=Id CronClassFile=Třídy (filename.class.php) -CronModuleHelp=Název adresáře modulu Dolibarr (také pracovat s externím modulem Dolibarr). <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / <u>produktu</u> / třída / product.class.php, hodnota modulu je <i>produkt</i> -CronClassFileHelp=Název souboru načíst. <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / produktu / třída / <u>product.class.php,</u> hodnota název třídy souboru je <i>product.class.php</i> -CronObjectHelp=Název objektu načíst. <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / produktu / třída / product.class.php, hodnota název třídy souboru je <i>výrobek</i> -CronMethodHelp=Objekt způsob startu. <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / produktu / třída / product.class.php, hodnota metody je <i>fecth</i> -CronArgsHelp=Metoda argumenty. <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / produktu / třída / product.class.php, může být hodnota paramters být <i>0, ProductRef</i> -CronCommandHelp=Systém příkazového řádku spustit. -CronCreateJob=Create new Scheduled Job +CronModuleHelp=Název adresáře modulu Dalibor (pracuje i s externími moduly). <BR> Např načíst metody objektu produktu ../htdocs/<u>product</u>/class/product.class.php, hodnota modulu je <i>product</i> +CronClassFileHelp=Načíst název souboru. <BR> Např načíst metody objektu výrobku .../htdocs/product/class/<u>product.class.php</u> hodnota název třídy souboru je <i>product.class.php</i> +CronObjectHelp=NNačíst název objektu. <BR> Např načíst metody objektu výrobku .../htdocs/product/class/product.class.php, hodnota název třídy souboru je <i>výrobek</i> +CronMethodHelp=Objekt způsob startu. <BR> Např načíst metody objektu .../htdocs/product/class/product.class.php, hodnota metody je <i>fecth</i> +CronArgsHelp=Metoda argumenty. <BR> Např načíst metody objektu výrobku .../htdocs/product/class/product.class.php, hodnota paramteru může být <i>0, ProductRef</i> +CronCommandHelp=Spustit příkazový řádek. +CronCreateJob=Vytvořit novou naplánovanou úlohu # Info CronInfoPage=Informace # Common @@ -84,5 +84,5 @@ CronType_method=Volání metody třídy Dolibarr CronType_command=Shell příkaz CronMenu=Cron CronCannotLoadClass=Nelze načíst třídu nebo objekt %s %s -UseMenuModuleToolsToAddCronJobs=Jděte do menu "Home - Moduly nářadí - Seznam úloh" vidět a upravovat naplánované úlohy. -TaskDisabled=Task disabled +UseMenuModuleToolsToAddCronJobs=Jděte do menu "Home- Moduly nářadí- Seznam úloh" kde vidíte a upravujete naplánované úlohy. +TaskDisabled=Task vypnut diff --git a/htdocs/langs/cs_CZ/deliveries.lang b/htdocs/langs/cs_CZ/deliveries.lang index 8bcb7e06d06ce7c81e36cb5b9265879ab5dbbcaf..cb558b04d05a67b839d29a3948d7f9dafab03586 100644 --- a/htdocs/langs/cs_CZ/deliveries.lang +++ b/htdocs/langs/cs_CZ/deliveries.lang @@ -1,12 +1,12 @@ # Dolibarr language file - Source file is en_US - deliveries -Delivery=Dodání +Delivery=Dodávka Deliveries=Dodávky -DeliveryCard=Dodávka karet -DeliveryOrder=Dodávka, aby +DeliveryCard=Karta dodávky +DeliveryOrder=Dodací objednávka DeliveryOrders=Dodací objednávky DeliveryDate=Termín dodání -DeliveryDateShort=Deliv. datum -CreateDeliveryOrder=Generovat příkaz k dodání +DeliveryDateShort=Term. dodání +CreateDeliveryOrder=Generovat objednávku k dodání QtyDelivered=Množství dodáno SetDeliveryDate=Nastavit datem odeslání ValidateDeliveryReceipt=Potvrzení o doručení @@ -19,8 +19,10 @@ DeliveryNotValidated=Dodávka není ověřena # merou PDF model NameAndSignature=Jméno a podpis: ToAndDate=To___________________________________ na ____ / _____ / __________ -GoodStatusDeclaration=Už zboží obdržel výše v dobrém stavu, +GoodStatusDeclaration=Výšeuvedené zboží obdrženo v dobrém stavu, Deliverer=Doručovatel: Sender=Odesílatel Recipient=Příjemce -# ErrorStockIsNotEnough=There's not enough stock +ErrorStockIsNotEnough=Dostatečné množství není skladem +Shippable=Doručitelné +NonShippable=Nedoručitelné diff --git a/htdocs/langs/cs_CZ/donations.lang b/htdocs/langs/cs_CZ/donations.lang index 609c56121a87f33453c7589ed61f264b5141ccb0..c4bfe9ac16e3655f3bd723cc3b7f5b34b759ca11 100644 --- a/htdocs/langs/cs_CZ/donations.lang +++ b/htdocs/langs/cs_CZ/donations.lang @@ -4,40 +4,40 @@ Donations=Dary DonationRef=Darování čj. Donor=Dárce Donors=Dárci -AddDonation=Create a donation -NewDonation=Nový dárcovství -DeleteADonation=Delete a donation -ConfirmDeleteADonation=Are you sure you want to delete this donation ? +AddDonation=Vytvořit dar +NewDonation=Nový dar +DeleteADonation=Odstranit dar +ConfirmDeleteADonation=Jste si jisti, že chcete smazat tento dar? ShowDonation=Zobrazit dar -DonationPromise=Dárkové slib -PromisesNotValid=Nevaliduje sliby -PromisesValid=Ověřené sliby -DonationsPaid=Dary věnována -DonationsReceived=Dary přijaté -PublicDonation=Veřejné dar -DonationsNumber=Darování číslo -DonationsArea=Dary oblast -DonationStatusPromiseNotValidated=Návrh slib -DonationStatusPromiseValidated=Ověřené slib -DonationStatusPaid=Dotace přijaté +DonationPromise=Příslib dárku +PromisesNotValid=Neověřené přísliby +PromisesValid=Ověřené přísliby +DonationsPaid=Zaplacené dary +DonationsReceived=Přijaté dary +PublicDonation=Veřejný dar +DonationsNumber=Číslo daru +DonationsArea=Oblast darů +DonationStatusPromiseNotValidated=Návrh příslibu +DonationStatusPromiseValidated=Ověření příslibu +DonationStatusPaid=Obdržený dar DonationStatusPromiseNotValidatedShort=Návrh DonationStatusPromiseValidatedShort=Ověřené DonationStatusPaidShort=Přijaté -DonationTitle=Donation receipt -DonationDatePayment=Payment date -ValidPromess=Ověřit slib -DonationReceipt=Darování příjem -BuildDonationReceipt=Build přijetí -DonationsModels=Dokumenty modely pro darování příjmů +DonationTitle=Příjem daru +DonationDatePayment=Datum platby +ValidPromess=Ověřit příslib +DonationReceipt=Příjem daru +BuildDonationReceipt=Příprava příjmu +DonationsModels=Modelové dokumenty pro darování příjmů LastModifiedDonations=Poslední %s upravené dary -SearchADonation=Hledat daru -DonationRecipient=Darování příjemce +SearchADonation=Hledat dar +DonationRecipient=Příjemce daru ThankYou=Děkuji -IConfirmDonationReception=Příjemce deklarovat příjem, jako dar, následující částky -MinimumAmount=Minimum amount is %s -FreeTextOnDonations=Free text to show in footer -FrenchOptions=Options for France -DONATION_ART200=Show article 200 from CGI if you are concerned -DONATION_ART238=Show article 238 from CGI if you are concerned -DONATION_ART885=Show article 885 from CGI if you are concerned -DonationPayment=Donation payment +IConfirmDonationReception=Příjemce deklaruje příjem jako dar v hodnotě následující částky +MinimumAmount=Minimální částka je %s +FreeTextOnDonations=Volný text zobrazený v zápatí +FrenchOptions=Možnosti pro Francii +DONATION_ART200=Zobrazit článek 200 od CGI, pokud máte obavy +DONATION_ART238=Zobrazit článek 238 od CGI, pokud máte obavy +DONATION_ART885=Zobrazit článek 885 od CGI, pokud máte obavy +DonationPayment=Platba daru diff --git a/htdocs/langs/cs_CZ/ecm.lang b/htdocs/langs/cs_CZ/ecm.lang index dfc4c1c11066017720b44cf8d90a3df38a9059df..21a9237c9a83d9c7f51bd40010df15ed5df2c7f9 100644 --- a/htdocs/langs/cs_CZ/ecm.lang +++ b/htdocs/langs/cs_CZ/ecm.lang @@ -4,17 +4,17 @@ DocsMine=Moje dokumenty DocsGenerated=Generované dokumenty DocsElements=Prvky dokumenty DocsThirdParties=Dokumenty třetích stran -DocsContracts=Dokumenty smlouvy -DocsProposals=Dokumenty návrhy -DocsOrders=Dokumenty objednávky -DocsInvoices=Dokumenty faktury -ECMNbOfDocs=Nb dokumentů v adresáři +DocsContracts=Dokumenty smluv +DocsProposals=Dokumenty nabídek +DocsOrders=Dokumenty objednávek +DocsInvoices=Dokumenty faktur +ECMNbOfDocs=Množství dokumentů v adresáři ECMNbOfDocsSmall=Nb doc. ECMSection=Adresář -ECMSectionManual=Ruční Directory -ECMSectionAuto=Automatické adresář +ECMSectionManual=Manuální adresář +ECMSectionAuto=Automatický adresář ECMSectionsManual=Ruční strom -ECMSectionsAuto=Automatické strom +ECMSectionsAuto=Automatický strom ECMSections=Adresáře ECMRoot=Kořen ECMNewSection=Nový adresář @@ -27,31 +27,31 @@ ECMNbOfFilesInSubDir=Počet souborů v podadresářích ECMCreationUser=Tvůrce ECMArea=EDM oblast ECMAreaDesc=EDM (Electronic Document Management) plocha umožňuje uložit, sdílet a rychle vyhledávat všechny druhy dokumentů v Dolibarr. -ECMAreaDesc2=* Automatické adresáře jsou vyplněny automaticky při přidávání dokumentů z karty prvku. <br> * Manuální adresáře lze použít k uložení dokladů, které nejsou spojené s konkrétní prvek. +ECMAreaDesc2=* Automatické adresáře jsou vyplněny automaticky při přidávání dokumentů z karty prvku. <br> * Manuální adresáře lze použít k uložení dokladů, které nejsou spojené s konkrétním prvkem. ECMSectionWasRemoved=Rejstřík <b>%s</b> byl vymazán. ECMDocumentsSection=Dokument z adresáře ECMSearchByKeywords=Vyhledávání podle klíčových slov ECMSearchByEntity=Hledat podle objektu ECMSectionOfDocuments=Adresáře dokumentů -ECMTypeManual=Manuál +ECMTypeManual=Manuální ECMTypeAuto=Automatický ECMDocsBySocialContributions=Dokumenty související odvody na sociální zabezpečení ECMDocsByThirdParties=Dokumenty související se třetími stranami ECMDocsByProposals=Dokumenty související s návrhy -ECMDocsByOrders=Dokumenty související s zákazníky objednávky +ECMDocsByOrders=Dokumenty související s objednávkami zákazníků ECMDocsByContracts=Dokumenty související se smlouvami -ECMDocsByInvoices=Dokumenty související s fakturami zákazníky +ECMDocsByInvoices=Dokumenty související s fakturami zákazníků ECMDocsByProducts=Dokumenty související s produkty ECMDocsByProjects=Dokumenty související s projekty -ECMDocsByUsers=Documents linked to users -ECMDocsByInterventions=Documents linked to interventions -ECMNoDirectoryYet=No vytvořil adresář +ECMDocsByUsers=Dokumenty spojené s uživateli +ECMDocsByInterventions=Dokumenty spojené s intervencemi +ECMNoDirectoryYet=Nevytvořený adresář ShowECMSection=Zobrazit adresář DeleteSection=Odstraňte adresář -ConfirmDeleteSection=Můžete potvrdit, že chcete smazat adresáře <b>%s?</b> +ConfirmDeleteSection=Můžete skutečně potvrdit, že chcete smazat adresář <b>%s</b> ? ECMDirectoryForFiles=Relativní adresář pro soubory -CannotRemoveDirectoryContainsFiles=Není možné odstranit, protože obsahuje některé soubory +CannotRemoveDirectoryContainsFiles=Nelze odstranit, protože obsahuje některé soubory ECMFileManager=Správce souborů ECMSelectASection=Vyberte adresář na levé straně stromu ... -DirNotSynchronizedSyncFirst=Tento adresář se zdá být vytvořena nebo změněna mimo modulu ECM. Musíte kliknout na tlačítko "Obnovit" první synchronizaci disku a databázi, aby se obsah tohoto adresáře. +DirNotSynchronizedSyncFirst=Tento adresář se zdá být vytvořena nebo změněna mimo modul ECM. Musíte kliknout na tlačítko "Refresh" a napřed sesynchonizovat disk a databázi, pro korektní připojení tohoto adresáře. diff --git a/htdocs/langs/cs_CZ/externalsite.lang b/htdocs/langs/cs_CZ/externalsite.lang index 8bb9c5644a29dc20a016bcebf6cae6282d6b2a9a..473892a41db7a79217392c807df22efe86e9e468 100644 --- a/htdocs/langs/cs_CZ/externalsite.lang +++ b/htdocs/langs/cs_CZ/externalsite.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Nastavení odkaz na externí webové stránky -ExternalSiteURL=Externí URL stránek -ExternalSiteModuleNotComplete=Modul ExternalSite nebyl správně nakonfigurován. -ExampleMyMenuEntry=My menu entry +ExternalSiteSetup=Nastavení odkazu na externí webové stránky +ExternalSiteURL=URL externích stránek +ExternalSiteModuleNotComplete=Modul Externí stránky nebyl správně nakonfigurován. +ExampleMyMenuEntry=Moje menu vstup diff --git a/htdocs/langs/cs_CZ/holiday.lang b/htdocs/langs/cs_CZ/holiday.lang index 0c62056dd33e8bbef2c6376b54014666d2c12505..b62e2abbde5c7e8caf8bef420d44a99fa7eac247 100644 --- a/htdocs/langs/cs_CZ/holiday.lang +++ b/htdocs/langs/cs_CZ/holiday.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - holiday HRM=HRM -Holidays=Leaves -CPTitreMenu=Leaves +Holidays=Dovolená +CPTitreMenu=Dovolená MenuReportMonth=Měsíční výkaz -MenuAddCP=Make a leave request -NotActiveModCP=You must enable the module Leaves to view this page. -NotConfigModCP=You must configure the module Leaves to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>. -NoCPforUser=You don't have any available day. -AddCP=Make a leave request +MenuAddCP=Požádejte o dovolenou +NotActiveModCP=Musíte povolit modul dovolená pro zobrazení této stránky. +NotConfigModCP=Musíte nakonfigurovat modul dovolení pro zobrazení této stránky. Provedete zde:, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> klikněte zde </ a>. +NoCPforUser=Nemáte k dispozici žádné volné dny. +AddCP=Požádejte o dovolenou Employe=Zaměstnanec DateDebCP=Datum zahájení DateFinCP=Datum ukončení @@ -16,133 +16,133 @@ DraftCP=Návrh ToReviewCP=Čeká na schválení ApprovedCP=Schválený CancelCP=Zrušený -RefuseCP=Odmítl -ValidatorCP=Approbator -ListeCP=List of leaves +RefuseCP=Odmínutý +ValidatorCP=Schválil +ListeCP=Seznam dovolených ReviewedByCP=Bude přezkoumána DescCP=Popis -SendRequestCP=Create leave request -DelayToRequestCP=Leave requests must be made at least <b>%s day(s)</b> before them. -MenuConfCP=Edit balance of leaves -UpdateAllCP=Update the leaves -SoldeCPUser=Leaves balance is <b>%s</b> days. -ErrorEndDateCP=Musíte vybrat koncové datum je větší než datum zahájení. +SendRequestCP=Vytvořit požadavek na dovolenou +DelayToRequestCP=Požadavek na dovolenou musí být zadán nejméně <b>%s den(y)</b> před termínem. +MenuConfCP=Úprava rozvrhu dovolené +UpdateAllCP=Aktualizace dovolené +SoldeCPUser=Zbývající dovolená je <b>%s</b> dnů. +ErrorEndDateCP=Musíte vybrat koncové datum větší než datum zahájení. ErrorSQLCreateCP=SQL chyba při tvorbě: -ErrorIDFicheCP=An error has occurred, the leave request does not exist. +ErrorIDFicheCP=Došlo k chybě, požadavek dovolené neexistuje. ReturnCP=Zpět na předchozí stránku -ErrorUserViewCP=You are not authorized to read this leave request. -InfosCP=Information of the leave request -InfosWorkflowCP=Informace Workflow -RequestByCP=Žádost -TitreRequestCP=Leave request -NbUseDaysCP=Number of days of vacation consumed +ErrorUserViewCP=Nemáte oprávnění číst tuto žádost o dovolenou +InfosCP=Informace o žádosti o dovolenou +InfosWorkflowCP=Průběh informací +RequestByCP=Požádané +TitreRequestCP=Nechat žádost +NbUseDaysCP=Počet dní vyčerpané dovolené EditCP=Upravit DeleteCP=Vymazat ActionValidCP=Potvrdit ActionRefuseCP=Odmítnout ActionCancelCP=Zrušit -StatutCP=Postavení -SendToValidationCP=Poslat na potvrzení -TitleDeleteCP=Delete the leave request -ConfirmDeleteCP=Confirm the deletion of this leave request? -ErrorCantDeleteCP=Error you don't have the right to delete this leave request. -CantCreateCP=You don't have the right to make leave requests. -InvalidValidatorCP=You must choose an approbator to your leave request. -CantUpdate=You cannot update this leave request. +StatutCP=Status +SendToValidationCP=Poslat pro potvrzení +TitleDeleteCP=Smazat požadavek na dovolenou +ConfirmDeleteCP=Potvrďit odstranění této žádosti o dovolenou? +ErrorCantDeleteCP=Chyba: Nemáte oprávnění smazat tuto žádost o dovolenou. +CantCreateCP=Nemáte právo podávat žádosti o dovolenou. +InvalidValidatorCP=Musíte vybrat schvalujícího pro vaši žádost o dovolenou. +CantUpdate=Nelze aktualizovat tento požadavek na dovolenou. NoDateDebut=Musíte vybrat počáteční datum. NoDateFin=Musíte vybrat datum ukončení. -ErrorDureeCP=Your leave request does not contain working day. -TitleValidCP=Approve the leave request -ConfirmValidCP=Are you sure you want to approve the leave request? +ErrorDureeCP=Vaše žádost o dovolenou neobsahuje pracovní den. +TitleValidCP=Schválit žádost o dovolenou +ConfirmValidCP=Jste si jisti, že chcete schválit tuto žádost o dovolenou? DateValidCP=Datum schválení -TitleToValidCP=Send leave request -ConfirmToValidCP=Are you sure you want to send the leave request? -TitleRefuseCP=Refuse the leave request -ConfirmRefuseCP=Are you sure you want to refuse the leave request? +TitleToValidCP=Odeslat žádost o dovolenou +ConfirmToValidCP=Jste si jisti, že chcete odeslat tuto žádost o dovolenou? +TitleRefuseCP=Odmítnout žádost o dovolenou +ConfirmRefuseCP=Jste si jisti, že chcete odmítnout tuto žádost o dovolenou? NoMotifRefuseCP=Musíte si vybrat důvod pro odmítnutí žádosti. -TitleCancelCP=Cancel the leave request -ConfirmCancelCP=Are you sure you want to cancel the leave request? +TitleCancelCP=Zrušit požadavek na dovolenou +ConfirmCancelCP=Jste si jisti, že chcete zrušit požadavek na dovolenou? DetailRefusCP=Důvod odmítnutí DateRefusCP=Datum odmítnutí DateCancelCP=Datum zrušení -DefineEventUserCP=Přiřazení výjimečnou dovolenou pro uživatele -addEventToUserCP=Přiřazení opustit +DefineEventUserCP=Přiřadit výjimečnou dovolenou pro uživatele +addEventToUserCP=Přiřadit dovolenou MotifCP=Důvod UserCP=Uživatel -ErrorAddEventToUserCP=Došlo k chybě při přidávání výjimečnou dovolenou. -AddEventToUserOkCP=Přidání mimořádné dovolené byla dokončena. -MenuLogCP=View logs of leave requests -LogCP=Log of updates of available vacation days +ErrorAddEventToUserCP=Došlo k chybě při přidávání požadavku na výjimečnou dovolenou. +AddEventToUserOkCP=Přidání výjimečné dovolené bylo dokončeno. +MenuLogCP=Zobrazit logy žádostí o dovolenou +LogCP=Log aktualizací dostupných prázdninových dnů ActionByCP=Účinkují UserUpdateCP=Pro uživatele -PrevSoldeCP=Předchozí Balance -NewSoldeCP=New Balance -alreadyCPexist=A leave request has already been done on this period. +PrevSoldeCP=Předchozí zůstatek +NewSoldeCP=Nový zůstatek +alreadyCPexist=Žádost o dovolenou pro toto období již byla provedena. UserName=Název Employee=Zaměstnanec -FirstDayOfHoliday=First day of vacation -LastDayOfHoliday=Last day of vacation +FirstDayOfHoliday=První den dovolené +LastDayOfHoliday=Poslední den dovolené HolidaysMonthlyUpdate=Měsíční aktualizace ManualUpdate=Ruční aktualizace -HolidaysCancelation=Leave request cancelation +HolidaysCancelation=Stornovat dovolenou ## Configuration du Module ## -ConfCP=Configuration of leave request module +ConfCP=Konfigurace modulu žádosti o dovolené DescOptionCP=Popis možnosti ValueOptionCP=Hodnota -GroupToValidateCP=Group with the ability to approve leave requests +GroupToValidateCP=Skupina se schopností schvalovat žádosti o dovolenou ConfirmConfigCP=Ověření konfigurace -LastUpdateCP=Last automatic update of leaves allocation +LastUpdateCP=Poslední automatická aktualizace alokace dovolených UpdateConfCPOK=Aktualizováno úspěšně. ErrorUpdateConfCP=Došlo k chybě při aktualizaci, zkuste to prosím znovu. -AddCPforUsers=Please add the balance of leaves allocation of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>. -DelayForSubmitCP=Deadline to make a leave requests -AlertapprobatortorDelayCP=Prevent the approbator if the leave request does not match the deadline -AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay -AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance -nbUserCP=Number of users supported in the module Leaves -nbHolidayDeductedCP=Number of leave days to be deducted per day of vacation taken -nbHolidayEveryMonthCP=Number of leave days added every month -Module27130Name= Management of leave requests -Module27130Desc= Management of leave requests -TitleOptionMainCP=Main settings of leave request -TitleOptionEventCP=Settings of leave requets for events +AddCPforUsers=Prosím, přidejte rovnováhu dovolené alokace uživatelům <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">klikněte zde</a>. +DelayForSubmitCP=Uzávěrka žádosti o dovolenou +AlertapprobatortorDelayCP=Zabraňte žádosti pokud žádost o dovolenou neodpovídá lhůtě. +AlertValidatorDelayCP=Zabránit schválení pokud žádost volno přesáhla zpoždění +AlertValidorSoldeCP=Zabraňte schválení pokud žádost o dovolenou překročila zůstatek +nbUserCP=Počet uživatelů podporovaných v modulu dovolené +nbHolidayDeductedCP=Počet dní dovolené, které mají být za den dovolené přijatých odečteny +nbHolidayEveryMonthCP=Počet dní dovolené přidávaných každý měsíc +Module27130Name= Správa žádostí o dovolenou +Module27130Desc= Správa požadavků dovolené +TitleOptionMainCP=Hlavní nastavení požadavku na dovolenou +TitleOptionEventCP=Nastavení dovolené týkající se událostí ValidEventCP=Potvrdit UpdateEventCP=Aktualizace akce CreateEventCP=Vytvořit NameEventCP=Název akce -OkCreateEventCP=Přidání akce proběhla dobře. +OkCreateEventCP=Přidání akce proběhlo zcela hladce a dobře. ErrorCreateEventCP=Chyba při vytváření události. UpdateEventOkCP=Aktualizace akce dopadla dobře. ErrorUpdateEventCP=Chyba při aktualizaci události. DeleteEventCP=Odstranit událost DeleteEventOkCP=Událost byla odstraněna. ErrorDeleteEventCP=Chyba při mazání události. -TitleDeleteEventCP=Odstranění výjimečnou dovolenou -TitleCreateEventCP=Vytvořte si výjimečnou dovolenou +TitleDeleteEventCP=Odstranění výjimečné dovolené +TitleCreateEventCP=Vytvořte výjimečnou dovolenou TitleUpdateEventCP=Upravit nebo smazat výjimečnou dovolenou DeleteEventOptionCP=Vymazat UpdateEventOptionCP=Aktualizovat -ErrorMailNotSend=Došlo k chybě při odesílání e-mail: -NoCPforMonth=Ne opustit tento měsíc. +ErrorMailNotSend=Došlo k chybě při odesílání na e-mail: +NoCPforMonth=Nelze opustit tento měsíc. nbJours=Počet dní -TitleAdminCP=Configuration of Leaves +TitleAdminCP=Konfigurace dovolené #Messages Hello=Ahoj -HolidaysToValidate=Validate leave requests -HolidaysToValidateBody=Below is a leave request to validate -HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. -HolidaysToValidateAlertSolde=The user who made this leave reques do not have enough available days. -HolidaysValidated=Validated leave requests -HolidaysValidatedBody=Your leave request for %s to %s has been validated. -HolidaysRefused=Request denied -HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : -HolidaysCanceled=Canceled leaved request -HolidaysCanceledBody=Your leave request for %s to %s has been canceled. -Permission20000=Read you own leave requests -Permission20001=Create/modify your leave requests -Permission20002=Create/modify leave requests for everybody -Permission20003=Delete leave requests -Permission20004=Setup users available vacation days -Permission20005=Review log of modified leave requests -Permission20006=Read leaves monthly report +HolidaysToValidate=Ověření žádosti o dovolenou +HolidaysToValidateBody=Níže je požadavek na ověření dovolené +HolidaysToValidateDelay=Tento požadavek dovolené proběhne ve lhůtě kratší než %s dní. +HolidaysToValidateAlertSolde=Uživatel, který vytvořil tento požadavek na dovolenou nemá k dispozici dostatek dní. +HolidaysValidated=Ověřené žádosti dovolené +HolidaysValidatedBody=Vaše žádost o dovolenou %s do %s byla ověřena. +HolidaysRefused=Požadavek zamítnut +HolidaysRefusedBody=Vaše žádost o dovolenou pro %s do %s byla zamítnuta z těchto důvodů: +HolidaysCanceled=Zrušené požadavky na dovolenou +HolidaysCanceledBody=Vaše žádost o dovolenou pro %s na %s byla zrušena. +Permission20000=Přečtěte si vlastní žádosti o dovolenou +Permission20001=Vytvořit/upravit vaše požadavky na dovolenou +Permission20002=Vytvořit/upravit žádosti o dovolenou pro každého +Permission20003=Smazat žádosti o dovolenou +Permission20004=Uživatelské nastavení dostupné pro dovolenouy +Permission20005=Přezkum logu žádostí modifikovaných dovolených +Permission20006=Čtení zpráv měsíčních dovolených diff --git a/htdocs/langs/cs_CZ/install.lang b/htdocs/langs/cs_CZ/install.lang index 7967e44f0b237ebc5ecd3aa37084f62ed6a8933b..2765b1810d310ae626a7a27c202dfee93bf6804c 100644 --- a/htdocs/langs/cs_CZ/install.lang +++ b/htdocs/langs/cs_CZ/install.lang @@ -155,8 +155,8 @@ MigrationFinished=Migrace dokončena LastStepDesc=<strong>Poslední krok:</strong> Definujte zde přihlašovací jméno a heslo které budete používat pro připojení k softwaru. Toto heslo neztraťte - jedná se o jediný administrátorský účet. ActivateModule=Aktivace modulu %s ShowEditTechnicalParameters=Klikněte zde pro zobrazení / editaci pokročilých parametrů (pro experty) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... -ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) +WarningUpgrade=Výstraha:\n\nSpustili jste napřed zálohování databáze?\n\nToto je důrazně doporučováno: Například, kvůli některým chybám v databázových systémech (například mysql verze 5.5.40), může dojít ke ztrátě některých dat nebo tabulek v průběhu tohoto procesu, takže je důrazně doporučováno mít kompletní výpis a kompletní zálohu databáze před zahájením migrace.\n\n\nPokud jste tomu dobře porozuměli, klepnutím na tlačítko OK spusťte proces migrace... +ErrorDatabaseVersionForbiddenForMigration=Vaše verze databáze je %s. Ta bohužel obsahuje kritickou chybu mající zásadní vliv na ztrátu dat, pokud provedete změnu struktury ve vaší databázi, stejně jako je to vyžadováno v procesu migrace. Z tohoto důvodu nebude migrace povolena, dokud neprovedete upgrade databáze na vyšší fixní verzi (seznam známých chybných verzí: %s) ######### # upgrade @@ -208,7 +208,7 @@ MigrationProjectTaskTime=Čas aktualizace v sekundách MigrationActioncommElement=Aktualizovat údaje na činnostech MigrationPaymentMode=Migrace dat platebního režimu MigrationCategorieAssociation=Migrace kategorií -MigrationEvents=Migration of events to add event owner into assignement table +MigrationEvents=Migrace událostí přidá vlastníka události do přiřazené tabulky -ShowNotAvailableOptions=Show not available options -HideNotAvailableOptions=Hide not available options +ShowNotAvailableOptions=Ukázat nedostupné možnosti +HideNotAvailableOptions=Skrýt nedostupné možnosti diff --git a/htdocs/langs/cs_CZ/interventions.lang b/htdocs/langs/cs_CZ/interventions.lang index a37f812b23dc3c14e9f89ae771f72aa829cfb044..4df3fc656234700679e3dd47f200164dbc7d79e6 100644 --- a/htdocs/langs/cs_CZ/interventions.lang +++ b/htdocs/langs/cs_CZ/interventions.lang @@ -1,53 +1,53 @@ # Dolibarr language file - Source file is en_US - interventions Intervention=Intervence Interventions=Intervence -InterventionCard=Intervence karty -NewIntervention=Nový zásah -AddIntervention=Create intervention -ListOfInterventions=Seznam zásahů -EditIntervention=Upravit zásah +InterventionCard=Karta intervence +NewIntervention=Nová intervence +AddIntervention=Vytvořit intervenci +ListOfInterventions=Seznam intervencí +EditIntervention=Upravit intervenci ActionsOnFicheInter=Akce zaměřené na intervenci -LastInterventions=Poslední %s zásahy -AllInterventions=Všechny zásahy +LastInterventions=Poslední %s intervence +AllInterventions=Všechny intervence CreateDraftIntervention=Vytvořte návrh CustomerDoesNotHavePrefix=Zákazník nemá předponu -InterventionContact=Intervence kontakt -DeleteIntervention=Odstranit zásah -ValidateIntervention=Ověřit zásah -ModifyIntervention=Upravit zásah +InterventionContact=Kontakt intervence +DeleteIntervention=Odstranit intervenci +ValidateIntervention=Ověřit intervenci +ModifyIntervention=Upravit intervenci DeleteInterventionLine=Odstranit intervenční linku -ConfirmDeleteIntervention=Jste si jisti, že chcete smazat tento zásah? -ConfirmValidateIntervention=Jste si jisti, že chcete ověřit tento zásah pod názvem <b>%s?</b> -ConfirmModifyIntervention=Jste si jisti, že chcete změnit tento zásah? +ConfirmDeleteIntervention=Jste si jisti, že chcete smazat tuto intervenci? +ConfirmValidateIntervention=Jste si jisti, že chcete ověřit tuto intervenci pod názvem <b>%s?</b> +ConfirmModifyIntervention=Jste si jisti, že chcete změnit tuto intervenci? ConfirmDeleteInterventionLine=Jste si jisti, že chcete smazat tento řádek intervence? NameAndSignatureOfInternalContact=Jméno a podpis intervence: NameAndSignatureOfExternalContact=Jméno a podpis objednavatele: -DocumentModelStandard=Standardní dokument model pro zásahy -InterventionCardsAndInterventionLines=Intervence a linky intervencí -InterventionClassifyBilled=Classify "Billed" -InterventionClassifyUnBilled=Classify "Unbilled" +DocumentModelStandard=Standardní model dokumentů pro intervence +InterventionCardsAndInterventionLines=Intervence a řádky intervencí +InterventionClassifyBilled=Klasifikovat jako "účtované" +InterventionClassifyUnBilled=Klasifikovat jako "Neúčtované" StatusInterInvoiced=Účtováno -RelatedInterventions=Související zákroky -ShowIntervention=Zobrazit zásah -SendInterventionRef=Submission of intervention %s -SendInterventionByMail=Send intervention by Email -InterventionCreatedInDolibarr=Intervention %s created -InterventionValidatedInDolibarr=Intervention %s validated -InterventionModifiedInDolibarr=Intervention %s modified -InterventionClassifiedBilledInDolibarr=Intervention %s set as billed -InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled -InterventionSentByEMail=Intervention %s sent by EMail -InterventionDeletedInDolibarr=Intervention %s deleted -SearchAnIntervention=Search an intervention +RelatedInterventions=Související intervence +ShowIntervention=Zobrazit intervenci +SendInterventionRef=Předložení intervenčního %s +SendInterventionByMail=Poslat intervenci e-mailem +InterventionCreatedInDolibarr=Intervence %s vytvořena +InterventionValidatedInDolibarr=Intervence %s ověřena +InterventionModifiedInDolibarr=Intervence %s upravena +InterventionClassifiedBilledInDolibarr=Intervenční %s nastavena jako zaúčtovaná +InterventionClassifiedUnbilledInDolibarr=Intervence %s nastavená jako nezaúčtovaná +InterventionSentByEMail=Intervence %s odeslána e-mailem +InterventionDeletedInDolibarr=Intervence %s odstraněna +SearchAnIntervention=Hledat intervenci ##### Types de contacts ##### -TypeContact_fichinter_internal_INTERREPFOLL=Zástupce následující-up zásah +TypeContact_fichinter_internal_INTERREPFOLL=Representativní následující intervence TypeContact_fichinter_internal_INTERVENING=Zásah TypeContact_fichinter_external_BILLING=Fakturační kontakt se zákazníkem TypeContact_fichinter_external_CUSTOMER=V návaznosti kontakt se zákazníkem # Modele numérotation -ArcticNumRefModelDesc1=Generic číslo modelu +ArcticNumRefModelDesc1=Generické číslo modelu ArcticNumRefModelError=Nepodařilo se aktivovat -PacificNumRefModelDesc1=Zpět numero ve formátu %syymm-nnnn, kde yy je rok, MM je měsíc a nnnn je sekvence bez přerušení a bez vrátí na 0. -PacificNumRefModelError=Zásah karta začíná s $ syymm již existuje a není kompatibilní s tímto modelem sekvence. Vyjměte ji nebo přejmenujte jej na aktivaci tohoto modulu. -PrintProductsOnFichinter=Vytisknout produktů na intervenční karty -PrintProductsOnFichinterDetails=interventions generated from orders +PacificNumRefModelDesc1=Návrat čísla ve formátu %syymm-nnnn, kde yy je rok, mm je měsíc a nnnn je sekvence bez přerušení a bez návratu na 0. +PacificNumRefModelError=Zásahová karta začíná s $ syymm již existuje a není kompatibilní s tímto modelem sekvence. Odstraňte ji nebo přejmenujte pro aktivaci tohoto modulu. +PrintProductsOnFichinter=Výpis produktů na intervenční kartě +PrintProductsOnFichinterDetails=intervence generované z objednávek diff --git a/htdocs/langs/cs_CZ/languages.lang b/htdocs/langs/cs_CZ/languages.lang index 4a1599697605f5eb03022e6cecb511fa9bece1db..d8ab2115f4a626f1f6789c3f043c021ed4346328 100644 --- a/htdocs/langs/cs_CZ/languages.lang +++ b/htdocs/langs/cs_CZ/languages.lang @@ -8,12 +8,12 @@ Language_ca_ES=Katalánština Language_cs_CZ=Čeština Language_da_DA=Dánština Language_da_DK=Dánština -Language_de_DE=Němec +Language_de_DE=Němčina Language_de_AT=Němčina (Rakousko) -Language_de_CH=German (Switzerland) -Language_el_GR=Řek +Language_de_CH=Německy (Švýcarsko) +Language_el_GR=Řecky Language_en_AU=Angličtina (Austrálie) -Language_en_CA=English (Canada) +Language_en_CA=Angličtina (Kanada) Language_en_GB=Angličtina (Velká Británie) Language_en_IN=Angličtina (Indie) Language_en_NZ=Angličtina (Nový Zéland) @@ -21,9 +21,9 @@ Language_en_SA=Angličtina (Saúdská Arábie) Language_en_US=Angličtina (Spojené státy) Language_en_ZA=Angličtina (Jižní Afrika) Language_es_ES=Španělština -Language_es_DO=Spanish (Dominican Republic) +Language_es_DO=Španělština (Dominikánská republika) Language_es_AR=Španělština (Argentina) -Language_es_CL=Spanish (Chile) +Language_es_CL=Španělština (Chile) Language_es_HN=Španělština (Honduras) Language_es_MX=Španělština (Mexiko) Language_es_PY=Španělština (Paraguay) @@ -31,28 +31,28 @@ Language_es_PE=Španělština (Peru) Language_es_PR=Španělština (Puerto Rico) Language_et_EE=Estonština Language_eu_ES=Basque -Language_fa_IR=Peršan -Language_fi_FI=Ploutve +Language_fa_IR=Perština +Language_fi_FI=Finština Language_fr_BE=Francouzština (Belgie) Language_fr_CA=Francouzština (Kanada) Language_fr_CH=Francouzština (Švýcarsko) -Language_fr_FR=Francouzský +Language_fr_FR=Francouzsky Language_fr_NC=Francouzština (Nová Kaledonie) Language_he_IL=Hebrejština Language_hr_HR=Chorvatský Language_hu_HU=Maďarština -Language_id_ID=Indonesian -Language_is_IS=Islandský +Language_id_ID=Indonésie +Language_is_IS=Islandština Language_it_IT=Italština -Language_ja_JP=Japonec +Language_ja_JP=Japonsky Language_ko_KR=Korejština Language_lt_LT=Litevský Language_lv_LV=Lotyština Language_mk_MK=Makedonský Language_nb_NO=Norština (Bokmål) -Language_nl_BE=Nizozemci (Belgie) -Language_nl_NL=Dutch (Nizozemsko) -Language_pl_PL=Polský +Language_nl_BE=Nizozemí (Belgie) +Language_nl_NL=Nizozemí (Holandsko) +Language_pl_PL=Polsky Language_pt_BR=Portugalština (Brazílie) Language_pt_PT=Portugalština Language_ro_RO=Rumunština @@ -60,13 +60,13 @@ Language_ru_RU=Ruština Language_ru_UA=Ruština (Ukrajina) Language_tr_TR=Turečtina Language_sl_SI=Slovinština -Language_sv_SV=Švédský +Language_sv_SV=Švédsky Language_sv_SE=Švédský -Language_sq_AL=Albanian -Language_sk_SK=Slovenský -Language_th_TH=Thai -Language_uk_UA=Ukrajinec -Language_uz_UZ=Uzbek -Language_vi_VN=Vietnamec -Language_zh_CN=Číňan +Language_sq_AL=Albánština +Language_sk_SK=Slovenština +Language_th_TH=Thajsko +Language_uk_UA=Ukrajina +Language_uz_UZ=Uzbecký +Language_vi_VN=Vietnamština +Language_zh_CN=Čínština Language_zh_TW=Čínština (tradiční) diff --git a/htdocs/langs/cs_CZ/link.lang b/htdocs/langs/cs_CZ/link.lang index 8b1efb75ef372daf24c660017c22d0cda43189b8..c4ff863c182c4291bd7c3a46a8015a96a317264f 100644 --- a/htdocs/langs/cs_CZ/link.lang +++ b/htdocs/langs/cs_CZ/link.lang @@ -1,8 +1,8 @@ -LinkANewFile=Link a new file/document -LinkedFiles=Linked files and documents -NoLinkFound=No registered links -LinkComplete=The file has been linked successfully -ErrorFileNotLinked=The file could not be linked -LinkRemoved=The link %s has been removed -ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>' -ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>' +LinkANewFile=Odkaz na nový soubor/dokument +LinkedFiles=Odkaz na soubory a dokumenty +NoLinkFound=Neregistrovaný odkaz +LinkComplete=Soubor byl úspěšně propojen +ErrorFileNotLinked=Soubor nemohl být propojen +LinkRemoved=Odkaz %s byl odstraněn +ErrorFailedToDeleteLink= Nepodařilo se odstranit odkaz '<b>%s</b>' +ErrorFailedToUpdateLink= Nepodařilo se aktualizovat odkaz '<b>%s</b>' diff --git a/htdocs/langs/cs_CZ/mails.lang b/htdocs/langs/cs_CZ/mails.lang index 43b666519499af5e85989d9ef7699caff9b772fd..faae153984e21f2d5ec84288f63e0ec18c634c5a 100644 --- a/htdocs/langs/cs_CZ/mails.lang +++ b/htdocs/langs/cs_CZ/mails.lang @@ -1,10 +1,10 @@ # Dolibarr language file - Source file is en_US - mails -Mailing=E-mailem -EMailing=E-mailem -Mailings=EMailings -EMailings=EMailings -AllEMailings=Všechny eMailings -MailCard=E-mailem kartu +Mailing=Mail +EMailing=Mail +Mailings=Maily +EMailings=Maily +AllEMailings=Všechny e-maily +MailCard=Karta e-mailové komunikace MailTargets=Cíle MailRecipients=Příjemci MailRecipient=Příjemce @@ -12,132 +12,132 @@ MailTitle=Popis MailFrom=Odesílatel MailErrorsTo=Chyby MailReply=Odpovědět -MailTo=Přijímač (s) +MailTo=Příjemce(i) MailCC=Kopírovat do -MailCCC=Cached kopii -MailTopic=EMail téma +MailCCC=Cache kopie +MailTopic=Předmět MailText=Zpráva MailFile=Přiložené soubory -MailMessage=Těle e-mailu -ShowEMailing=Zobrazit e-mailem -ListOfEMailings=Seznam emailings -NewMailing=Nové posílání e-mailů -EditMailing=Upravit e-mailem -ResetMailing=Znovu e-mailem -DeleteMailing=Odstranění e-mailem -DeleteAMailing=Odstranění e-mailem -PreviewMailing=Náhled posílání e-mailů -PrepareMailing=Připravte e-mailem -CreateMailing=Vytvoření e-mailem -MailingDesc=Tato stránka vám umožňuje posílat emailings ke skupině lidí. -MailingResult=Odesílání e-mailů výsledek -TestMailing=Zkušební e-mail +MailMessage=Tělo e-mailu +ShowEMailing=Zobrazit mail +ListOfEMailings=Seznam zpráv +NewMailing=Nové odeslání +EditMailing=Upravit mail +ResetMailing=Odpovědět +DeleteMailing=Odstranit mail +DeleteAMailing=Odstranit všechny maily +PreviewMailing=Náhled zprávy +PrepareMailing=Připravit mail +CreateMailing=Vytvořit mail +MailingDesc=Tato stránka vám umožňuje posílat mail ke skupině lidí. +MailingResult=Výsledek odeslání mailů +TestMailing=Zkušební mail ValidMailing=Platné posílání e-mailů -ApproveMailing=Schválit e-mailem +ApproveMailing=Schválit mail MailingStatusDraft=Návrh MailingStatusValidated=Ověřené MailingStatusApproved=Schválený MailingStatusSent=Odesláno -MailingStatusSentPartialy=Odeslané částečně -MailingStatusSentCompletely=Odeslané zcela +MailingStatusSentPartialy=Odesláno částečně +MailingStatusSentCompletely=Odesláno komplet MailingStatusError=Chyba -MailingStatusNotSent=Neposlal +MailingStatusNotSent=Neodesláno MailSuccessfulySent=E-mail úspěšně odeslán (od %s na %s) -MailingSuccessfullyValidated=E-mailem úspěšně ověřena +MailingSuccessfullyValidated=E-mail úspěšně ověřen MailUnsubcribe=Odhlásit Unsuscribe=Odhlásit -MailingStatusNotContact=Nedotýkejte se už -ErrorMailRecipientIsEmpty=Příjemce e-mailu je prázdný -WarningNoEMailsAdded=Žádné nové Email přidat do seznamu příjemce. -ConfirmValidMailing=Jste si jisti, že chcete ověřit tuto e-mailem? -ConfirmResetMailing=Pozor, u reinitializing e-mailem <b>%s,</b> umožníte, aby se hmotnost odeslání tohoto e-mailu jindy. Jste si jisti, že to je to, co chcete dělat? +MailingStatusNotContact=Nekontaktujte mě už +ErrorMailRecipientIsEmpty=Příjemce e-mailu chybí +WarningNoEMailsAdded=Žádné nové maily nebyly přidány do seznamu příjemců. +ConfirmValidMailing=Jste si jisti, že chcete ověřit tento e-mail? +ConfirmResetMailing=Pozor, u opětovné inicializace mailingu <b>%s,</b> umožníte hromadné odeslání tohoto e-mailu v jinou dobu. Jste si jisti, že to je to, co chcete dělat? ConfirmDeleteMailing=Jste si jisti, že chcete smazat tento emailling? NbOfRecipients=Počet příjemců NbOfUniqueEMails=Nb unikátních e-mailů NbOfEMails=Nb e-mailů TotalNbOfDistinctRecipients=Počet různých příjemců -NoTargetYet=Žádné příjemci Dosud nebyly definovány (Jdi na záložku "příjemce") +NoTargetYet=Žádní příjemci dosud nebyli definováni (Jděte na záložku 'Příjemci') AddRecipients=Přidání příjemců -RemoveRecipient=Odstranit příjemce -CommonSubstitutions=Časté střídání -YouCanAddYourOwnPredefindedListHere=Chcete-li vytvořit e-mailovou volič modulu, viz htdocs / core / modules / korespondence / README. -EMailTestSubstitutionReplacedByGenericValues=Při použití testovacího režimu, jsou substituce proměnné nahrazeny obecných hodnot +RemoveRecipient=Odebrat příjemce +CommonSubstitutions=Časté přílohy +YouCanAddYourOwnPredefindedListHere=Chcete-li vytvořit modul výběru e-mailů, prohlédněte si dokumentaci v htdocs/core/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=Při použití testovacího režimu jsou substituce proměnných nahrazeny obecnými hodnotami MailingAddFile=Připojte tento obrázek NoAttachedFiles=Žádné přiložené soubory BadEMail=Špatná hodnota pro e-mail -CloneEMailing=Klonování e-mailem -ConfirmCloneEMailing=Jste si jisti, že chcete kopírovat tuto e-mailem? -CloneContent=Clone zprávu -CloneReceivers=Cloner příjemci +CloneEMailing=Kopírování mailů +ConfirmCloneEMailing=Jste si jisti, že chcete kopírovat tento mailing? +CloneContent=Kopírovat zprávu +CloneReceivers=Kopírovat příjemce DateLastSend=Datum posledního odeslání DateSending=Datum odeslání -SentTo=Odeslané <b>%s</b> +SentTo=Odesláno <b>%s</b> MailingStatusRead=Číst -CheckRead=Přečtení -YourMailUnsubcribeOK=Napsat <b>%s</b> správně unsubcribe z mailing listu -MailtoEMail=Hyper odkaz na e-mail -ActivateCheckRead=Nechá se použít "" Unsubcribe odkaz -ActivateCheckReadKey=Tlačítko slouží pro šifrování URL využití pro "přečtení" a "Unsubcribe" funkce +CheckRead=Přečteno příjemcem +YourMailUnsubcribeOK=Mailová zpráva <b>%s</b> byla správně odstraněna z mailing listu +MailtoEMail=Odkaz na e-mail +ActivateCheckRead= Můžete použít odkaz "Odhlásit" +ActivateCheckReadKey=Tlačítko slouží pro šifrování URL pro využití funkce "Potvrzení o přečtení" a "Odhlášení" EMailSentToNRecipients=Email byl odeslán na %s příjemcům. -XTargetsAdded=<b>%s</b> recipients added into target list -EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. -MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) -SendRemind=Send reminder by EMails -RemindSent=%s reminder(s) sent -AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent) -NoRemindSent=No EMail reminder sent -ResultOfMassSending=Result of mass EMail reminders sending +XTargetsAdded=<b>%s</b> příjemců přidáno do seznamu cílů +EachInvoiceWillBeAttachedToEmail=Dokument s použitím šablony výchozí faktury dokumentu bude vytvořen a připojen k každému mailu. +MailTopicSendRemindUnpaidInvoices=Upomínka faktury %s (%s) +SendRemind=Zaslání upomínky na maily +RemindSent=%s upomínka(y) odesláno +AllRecipientSelectedForRemind=Všechny třetí strany vybrány pokud je nastaven e-mail (všimněte si, že pouze jeden mail pro fakturu bude odeslán) +NoRemindSent=Žádná upomínka nebyla e.mailem odeslána +ResultOfMassSending=Výsledek hromadného rozeslání upomínek mailem # Libelle des modules de liste de destinataires mailing -MailingModuleDescContactCompanies=Kontakty / adresy všech třetích stran (zákazník, vyhlídka, dodavatel, ...) +MailingModuleDescContactCompanies=Kontakty/adresy všech třetích stran (zákazník, cíl, dodavatel, ...) MailingModuleDescDolibarrUsers=Dolibarr uživatelé -MailingModuleDescFundationMembers=Členy Nadace s e-maily +MailingModuleDescFundationMembers=Členové nadace s e-maily MailingModuleDescEmailsFromFile=E-maily z textového souboru (e-mail, příjmení, křestní jméno, ostatní) MailingModuleDescEmailsFromUser=E-maily z uživatelského vstupu (e-mail, příjmení, křestní jméno, ostatní) MailingModuleDescContactsCategories=Třetí strany (podle kategorie) -MailingModuleDescDolibarrContractsLinesExpired=Třetí strany s prošlým zadávacích linky -MailingModuleDescContactsByCompanyCategory=Kontakty / adresy třetích stran (třetími stranami kategorie) -MailingModuleDescContactsByCategory=Kontakty / adresy třetích stran podle kategorie -MailingModuleDescMembersCategories=Členy Nadace (podle kategorií) -MailingModuleDescContactsByFunction=Kontakty / adresy třetím stranám (podle pozice / funkce) -LineInFile=Linka %s v souboru +MailingModuleDescDolibarrContractsLinesExpired=Třetí strany s prošlým řádky kontraktu +MailingModuleDescContactsByCompanyCategory=Kontakty/adresy třetích stran (pro kategorie Třetí strany) +MailingModuleDescContactsByCategory=Kontakty/adresy třetích stran podle kategorie +MailingModuleDescMembersCategories=Členové nadace (podle kategorií) +MailingModuleDescContactsByFunction=Kontakty/adresy třetích stran (podle pozice/funkce) +LineInFile=Řádek %s v souboru RecipientSelectionModules=Definované požadavky na výběr příjemce -MailSelectedRecipients=Vybrané příjemci +MailSelectedRecipients=Vybraní příjemci MailingArea=EMailings oblast -LastMailings=Poslední %s emailings -TargetsStatistics=Cíle statistiky -NbOfCompaniesContacts=Unikátní kontakty / adresy -MailNoChangePossible=Příjemci pro validované rozesílání nelze změnit +LastMailings=Poslední %s zprávy +TargetsStatistics=Cílové statistiky +NbOfCompaniesContacts=Unikátní kontakty/adresy +MailNoChangePossible=Příjemce pro validované rozesílání nelze změnit SearchAMailing=Hledat mailing -SendMailing=Poslat e-mailem +SendMailing=Poslat zprávy SendMail=Odeslat e-mail -SentBy=Odesílatel: -MailingNeedCommand=Z bezpečnostních důvodů, odesílání e-mailem, je lepší, když provádí z příkazového řádku. Máte-li jeden, požádejte správce serveru spustit následující příkaz pro odeslání e-mailem všem příjemcům: -MailingNeedCommand2=Však můžete zaslat on-line přidáním parametru MAILING_LIMIT_SENDBYWEB s hodnotou max počet e-mailů, které chcete poslat zasedání. K tomu, přejděte na doma - Nastavení - Ostatní. -ConfirmSendingEmailing=Pokud nemůžete nebo raději posílat je s www prohlížeče, prosím, potvrzujete, že jste jisti, že chcete poslat e-mailem teď z vašeho prohlížeče? -LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, <b>%s</b> recipients at a time for each sending session. +SentBy=Odeslal +MailingNeedCommand=Z bezpečnostních důvodů je lepší provádět odesílání mailů z příkazového řádku. Nemáte li k němu přístup, požádejte správce serveru spuštění následujícího příkazu pro odeslání e-mailu všem příjemcům: +MailingNeedCommand2=Můžete odeslat všem on-line přidáním parametru MAILING_LIMIT_SENDBYWEB s hodnotou max počet e-mailů, které chcete poslat v této dávce. K aktivaci přejděte na Domů - Nastavení - Ostatní. +ConfirmSendingEmailing=Pokud nemůžete preferovat odesílání přes váš browser prosím, potvrzujete, že jste jisti, že chcete poslat e-mailem teď z vašeho prohlížeče? +LimitSendingEmailing=Poznámka: Odeslání zpráv z webového rozhraní se provádí v několika časech z důvodů bezpečnostního a časového limitu max.<b>%s</b> příjemcům najednou pro každou odesílání relaci. TargetsReset=Vymazat seznam ToClearAllRecipientsClickHere=Klikněte zde pro vymazání seznamu příjemců tohoto rozesílání ToAddRecipientsChooseHere=Přidejte příjemce výběrem ze seznamu -NbOfEMailingsReceived=Hromadné emailings obdržel -NbOfEMailingsSend=Mass emailings sent +NbOfEMailingsReceived=Hromadné zprávy obdržel +NbOfEMailingsSend=Hromadný mail odeslán IdRecord=ID záznamu DeliveryReceipt=Potvrzení o doručení -YouCanUseCommaSeparatorForSeveralRecipients=Můžete použít <b>čárkový</b> oddělovač zadat více příjemců. -TagCheckMail=Sledování zásilek otevření -TagUnsubscribe=Odhlásit odkaz -TagSignature=Podpis zasílání uživatele +YouCanUseCommaSeparatorForSeveralRecipients=Můžete použít <b>čárkový</b> oddělovač pro zadání více příjemců. +TagCheckMail=Sledování mailů aktivováno +TagUnsubscribe=Link pro odhlášení +TagSignature=Podpis zasílání uživateli TagMailtoEmail=E-mail příjemce # Module Notifications Notifications=Upozornění -NoNotificationsWillBeSent=Žádné oznámení e-mailem jsou plánovány pro tuto událost a společnost -ANotificationsWillBeSent=1 bude zaslán e-mailem +NoNotificationsWillBeSent=Nejsou plánovány žádná e-mailová oznámení pro tuto událost nebo společnost +ANotificationsWillBeSent=1 notifikace bude zaslána e-mailem SomeNotificationsWillBeSent=%s oznámení bude zasláno e-mailem -AddNewNotification=Activate a new email notification target -ListOfActiveNotifications=List all active email notification targets -ListOfNotificationsDone=Vypsat všechny e-maily odesílané oznámení -MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. -MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter <strong>'%s'</strong> to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. -MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. -YouCanAlsoUseSupervisorKeyword=You can also add the keyword <strong>__SUPERVISOREMAIL__</strong> to have email being sent to the supervisor of user (works only if an email is defined for this supervisor) -NbOfTargetedContacts=Current number of targeted contact emails +AddNewNotification=Aktivace cíle pro nové e-mailové upozornění +ListOfActiveNotifications=Seznam všech aktivních cílů pro e-mailové oznámení +ListOfNotificationsDone=Vypsat všechny odeslané e.mailové oznámení +MailSendSetupIs=Konfigurace odesílání e-maiů byla nastavena tak, aby '%s'. Tento režim nelze použít k odesílání hromadných e-mailů. +MailSendSetupIs2=Nejprve je nutné jít s admin účtem, do nabídky%sHome - Nastavení - e-maily%s pro změnu parametru <strong>"%s"</strong> do režimu použít "%s". V tomto režimu, můžete zadat nastavení serveru SMTP vašeho poskytovatele služeb internetu a používat hromadnou e-mailovou funkci. +MailSendSetupIs3=Pokud máte nějaké otázky o tom, jak nastavit SMTP server, můžete se zeptat na%s, nebo si prostudujte dokumentaci vašeho poskytovatele. \nPoznámka: V současné době bohužel většina serverů nasazuje služby pro filtrování nevyžádané pošty a různé způsoby ověřování odesilatele. Bez detailnějších znalostí a nastavení vašeho SMTP serveru se vám bude vracet většina zpráv jako nedoručené. +YouCanAlsoUseSupervisorKeyword=Můžete také přidat klíčové slovo<strong>__SUPERVISOREMAIL__</strong>a e-mail byl odeslán na vedoucího uživatele (funguje pouze v případě že e-mail je definován pro tento orgán dohledu) +NbOfTargetedContacts=Aktuální počet cílených kontaktních e-mailů diff --git a/htdocs/langs/cs_CZ/main.lang b/htdocs/langs/cs_CZ/main.lang index 516340250cb48b2d3b1da56f53252f0de6b3345b..3ccc5ccbc29fb3d53258c3798b1a0ab101ed8a45 100644 --- a/htdocs/langs/cs_CZ/main.lang +++ b/htdocs/langs/cs_CZ/main.lang @@ -50,7 +50,7 @@ ErrorYourCountryIsNotDefined=Vaše země není definována. Přejděte na Domů- ErrorRecordIsUsedByChild=Nepodařilo se smazat tento záznam. Tento záznam je používán minimálně jedním vnořeným záznamem. ErrorWrongValue=Chybná hodnota ErrorWrongValueForParameterX=Chybná hodnota parametru %s -ErrorNoRequestInError=Žádný požadavek omylem +ErrorNoRequestInError=Žádný chybný požadavek ErrorServiceUnavailableTryLater=Služba momentálně není k dispozici. Zkuste to znovu později. ErrorDuplicateField=Duplicitní hodnota v poli ErrorSomeErrorWereFoundRollbackIsDone=Byly nalezeny nějaké chyby. Veškeré změny budou zpětně vráceny. @@ -59,13 +59,13 @@ ErrorCantLoadUserFromDolibarrDatabase=Nepodařilo se najít uživatele <b>%s</b> ErrorNoVATRateDefinedForSellerCountry=Chyba, pro zemi '%s' nejsou definovány žádné sazby DPH. ErrorNoSocialContributionForSellerCountry=Chyba, žádný typ sociálních příspěvků není definován pro zemi '%s'. ErrorFailedToSaveFile=Chyba, nepodařilo se uložit soubor. -SetDate=Set date -SelectDate=Select a date +SetDate=Nastavení datumu +SelectDate=Výběr datumu SeeAlso=Viz také %s -SeeHere=See here +SeeHere=Nahlédněte zde BackgroundColorByDefault=Výchozí barva pozadí -FileNotUploaded=The file was not uploaded -FileUploaded=The file was successfully uploaded +FileNotUploaded=Soubor nebyl nahrán +FileUploaded=Soubor byl úspěšně nahrán FileWasNotUploaded=Soubor vybrán pro připojení, ale ještě nebyl nahrán. Klikněte na "Přiložit soubor". NbOfEntries=Počet záznamů GoToWikiHelpPage=Online nápověda (vyžadován přístup k Internetu) @@ -74,7 +74,7 @@ RecordSaved=Záznam uložen RecordDeleted=Záznam smazán LevelOfFeature=Úroveň vlastností NotDefined=Není definováno -DefinedAndHasThisValue=Definován a hodnota +DefinedAndHasThisValue=Definována hodnota IsNotDefined=nedefinované DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr režim autentikace je nastaven na <b>%s</b> v konfiguračním souboru <b>conf.php.</b> <br> To znamená, že databáze hesel je externí, takže změna tohoto pole nemusí mít žádný účinek. Administrator=Správce @@ -90,16 +90,16 @@ AuthenticationMode=Režim autentizace RequestedUrl=Požadovaná URL DatabaseTypeManager=Správce typu databáze RequestLastAccess=Žádost o poslední přístup do databáze -RequestLastAccessInError=Žádost o poslední přístup do databáze omylem -ReturnCodeLastAccessInError=Návratový kód pro přístup k databázi v poslední chyby -InformationLastAccessInError=Informace pro poslední přístup do databáze omylem +RequestLastAccessInError=Žádost o poslední přístup do databáze v případě chyby +ReturnCodeLastAccessInError=Návratový kód pro přístup k databázi v případě chyby +InformationLastAccessInError=Informace pro poslední přístup do databáze v případě chyby DolibarrHasDetectedError=Dolibarr zjistil technickou chybu -InformationToHelpDiagnose=Toto jsou informace, které mohou pomoci diagnostické +InformationToHelpDiagnose=Toto jsou informace, které mohou pomoci při diagnostice MoreInformation=Více informací -TechnicalInformation=Technical information +TechnicalInformation=Technická informace NotePublic=Poznámka (veřejné) NotePrivate=Poznámka (soukromé) -PrecisionUnitIsLimitedToXDecimals=Dolibarr bylo nastavení omezit přesnost jednotkových cen <b>%s</b> desetinných míst. +PrecisionUnitIsLimitedToXDecimals=Dolibarr byl nastaven pro limit přesnosti jednotkových cen na <b>%s</b> desetinných míst. DoTest=Test ToFilter=Filtr WarningYouHaveAtLeastOneTaskLate=Pozor, máte alespoň jeden prvek, který překročil tolerance zpoždění. @@ -128,12 +128,12 @@ Disabled=Invalidní Add=Přidat AddLink=Přidat odkaz Update=Aktualizovat -AddActionToDo=Přidat akci dělat -AddActionDone=Přidat akci provést +AddActionToDo=Přidat událost do +AddActionDone=Přidat provedení události Close=Zavřít Close2=Zavřít Confirm=Potvrdit -ConfirmSendCardByMail=Opravdu chcete poslat obsah této karty poštou na <b>%s?</b> +ConfirmSendCardByMail=Opravdu chcete poslat obsah této karty mailem na <b>%s?</b> Delete=Vymazat Remove=Odstranit Resiliate=Resiliate @@ -141,14 +141,14 @@ Cancel=Zrušit Modify=Upravit Edit=Upravit Validate=Potvrdit -ValidateAndApprove=Validate and Approve +ValidateAndApprove=Ověřeno a schváleno ToValidate=Chcete-li ověřit Save=Uložit SaveAs=Uložit jako TestConnection=Zkušební připojení ToClone=Klon ConfirmClone=Vyberte data, která chcete klonovat: -NoCloneOptionsSpecified=Žádné údaje nejsou k klonovat definován. +NoCloneOptionsSpecified=Žádná data nejsou vybrána ke klonování. Of=z Go=Jít Run=Běh @@ -159,12 +159,12 @@ Search=Vyhledávání SearchOf=Vyhledávání Valid=Platný Approve=Schvalovat -Disapprove=Disapprove +Disapprove=Neschváleno ReOpen=Znovu otevřít Upload=Odeslat soubor -ToLink=Link +ToLink=Odkaz Select=Vybrat -Choose=Vybrat +Choose=Zvolit ChooseLangage=Zvolte si prosím jazyk Resize=Změna velikosti Recenter=Recenter @@ -173,10 +173,10 @@ User=Uživatel Users=Uživatelé Group=Skupina Groups=Skupiny -NoUserGroupDefined=No user group defined +NoUserGroupDefined=Žádná uživatelská skupina není definována Password=Heslo PasswordRetype=Zadejte znovu heslo -NoteSomeFeaturesAreDisabled=Všimněte si, že mnoho funkcí / modules jsou zakázány v této ukázce. +NoteSomeFeaturesAreDisabled=Všimněte si, že mnoho funkcí/modulů jsou zakázány v této ukázce. Name=Název Person=Osoba Parameter=Parametr @@ -200,7 +200,7 @@ Family=Rodina Description=Popis Designation=Popis Model=Model -DefaultModel=Výchozí model, +DefaultModel=Výchozí model Action=Událost About=O Number=Číslo @@ -209,25 +209,25 @@ AmountByMonth=Částka podle měsíce Numero=Číslo Limit=Omezení Limits=Limity -DevelopmentTeam=Development Team +DevelopmentTeam=Vývojářský tým Logout=Odhlášení -NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode <b>%s</b> +NoLogoutProcessWithAuthMode=Žádná aplikovaná odpojená funkce s režimem ověřování <b>%s</b> Connection=Spojení -Setup=Setup +Setup=Nastavení Alert=Upozornění Previous=Předchozí Next=Další Cards=Karty Card=Karta Now=Nyní -HourStart=Start hour +HourStart=Startovní hodina Date=Datum -DateAndHour=Date and hour +DateAndHour=Datum a hodina DateStart=Datum začátku DateEnd=Datum ukončení DateCreation=Datum vytvoření DateModification=Datum změny -DateModificationShort=Modif. datum +DateModificationShort=Datum úpravy DateLastModification=Datum poslední modifikace DateValidation=Datum ověření DateClosing=Uzávěrka @@ -239,12 +239,12 @@ DateOperationShort=Oper. Datum DateLimit=Omezit datum DateRequest=Žádost o data DateProcess=Procesní data -DatePlanShort=Datum hoblované -DateRealShort=Datum skutečný. -DateBuild=Zpráva datum sestavení +DatePlanShort=Plánované datum +DateRealShort=Skutečné datum +DateBuild=Zpráva data vzniku DatePayment=Datum platby -DateApprove=Approving date -DateApprove2=Approving date (second approval) +DateApprove=Schválené datum +DateApprove2=Schválené datum (druhé schválení) DurationYear=rok DurationMonth=měsíc DurationWeek=týden @@ -267,12 +267,12 @@ days=dny Hours=Hodiny Minutes=Zápis Seconds=Sekundy -Weeks=Weeks +Weeks=Týdny Today=Dnes Yesterday=Včera Tomorrow=Zítra -Morning=Morning -Afternoon=Afternoon +Morning=Ráno +Afternoon=Odpoledne Quadri=Quadri MonthOfDay=Měsíce ode dne HourShort=H @@ -291,7 +291,7 @@ Gb=Gb Tb=Tb Cut=Snížit Copy=Kopírovat -Paste=Pasta +Paste=Vložit Default=Standardní DefaultValue=Výchozí hodnota DefaultGlobalValue=Globální hodnota @@ -301,7 +301,7 @@ UnitPriceHT=Jednotková cena (bez DPH) UnitPriceTTC=Jednotková cena PriceU=UP PriceUHT=UP (bez DPH) -AskPriceSupplierUHT=P.U. HT Requested +AskPriceSupplierUHT=P.U. HT Požadováno PriceUTTC=UP Amount=Množství AmountInvoice=Fakturovaná částka @@ -317,8 +317,8 @@ AmountLT1ES=Množství RE AmountLT2ES=Částka IRPF AmountTotal=Celková částka AmountAverage=Průměrná částka -PriceQtyHT=Cena za toto množství (očištěná o daň) -PriceQtyMinHT=Cena množství min. (Po zdanění) +PriceQtyHT=Cena za toto množství (bez daně) +PriceQtyMinHT=Cena množství min. (po zdanění) PriceQtyTTC=Cena za toto množství (vč. DPH) PriceQtyMinTTC=Cena množství min. (Vč. DPH) Percentage=Procento @@ -327,7 +327,7 @@ SubTotal=Mezisoučet TotalHTShort=Celkem (bez DPH) TotalTTCShort=Celkem (vč. DPH) TotalHT=Celkem (bez daně) -TotalHTforthispage=Total (net of tax) for this page +TotalHTforthispage=Celkem (po zdanění) pro tuto stránku TotalTTC=Celkem (vč. DPH) TotalTTCToYourCredit=Celkem (vč. DPH) na Váš účet TotalVAT=Daň celkem @@ -352,37 +352,37 @@ FullList=Plný seznam Statistics=Statistika OtherStatistics=Další statistiky Status=Postavení -Favorite=Favorite +Favorite=Favorit ShortInfo=Info. Ref=Ref. -ExternalRef=Ref. extern +ExternalRef=Ref. externí RefSupplier=Ref. dodavatel RefPayment=Ref. platba CommercialProposalsShort=Komerční návrhy Comment=Komentář Comments=Komentáře -ActionsToDo=Akce dělat -ActionsDone=Události provádí -ActionsToDoShort=Chcete-li +ActionsToDo=Události k provedení +ActionsDone=Hotové události +ActionsToDoShort=Dělat ActionsRunningshort=Začínáme ActionsDoneShort=Hotový ActionNotApplicable=Nevztahuje se ActionRunningNotStarted=Chcete-li začít ActionRunningShort=Začínáme -ActionDoneShort=Hotový -ActionUncomplete=Uncomplete -CompanyFoundation=Společnosti / Nadace +ActionDoneShort=Ukončený +ActionUncomplete=Nekompletní +CompanyFoundation=Společnost/Nadace ContactsForCompany=Kontakty pro tuto třetí stranu -ContactsAddressesForCompany=Kontakty / adresy pro třetí strany této +ContactsAddressesForCompany=Kontakty/adresy pro tuto třetí stranu AddressesForCompany=Adresy pro tuto třetí stranu -ActionsOnCompany=Akce o této třetí osobě -ActionsOnMember=Akce o tomto členu +ActionsOnCompany=Akce u této třetí strany +ActionsOnMember=Akce u tohoto uživatele NActions=%s události NActionsLate=%s pozdě -RequestAlreadyDone=Request already recorded +RequestAlreadyDone=Poptávka je již zaznamenaná Filter=Filtr RemoveFilter=Vyjměte filtr -ChartGenerated=Graf generovaný +ChartGenerated=Generovaný graf ChartNotGenerated=Graf není generován GeneratedOn=Stavět na %s Generate=Generovat @@ -391,15 +391,15 @@ TotalDuration=Celková doba trvání Summary=Shrnutí MyBookmarks=Moje záložky OtherInformationsBoxes=Další informační boxy -DolibarrBoard=Dolibarr deska +DolibarrBoard=Dolibarr plocha DolibarrStateBoard=Statistika -DolibarrWorkBoard=Pracovní úkoly deska +DolibarrWorkBoard=Plocha pracovních úkolů Available=Dostupný NotYetAvailable=Zatím není k dispozici NotAvailable=Není k dispozici Popularity=Popularita -Categories=Tags/categories -Category=Tag/category +Categories=Tagy/kategorie +Category=Tag/kategorie By=Podle From=Z to=na @@ -411,15 +411,15 @@ OtherInformations=Ostatní informace Quantity=Množství Qty=Množství ChangedBy=Změnil -ApprovedBy=Approved by -ApprovedBy2=Approved by (second approval) +ApprovedBy=Schváleno +ApprovedBy2=Schváleno (druhé schválení) ReCalculate=Přepočítat ResultOk=Úspěch ResultKo=Selhání Reporting=Hlášení Reportings=Hlášení Draft=Návrh -Drafts=Dáma +Drafts=Návrhy Validated=Ověřené Opened=Otevřeno New=Nový @@ -435,7 +435,7 @@ ByUsers=Od uživatelů Links=Odkazy Link=Odkaz Receipts=Příjmy -Rejects=Odmítá +Rejects=Odmítnuto Preview=Náhled NextStep=Další krok PreviousStep=Předchozí krok @@ -447,7 +447,7 @@ Photo=Obrázek Photos=Obrázky AddPhoto=Přidat obrázek Login=Přihlášení -CurrentLogin=Aktuální login +CurrentLogin=Aktuální přihlášení January=Leden February=Únor March=Březen @@ -462,40 +462,40 @@ November=Listopad December=Prosinec JanuaryMin=Leden FebruaryMin=Únor -MarchMin=Mar -AprilMin=Dubna +MarchMin=Březen +AprilMin=Duben MayMin=Květen -JuneMin=Června -JulyMin=Července -AugustMin=Srpna +JuneMin=Červen +JulyMin=Červenec +AugustMin=Srpen SeptemberMin=Září OctoberMin=Říjen NovemberMin=Listopad DecemberMin=Prosince -Month01=January -Month02=February -Month03=March -Month04=April -Month05=May -Month06=June -Month07=July -Month08=August -Month09=September -Month10=October -Month11=November -Month12=December -MonthShort01=Jan -MonthShort02=Feb -MonthShort03=Mar -MonthShort04=Apr -MonthShort05=May -MonthShort06=Jun -MonthShort07=Jul -MonthShort08=Aug -MonthShort09=Sep -MonthShort10=Oct -MonthShort11=Nov -MonthShort12=Dec +Month01=Leden +Month02=Únor +Month03=Březen +Month04=Duben +Month05=Květen +Month06=Červen +Month07=Červenec +Month08=Srpen +Month09=Září +Month10=Říjen +Month11=Listopad +Month12=Prosinec +MonthShort01=Led. +MonthShort02=Ún. +MonthShort03=Břez. +MonthShort04=Dub. +MonthShort05=Květ. +MonthShort06=Červ. +MonthShort07=Čerc. +MonthShort08=Srp. +MonthShort09=Zá. +MonthShort10=Říj. +MonthShort11=List. +MonthShort12=Pros. AttachedFiles=Přiložené soubory a dokumenty FileTransferComplete=Soubor byl úspěšně nahrán DateFormatYYYYMM=YYYY-MM @@ -507,14 +507,14 @@ ReportDescription=Popis Report=Zpráva Keyword=Mot Clé Legend=Legenda -FillTownFromZip=Vyplňte město od zipu +FillTownFromZip=Vyplňte město z PSČ Fill=Vyplnit Reset=Obnovit ShowLog=Zobrazit protokol File=Soubor Files=Soubory NotAllowed=Není povoleno -ReadPermissionNotAllowed=Přečtěte si svolení není dovoleno +ReadPermissionNotAllowed=Číst oprávnění není povoleno AmountInCurrency=Částka v měně %s Example=Příklad Examples=Příklady @@ -524,33 +524,33 @@ NbOfThirdParties=Počet třetích stran NbOfCustomers=Počet zákazníků NbOfLines=Počet řádků NbOfObjects=Počet objektů -NbOfReferers=Počet odkazovače -Referers=Refering objects +NbOfReferers=Počet odkazů +Referers=Odkazované objekty TotalQuantity=Celkové množství DateFromTo=Od %s na %s DateFrom=Od %s DateUntil=Do %s Check=Kontrola -Uncheck=Uncheck +Uncheck=Nekontrolováno Internal=Vnitřní External=Externí Internals=Vnitřní Externals=Externí Warning=Upozornění -Warnings=Upozornění -BuildPDF=Build PDF -RebuildPDF=Znovu PDF -BuildDoc=Build Doc -RebuildDoc=Znovu Doc +Warnings=Výstrahy +BuildPDF=Vytvořit PDF +RebuildPDF=Znovu sestavit PDF +BuildDoc=Vytvořit dokument +RebuildDoc=Znovu vytvořit dokument Entity=Prostředí Entities=Subjekty EventLogs=Záznamy -CustomerPreview=Zákazník náhled -SupplierPreview=Dodavatel náhled -AccountancyPreview=Účetnictví náhled -ShowCustomerPreview=Zobrazit zákaznickou náhled -ShowSupplierPreview=Zobrazit náhled s dodavately -ShowAccountancyPreview=Zobrazit evidence náhled +CustomerPreview=Náhled zákazníka +SupplierPreview=Náhled dodavatele +AccountancyPreview=Náhled účetnictví +ShowCustomerPreview=Zobrazit náhled zákazníka +ShowSupplierPreview=Zobrazit náhled dodavatele +ShowAccountancyPreview=Zobrazit náhled účetnictví ShowProspectPreview=Zobrazit vyhlídka náhled RefCustomer=Ref. zákazník Currency=Měna @@ -566,22 +566,22 @@ Question=Otázka Response=Odpověď Priority=Priorita SendByMail=Poslat e-mailem -MailSentBy=E-mail zaslána -TextUsedInTheMessageBody=E-mail tělo +MailSentBy=E-mail odeslán +TextUsedInTheMessageBody=E-mail obsah SendAcknowledgementByMail=Poslat Ack. e-mailem NoEMail=Žádný e-mail -NoMobilePhone=No mobile phone +NoMobilePhone=Žádné telefonní číslo Owner=Majitel DetectedVersion=Zjištěná verze -FollowingConstantsWillBeSubstituted=Následující konstanty bude nahrazen odpovídající hodnotou. -Refresh=Osvěžit +FollowingConstantsWillBeSubstituted=Následující konstanty budou nahrazeny odpovídající hodnotou. +Refresh=Obnovit BackToList=Zpět na seznam -GoBack=Vrátit se +GoBack=Návrat CanBeModifiedIfOk=Může být změněn, pokud platí -CanBeModifiedIfKo=Může být změněna, pokud není platný +CanBeModifiedIfKo=Může být změněn, pokud není platný RecordModifiedSuccessfully=Nahrávání bylo úspěšně upraveno -RecordsModified=%s záznamy změněna -AutomaticCode=Automatické kód +RecordsModified=%s záznamy změněny +AutomaticCode=Automatický kód NotManaged=Nepodařilo FeatureDisabled=Funkce vypnuta MoveBox=Přesunout okno %s @@ -596,28 +596,28 @@ TotalWoman=Celkový TotalMan=Celkový NeverReceived=Nikdy nedostal Canceled=Zrušený -YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary +YouCanChangeValuesForThisListFromDictionarySetup=Můžete změnit hodnoty pro tento seznam z nastavení v menu - slovník Color=Barva Documents=Připojené soubory DocumentsNb=Připojené soubory (%s) Documents2=Dokumenty BuildDocuments=Generované dokumenty -UploadDisabled=Přidat zakázáno +UploadDisabled=Upload zakázán MenuECM=Dokumenty -MenuAWStats=AWStats +MenuAWStats=AW Statistiky MenuMembers=Členové MenuAgendaGoogle=Google agenda -ThisLimitIsDefinedInSetup=Dolibarr limit (Menu domácí nastavení zabezpečení): %s Kb, PHP limit: %s Kb -NoFileFound=Žádné dokumenty uložené v tomto adresáři +ThisLimitIsDefinedInSetup=Dolibarr limit (menu Domů-nastavení-zabezpečení): %s Kb, PHP limit: %s Kb +NoFileFound=Žádné dokumenty nejsou uložené v tomto adresáři CurrentUserLanguage=Aktuální jazyk CurrentTheme=Aktuální téma -CurrentMenuManager=Aktuální nabídka manažer +CurrentMenuManager=Manager aktuální nabídky DisabledModules=Zakázané moduly For=Pro ForCustomer=Pro zákazníky Signature=Podpis HidePassword=Zobrazit příkaz s heslem skryté -UnHidePassword=Zobrazit skutečné velení s jasným heslem +UnHidePassword=Zobrazit skutečný příkaz s odstraněným heslem Root=Kořen Informations=Informace Page=Strana @@ -625,21 +625,21 @@ Notes=Poznámky AddNewLine=Přidat nový řádek AddFile=Přidat soubor ListOfFiles=Seznam dostupných souborů -FreeZone=Free entry -FreeLineOfType=Free entry of type -CloneMainAttributes=Clone objekt s jeho hlavními atributy -PDFMerge=PDF Merge +FreeZone=Volný vstup +FreeLineOfType=Volný vstup typu +CloneMainAttributes=Duplikovat objekt s jeho hlavními atributy +PDFMerge=Spojit PDF Merge=Spojit -PrintContentArea=Zobrazit stránku pro tisk hlavní obsahovou část -MenuManager=Menu manažer -NoMenu=No sub-menu -WarningYouAreInMaintenanceMode=Pozor, jste v režimu údržby, tak jen přihlášení <b>%s</b> je dovoleno používat aplikace v tuto chvíli. +PrintContentArea=Zobrazit stránku pro tisk hlavní obsahové části +MenuManager=Manager nabídky +NoMenu=Žádné sub-menu +WarningYouAreInMaintenanceMode=Pozor, jste v režimu údržby, jen pro přihlášené <b>%s</b> je dovoleno v tuto chvíli používat aplikace. CoreErrorTitle=Systémová chyba CoreErrorMessage=Omlouváme se, došlo k chybě. Zkontrolujte protokoly nebo se obraťte na správce systému. CreditCard=Kreditní karta FieldsWithAreMandatory=Pole označená * jsou povinná <b>%s</b> -FieldsWithIsForPublic=Pole s <b>%s</b> jsou uvedeny na veřejném seznamu členů. Pokud nechcete, aby to, zaškrtnout "veřejný" box. -AccordingToGeoIPDatabase=(Podle přepočet GeoIP) +FieldsWithIsForPublic=Pole s <b>%s</b> jsou uvedeny na veřejném seznamu členů. Pokud si to nepřejete, zaškrtněte "veřejný" box. +AccordingToGeoIPDatabase=(Podle GeoIP konverze) Line=Linka NotSupported=Není podporováno RequiredField=Povinné pole @@ -656,53 +656,53 @@ Before=Před After=Po IPAddress=IP adresa Frequency=Frekvence -IM=Instant messaging +IM=Instantní komunikace NewAttribute=Nový atribut -AttributeCode=Atribut kód +AttributeCode=Kód atributu OptionalFieldsSetup=Extra nastavení atributů -URLPhoto=URL of photo/logo -SetLinkToThirdParty=Odkaz na jiné třetí osobě +URLPhoto=URL obrázku/loga +SetLinkToThirdParty=Odkaz na jinou třetí stranu CreateDraft=Vytvořte návrh -SetToDraft=Back to draft +SetToDraft=Zrušit návrh ClickToEdit=Klepnutím lze upravit ObjectDeleted=Objekt %s smazán ByCountry=Podle země -ByTown=Do města +ByTown=Podle města ByDate=Podle data -ByMonthYear=Tím měsíc / rok -ByYear=Do roku -ByMonth=By month -ByDay=Ve dne -BySalesRepresentative=Do obchodního zástupce -LinkedToSpecificUsers=V souvislosti s konkrétním kontaktu s uživatelem +ByMonthYear=Podle měsíce/roku +ByYear=Podle roku +ByMonth=Podle měsíce +ByDay=Podle dne +BySalesRepresentative=Podle obchodního zástupce +LinkedToSpecificUsers=Souvisí s konkrétním uživatelem kontaktu DeleteAFile=Odstranění souboru -ConfirmDeleteAFile=Jste si jisti, že chcete smazat soubor +ConfirmDeleteAFile=Jste si jisti, že chcete smazat tento soubor? NoResults=Žádné výsledky -ModulesSystemTools=Moduly nářadí +ModulesSystemTools=Moduly nástrojů Test=Test Element=Prvek -NoPhotoYet=Žádné fotografie zatím k dispozici -HomeDashboard=Domů shrnutí +NoPhotoYet=Momentálně žádné fotografie k dispozici +HomeDashboard=Hlavní shrnutí Deductible=Spoluúčast from=z toward=k Access=Přístup -HelpCopyToClipboard=Použijte Ctrl + C zkopírujte do schránky -SaveUploadedFileWithMask=Save file on server with name "<strong>%s</strong>" (otherwise "%s") -OriginFileName=Original filename -SetDemandReason=Set source -SetBankAccount=Define Bank Account -AccountCurrency=Account Currency -ViewPrivateNote=View notes -XMoreLines=%s line(s) hidden -PublicUrl=Public URL -AddBox=Add box -SelectElementAndClickRefresh=Select an element and click Refresh -PrintFile=Print File %s -ShowTransaction=Show transaction -GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into Home - Setup - Display to hide. -Deny=Deny -Denied=Denied +HelpCopyToClipboard=Použijte Ctrl + C pro zkopírování do schránky +SaveUploadedFileWithMask=Uložit soubor na server s názvem "<strong>%s</strong>" (iinak "%s") +OriginFileName=Originální název sounoru +SetDemandReason=Nastavení zdroje +SetBankAccount=Definujte bankovní účet +AccountCurrency=Měna účtu +ViewPrivateNote=Zobrazit poznámky +XMoreLines=%s řádky(ů) skryto +PublicUrl=Veřejná URL +AddBox=Přidejte box +SelectElementAndClickRefresh=Vyberte element a klikněte na Obnovit +PrintFile=Tisk souboru %s +ShowTransaction=Ukázat transakci +GoIntoSetupToChangeLogo=Jděte na Domů-Nastavení-Společnost pro změnu loga, nebo je v nastavení skryjte. +Deny=Odmítnout +Denied=Odmítnuto # Week day Monday=Pondělí Tuesday=Úterý @@ -711,13 +711,13 @@ Thursday=Čtvrtek Friday=Pátek Saturday=Sobota Sunday=Neděle -MondayMin=Mo -TuesdayMin=Tu -WednesdayMin=My -ThursdayMin=Th -FridayMin=Pá -SaturdayMin=Sa -SundayMin=Su +MondayMin=po +TuesdayMin=út +WednesdayMin=st +ThursdayMin=čt +FridayMin=pá +SaturdayMin=so +SundayMin=ne Day1=Pondělí Day2=Úterý Day3=Středa @@ -725,10 +725,10 @@ Day4=Čtvrtek Day5=Pátek Day6=Sobota Day0=Neděle -ShortMonday=M -ShortTuesday=T -ShortWednesday=W -ShortThursday=T -ShortFriday=F +ShortMonday=P +ShortTuesday=Ú +ShortWednesday=S +ShortThursday=Č +ShortFriday=PÁ ShortSaturday=S -ShortSunday=S +ShortSunday=N diff --git a/htdocs/langs/cs_CZ/margins.lang b/htdocs/langs/cs_CZ/margins.lang index f321aeb2c99f485e13c1017af92ba083efd25b15..872f41bfa4d7f36be8f7b1038c2abb8ac03b62e4 100644 --- a/htdocs/langs/cs_CZ/margins.lang +++ b/htdocs/langs/cs_CZ/margins.lang @@ -1,45 +1,45 @@ # Dolibarr language file - Source file is en_US - marges -Margin=Okraj -Margins=Okraje +Margin=Marže +Margins=Marže TotalMargin=Celková marže -MarginOnProducts=Margin / Produkty -MarginOnServices=Marže / služby -MarginRate=Marže rychlost -MarkRate=Mark rychlost -DisplayMarginRates=Zobrazení okrajů ceny -DisplayMarkRates=Zobrazit ceny značek +MarginOnProducts=Marže/Produkty +MarginOnServices=Marže/služby +MarginRate=Hodnocení marže +MarkRate=Hodnocení značky +DisplayMarginRates=Zobrazení hodnocení marže +DisplayMarkRates=Zobrazit hodnocení značek InputPrice=Vstupní cena -margin=Ziskové marže řízení -margesSetup=Ziskové marže Nastavení řízení -MarginDetails=Margin detaily -ProductMargins=Produktové marže -CustomerMargins=Zákazníků marže -SalesRepresentativeMargins=Sales representative margins -UserMargins=User margins +margin=Řízení ziskové marže +margesSetup=Nastavení řízení ziskové marže +MarginDetails=Detaily marže +ProductMargins=Produktová marže +CustomerMargins=Zákaznická marže +SalesRepresentativeMargins=Obchodní zástupce marže +UserMargins=Uživatelské marže ProductService=Produkt nebo služba AllProducts=Všechny produkty a služby ChooseProduct/Service=Zvolte produkt nebo službu StartDate=Datum zahájení EndDate=Datum ukončení Launch=Začátek -ForceBuyingPriceIfNull=Force nákupu cena, pokud null -ForceBuyingPriceIfNullDetails=pokud je "ON", bude marže rovnat nule na lince (nákupní cena = prodejní cena), v opačném případě ("OFF"), bude Marge se rovná prodejní ceně (nákupní cena = 0) -MARGIN_METHODE_FOR_DISCOUNT=Marže metoda pro globální slevy +ForceBuyingPriceIfNull=Síla nákupní ceny, pokud je nula +ForceBuyingPriceIfNullDetails=Pokud je nastaveno "ON", bude se marže rovnat nule na řádku (nákupní cena = prodejní cena), v opačném případě ("OFF"), se bude marže rovnat prodejní ceně (nákupní cena = 0) +MARGIN_METHODE_FOR_DISCOUNT=Metoda marže pro globální slevy UseDiscountAsProduct=Jako produkt UseDiscountAsService=Jako služba UseDiscountOnTotal=Na mezisoučet -MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Definuje, zda globální sleva je považován za výrobek, služba, nebo pouze na mezisoučet pro výpočet marže. -MARGIN_TYPE=Marže typ -MargeBrute=Raw marže +MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Definuje, zda globální sleva je považován za výrobek, službu, nebo pouze za mezisoučet pro výpočet marže. +MARGIN_TYPE=Typ marže +MargeBrute=Hrubá marže MargeNette=Čistá marže -MARGIN_TYPE_DETAILS=Raw margin: Konečná cena - nákupní cenou <br/> Čistá marže: Prodejní cena - pořizovací ceny, -CostPrice=Velkoobchodní cena -BuyingCost=Velkoobchodní cena -UnitCharges=Jednotkové náklady +MARGIN_TYPE_DETAILS=Hrubá marže: prodejní cena - nákupní cena <br/> Čistá marže: prodejní cena - pořizovací cena. +CostPrice=Náklady +BuyingCost=Náklady +UnitCharges=Jednotkové poplatky Charges=Poplatky -AgentContactType=Commercial agent contact type -AgentContactTypeDetails=Define what contact type (linked on invoices) will be used for margin report per sale representative -rateMustBeNumeric=Rate must be a numeric value -markRateShouldBeLesserThan100=Mark rate should be lower than 100 -ShowMarginInfos=Show margin infos +AgentContactType=Obchodní zástupce - typ kontaktu +AgentContactTypeDetails=Definujete, jaký typ kontaktu (propojený na fakturách) bude použit pro zprávu o marži pro prodejního zástupce +rateMustBeNumeric=Hodnocení musí být číselná hodnota +markRateShouldBeLesserThan100=Označení sazby by měla být nižší než 100 +ShowMarginInfos=Ukázat informace o marži diff --git a/htdocs/langs/cs_CZ/opensurvey.lang b/htdocs/langs/cs_CZ/opensurvey.lang index adc86c6dd5eae73b6f83ca64ab28a4131087d64b..8f55a1e6092548680103766b229322c846b69289 100644 --- a/htdocs/langs/cs_CZ/opensurvey.lang +++ b/htdocs/langs/cs_CZ/opensurvey.lang @@ -1,18 +1,18 @@ # Dolibarr language file - Source file is en_US - opensurvey -# Survey=Poll -# Surveys=Polls -# OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... -# NewSurvey=New poll -# NoSurveysInDatabase=%s poll(s) into database. -# OpenSurveyArea=Polls area -# AddACommentForPoll=You can add a comment into poll... +Survey=Hlasování +Surveys=Ankety +OrganizeYourMeetingEasily=Uspořádejte snadno své setkání a hlasování. Nejprve vyberte typ hlasování ... +NewSurvey=Nové hlasování +NoSurveysInDatabase=%s hlasování v databázi. +OpenSurveyArea=Oblast anket +AddACommentForPoll=Můžete přidat komentář do hlasování ... AddComment=Přidat komentář CreatePoll=Vytvoření ankety -PollTitle=Anketa titul -# ToReceiveEMailForEachVote=Receive an email for each vote +PollTitle=Titul ankety +ToReceiveEMailForEachVote=Přijmout e-mail pro každý hlas TypeDate=Zadejte datum TypeClassic=Typ standardní -# OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it +OpenSurveyStep2=Vyberte si termín amoung volných dnů (šedá). Vybrané dny jsou zelené. Můžete zrušit výběr den předem kliknutím znovu na výběr RemoveAllDays=Odstraňte všechny dny CopyHoursOfFirstDay=Kopírování hodin prvního dne RemoveAllHours=Odstraňte všechny hodiny @@ -20,47 +20,47 @@ SelectedDays=Vybrané dny TheBestChoice=Nejlepší volbou je v současné době TheBestChoices=Nejlepší možností jsou v současné době with=s -# OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. +OpenSurveyHowTo=Pokud souhlasíte s hlasováním v této anketě, budete muset uvést své jméno. Vyberte hodnoty, které jsou pro vás nejlepší a potvrďte tlačítkem navíc na konci řádku. CommentsOfVoters=Komentáře voličů -ConfirmRemovalOfPoll=Jste si jisti, že chcete odstranit tuto anketu (a všech hlasů) +ConfirmRemovalOfPoll=Jste si jisti, že chcete odstranit tuto anketu (a všechny hlasy) RemovePoll=Odebrat průzkum -# UrlForSurvey=URL to communicate to get a direct access to poll -# PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: -# CreateSurveyDate=Create a date poll -# CreateSurveyStandard=Create a standard poll +UrlForSurvey=URL pro přímý přístup k anketě +PollOnChoice=Vytváříte hlasování, s multi volbou několika možností pro hlasování. Nejprve zadejte všechny možné volby pro vaše hlasování: +CreateSurveyDate=Vytvořte datum ankety +CreateSurveyStandard=Vytvořte standardní anketu CheckBox=Jednoduché políčko -YesNoList=List (prázdný / ano / ne) -PourContreList=List (prázdný / pro / proti) +YesNoList=List (prázdný/ano/ne) +PourContreList=List (prázdný/pro/proti) AddNewColumn=Přidat nový sloupec -TitleChoice=Volba štítek -ExportSpreadsheet=Export výsledků tabulku +TitleChoice=Zvolit štítek +ExportSpreadsheet=Export výsledků tabulky ExpireDate=Omezit datum -# NbOfSurveys=Number of polls +NbOfSurveys=Počet hlasování NbOfVoters=Nb voličů SurveyResults=Výsledky -PollAdminDesc=Jste dovoleno měnit všichni volit řádky této ankety pomocí tlačítka "Edit". Můžete také odebrat sloupec nebo řádek s %s. Můžete také přidat nový sloupec s %s. -5MoreChoices=5 více možností +PollAdminDesc=Můžete měnit všechny hlasovací řádky této ankety pomocí tlačítka "Editace". Můžete také odebrat sloupec nebo řádek s %s. Můžete také přidat nový sloupec s %s. +5MoreChoices=5 a více možností Abstention=Zdržení se Against=Proti YouAreInivitedToVote=Zveme vás, abyste hlasovali pro tuto anketu VoteNameAlreadyExists=Tento název již byl použit při tomto hlasování -ErrorPollDoesNotExists=Chyba hlasování <strong>%s</strong> neexistuje. -OpenSurveyNothingToSetup=Neexistuje žádné specifické nastavení dělat. +ErrorPollDoesNotExists=Chyba, hlasování <strong>%s</strong> neexistuje. +OpenSurveyNothingToSetup=Neexistuje žádné specifické nastavení. PollWillExpire=Váš průzkum skončí automaticky <strong>%s</strong> dní po posledním dni svého hlasování. AddADate=Přidat datum -AddStartHour=Přidat začít hodinu -AddEndHour=Přidat end hodinu +AddStartHour=Přidat počáteční hodinu +AddEndHour=Přidat konečnou hodinu votes=hlas (y) -NoCommentYet=Žádné komentáře byly zveřejněny na tuto anketu ještě +NoCommentYet=Žádné komentáře nebyly pro tuto anketu ještě zveřejněny CanEditVotes=Může změnit hlas ostatních -# CanComment=Voters can comment in the poll -# CanSeeOthersVote=Voters can see other people's vote -SelectDayDesc=Pro každý vybraný den, můžete si vybrat, zda se mají splnit hodin v následujícím formátu: <br> - Prázdné, <br> - "8h", "8H" nebo "8:00" dát schůzku v úvodní hodinu, <br> - "8-11", "8h-11h", "8H-11H" nebo "08:00-11:00" dát schůzku je začátek a konec hodiny, <br> - "8h15-11h15", "8H15-11h15" nebo "08:15-11:15" to samé, ale v minutách. +CanComment=Hlasující mohou vkládat komentáře v této anketě +CanSeeOthersVote=Hlasující mohou vidět další osoby, které v této anketě hlasují +SelectDayDesc=Pro každý vybraný den si můžete vybrat, zda se má hlasovat v určenou hodinu v následujícím formátu: <br> - Prázdné, <br> - "8h", "8H" nebo "8:00" mít schůzku v úvodní hodinu, <br> - "8-11", "8h-11h", "8H-11H" nebo "8:00-11:00" umístit schůzku je začátek a konec hodiny, <br> - "8h15-11h15", "8H15-11H15" or "8:15-11:15" Můžete nastavit to samé, ale v minutách. BackToCurrentMonth=Zpět na aktuální měsíc -# ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation -# ErrorOpenSurveyOneChoice=Enter at least one choice -# ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD -# ErrorInsertingComment=There was an error while inserting your comment -# MoreChoices=Enter more choices for the voters -# SurveyExpiredInfo=The voting time of this poll has expired. -# EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s +ErrorOpenSurveyFillFirstSection=Nemůžete naplnit první část hlasování, které vytváříte +ErrorOpenSurveyOneChoice=Zadejte alespoň jednu možnost +ErrorOpenSurveyDateFormat=Datum musí mít formát YYYY-MM-DD +ErrorInsertingComment=Došlo k chybě při vkládání vašeho komentáře +MoreChoices=Zadejte více možností pro hlasující +SurveyExpiredInfo=Doba hlasování pro tuto anketu vypršela. +EmailSomeoneVoted=%s vyplnilo řádek.\nMůžete si najít své hlasování v odkazu: \n%s diff --git a/htdocs/langs/cs_CZ/orders.lang b/htdocs/langs/cs_CZ/orders.lang index 0a0cddfa5d88aba5b6443dc0b7657ec07707901a..d4e2edd2d99ecc513303176b2e286cf596c61be3 100644 --- a/htdocs/langs/cs_CZ/orders.lang +++ b/htdocs/langs/cs_CZ/orders.lang @@ -1,159 +1,159 @@ # Dolibarr language file - Source file is en_US - orders -OrdersArea=Zákazníci objednávky oblast -SuppliersOrdersArea=Dodavatelé objednávky oblast -OrderCard=Objednat kartu +OrdersArea=Oblast objednávek zákazníků +SuppliersOrdersArea=Oblast objednávek dodavatelů +OrderCard=Karta objednávky OrderId=ID objednávky Order=Objednávka Orders=Objednávky -OrderLine=Objednat linka +OrderLine=Řádek objednávky OrderFollow=Sledovat -OrderDate=Objednat Datum -OrderToProcess=Účelem zpracování +OrderDate=Datum objednávky +OrderToProcess=Objednávka ve zpracování NewOrder=Nová objednávka -ToOrder=Udělat pořádek -MakeOrder=Udělat pořádek -SupplierOrder=Dodavatel aby -SuppliersOrders=Dodavatelé objednávky -SuppliersOrdersRunning=Aktuální dodavatelé objednávky -CustomerOrder=Zákazníka -CustomersOrders=Customers orders +ToOrder=Udělat objednávku +MakeOrder=Udělat objednávku +SupplierOrder=Dodavatelská objednávka +SuppliersOrders=Dodavatelské objednávky +SuppliersOrdersRunning=Aktuální dodavatelské objednávky +CustomerOrder=Zákaznická objednávka +CustomersOrders=Zákaznické objednávky CustomersOrdersRunning=Objednávky aktuálního zákazníka -CustomersOrdersAndOrdersLines=Zákaznické objednávky a objednávky linky -OrdersToValid=Customers orders to validate -OrdersToBill=Customers orders delivered -OrdersInProcess=Customers orders in process -OrdersToProcess=Customers orders to process -SuppliersOrdersToProcess=Dodavatele objednávky ke zpracování +CustomersOrdersAndOrdersLines=Zákaznické objednávky a řádky objednávky +OrdersToValid=Zákaznické objednávky k ověření +OrdersToBill=Dodané zákaznické objednávky +OrdersInProcess=Probíhající zákaznické objednávka +OrdersToProcess=Zákaznické objednávky ke zpracování +SuppliersOrdersToProcess=Dodavatelské objednávky ke zpracování StatusOrderCanceledShort=Zrušený StatusOrderDraftShort=Návrh StatusOrderValidatedShort=Ověřené StatusOrderSentShort=V procesu StatusOrderSent=Přeprava v procesu -StatusOrderOnProcessShort=Ordered +StatusOrderOnProcessShort=Objednáno StatusOrderProcessedShort=Zpracované StatusOrderToBillShort=Dodává se StatusOrderToBill2Short=K účtu StatusOrderApprovedShort=Schválený -StatusOrderRefusedShort=Odmítl -StatusOrderToProcessShort=Chcete-li zpracovat -StatusOrderReceivedPartiallyShort=Částečně uložen -StatusOrderReceivedAllShort=Vše, co obdržel +StatusOrderRefusedShort=Odmítnuto +StatusOrderToProcessShort=Ve zpracování +StatusOrderReceivedPartiallyShort=Částečně obdržené +StatusOrderReceivedAllShort=Vše obdržené StatusOrderCanceled=Zrušený StatusOrderDraft=Návrh (musí být ověřena) StatusOrderValidated=Ověřené -StatusOrderOnProcess=Ordered - Standby reception -StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation +StatusOrderOnProcess=Objednáno - přednostní příjem +StatusOrderOnProcessWithValidation=Objednané - Přednostní příjem nebo validace StatusOrderProcessed=Zpracované StatusOrderToBill=Dodává se StatusOrderToBill2=K účtu StatusOrderApproved=Schválený -StatusOrderRefused=Odmítl +StatusOrderRefused=Odmítnutý StatusOrderReceivedPartially=Částečně uložen StatusOrderReceivedAll=Vše, co obdržel ShippingExist=Zásilka existuje -ProductQtyInDraft=Product quantity into draft orders -ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered -DraftOrWaitingApproved=Návrh nebo schválena ještě objednat -DraftOrWaitingShipped=Návrh nebo ověřeno dosud odesláno -MenuOrdersToBill=Objednávky dodáno -MenuOrdersToBill2=Billable orders -SearchOrder=Hledat účelem -SearchACustomerOrder=Search a customer order -SearchASupplierOrder=Search a supplier order -ShipProduct=Loď produkt +ProductQtyInDraft=Množství produktů do návrhů objednávek +ProductQtyInDraftOrWaitingApproved=Množství výrobků do návrhů nebo schválených zakázek, dosud neobjednáno +DraftOrWaitingApproved=Navrhnuto nebo schváleno, ještě neobjednáno +DraftOrWaitingShipped=Návrhnuto nebo ověřeno dosud neodesláno +MenuOrdersToBill=Dodané objednávky +MenuOrdersToBill2=Zúčtovatelné objednávky +SearchOrder=Hledat objednávku +SearchACustomerOrder=Vyhledat objednávku zákazníka +SearchASupplierOrder=Vyhledat objednávku dodavatele +ShipProduct=Dopravit produkt Discount=Sleva CreateOrder=Vytvořit objednávku RefuseOrder=Odmítnout objednávku -ApproveOrder=Approve order -Approve2Order=Approve order (second level) +ApproveOrder=Schválit objednávku +Approve2Order=Schválit objednávku (druhé úrovně) ValidateOrder=Potvrzení objednávky -UnvalidateOrder=Unvalidate objednávku +UnvalidateOrder=Nepotvrdit objednávku DeleteOrder=Smazat objednávku CancelOrder=Zrušení objednávky -AddOrder=Create order +AddOrder=Vytvořit objednávku AddToMyOrders=Přidat do mých objednávek AddToOtherOrders=Přidat do jiných objednávek -AddToDraftOrders=Přidat k předloze +AddToDraftOrders=Přidat k návrhu objednávky ShowOrder=Zobrazit objednávku -NoOpenedOrders=Žádné otevřené příkazy -NoOtherOpenedOrders=Žádný jiný otevřel objednávky +NoOpenedOrders=Žádné otevřené objednávky +NoOtherOpenedOrders=Žádné další otevřené objednávky NoDraftOrders=Žádné návrhy objednávky OtherOrders=Ostatní objednávky -LastOrders=Last %s customer orders -LastCustomerOrders=Last %s customer orders -LastSupplierOrders=Last %s supplier orders +LastOrders=Poslední %s zákaznické objednávky +LastCustomerOrders=Poslední %s zákaznické objednávky +LastSupplierOrders=Poslední %s dodavatelské objednávky LastModifiedOrders=Poslední %s modifikované objednávky LastClosedOrders=Poslední %s uzavřené objednávky AllOrders=Všechny objednávky NbOfOrders=Počet objednávek -OrdersStatistics=Objednat si statistiky -OrdersStatisticsSuppliers=Dodavatel, aby si statistiky -NumberOfOrdersByMonth=Počet objednávek měsíce +OrdersStatistics=Statistiky objednávek +OrdersStatisticsSuppliers=Statistiky dodavatelských objednávek +NumberOfOrdersByMonth=Počet objednávek měsíčně AmountOfOrdersByMonthHT=Množství objednávek měsíčně (bez daně) ListOfOrders=Seznam objednávek -CloseOrder=Zavřít aby -ConfirmCloseOrder=Jste si jisti, že chcete nastavit tuto objednávku Dodávají? Jakmile je objednávka doručena, může být nastaven na účtoval. -ConfirmCloseOrderIfSending=Jste si jisti, že chcete ukončit tuto objednávku? Musíte uzavřít objednávku pouze tehdy, když všechny zásilku je hotovo. +CloseOrder=Zavřená objednávka +ConfirmCloseOrder=Jste si jisti, že chcete nastavit tuto objednávku na dodanou? Jakmile je objednávka doručena, může být nastavena na zaúčtovanou. +ConfirmCloseOrderIfSending=Jste si jisti, že chcete ukončit tuto objednávku? Musíte uzavřít objednávku pouze tehdy, když jsou všechny zásilky vyřízeny. ConfirmDeleteOrder=Jste si jisti, že chcete odstranit tuto objednávku? ConfirmValidateOrder=Jste si jisti, že chcete tuto objednávku potvrdit pod názvem <b>%s?</b> -ConfirmUnvalidateOrder=Jste si jisti, že chcete obnovit pořádek <b>%s</b> do stavu návrhu? +ConfirmUnvalidateOrder=Jste si jisti, že chcete obnovit objednávku <b>%s</b> do stavu návrhu? ConfirmCancelOrder=Jste si jisti, že chcete zrušit tuto objednávku? -ConfirmMakeOrder=Jste si jisti, že chcete potvrdit jsi tuto objednávku na <b>%s?</b> +ConfirmMakeOrder=Jste si jisti, že chcete potvrdit tuto objednávku na <b>%s?</b> GenerateBill=Vytvořit fakturu -ClassifyShipped=Klasifikovat dodáno -ClassifyBilled=Klasifikovat účtovány -ComptaCard=Účetnictví karty -DraftOrders=Návrh usnesení +ClassifyShipped=Klasifikovat jako dodáno +ClassifyBilled=Klasifikovat jako účtováno +ComptaCard=Karta účetnictví +DraftOrders=Návrh objednávky RelatedOrders=Související objednávky -RelatedCustomerOrders=Related customer orders -RelatedSupplierOrders=Related supplier orders -OnProcessOrders=V procesu objednávky +RelatedCustomerOrders=Související objednávky zákazníků +RelatedSupplierOrders=Související objednávky dodavatelů +OnProcessOrders=Objednávka v procesu RefOrder=Ref. objednávka RefCustomerOrder=Ref. objednávka zákazníka RefCustomerOrderShort=Ref. zák. objednávka -SendOrderByMail=Objednávku zašlete poštou -ActionsOnOrder=Akce na objednávku -NoArticleOfTypeProduct=Žádný článek typu "výrobek", takže není shippable článek pro tuto objednávku -OrderMode=Objednat metoda -AuthorRequest=Žádost o autorovi -UseCustomerContactAsOrderRecipientIfExist=Použití zákazníků kontaktní adresu je-li definována místo třetí strany adresu jako adresu příjemce objednávky -RunningOrders=Objednávky na procesu -UserWithApproveOrderGrant=Uživatelé poskytované s "schvalovat objednávky" svolení. +SendOrderByMail=Objednávku zašlete mailem +ActionsOnOrder=Události objednávek +NoArticleOfTypeProduct=Žádný článek typu 'produkt', takže není dopravován článek pro tuto objednávku +OrderMode=Metoda objednávky +AuthorRequest=Požadavek autora +UseCustomerContactAsOrderRecipientIfExist=Použití kontaktní adresy zákazníka, je-li definována místo adresy třetí strany jako adresu příjemce objednávky +RunningOrders=Objednávky ve zpracování +UserWithApproveOrderGrant=Uživateli poskytnuté povolení "schválit objednávky". PaymentOrderRef=Platba objednávky %s -CloneOrder=Clone, aby +CloneOrder=Zkopírování objednávky ConfirmCloneOrder=Jste si jisti, že chcete kopírovat tuto objednávku <b>%s?</b> DispatchSupplierOrder=Příjem %s dodavatelských objednávek -FirstApprovalAlreadyDone=First approval already done +FirstApprovalAlreadyDone=První schválení již učiněno ##### Types de contacts ##### -TypeContact_commande_internal_SALESREPFOLL=Zástupce následující-up, aby zákazník -TypeContact_commande_internal_SHIPPING=Zástupce následující-up doprava -TypeContact_commande_external_BILLING=Zákazník faktura kontakt -TypeContact_commande_external_SHIPPING=Zákazník doprava kontakt -TypeContact_commande_external_CUSTOMER=Kontakt se zákazníkem následující-up, aby -TypeContact_order_supplier_internal_SALESREPFOLL=Zástupce následující-up, aby se s dodavately +TypeContact_commande_internal_SALESREPFOLL=Zástupce následující-up, zákaznické objednávky +TypeContact_commande_internal_SHIPPING=Zástupce následující-up dopravy +TypeContact_commande_external_BILLING=Kontakt na zákaznické faktuře +TypeContact_commande_external_SHIPPING=Kontakt zákazníka pro dopravu +TypeContact_commande_external_CUSTOMER=Kontakt zákazníka následující-up objednávka +TypeContact_order_supplier_internal_SALESREPFOLL=Zástupce následující-up, dodavatelská objednávka TypeContact_order_supplier_internal_SHIPPING=Zástupce následující-up doprava -TypeContact_order_supplier_external_BILLING=Dodavatel fakturu kontakt -TypeContact_order_supplier_external_SHIPPING=Dodavatel doprava kontakt -TypeContact_order_supplier_external_CUSTOMER=S dodavately Spojit se následující-up, aby +TypeContact_order_supplier_external_BILLING=Fakturační kontakt dodavaele +TypeContact_order_supplier_external_SHIPPING=Dodací kontakt dodavatele +TypeContact_order_supplier_external_CUSTOMER=Dodavatelský kontakt následující-up objednávky -Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Konstantní COMMANDE_SUPPLIER_ADDON není definováno -Error_COMMANDE_ADDON_NotDefined=Konstantní COMMANDE_ADDON není definováno -Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Nepodařilo se načíst soubor modulu "%s" -Error_FailedToLoad_COMMANDE_ADDON_File=Nepodařilo se načíst soubor modulu "%s" -Error_OrderNotChecked=Žádné objednávky do faktury vybrané +Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Konstanta COMMANDE_SUPPLIER_ADDON není definována +Error_COMMANDE_ADDON_NotDefined=Konstanta COMMANDE_ADDON není definována +Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Nepodařilo se načíst soubor modulu '%s' +Error_FailedToLoad_COMMANDE_ADDON_File=Nepodařilo se načíst soubor modulu '%s' +Error_OrderNotChecked=Žádné objednávky do faktury nebyly vybrané # Sources -OrderSource0=Komerční návrh +OrderSource0=Komerční nabídka OrderSource1=Internet -OrderSource2=Mail kampaň -OrderSource3=Telefon cipované -OrderSource4=Fax kampaň -OrderSource5=Obchodní -OrderSource6=Skladujte -QtyOrdered=Množství objednat -AddDeliveryCostLine=Přidat přepravné čáru označující hmotnost objednávky +OrderSource2=Mailová kampaň +OrderSource3=Telefonní kampaň +OrderSource4=Faxová kampaň +OrderSource5=Komerční +OrderSource6=Sklad +QtyOrdered=Objednáno množství +AddDeliveryCostLine=Přidat řádek ceny dopravy označující hmotnost objednávky # Documents models -PDFEinsteinDescription=Kompletní objednávka modelu (logo. ..) -PDFEdisonDescription=Jednoduchý model, aby +PDFEinsteinDescription=Kompletní model objednávky (logo. ..) +PDFEdisonDescription=Jednoduchý model objednávky PDFProformaDescription=Kompletní proforma faktura (logo ...) # Orders modes OrderByMail=Pošta @@ -161,12 +161,12 @@ OrderByFax=Fax OrderByEMail=EMail OrderByWWW=Online OrderByPhone=Telefon -CreateInvoiceForThisCustomer=Bill objednávky -NoOrdersToInvoice=Žádné objednávky zúčtovatelné -CloseProcessedOrdersAutomatically=Klasifikovat "zpracování" všechny vybrané příkazy. -OrderCreation=Objednat tvorba -Ordered=Objednal +CreateInvoiceForThisCustomer=Fakturace objednávek +NoOrdersToInvoice=Žádné fakturované objednávky +CloseProcessedOrdersAutomatically=Klasifikovat jako "Probíhající" všechny vybrané objednávky. +OrderCreation=Tvorba objednávky +Ordered=Objednáno OrderCreated=Vaše objednávky byly vytvořeny OrderFail=Došlo k chybě během vytváření objednávky CreateOrders=Vytvoření objednávky -ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s". +ToBillSeveralOrderSelectCustomer=Chcete-li vytvořit fakturu z několika řádů, klikněte nejprve na zákazníka, pak zvolte "%s". diff --git a/htdocs/langs/cs_CZ/other.lang b/htdocs/langs/cs_CZ/other.lang index 86dab5ab3e18bd2e157ef0911ca320c37ada2f88..5f14fd018c2d0b2ee727988fef08989dd7ab65cc 100644 --- a/htdocs/langs/cs_CZ/other.lang +++ b/htdocs/langs/cs_CZ/other.lang @@ -2,109 +2,110 @@ SecurityCode=Bezpečnostní kód Calendar=Kalendář Tools=Nástroje -ToolsDesc=Tato oblast je určena pro skupiny různých strojů, které nejsou k dispozici na jiné položky menu. <br><br> Tyto nástroje se dostanete z menu na boku. +ToolsDesc=Tato oblast je určena pro skupiny různých nástrojů, které nejsou k dispozici v jiných položkách menu. <br><br> Na tyto nástroje se dostanete z levého bočního menu Birthday=Narozeniny BirthdayDate=Narozeniny -DateToBirth=Date of birth -BirthdayAlertOn= narozeniny výstraha aktivní -BirthdayAlertOff= narozeniny upozornění neaktivní +DateToBirth=Datum narození +BirthdayAlertOn= Připomenutí narozenin aktivní +BirthdayAlertOff= Připomenutí narozenin neaktivní Notify_FICHINTER_VALIDATE=Intervence ověřena -Notify_FICHINTER_SENTBYMAIL=Intervence poštou -Notify_BILL_VALIDATE=Zákazník faktura ověřena -Notify_BILL_UNVALIDATE=Zákazník faktura unvalidated -Notify_ORDER_SUPPLIER_APPROVE=Dodavatel aby schválila -Notify_ORDER_SUPPLIER_REFUSE=Dodavatel aby odmítl -Notify_ORDER_VALIDATE=Zákazníka ověřena -Notify_PROPAL_VALIDATE=Zákazník návrh ověřena -Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed -Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused -Notify_WITHDRAW_TRANSMIT=Převodovka stažení -Notify_WITHDRAW_CREDIT=Kreditní stažení +Notify_FICHINTER_SENTBYMAIL=Intervence přes mail +Notify_BILL_VALIDATE=Faktura zákazníka ověřena +Notify_BILL_UNVALIDATE=Faktura zákazníka neověřena +Notify_ORDER_SUPPLIER_VALIDATE=Dodavatelská objednávka uložena +Notify_ORDER_SUPPLIER_APPROVE=Objednávka dodavatele schválena +Notify_ORDER_SUPPLIER_REFUSE=Objednávka dodavatele odmítnuta +Notify_ORDER_VALIDATE=Objednávka zákazníka ověřena +Notify_PROPAL_VALIDATE=Nabídka zákazníka ověřena +Notify_PROPAL_CLOSE_SIGNED=Zákazník propal uzavřel podpisem +Notify_PROPAL_CLOSE_REFUSED=Zákazník propal zavřenýma odmítl +Notify_WITHDRAW_TRANSMIT=Stažení převodu +Notify_WITHDRAW_CREDIT=Stažení kreditu Notify_WITHDRAW_EMIT=Proveďte stažení -Notify_ORDER_SENTBYMAIL=Zákazníka zasílaný poštou +Notify_ORDER_SENTBYMAIL=Zákaznická objednávka zaslaná na mail Notify_COMPANY_CREATE=Třetí strana vytvořena -Notify_COMPANY_SENTBYMAIL=Mails sent from third party card -Notify_PROPAL_SENTBYMAIL=Komerční návrh zaslat poštou -Notify_BILL_PAYED=Zákazník platí faktury -Notify_BILL_CANCEL=Zákazník faktura zrušena -Notify_BILL_SENTBYMAIL=Zákazník faktura zaslána poštou -Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded -Notify_ORDER_SUPPLIER_SENTBYMAIL=Dodavatel odeslaná poštou -Notify_BILL_SUPPLIER_VALIDATE=Dodavatel fakturu ověřena -Notify_BILL_SUPPLIER_PAYED=Dodavatel fakturu platí -Notify_BILL_SUPPLIER_SENTBYMAIL=Dodavatel fakturu poštou -Notify_BILL_SUPPLIER_CANCELED=Supplier invoice cancelled +Notify_COMPANY_SENTBYMAIL=Maily odeslané z karty třetí strany +Notify_PROPAL_SENTBYMAIL=Komerční návrh zaslán e-mailem +Notify_BILL_PAYED=Zákaznická faktura zaplacena +Notify_BILL_CANCEL=Zákaznická faktura zrušena +Notify_BILL_SENTBYMAIL=Zákaznická faktura zaslaná e-mailem +Notify_ORDER_SUPPLIER_VALIDATE=Dodavatelská objednávka uložena +Notify_ORDER_SUPPLIER_SENTBYMAIL=Dodavatelská objednávka zaslaná e.mailem +Notify_BILL_SUPPLIER_VALIDATE=Dodavatelská faktura ověřena +Notify_BILL_SUPPLIER_PAYED=Dodavatelská faktura zaplacena +Notify_BILL_SUPPLIER_SENTBYMAIL=Dodavatelská faktura zaslaná e-mailem +Notify_BILL_SUPPLIER_CANCELED=Dodavatelská faktura zrušena Notify_CONTRACT_VALIDATE=Smlouva ověřena Notify_FICHEINTER_VALIDATE=Intervence ověřena -Notify_SHIPPING_VALIDATE=Poštovné ověřena -Notify_SHIPPING_SENTBYMAIL=Doručení poštou -Notify_MEMBER_VALIDATE=Člen ověřena -Notify_MEMBER_MODIFY=Member modified -Notify_MEMBER_SUBSCRIPTION=Člen upsaný -Notify_MEMBER_RESILIATE=Člen resiliated -Notify_MEMBER_DELETE=Člen smazán -Notify_PROJECT_CREATE=Project creation -Notify_TASK_CREATE=Task created -Notify_TASK_MODIFY=Task modified -Notify_TASK_DELETE=Task deleted -SeeModuleSetup=See setup of module %s -NbOfAttachedFiles=Počet připojených souborů / dokumentů -TotalSizeOfAttachedFiles=Celková velikost připojených souborů / dokumentů -MaxSize=Maximální rozměr -AttachANewFile=Připojte nový soubor / dokument +Notify_SHIPPING_VALIDATE=Doprava ověřena +Notify_SHIPPING_SENTBYMAIL=Doprava odeslána mailem +Notify_MEMBER_VALIDATE=Uživatel ověřen +Notify_MEMBER_MODIFY=Uživatel upraven +Notify_MEMBER_SUBSCRIPTION=Uživatel zapsaný +Notify_MEMBER_RESILIATE=Uživatel resiliated +Notify_MEMBER_DELETE=Uživatel smazán +Notify_PROJECT_CREATE=Vytvoření projektu +Notify_TASK_CREATE=Úkol vytvořen +Notify_TASK_MODIFY=Úkol upraven +Notify_TASK_DELETE=Úkol smazán +SeeModuleSetup=Viz nastavení modulu %s +NbOfAttachedFiles=Počet připojených souborů/dokumentů +TotalSizeOfAttachedFiles=Celková velikost připojených souborů/dokumentů +MaxSize=Maximální velikost +AttachANewFile=Připojte nový soubor/dokument LinkedObject=Propojený objekt Miscellaneous=Smíšený -NbOfActiveNotifications=Number of notifications (nb of recipient emails) -PredefinedMailTest=Toto je test e-mailem. \\ NPokud dva řádky jsou odděleny znakem konce řádku. \n\n __ SIGNATURE__ -PredefinedMailTestHtml=Toto je <b>test-mail</b> (slovo test musí být tučně). <br> Dva řádky jsou odděleny znakem konce řádku. <br><br> __SIGNATURE__ -PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +NbOfActiveNotifications=Počet hlášení (několik z příjemců e-mailů) +PredefinedMailTest=Toto je testovací e-mail. \nTyto dva řádky jsou odděleny znakem konce řádku. \n\n __SIGNATURE__ +PredefinedMailTestHtml=Toto je <b>testovací</b> mail (slovo testovací musí být tučně). <br> Dva řádky jsou odděleny znakem konce řádku. <br><br> __SIGNATURE__ +PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nNajdete zde fakturu __FACREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nDovolujeme si vás upozornit, že faktura __FACREF__ pravděpodobně nebyla uhrazena. Jako upomínku vám ji v příloze zasíláme znovu.\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ +PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nNajdete zde obchodní návrh __PROPREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nNajdete zde cenový požadavek __ASKREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ +PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nNajdete zde objednávku __ORDERREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nNajdete zde naši objednávku __ORDERREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nNajdete zde fakturu __FACREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ +PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nNajdete zde dopravu __SHIPPINGREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ +PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nNajdete zde intervenci __FICHINTERREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__ PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ -DemoDesc=Dolibarr je kompaktní ERP / CRM skládá z několika funkčních modulů. Demo, které obsahuje všechny moduly nic neznamená, protože to nikdy nedošlo. Takže několik demo profily jsou k dispozici. -ChooseYourDemoProfil=Vyberte demo profil, který odpovídal vašemu činnost ... -DemoFundation=Spravovat členy nadace -DemoFundation2=Správa členů a bankovní účet nadace -DemoCompanyServiceOnly=Správa volné noze činnost prodejní činnost pouze -DemoCompanyShopWithCashDesk=Správa obchod s pokladnou -DemoCompanyProductAndStocks=Správa malý nebo střední podnik, který prodává výrobky -DemoCompanyAll=Správa malou nebo střední firmu s více činnostmi (všechny hlavní moduly) +DemoDesc=Dolibarr je kompaktní ERP / CRM, který se skládá z několika funkčních modulů. Demo, které obsahuje všechny moduly vám toho moc neřekne, protože v reálné situaci to nikdy nepoužijete. Pro lepší a snadnější seznámení s celým systémem máte k dispozici několik demo profilů lépe vystihujících vaše požadavky. +ChooseYourDemoProfil=Vyberte demo profil, který odpovídal vaší činnosti, nebo zaměření ... +DemoFundation=Spravovat nadaci, nebo neziskovou organizaci a její členy +DemoFundation2=Správa členů a bankovních účtů nadace nebo neziskové organizace +DemoCompanyServiceOnly=Správa pouze prodejní činnosti malé firmy nebo nadace +DemoCompanyShopWithCashDesk=Správa obchodu s pokladnou, e-shopu nebo obchodní činnost +DemoCompanyProductAndStocks=Správa malého nebo středního podniku, který prodává své výrobky +DemoCompanyAll=Správa malé nebo střední firmy s více činnostmi (všechny hlavní moduly) GoToDemo=Přejít na demo CreatedBy=Vytvořil %s ModifiedBy=Změnil %s -ValidatedBy=Ověřena %s -CanceledBy=Zrušena %s +ValidatedBy=Ověřil %s +CanceledBy=Zrušeno %s ClosedBy=Uzavřel %s -CreatedById=User id who created -ModifiedById=User id who made last change -ValidatedById=User id who validated -CanceledById=User id who canceled -ClosedById=User id who closed -CreatedByLogin=User login who created -ModifiedByLogin=User login who made last change -ValidatedByLogin=User login who validated -CanceledByLogin=User login who canceled -ClosedByLogin=User login who closed +CreatedById=Uživatel id, který vytvořil +ModifiedById=Uživatel id kdo udělal poslední změnu +ValidatedById=Uživatel id který ověřil +CanceledById=Uživatel id který zrušil +ClosedById=Uživatel id který uzavřel +CreatedByLogin=Uživatelské přihlášení, které vytvořil +ModifiedByLogin=Přihlášený uživatel, který udělal poslední změnu +ValidatedByLogin=Přihlášený uživatel, který ověřil +CanceledByLogin=Přihlášený uživatel, který zrušil +ClosedByLogin=Přihlášený uživatel, který uzavřel FileWasRemoved=Soubor %s byl odstraněn DirWasRemoved=Adresář %s byl odstraněn -FeatureNotYetAvailableShort=K dispozici v příští verzi +FeatureNotYetAvailableShort=K dispozici až v příští verzi FeatureNotYetAvailable=Funkce není dosud k dispozici v této verzi FeatureExperimental=Experimentální funkce. Není stabilní v této verzi -FeatureDevelopment=Rozvoj funkce. Není stabilní v této verzi +FeatureDevelopment=Vývojová funkce. Není stabilní v této verzi FeaturesSupported=Podporované funkce Width=Šířka Height=Výška Depth=Hloubka -Top=Top +Top=Horní Bottom=Spodní Left=Levý -Right=Právo +Right=Pravý CalculatedWeight=Vypočtená hmotnost CalculatedVolume=Vypočtený objem Weight=Hmotnost @@ -143,98 +144,98 @@ SizeUnitdm=dm SizeUnitcm=cm SizeUnitmm=mm SizeUnitinch=palec -SizeUnitfoot=noha +SizeUnitfoot=stopa SizeUnitpoint=bod BugTracker=Hlášení chyb -SendNewPasswordDesc=Tato forma umožňuje požádat o nové heslo. To bude zasláno na vaši e-mailovou adresu. <br> Změna se projeví až po kliknutí na potvrzovací odkaz uvnitř tohoto e-mailu. <br> Zkontrolujte, zda vaše e-čtečky software. +SendNewPasswordDesc=Tento formulář umožňuje požádat o nové heslo. To bude zasláno na vaši e-mailovou adresu. <br> Změna se projeví až po kliknutí na potvrzovací odkaz uvnitř tohoto e-mailu. <br> Zkontrolujte vašeho mailového klienta, zaa vám mail dorazil BackToLoginPage=Zpět na přihlašovací stránku -AuthenticationDoesNotAllowSendNewPassword=Režim ověřování je <b>%s.</b> <br> V tomto režimu lze Dolibarr nevím ani změnit heslo. <br> Obraťte se na správce systému, zda chcete změnit heslo. -EnableGDLibraryDesc=Nainstalujte nebo povolte GD knihovnu s PHP pro tuto možnost využít. -EnablePhpAVModuleDesc=Je třeba nainstalovat modul kompatibilní s vaší anti-virus. (Clamav: php4-clamavlib ou php5-clamavlib) -ProfIdShortDesc=<b>Prof Id %s</b> je informace v závislosti na třetích stran země. <br> Například pro země <b>%s,</b> je to kód <b>%s.</b> -DolibarrDemo=Dolibarr ERP / CRM demo -StatsByNumberOfUnits=Statistika v řadě produktů / služeb jednotek +AuthenticationDoesNotAllowSendNewPassword=Režim ověřování je <b>%s.</b> <br> V tomto režimu Dolibarr nepozná, zda může změnit vaše heslo. <br> Obraťte se na správce systému, pokud chcete heslo změnit. +EnableGDLibraryDesc=Nainstalujte nebo povolte GD knihovnu ve vaší PHP pro využití této možnosti +EnablePhpAVModuleDesc=Je třeba nainstalovat modul kompatibilní s vaší antivirovou ochranou. (Clamav: php4-clamavlib nebo php5-clamavlib) +ProfIdShortDesc=<b>Prof Id %s</b> je informace v závislosti na třetích stranách země. <br> Například pro země <b>%s,</b> je to kód <b>%s.</b> +DolibarrDemo=Dolibarr ERP/CRM demo +StatsByNumberOfUnits=Statistika v počtu produktů/služeb jednotek StatsByNumberOfEntities=Statistika v počtu odkazujících subjektů -NumberOfProposals=Počet návrhů na poslední 12 měsíců -NumberOfCustomerOrders=Počet zákaznických objednávek na poslední 12 měsíců -NumberOfCustomerInvoices=Počet zákaznických faktur na poslední 12 měsíců -NumberOfSupplierOrders=Number of supplier orders on last 12 month -NumberOfSupplierInvoices=Počet dodavatelských faktur na poslední 12 měsíců -NumberOfUnitsProposals=Počet jednotek na návrhy na poslední 12 měsíců -NumberOfUnitsCustomerOrders=Počet kusů na zákaznických objednávek na poslední 12 měsíců -NumberOfUnitsCustomerInvoices=Počet kusů na zákazníka faktur na poslední 12 měsíců -NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month -NumberOfUnitsSupplierInvoices=Počet kusů na dodavatelských faktur na poslední 12 měsíců +NumberOfProposals=Počet nabídek za posledních 12 měsíců +NumberOfCustomerOrders=Počet zákaznických objednávek za posledních 12 měsíců +NumberOfCustomerInvoices=Počet zákaznických faktur za posledních 12 měsíců +NumberOfSupplierOrders=Počet dodavatelských objednávek za posledních 12 měsíců +NumberOfSupplierInvoices=Počet dodavatelských faktur za posledních 12 měsíců +NumberOfUnitsProposals=Počet jednotek na nabídky za posledních 12 měsíců +NumberOfUnitsCustomerOrders=Počet zákaznických objednávek za posledních 12 měsíců +NumberOfUnitsCustomerInvoices=Počet zákaznických faktur za posledních 12 měsíců +NumberOfUnitsSupplierOrders=Počet kusů na dodavatelských objednávkách za posledních 12 měsíců +NumberOfUnitsSupplierInvoices=Počet dodavatelských faktur za posledních 12 měsíců EMailTextInterventionValidated=Zásah %s byl ověřen. -EMailTextInvoiceValidated=Faktura %s byl ověřen. -EMailTextProposalValidated=Návrh %s byl ověřen. -EMailTextOrderValidated=Aby %s byl ověřen. -EMailTextOrderApproved=Aby %s byl schválen. -EMailTextOrderValidatedBy=The order %s has been recorded by %s. -EMailTextOrderApprovedBy=Aby %s byl schválen %s. -EMailTextOrderRefused=Aby %s byla zamítnuta. -EMailTextOrderRefusedBy=Aby %s bylo odmítnuto podle %s. -EMailTextExpeditionValidated=Přepravní %s byl ověřen. -ImportedWithSet=Dovoz soubor dat +EMailTextInvoiceValidated=Faktura %s byla ověřena. +EMailTextProposalValidated=Nabídka %s byla ověřena. +EMailTextOrderValidated=Objednávka %s byla ověřena. +EMailTextOrderApproved=Objednávka %s byla schválena. +EMailTextOrderValidatedBy=Objednávka %s byla zaznamenána %s. +EMailTextOrderApprovedBy=Objednávka %s byla schválena %s. +EMailTextOrderRefused=Objednávka %s byla zamítnuta. +EMailTextOrderRefusedBy=Objednávka %s byla odmítnuta podle %s. +EMailTextExpeditionValidated=Přeprava %s byla ověřena. +ImportedWithSet=Import souboru dat DolibarrNotification=Automatické upozornění -ResizeDesc=Zadejte novou šířku <b>nebo</b> výšku nové. Poměr budou uchovávány při změně velikosti ... +ResizeDesc=Zadejte novou šířku <b>nebo</b> novou výšku. Poměry budou uchovávány při změně velikosti ... NewLength=Nová šířka NewHeight=Nová výška NewSizeAfterCropping=Nová velikost po ořezu -DefineNewAreaToPick=Definovat novou oblast na obrázek pro jeho vyzvednutí (levým tlačítkem myši na obrázek a pak táhněte, dokud se nedostanete na protější roh) -CurrentInformationOnImage=Tento nástroj byl navržen tak, aby vám pomůže změnit velikost nebo oříznout obrázek. To je informace o aktuálním editovaného obrázku +DefineNewAreaToPick=Definujte novou oblast obrázku pro jeho vložení klikněte (levým tlačítkem myši na obrázek a pak táhněte, dokud se nedostanete na protější roh) +CurrentInformationOnImage=Tento nástroj byl navržen tak, aby vám pomohl změnit velikost nebo oříznout obrázek. Toto je informace o aktuálním editovaném obrázku ImageEditor=Editor obrázků -YouReceiveMailBecauseOfNotification=Tato zpráva se zobrazí, protože Váš e-mail byl přidán na seznam cílů, které mají být o jednotlivých akcích na %s %s softwaru. +YouReceiveMailBecauseOfNotification=Tato zpráva se zobrazí, protože Váš e-mail byl přidán na seznam cílů, které mají být informovány o jednotlivých akcích na %s softwaru %s. YouReceiveMailBecauseOfNotification2=Tato akce je následující: -ThisIsListOfModules=Toto je seznam modulů předem zvolených tohoto demo profilu (pouze nejběžnější moduly jsou vidět v této ukázce). Editovat mít více osobní demo a klikněte na tlačítko "Start". +ThisIsListOfModules=Toto je seznam předem vybraných modulů pro toto demo profilu (v ukázce vidíte pouze nejběžnější moduly). Pro více osobní nastavení můžete vypnuté moduly aktivovat, nebo deaktivovat. Poté klikněte na tlačítko "Start". ClickHere=Klikněte zde UseAdvancedPerms=Použijte pokročilé oprávnění některých modulů FileFormat=Formát souboru SelectAColor=Vyberte si barvu AddFiles=Přidat soubory -StartUpload=Začněte nahrávat -CancelUpload=Zrušení nahrávání -FileIsTooBig=Soubory je příliš velký -PleaseBePatient=Prosím o chvilku strpení ... -RequestToResetPasswordReceived=Požadavek na změnu své heslo Dolibarr byl přijat -NewKeyIs=To je vaše nové klíče k přihlášení -NewKeyWillBe=Váš nový klíč pro přihlášení do softwaru bude +StartUpload=Start uploadu +CancelUpload=Zrušení uploadu +FileIsTooBig=Soubor je příliš velký +PleaseBePatient=Prosím o chvilku strpení ... dřu jako kůň .... +RequestToResetPasswordReceived=Požadavek na změnu vašeho hesla do Dolibarru byl přijat +NewKeyIs=To je vaše nové heslo k přihlášení +NewKeyWillBe=Vaše nové heslo pro přihlášení do softwaru bude ClickHereToGoTo=Klikněte zde pro přechod na %s YouMustClickToChange=Musíte však nejprve kliknout na následující odkaz pro potvrzení této změny hesla -ForgetIfNothing=Pokud jste o tuto změnu, stačí zapomenout na tento e-mail. Vaše přihlašovací údaje jsou v bezpečí. -IfAmountHigherThan=If amount higher than <strong>%s</strong> +ForgetIfNothing=Pokud jste o tuto změnu nežádali, stačí pouze odstranit tento e-mail. Vaše přihlašovací údaje jsou v bezpečí. +IfAmountHigherThan=je-li množství vyšší než <strong>%s</strong> ##### Calendar common ##### AddCalendarEntry=Přidat záznam do kalendáře %s -NewCompanyToDolibarr=Company %s added -ContractValidatedInDolibarr=Contract %s validated -ContractCanceledInDolibarr=Contract %s canceled -ContractClosedInDolibarr=Contract %s closed -PropalClosedSignedInDolibarr=Proposal %s signed -PropalClosedRefusedInDolibarr=Proposal %s refused -PropalValidatedInDolibarr=Proposal %s validated -PropalClassifiedBilledInDolibarr=Proposal %s classified billed -InvoiceValidatedInDolibarr=Invoice %s validated -InvoicePaidInDolibarr=Invoice %s changed to paid -InvoiceCanceledInDolibarr=Invoice %s canceled -PaymentDoneInDolibarr=Payment %s done -CustomerPaymentDoneInDolibarr=Customer payment %s done -SupplierPaymentDoneInDolibarr=Supplier payment %s done -MemberValidatedInDolibarr=Member %s validated -MemberResiliatedInDolibarr=Member %s resiliated -MemberDeletedInDolibarr=Member %s deleted -MemberSubscriptionAddedInDolibarr=Subscription for member %s added -ShipmentValidatedInDolibarr=Shipment %s validated -ShipmentDeletedInDolibarr=Shipment %s deleted +NewCompanyToDolibarr=Společnost %s přidána +ContractValidatedInDolibarr=Kontrakt %s ověřen +ContractCanceledInDolibarr=Kontrakt %s zrušen +ContractClosedInDolibarr=Kontrakt %s uzavřen +PropalClosedSignedInDolibarr=Nabídka %s podepsána +PropalClosedRefusedInDolibarr=Nabídka %s odmítnuta +PropalValidatedInDolibarr=Nabídka %s schválena +PropalClassifiedBilledInDolibarr=Nabídka %s klasifikovaná jako zaúčtovaná +InvoiceValidatedInDolibarr=Faktura %s schválena +InvoicePaidInDolibarr=Faktura %s změněna na zaplacenou +InvoiceCanceledInDolibarr=Faktura %s zrušena +PaymentDoneInDolibarr=Platba %s provedena +CustomerPaymentDoneInDolibarr=Zákaznická platba %s provedena +SupplierPaymentDoneInDolibarr=Dodavatelská platba %s provedena +MemberValidatedInDolibarr=Uživatel %s ověřen +MemberResiliatedInDolibarr=Uživatel %s resiliated +MemberDeletedInDolibarr=Uživatel %s smazán +MemberSubscriptionAddedInDolibarr=Předplatné pro člena %s přidáno +ShipmentValidatedInDolibarr=Doprava %s ověřena +ShipmentDeletedInDolibarr=Doprava %s odstraněna ##### Export ##### Export=Export -ExportsArea=Vývoz plocha +ExportsArea=Exportní plocha AvailableFormats=Dostupné formáty -LibraryUsed=Librairy používá +LibraryUsed=Používá knihovnu LibraryVersion=Verze ExportableDatas=Exportovatelné údaje -NoExportableData=Exportovat žádné údaje (žádné moduly s převoditelnými načtení dat, nebo chybějící oprávnění) +NoExportableData=Žádná data pro export (žádné moduly s exportovatelnými daty, nebo chybějící oprávnění) ToExport=Export -NewExport=New export +NewExport=Nový export ##### External sites ##### ExternalSites=Externí stránky diff --git a/htdocs/langs/cs_CZ/paybox.lang b/htdocs/langs/cs_CZ/paybox.lang index 629bf09cbefc328104f24707280102a5fecbb246..4660b8d41aa1563f3a9adf03aa157540c763d2b7 100644 --- a/htdocs/langs/cs_CZ/paybox.lang +++ b/htdocs/langs/cs_CZ/paybox.lang @@ -1,40 +1,40 @@ # Dolibarr language file - Source file is en_US - paybox -PayBoxSetup=Paybox modul nastavení -PayBoxDesc=Tento modul nabízejí stránky, které umožní platby na <a href="http://www.paybox.com" target="_blank">Paybox</a> zákazníky. Toho lze využít pro volný platbu nebo platbu na určitý objekt Dolibarr (faktury, objednávky, ...) -FollowingUrlAreAvailableToMakePayments=Následující adresy URL jsou k dispozici nabídnout stránky na zákazníka, aby platbu na Dolibarr objektů -PaymentForm=Platba formulář -WelcomeOnPaymentPage=Vítáme Vás na naší on-line platební služby +PayBoxSetup=Nastavení modulu PayBox +PayBoxDesc=Tento modul nabízejí stránky, které umožní platby na <a href="http://www.paybox.com" target="_blank">Paybox</a> zákazníky. Toho lze využít pro volnou platbu nebo platbu na určitý objekt Dolibarr (faktury, objednávky, ...) +FollowingUrlAreAvailableToMakePayments=Přes URL jsou k dispozici nabízené stránky, které zákazníkovi umožní provést platbu na Dolibarr objektech +PaymentForm=Formulář platby +WelcomeOnPaymentPage=Vítáme Vás na naší on-line platební službě ThisScreenAllowsYouToPay=Tato obrazovka vám umožní provést on-line platbu %s. -ThisIsInformationOnPayment=Jsou to informace o platbě dělat +ThisIsInformationOnPayment=Jsou zde informace o provedené platbě ToComplete=Chcete-li dokončit -YourEMail=E-mail obdržet potvrzení platby +YourEMail=E-mail pro potvrzení platby Creditor=Věřitel PaymentCode=Platební kód -PayBoxDoPayment=Jít na zaplacení -YouWillBeRedirectedOnPayBox=Budete přesměrováni na zabezpečené stránky Paybox vstupní vás informace o kreditní kartě +PayBoxDoPayment=Jít na platbu +YouWillBeRedirectedOnPayBox=Budete přesměrováni na zabezpečené stránky Paybox pro vstupní informace o kreditní kartě PleaseBePatient=Prosím, buďte trpěliví Continue=Další ToOfferALinkForOnlinePayment=URL pro %s platby -ToOfferALinkForOnlinePaymentOnOrder=URL nabídnout %s on-line platební uživatelské rozhraní pro objednávky zákazníka -ToOfferALinkForOnlinePaymentOnInvoice=URL nabídnout %s on-line platební uživatelské rozhraní pro zákazníka faktury -ToOfferALinkForOnlinePaymentOnContractLine=URL nabídnout %s on-line platební uživatelské rozhraní pro smlouvy linky -ToOfferALinkForOnlinePaymentOnFreeAmount=URL nabídnout %s on-line platební uživatelské rozhraní pro volný částku -ToOfferALinkForOnlinePaymentOnMemberSubscription=URL nabídnout %s on-line platební uživatelské rozhraní pro členské předplatné -YouCanAddTagOnUrl=Můžete také přidat parametr URL <b>& tag = <i>hodnota</i></b> na některou z těchto URL (nutné pouze pro volný platby) přidat vlastní komentář platební tag. -SetupPayBoxToHavePaymentCreatedAutomatically=Nastavte si Paybox s url <b>%s</b> mít platba vytvořena automaticky při ověřena Paybox. +ToOfferALinkForOnlinePaymentOnOrder=URL nabízí %s on-line platební uživatelské rozhraní pro objednávky zákazníka +ToOfferALinkForOnlinePaymentOnInvoice=URL nabízí %s on-line platební uživatelské rozhraní pro zákaznické faktury +ToOfferALinkForOnlinePaymentOnContractLine=URL nabízí %s on-line platební uživatelské rozhraní pro řádky smluv +ToOfferALinkForOnlinePaymentOnFreeAmount=URL nabízí %s on-line platební uživatelské rozhraní pro volnou částku +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL nabízí %s on-line platební uživatelské rozhraní pro členské předplatné +YouCanAddTagOnUrl=Můžete také přidat parametr URL <b>&tag = <i>hodnota</i></b> na některou z těchto URL (nutné pouze pro volné platby) a přidat vlastní komentář platby. +SetupPayBoxToHavePaymentCreatedAutomatically=Nastavte si PayBox s url <b>%s</b> pro možnost vytvoření automaticky při ověřeí Payboxu. YourPaymentHasBeenRecorded=Tato stránka potvrzuje, že platba byla zaznamenána. Děkuju. YourPaymentHasNotBeenRecorded=Vaše platba nebyla zaznamenána a transakce byla zrušena. Děkuju. AccountParameter=Parametry účtu -UsageParameter=Použití parametrů +UsageParameter=Použité parametry InformationToFindParameters=Pomozte najít %s informace o účtu PAYBOX_CGI_URL_V2=URL Paybox modulu CGI pro platbu VendorName=Název dodavatele -CSSUrlForPaymentForm=CSS stylů url platebního formuláře -MessageOK=Zpráva o ověřených straně platební návratu -MessageKO=Zpráva o zrušení straně platební návratu +CSSUrlForPaymentForm=CSS styly url platebního formuláře +MessageOK=Návratová stránka se zprávou o schválení platby +MessageKO=Návratová stránka se zprávou o zrušení platby NewPayboxPaymentReceived=Nový Paybox přijaté platby -NewPayboxPaymentFailed=Nový Paybox platba snažil se ale propadal -PAYBOX_PAYONLINE_SENDEMAIL=E-mail upozornit po platbě (úspěch nebo selhání) -PAYBOX_PBX_SITE=Value for PBX SITE -PAYBOX_PBX_RANG=Value for PBX Rang -PAYBOX_PBX_IDENTIFIANT=Value for PBX ID +NewPayboxPaymentFailed=Nový Paybox platba zadána, ale neprošla +PAYBOX_PAYONLINE_SENDEMAIL=E-mail pro upozornění po platbě (úspěch nebo selhání) +PAYBOX_PBX_SITE=Hodnota PBX SITE +PAYBOX_PBX_RANG=Hodnota pro PBX rozsah +PAYBOX_PBX_IDENTIFIANT=Hodnota pro PBX ID diff --git a/htdocs/langs/cs_CZ/paypal.lang b/htdocs/langs/cs_CZ/paypal.lang index efb43b290906c23c95b6a9e60650992b0c18ba58..c616e3d45faf461b419022e1a99605b8778d6a3b 100644 --- a/htdocs/langs/cs_CZ/paypal.lang +++ b/htdocs/langs/cs_CZ/paypal.lang @@ -1,25 +1,25 @@ # Dolibarr language file - Source file is en_US - paypal -PaypalSetup=PayPal modul nastavení -PaypalDesc=Tento modul nabízejí stránky, které umožní platby na <a href="http://www.paypal.com" target="_blank">PayPal</a> zákazníky. Toho lze využít pro volný platbu nebo platbu na určitý objekt Dolibarr (faktury, objednávky, ...) -PaypalOrCBDoPayment=Platit kreditní kartou nebo Paypal -PaypalDoPayment=Platby pomocí PayPal +PaypalSetup=Nastavení modulu PayPal +PaypalDesc=Tento modul nabízejí stránky, které umožní zákazníkům platby prostřednictvím <a href="http://www.paypal.com" target="_blank">PayPal</a>. Toho lze využít pro snadnou platbu nebo platbu na určitý objekt Dolibarr (faktury, objednávky, ...) +PaypalOrCBDoPayment=Platit přes PayPal nebo kreditní kartou +PaypalDoPayment=Plaťte s PayPal PaypalCBDoPayment=Platit kreditní kartou -PAYPAL_API_SANDBOX=Režim test / pískoviště +PAYPAL_API_SANDBOX=Testovací/sandbox režim PAYPAL_API_USER=API uživatelské jméno PAYPAL_API_PASSWORD=API heslo PAYPAL_API_SIGNATURE=API podpis -PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Nabídka platba "integrální" (Credit card + Paypal) nebo "Paypal" pouze -PaypalModeIntegral=Integrální -PaypalModeOnlyPaypal=PayPal pouze -PAYPAL_CSS_URL=Optionnal URL stylů CSS na platební stránky -ThisIsTransactionId=To je id transakce: <b>%s</b> -PAYPAL_ADD_PAYMENT_URL=Přidat URL Paypal platby při odeslání dokumentu e-mailem -PAYPAL_IPN_MAIL_ADDRESS=E-mailová adresa pro okamžité oznámení o platbě (IPN) -PredefinedMailContentLink=Můžete kliknout na níže uvedený odkaz bezpečné provést platbu (PayPal), pokud se tak již nebylo učiněno. \n\n %s \n\n -YouAreCurrentlyInSandboxMode=Ty jsou v současné době v "sandbox" módu -NewPaypalPaymentReceived=Nový Paypal přijaté platby -NewPaypalPaymentFailed=Nový Paypal platební snažil se ale propadal -PAYPAL_PAYONLINE_SENDEMAIL=E-mail upozornit po platbě (úspěch nebo ne) -ReturnURLAfterPayment=Return URL after payment -ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed -PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Nabídka platby "integral" (Kreditní karta+Paypal) nebo pouze "Paypal" +PaypalModeIntegral=Integral +PaypalModeOnlyPaypal=Pouze PayPal +PAYPAL_CSS_URL=Optimální URL ze stylů CSS na platební stránky +ThisIsTransactionId=Toto je id transakce: <b>%s</b> +PAYPAL_ADD_PAYMENT_URL=Přidat URL platby PayPal při odeslání dokumentu e-mailem +PAYPAL_IPN_MAIL_ADDRESS=E-mailová adresa pro rychlé oznámení o platbě (IPN) +PredefinedMailContentLink=Můžete kliknout na níže uvedený odkaz pro bezpečné provedení platby (PayPal), pokud jste tak již neudělal dříve. \n\n %s \n\n +YouAreCurrentlyInSandboxMode=Platby jsou v současné době v testovacím režimu "sandbox" +NewPaypalPaymentReceived=Nové přijaté PayPal platby +NewPaypalPaymentFailed=Nová PayPal platba neprošla +PAYPAL_PAYONLINE_SENDEMAIL=Upozorňující e-mail po platbě (úspěch nebo zamítnutí) +ReturnURLAfterPayment=Návratová URL po platbě +ValidationOfPaypalPaymentFailed=Ověření platby PayPal selhalo +PaypalConfirmPaymentPageWasCalledButFailed=Potvrzovací stránka platby byla volána přes PayPal, ale potvrzení selhalo diff --git a/htdocs/langs/cs_CZ/printipp.lang b/htdocs/langs/cs_CZ/printipp.lang index 835e6827f12ee4e466c21f2ee540526389fa7e03..9aaa2aade01debec47b5730f584a9d2c509aabbc 100644 --- a/htdocs/langs/cs_CZ/printipp.lang +++ b/htdocs/langs/cs_CZ/printipp.lang @@ -1,14 +1,14 @@ # Dolibarr language file - Source file is en_US - printipp -PrintIPPSetup=Setup of Direct Print module -PrintIPPDesc=This module adds a Print button to send documents directly to a printer. It requires a Linux system with CUPS installed. -PRINTIPP_ENABLED=Show "Direct print" icon in document lists -PRINTIPP_HOST=Print server +PrintIPPSetup=Nastavení tiskového modulu Direct +PrintIPPDesc=Tento modul přidá tlačítko Tisk pro odeslání dokumentu přímo na tiskárnu. To vyžaduje systém Linux s nainstalovaným CUPS. +PRINTIPP_ENABLED=Zobrazit ikonu "Přímý tisk" v seznamech dokumentů +PRINTIPP_HOST=Tiskový server PRINTIPP_PORT=Port -PRINTIPP_USER=Login -PRINTIPP_PASSWORD=Password -NoPrinterFound=No printers found (check your CUPS setup) -FileWasSentToPrinter=File %s was sent to printer -NoDefaultPrinterDefined=No default printer defined -DefaultPrinter=Default printer -Printer=Printer -CupsServer=CUPS Server +PRINTIPP_USER=Přihlášení +PRINTIPP_PASSWORD=Heslo +NoPrinterFound=Nebyly nalezeny žádné tiskárny (zkontrolujte nastavení CUPS) +FileWasSentToPrinter=Soubor %s byl poslán na tiskárnu +NoDefaultPrinterDefined=Není definována žádná výchozí tiskárna +DefaultPrinter=Výchozí tiskárna +Printer=Tiskárna +CupsServer=CUPS server diff --git a/htdocs/langs/cs_CZ/productbatch.lang b/htdocs/langs/cs_CZ/productbatch.lang index 85b1d27f3a611763b0bf7454a46c40772432354b..aad274b167bd5ba270df740dee29d3780a4bb93b 100644 --- a/htdocs/langs/cs_CZ/productbatch.lang +++ b/htdocs/langs/cs_CZ/productbatch.lang @@ -1,22 +1,22 @@ # ProductBATCH language file - en_US - ProductBATCH -ManageLotSerial=Use lot/serial number -ProductStatusOnBatch=Yes (lot/serial required) -ProductStatusNotOnBatch=No (lot/serial not used) -ProductStatusOnBatchShort=Yes -ProductStatusNotOnBatchShort=No -Batch=Lot/Serial -atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number -batch_number=Lot/Serial number -BatchNumberShort=Lot/Serial -l_eatby=Eat-by date -l_sellby=Sell-by date -DetailBatchNumber=Lot/Serial details -DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) -printBatch=Lot/Serial: %s -printEatby=Eat-by: %s -printSellby=Sell-by: %s +ManageLotSerial=Použijte množství/sériové číslo +ProductStatusOnBatch=Ano (množství/sériové číslo vyžadováno) +ProductStatusNotOnBatch=Ne (množství/sériové číslo není použito) +ProductStatusOnBatchShort=Ano +ProductStatusNotOnBatchShort=Ne +Batch=Množství/sériové +atleast1batchfield=Spotřeba podle data nebo datum prodeje nebo množství/sériové číslo +batch_number=Množství/Sériové číslo +BatchNumberShort=Množství/Série +l_eatby=Spotřeba podle data +l_sellby=Prodej podle data +DetailBatchNumber=Detail množství/série +DetailBatchFormat=Množství/Sériel: %s - Spotřeba: %s - Prodej: %s (Qty : %d) +printBatch=Množství/Série: %s +printEatby=Spotřeba: %s +printSellby=Prodej: %s printQty=Qty: %d -AddDispatchBatchLine=Add a line for Shelf Life dispatching -BatchDefaultNumber=Undefined -WhenProductBatchModuleOnOptionAreForced=When module Lot/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. -ProductDoesNotUseBatchSerial=This product does not use batch/serial number +AddDispatchBatchLine=Přidat řádek pro dispečink skladovatelnosti +BatchDefaultNumber=Nedefinováno +WhenProductBatchModuleOnOptionAreForced=Když modul množství/série je zapnut, zvýšení/snížení ve skladovém režimu je vyhrazeno poslední volbě a nelze jej upravovat. Další možnosti lze definovat, jak požadujete +ProductDoesNotUseBatchSerial=Tento produkt nepoužívá šarže/sériové číslo diff --git a/htdocs/langs/cs_CZ/products.lang b/htdocs/langs/cs_CZ/products.lang index ac390130cb194c0ff208505d737552e79a9342d7..956df5e0b97c5d31571aefab203ce06d724fcd2c 100644 --- a/htdocs/langs/cs_CZ/products.lang +++ b/htdocs/langs/cs_CZ/products.lang @@ -1,12 +1,12 @@ # Dolibarr language file - Source file is en_US - products ProductRef=Produkt čj. -ProductLabel=Produkt štítek -ProductServiceCard=Produkty / služby karty +ProductLabel=Štítek produktu +ProductServiceCard=Karta produktů/služeb Products=Produkty Services=Služby Product=Produkt Service=Služba -ProductId=Produktu / služby id +ProductId=ID Produktu/služby Create=Vytvořit Reference=Reference NewProduct=Nový produkt @@ -14,39 +14,39 @@ NewService=Nová služba ProductCode=Kód produktu ServiceCode=Servisní kód ProductVatMassChange=Hromadná změna DPH -ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database. -MassBarcodeInit=Mass barcode init -MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. -ProductAccountancyBuyCode=Účetnictví kód (koupit) -ProductAccountancySellCode=Účetnictví kód (prodej) +ProductVatMassChangeDesc=Tuto stránku lze použít k úpravě sazby DPH definované u produktů nebo služeb z jedné do druhé hodnoty. Varování: Tato změna se provádí ve všech databázích!!. +MassBarcodeInit=Hromadný čárový kód inicializace +MassBarcodeInitDesc=Tato stránka může být použita k inicializaci čárového kódu na objekty, které nemají definovaný čárový kód. Zkontrolujte před touto akcí, zda je nastavení modulu čárového kódu kompletní. +ProductAccountancyBuyCode=Účetní kód (nákup) +ProductAccountancySellCode=Účetní kód (prodej) ProductOrService=Produkt nebo služba ProductsAndServices=Produkty a služby ProductsOrServices=Výrobky nebo služby -ProductsAndServicesOnSell=Products and Services for sale or for purchase -ProductsAndServicesNotOnSell=Products and Services out of sale -ProductsAndServicesStatistics=Produkty a služby statistika -ProductsStatistics=Produkty statistiky -ProductsOnSell=Product for sale or for pruchase -ProductsNotOnSell=Product out of sale and out of purchase -ProductsOnSellAndOnBuy=Products for sale and for purchase -ServicesOnSell=Services for sale or for purchase -ServicesNotOnSell=Services out of sale -ServicesOnSellAndOnBuy=Services for sale and for purchase +ProductsAndServicesOnSell=Produkty a služby na prodej nebo k nákupu +ProductsAndServicesNotOnSell=Produkty a služby z prodeje +ProductsAndServicesStatistics=Statistiky produktů a služeb +ProductsStatistics=Statistiky produktů +ProductsOnSell=Produkt k prodeji nebo k nákupu +ProductsNotOnSell=Produkty vyřazené z prodeje nebo nákupu +ProductsOnSellAndOnBuy=Produkty pro prodej a pro nákup +ServicesOnSell=Služby k prodeji nebo k nákupu +ServicesNotOnSell=Služby vyřazené z prodeje +ServicesOnSellAndOnBuy=Služby pro prodej a pro nákup InternalRef=Interní referenční číslo -LastRecorded=Nejnovější produkty / služby na prodeji zaznamenán -LastRecordedProductsAndServices=Poslední %s zaznamenán produktů / služeb -LastModifiedProductsAndServices=Poslední %s modifikované produkty / služby -LastRecordedProducts=Poslední %s produkty zaznamenán +LastRecorded=Poslední produkty/služby vložené do prodeje +LastRecordedProductsAndServices=Poslední %s zaznamené produkty/služby +LastModifiedProductsAndServices=Poslední %s modifikované produkty/služby +LastRecordedProducts=Poslední zaznamenané %s produkty LastRecordedServices=Poslední zaznamenané %s služby LastProducts=Nejnovější produkty CardProduct0=Karta produktu CardProduct1=Servisní karta -CardContract=Smlouva karty +CardContract=Karta smluv Warehouse=Sklad Warehouses=Sklady -WarehouseOpened=Warehouse otevřel -WarehouseClosed=Sklad uzavřen -Stock=Sklad +WarehouseOpened=Otevřené sklady +WarehouseClosed=Uzavřené sklady +Stock=Zásoba Stocks=Zásoby Movement=Pohyb Movements=Pohyby @@ -64,7 +64,7 @@ ProductStatusNotOnBuy=Nelze zakoupit ProductStatusOnBuyShort=Pro nákup ProductStatusNotOnBuyShort=Nelze zakoupit UpdatePrice=Aktualizovat ceny -AppliedPricesFrom=Aplikovaná ceny od +AppliedPricesFrom=Aplikované ceny od SellingPrice=Prodejní cena SellingPriceHT=Prodejní cena (bez DPH) SellingPriceTTC=Prodejní cena (vč. DPH) @@ -72,71 +72,71 @@ PublicPrice=Veřejná cena CurrentPrice=Aktuální cena NewPrice=Nová cena MinPrice=Minimální cena -MinPriceHT=Minim. selling price (net of tax) -MinPriceTTC=Minim. selling price (inc. tax) +MinPriceHT=Minimální prodejní cena (bez daně) +MinPriceTTC=Minimální prodejní cena (vč. daně) CantBeLessThanMinPrice=Prodejní cena nesmí být nižší než minimální povolená pro tento produkt (%s bez daně). Toto hlášení se může také zobrazí, pokud zadáte příliš důležitou slevu. ContractStatus=Stav smlouvy ContractStatusClosed=Zavřeno ContractStatusRunning=Běh ContractStatusExpired=vypršela ContractStatusOnHold=Neběží -ContractStatusToRun=To get running +ContractStatusToRun=V chodu ContractNotRunning=Tato smlouva není v chodu ErrorProductAlreadyExists=Výrobek s referenčním %s již existuje. -ErrorProductBadRefOrLabel=Chybná hodnota pro referenční nebo etikety. -ErrorProductClone=Vyskytl se problém při pokusu o klonování produkt nebo službu. -ErrorPriceCantBeLowerThanMinPrice=Error Price Can't Be Lower Than Minimum Price. +ErrorProductBadRefOrLabel=Chybná hodnota pro reference nebo etikety. +ErrorProductClone=Vyskytl se problém při pokusu o kopírování produktu nebo služby. +ErrorPriceCantBeLowerThanMinPrice=Chyba: Cena nemůže být nižší než minimální cena. Suppliers=Dodavatelé SupplierRef=Dodavatele produktů čj. ShowProduct=Zobrazit produkt ShowService=Zobrazit servis -ProductsAndServicesArea=Produkty a služby oblasti -ProductsArea=Produkt oblast +ProductsAndServicesArea=Oblasti produktů a služeb +ProductsArea=Oblast produktu ServicesArea=Poskytování služeb v oblasti AddToMyProposals=Přidat k mým návrhům AddToOtherProposals=Přidat další návrhy, AddToMyBills=Přidat do mých účtů AddToOtherBills=Přidat na jiné účty -CorrectStock=Správné skladem +CorrectStock=Správný sklad AddPhoto=Přidat fotku ListOfStockMovements=Seznam skladových pohybů -BuyingPrice=Nákup cenu -SupplierCard=Dodavatel karty -CommercialCard=Obchodní karty -AllWays=Cesta ke nalézt svůj výrobek skladem +BuyingPrice=Nákupní cena +SupplierCard=Karta dodavatele +CommercialCard=Obchodní karta +AllWays=Cesta k nalezení vašeho výrobku na skladě NoCat=Váš produkt není v žádném kategorii PrimaryWay=Primární cesta PriceRemoved=Cena odstraněny BarCode=Čárový kód -BarcodeType=Čárový kód typu +BarcodeType=Typ čárového kódu SetDefaultBarcodeType=Nastavte typ čárového kódu -BarcodeValue=Barcode hodnota +BarcodeValue=Hodnota čárového kódu NoteNotVisibleOnBill=Poznámka (není vidět na návrzích faktury, ...) CreateCopy=Vytvoření kopie -ServiceLimitedDuration=Je-li výrobek je služba s omezeným trváním: -MultiPricesAbility=Several level of prices per product/service +ServiceLimitedDuration=Je-li výrobek službou s omezeným trváním: +MultiPricesAbility=Několik úrovní cen za produkt/službu MultiPricesNumPrices=Počet cen MultiPriceLevelsName=Cenová kategorie -AssociatedProductsAbility=Activate the virtual package feature -AssociatedProducts=Package product -AssociatedProductsNumber=Number of products composing this virtual package product -ParentProductsNumber=Number of parent packaging product -IfZeroItIsNotAVirtualProduct=If 0, this product is not a virtual package product -IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any virtual package product +AssociatedProductsAbility=Aktivace funkce virtuálního balíku +AssociatedProducts=Balení produktu +AssociatedProductsNumber=Počet výrobků tvořících tento virtuální produktový balíček +ParentProductsNumber=Počet výchozích balení výrobku +IfZeroItIsNotAVirtualProduct=Pokud je hodnota 0, tento produkt není virtuální produktový balíček +IfZeroItIsNotUsedByVirtualProduct=Pokud je hodnota 0, tento produkt není použit pro žádný virtuální produktový balíček EditAssociate=Asociovat Translation=Překlad -KeywordFilter=Klíčové slovo filtr -CategoryFilter=Kategorie filtru -ProductToAddSearch=Hledání informací o produktech pro přidání -AddDel=Přidat / Smazat +KeywordFilter=Filtr klíčového slova +CategoryFilter=Filtr kategorie +ProductToAddSearch=Hledat produkt pro přidání +AddDel=Přidat/Smazat Quantity=Množství -NoMatchFound=Ne nalezena shoda -ProductAssociationList=Seznam souvisejících produktů / služeb: název produktu / služby (množství ovlivněny) -ProductParentList=List of package products/services with this product as a component -ErrorAssociationIsFatherOfThis=Jedním z vybraného produktu je rodič s aktuální produkt -DeleteProduct=Odstranění produktu / služby -ConfirmDeleteProduct=Jste si jisti, že chcete smazat tento výrobek / službu? -ProductDeleted=Výrobku / služby "%s" vymazán z databáze. +NoMatchFound=Shoda nenalezena +ProductAssociationList=Seznam souvisejících produktů/služeb: název produktu/služby (ovlivněno množstvím) +ProductParentList=Seznam balení produktů/služeb s tímto produktem jako součást +ErrorAssociationIsFatherOfThis=Jedním z vybraného produktu je rodič s aktuálním produktem +DeleteProduct=Odstranění produktu/služby +ConfirmDeleteProduct=Jste si jisti, že chcete smazat tento výrobek/službu? +ProductDeleted=Výrobek/služba "%s" vymazán z databáze. DeletePicture=Odstranění obrázku ConfirmDeletePicture=Jste si jisti, že chcete smazat tento obrázek? ExportDataset_produit_1=Produkty @@ -145,125 +145,125 @@ ImportDataset_produit_1=Produkty ImportDataset_service_1=Služby DeleteProductLine=Odstranit produktovou řadu ConfirmDeleteProductLine=Jste si jisti, že chcete smazat tuto produktovou řadu? -NoProductMatching=Žádný produkt / službu odpovídají zadaným kritériím -MatchingProducts=Odpovídající produkty / služby +NoProductMatching=Žádný produkt/službu neodpovídá zadaným kritériím +MatchingProducts=Odpovídající produkty/služby NoStockForThisProduct=Žádná fotografie k tomuto výrobku -NoStock=No Stock +NoStock=Není na skladě Restock=Doplňování zásob ProductSpecial=Speciální -QtyMin=Minimální Množství +QtyMin=Minimální množství PriceQty=Cena za toto množství -PriceQtyMin=Cena za tuto min. Množství (w / o sleva) +PriceQtyMin=Cena za toto min. množství (w/o sleva) VATRateForSupplierProduct=Sazba DPH (pro tohoto dodavatele/produkt) -DiscountQtyMin=Výchozí sleva Množství -NoPriceDefinedForThisSupplier=Ne cena / ks definován tohoto podniku / produktu -NoSupplierPriceDefinedForThisProduct=Žádný dodavatel cena / ks definována pro tento produkt -RecordedProducts=Produkty zaznamenán -RecordedServices=Služby zaznamenán -RecordedProductsAndServices=Produkty / služby zaznamenané -PredefinedProductsToSell=Predefined products to sell -PredefinedServicesToSell=Predefined services to sell -PredefinedProductsAndServicesToSell=Predefined products/services to sell -PredefinedProductsToPurchase=Predefined product to purchase -PredefinedServicesToPurchase=Predefined services to purchase -PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase -GenerateThumb=Vytvořit palec -ProductCanvasAbility=Použijte speciální "plátno" addons +DiscountQtyMin=Množství pro výchozí slevu +NoPriceDefinedForThisSupplier=Žádná cena/množství není definována pro tohoto dodavatele/produktu +NoSupplierPriceDefinedForThisProduct=Žádná dodavatelská cena/množství není definována pro tento produkt +RecordedProducts=Produkty nahrány +RecordedServices=Služby nahrány +RecordedProductsAndServices=Produkty/služby zaznamenané +PredefinedProductsToSell=Předdefinované produkty na prodej +PredefinedServicesToSell=Předdefinované služby na prodej +PredefinedProductsAndServicesToSell=Předdefinované produkty/služby na prodej +PredefinedProductsToPurchase=Předdefinovaný produkt k nákupu +PredefinedServicesToPurchase=Předdefinované služby pro nákup +PredefinedProductsAndServicesToPurchase=Předdefinované produkty/služby pro nákup +GenerateThumb=Vytvořit náhled +ProductCanvasAbility=Použijte speciální "předlohu" doplňků ServiceNb=Servisní # %s -ListProductServiceByPopularity=Seznam produktů / služeb podle oblíbenosti +ListProductServiceByPopularity=Seznam produktů/služeb podle oblíbenosti ListProductByPopularity=Seznam zboží podle oblíbenosti ListServiceByPopularity=Seznam služeb podle oblíbenosti Finished=Výrobce produktu RowMaterial=Surovina -CloneProduct=Clone produkt nebo službu -ConfirmCloneProduct=Jste si jisti, že chcete klonovat produktů nebo služeb <b>%s?</b> -CloneContentProduct=Klon všechny hlavní informace o produktu / služby -ClonePricesProduct=Klonovat hlavní informace a ceny -CloneCompositionProduct=Clone packaged product/services +CloneProduct=Kopírovat produkt nebo službu +ConfirmCloneProduct=Jste si jisti, že chcete kopírovat produkt nebo službu <b>%s</b>? +CloneContentProduct=Kopírovat všechny hlavní informace o produktu/službě +ClonePricesProduct=Kopírovat hlavní informace a ceny +CloneCompositionProduct=Kopírování balení zboží/služby ProductIsUsed=Tento produkt se používá -NewRefForClone=Ref. nového produktu / služby +NewRefForClone=Ref. nového produktu/služby CustomerPrices=Prodejní ceny SuppliersPrices=Dodavatelská cena -SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services) -CustomCode=Celní kód +SuppliersPricesOfProductsOrServices=Dodavatelské ceny (výrobků či služeb) +CustomCode=Zákaznický kód CountryOrigin=Země původu HiddenIntoCombo=Skryté do vybraných seznamů Nature=Příroda -ProductCodeModel=Product ref template -ServiceCodeModel=Service ref template -AddThisProductCard=Vytvořte kartu výrobku -HelpAddThisProductCard=Tato volba umožňuje vytvořit nebo naklonovat výrobek, pokud neexistuje. -AddThisServiceCard=Vytvoření služební průkaz +ProductCodeModel=Ref šablona produktu +ServiceCodeModel=Ref šablona služby +AddThisProductCard=Vytvořte kartu produktu +HelpAddThisProductCard=Tato volba umožňuje vytvořit nebo naklonovat produkt, pokud neexistuje. +AddThisServiceCard=Vytvoření servisní karty HelpAddThisServiceCard=Tato volba umožňuje vytvořit nebo naklonovat službu, pokud neexistuje. CurrentProductPrice=Aktuální cena -AlwaysUseNewPrice=Vždy používejte aktuální cenu produktu / služby +AlwaysUseNewPrice=Vždy používejte aktuální cenu produktu/služby AlwaysUseFixedPrice=Použijte pevnou cenu -PriceByQuantity=Different prices by quantity -PriceByQuantityRange=Množství rozsah -ProductsDashboard=Produkty / služby shrnutí +PriceByQuantity=Různé ceny podle množství +PriceByQuantityRange=Množstevní rozsah +ProductsDashboard=Produkty/služby shrnutí UpdateOriginalProductLabel=Upravit původní štítek HelpUpdateOriginalProductLabel=Umožňuje upravit název produktu ### composition fabrication -Building=Výroba a položky dispatchment +Building=Výroba a položky expedice Build=Vyrobit BuildIt=Vytvořit a odeslat BuildindListInfo=Dostupné množství pro výrobu na sklad (nastavte na 0 pro žádnou další akci) QtyNeed=Množství UnitPmp=Net jednotka VWAP CostPmpHT=Čistá hodnota VWAP -ProductUsedForBuild=Auto spotřebovány při výrobě +ProductUsedForBuild=Autospotřeba při výrobě ProductBuilded=Výroba dokončena -ProductsMultiPrice=Produkt multi-cena -ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices) -ProductSellByQuarterHT=Produkty obrat čtvrtletní VWAP -ServiceSellByQuarterHT=Služby obrat čtvrtletní VWAP -Quarter1=První. Čtvrtletí -Quarter2=2.. Čtvrtletí -Quarter3=3.. Čtvrtletí -Quarter4=4.. Čtvrtletí -BarCodePrintsheet=Print bar code -PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button <b>%s</b>. -NumberOfStickers=Number of stickers to print on page -PrintsheetForOneBarCode=Print several stickers for one barcode -BuildPageToPrint=Generate page to print -FillBarCodeTypeAndValueManually=Fill barcode type and value manually. -FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product. -FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a thirdparty. -DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s. -DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for thirdparty %s. -BarCodeDataForProduct=Barcode information of product %s : -BarCodeDataForThirdparty=Barcode information of thirdparty %s : -ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values) -PriceByCustomer=Different price for each customer -PriceCatalogue=Unique price per product/service -PricingRule=Rules for customer prices -AddCustomerPrice=Add price by customers -ForceUpdateChildPriceSoc=Set same price on customer subsidiaries -PriceByCustomerLog=Price by customer log -MinimumPriceLimit=Minimum price can't be lower that %s -MinimumRecommendedPrice=Minimum recommended price is : %s -PriceExpressionEditor=Price expression editor -PriceExpressionSelected=Selected price expression -PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions -PriceExpressionEditorHelp2=You can access ExtraFields with variables like <b>#extrafield_myextrafieldkey#</b> and global variables with <b>#global_mycode#</b> -PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:<br><b>#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min#</b> -PriceExpressionEditorHelp4=In product/service price only: <b>#supplier_min_price#</b><br>In supplier prices only: <b>#supplier_quantity# and #supplier_tva_tx#</b> -PriceExpressionEditorHelp5=Available global values: -PriceMode=Price mode -PriceNumeric=Number -DefaultPrice=Default price -ComposedProductIncDecStock=Increase/Decrease stock on parent change -ComposedProduct=Sub-product -MinSupplierPrice=Minimum supplier price -DynamicPriceConfiguration=Dynamic price configuration -GlobalVariables=Global variables -GlobalVariableUpdaters=Global variable updaters +ProductsMultiPrice=Multicena produktu +ProductsOrServiceMultiPrice=Zákaznické ceny (z výrobků nebo služeb, multi-ceny) +ProductSellByQuarterHT=Čtvrtletní obrat VWAP produkty +ServiceSellByQuarterHT=Čtvrtletní obrat VWAP služby +Quarter1=I. čtvrtletí +Quarter2=II čtvrtletí +Quarter3=III čtvrtletí +Quarter4=IV čtvrtletí +BarCodePrintsheet=Tisk čárového kódu +PageToGenerateBarCodeSheets=Pomocí tohoto nástroje můžete vytisknout archy čárových kódů samolepek. Zvolte formát samolepek, typ a hodnoty čárového kódu a poté klikněte na tlačítko <b>%s</b>. +NumberOfStickers=Počet samolepek k tisku na stránce +PrintsheetForOneBarCode=Vytiskněte několik štítků pro jeden čárový kód +BuildPageToPrint=Generování stránky pro tisk +FillBarCodeTypeAndValueManually=Zadat typ čárového kódu a hodnotu ručně. +FillBarCodeTypeAndValueFromProduct=Zadat typ čárového kódu a hodnoty z čárového kódu produktu. +FillBarCodeTypeAndValueFromThirdParty=Zadat typ čárového kódu a hodnoty z čárového kódu třetí strany. +DefinitionOfBarCodeForProductNotComplete=Definice typu nebo hodnoty čárového kódu není kompletní pro produkt %s. +DefinitionOfBarCodeForThirdpartyNotComplete=Definice typu nebo hodnoty čárového kódu není kompletní pro třetí stranu %s. +BarCodeDataForProduct=Čárový kód informace o výrobku %s : +BarCodeDataForThirdparty=Čárový kód informace o třetí straně %s : +ResetBarcodeForAllRecords=Definovat hodnotu čárového kódu pro všechny záznamy (tato akce také obnoví hodnotu čárového kódu již definovanou s novými hodnotami) +PriceByCustomer=Různé ceny pro každého zákazníka +PriceCatalogue=Unikátní cena pro produkt/službu +PricingRule=Pravidla pro zákaznických ceny +AddCustomerPrice=Přidejte cenu pro zákazníky +ForceUpdateChildPriceSoc=Nastavit stejné ceny pro dceřiné společnosti zákazníka +PriceByCustomerLog=Cena dle protokolu zákazníka +MinimumPriceLimit=Minimální cena nesmí být nižší než %s +MinimumRecommendedPrice=Minimální doporučená cena je: %s +PriceExpressionEditor=Editor cenových výrazů +PriceExpressionSelected=Vybrané ceny výraz +PriceExpressionEditorHelp1="cena = 2 + 2" nebo "2 + 2" pro nastavení ceny. Použijte oddělovač ; pro oddělení výrazů +PriceExpressionEditorHelp2=Můžete přistupovat k ExtraFields s proměnnými, jako je <b>#extrafield_myextrafieldkey#</b> a globální proměnné s <b>#global_mycode#</b> +PriceExpressionEditorHelp3=V obou cenách produktů/služeb a dodavatelů jsou tyto proměnné k dispozici: <br><b>#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min#</b> +PriceExpressionEditorHelp4=V produktech/službách pouze cena: <b>#supplier_min_price#</b><br>v dodavatelských cenách pouze: <b>#supplier_quantity# and #supplier_tva_tx#</b> +PriceExpressionEditorHelp5=Dostupné globální hodnoty: +PriceMode=Režim ceny +PriceNumeric=Číslo +DefaultPrice=Výchozí cena +ComposedProductIncDecStock=Zvýšit/snížit zásoby na výchozí změny +ComposedProduct=Subprodukt +MinSupplierPrice=Minimální dodavatelská cena +DynamicPriceConfiguration=Dynamická konfigurace cen +GlobalVariables=Globální proměnné +GlobalVariableUpdaters=Aktualizace globálních proměnných GlobalVariableUpdaterType0=JSON data -GlobalVariableUpdaterHelp0=Parses JSON data from specified URL, VALUE specifies the location of relevant value, -GlobalVariableUpdaterHelpFormat0=format is {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"} +GlobalVariableUpdaterHelp0=Analyzuje JSON data ze zadané adresy URL, VALUE určuje umístění příslušné hodnoty +GlobalVariableUpdaterHelpFormat0=formát je: {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"} GlobalVariableUpdaterType1=WebService data -GlobalVariableUpdaterHelp1=Parses WebService data from specified URL, NS specifies the namespace, VALUE specifies the location of relevant value, DATA should contain the data to send and METHOD is the calling WS method -GlobalVariableUpdaterHelpFormat1=format is {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}} -UpdateInterval=Update interval (minutes) -LastUpdated=Last updated -CorrectlyUpdated=Correctly updated +GlobalVariableUpdaterHelp1=Analyzuje Webservice data ze zadané adresy URL, NS specifikuje jmenný prostor, VALUE určuje umístění příslušné hodnoty, DATA by měla obsahovat data odesílat a METHOD je volání metody WS +GlobalVariableUpdaterHelpFormat1=formát je: {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}} +UpdateInterval=Interval aktualizace (minuty) +LastUpdated=Naposledy aktualizováno +CorrectlyUpdated=Správně aktualizováno diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang index 67feb9b64539de38126a4c07b3eeebf0ededa424..3d294c18fb3c043dc89a7fc814e1e28eb9ee84ff 100644 --- a/htdocs/langs/cs_CZ/projects.lang +++ b/htdocs/langs/cs_CZ/projects.lang @@ -3,21 +3,21 @@ RefProject=Číslo projektu ProjectId=Id projektu Project=Projekt Projects=Projekty -ProjectStatus=Project status +ProjectStatus=Stav projektu SharedProject=Všichni PrivateProject=Kontakty na projektu MyProjectsDesc=Tento pohled je omezen na projekty u kterých jste uveden jako kontakt (jakéhokoliv typu) ProjectsPublicDesc=Tento pohled zobrazuje všechny projekty které máte oprávnění číst. -ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. +ProjectsPublicTaskDesc=Tento pohled představuje všechny projekty a úkoly, které mají povoleno číst. ProjectsDesc=Tento pohled zobrazuje všechny projekty (vaše uživatelské oprávnění vám umožňuje vidět vše). MyTasksDesc=Tento pohled je omezen na projekty či úkoly u kterých jste uveden jako kontakt (jakéhokoliv typu) -OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). +OnlyOpenedProject=Pouze otevřené projekty jsou viditelné (projekty s návrhem nebo uzavřeným stavem nejsou viditelné). TasksPublicDesc=Tento pohled zobrazuje všechny projekty a úkoly které máte oprávnění číst. TasksDesc=Tento pohled zobrazuje všechny projekty a úkoly (vaše uživatelské oprávnění vám umožňuje vidět vše). -AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. +AllTaskVisibleButEditIfYouAreAssigned=Všechny úkoly takového projektu jsou viditelné, ale můžete zadat čas pouze k přiřazenému úkolu. ProjectsArea=Projekty NewProject=Nový projekt -AddProject=Create project +AddProject=Vytvořit projekt DeleteAProject=Odstranit projekt DeleteATask=Odstranit úkol ConfirmDeleteAProject=Jste si jisti, že chcete smazat tento projekt? @@ -32,8 +32,8 @@ NoProject=Žádný projekt nedefinován či vlastněn NbOpenTasks=Počet otevřených úloh NbOfProjects=Počet projektů TimeSpent=Strávený čas -TimeSpentByYou=Time spent by you -TimeSpentByUser=Time spent by user +TimeSpentByYou=Váš strávený čas +TimeSpentByUser=Čas strávený uživatelem TimesSpent=Strávený čas RefTask=Číslo. úkolu LabelTask=Název úkolu @@ -41,8 +41,8 @@ TaskTimeSpent=Čas strávený na úkolech TaskTimeUser=Uživatel TaskTimeNote=Poznámka TaskTimeDate=Datum -TasksOnOpenedProject=Tasks on opened projects -WorkloadNotDefined=Workload not defined +TasksOnOpenedProject=Úkoly otevřených projektů +WorkloadNotDefined=Pracovní zátěž není definována NewTimeSpent=Nový strávený čas MyTimeSpent=Můj strávený čas MyTasks=Moje úkoly @@ -52,7 +52,7 @@ TaskDateStart=Datum zahájení úkolu TaskDateEnd=Datum ukončení úkolu TaskDescription=Popis úkolu NewTask=Nový úkol -AddTask=Create task +AddTask=Vytvořit úkol AddDuration=Přidat trvání Activity=Činnost Activities=Úkoly / činnosti @@ -72,8 +72,8 @@ ListSupplierOrdersAssociatedProject=Seznam dodavatelských objednávek souvisej ListSupplierInvoicesAssociatedProject=Seznam dodavatelských faktur související s projektem ListContractAssociatedProject=Seznam zakázek souvisejících s projektem ListFichinterAssociatedProject=Seznam zákroků spojených s projektem -ListExpenseReportsAssociatedProject=List of expense reports associated with the project -ListDonationsAssociatedProject=List of donations associated with the project +ListExpenseReportsAssociatedProject=Seznam vyúčtování výdajů souvisejících s projektem +ListDonationsAssociatedProject=Seznam darů spojených s projektem ListActionsAssociatedProject=Seznam událostí spojených s projektem ActivityOnProjectThisWeek=Týdenní projektová aktivita ActivityOnProjectThisMonth=Měsíční projektová aktivita @@ -93,13 +93,13 @@ ActionsOnProject=Události na projektu YouAreNotContactOfProject=Nejste kontakt tohoto privátního projektu DeleteATimeSpent=Odstranit strávený čas ConfirmDeleteATimeSpent=Jste si jisti, že chcete smazat tento strávený čas? -DoNotShowMyTasksOnly=See also tasks not assigned to me -ShowMyTasksOnly=View only tasks assigned to me +DoNotShowMyTasksOnly=Viz také úkoly mě nepřidělené +ShowMyTasksOnly=Zobrazit pouze úkoly mě přidělené TaskRessourceLinks=Zdroje ProjectsDedicatedToThisThirdParty=Projekty této třetí strany NoTasks=Žádné úkoly na tomto projektu LinkedToAnotherCompany=Připojené k jiné třetí straně -TaskIsNotAffectedToYou=Task not assigned to you +TaskIsNotAffectedToYou=Úkol vám není přidělený ErrorTimeSpentIsEmpty=Čas strávený je prázdný ThisWillAlsoRemoveTasks=Tato akce rovněž odstraní všechny úkoly projektu (<b>%s</b> úkolů v tuto chvíli) a všechny strávené časy vstupující do projektu. IfNeedToUseOhterObjectKeepEmpty=Pokud je k projektu třeba připojit některé objekty jiných třetích stran (faktury, objednávky, ...), ponechte toto prázdné (projekt bude moci obsahovat více třetích stran) @@ -109,15 +109,15 @@ CloneContacts=Duplikovat kontakty CloneNotes=Duplikovat poznámky CloneProjectFiles=Duplikovat připojené soubory projektu CloneTaskFiles=Duplikovat připojené soubory úkolu/ů (pokud úkol(y) klonován(y)) -CloneMoveDate=Update project/tasks dates from now ? +CloneMoveDate=Aktualizace data projektu/úkolu od nyní? ConfirmCloneProject=Opravdu chcete duplikovat tento projekt? ProjectReportDate=Změnit datum úkolu dle data zahájení projektu ErrorShiftTaskDate=Nelze přesunout datum úkolu dle nového data zahájení projektu ProjectsAndTasksLines=Projekty a úkoly ProjectCreatedInDolibarr=Projekt %s vytvořen -TaskCreatedInDolibarr=Task %s created -TaskModifiedInDolibarr=Task %s modified -TaskDeletedInDolibarr=Task %s deleted +TaskCreatedInDolibarr=Úkol %s vytvořen +TaskModifiedInDolibarr=Úkol %s upraven +TaskDeletedInDolibarr=Úkol %s smazán ##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=Vedoucí projektu TypeContact_project_external_PROJECTLEADER=Vedoucí projektu @@ -129,18 +129,18 @@ TypeContact_project_task_internal_TASKCONTRIBUTOR=Přispěvatel TypeContact_project_task_external_TASKCONTRIBUTOR=Přispěvatel SelectElement=Vyberte prvek AddElement=Odkaz na prvek -UnlinkElement=Unlink element +UnlinkElement=Odpojit element # Documents models DocumentModelBaleine=Kompletní projektový report (logo. ..) PlannedWorkload=Plánované vytížení -PlannedWorkloadShort=Workload -WorkloadOccupation=Workload assignation +PlannedWorkloadShort=Pracovní zátěž +WorkloadOccupation=Pracovní zátěž ProjectReferers=Odkazující objekty -SearchAProject=Search a project -ProjectMustBeValidatedFirst=Project must be validated first -ProjectDraft=Draft projects -FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerDay=Input per day -InputPerWeek=Input per week -InputPerAction=Input per action -TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s +SearchAProject=Hledat projekt +ProjectMustBeValidatedFirst=Projekt musí být nejdříve ověřen +ProjectDraft=Návrhy projektů +FirstAddRessourceToAllocateTime=Přiřadit zdroje k vyčlenění času +InputPerDay=Vstup za den +InputPerWeek=Vstup za týden +InputPerAction=Vstup za akci +TimeAlreadyRecorded=Strávený čas již zaznamenána pro tento úkol/den a uživatele %s diff --git a/htdocs/langs/cs_CZ/propal.lang b/htdocs/langs/cs_CZ/propal.lang index ffc704293432c555bf50d6cc2acbb844b01b21ca..0f0cd34db10d63d374bbffa411bfcb35249c0a3f 100644 --- a/htdocs/langs/cs_CZ/propal.lang +++ b/htdocs/langs/cs_CZ/propal.lang @@ -1,43 +1,43 @@ # Dolibarr language file - Source file is en_US - propal -Proposals=Komerční návrhy -Proposal=Komerční návrh -ProposalShort=Návrh -ProposalsDraft=Navrhnout obchodní návrhy -ProposalDraft=Návrh obchodní návrh -ProposalsOpened=Otevřené obchodní návrhy -Prop=Komerční návrhy -CommercialProposal=Komerční návrh -CommercialProposals=Komerční návrhy -ProposalCard=Návrh karty -NewProp=Nový obchodní návrh -NewProposal=Nový obchodní návrh -NewPropal=Nový návrh -Prospect=Vyhlídka -ProspectList=Prospect seznam -DeleteProp=Smazat obchodní návrh -ValidateProp=Ověřit obchodní návrh -AddProp=Přidat návrh -ConfirmDeleteProp=Jste si jisti, že chcete smazat tento obchodní návrh? -ConfirmValidateProp=Jste si jisti, že chcete ověřit tuto obchodní návrh pod názvem <b>%s?</b> -LastPropals=Poslední %s návrhy -LastClosedProposals=Poslední %s uzavřen návrhy -LastModifiedProposals=Poslední %s upravené návrhy -AllPropals=Všechny návrhy -LastProposals=Poslední návrhy -SearchAProposal=Hledat návrh -ProposalsStatistics=Obchodní Návrh si statistiky +Proposals=Obchodní nabídky +Proposal=Obchodní nabídka +ProposalShort=Nabídka +ProposalsDraft=Navrhnout obchodní nabídky +ProposalDraft=Navrhnout obchodní nabídku +ProposalsOpened=Otevřené obchodní nabídky +Prop=Obchodní nabídky +CommercialProposal=Obchodní nabídka +CommercialProposals=Obchodní nabídky +ProposalCard=Karta obchodních nabídek +NewProp=Nová obchodní nabídka +NewProposal=Nová obchodní nabídka +NewPropal=Nová nabídka +Prospect=Cíl +ProspectList=Seznam cílů +DeleteProp=Smazat obchodní nabídku +ValidateProp=Ověřit obchodní nabídku +AddProp=Vytvořit nabídku +ConfirmDeleteProp=Jste si jisti, že chcete smazat tuto obchodní nabídku? +ConfirmValidateProp=Jste si jisti, že chcete ověřit tuto obchodní nabídku pod názvem <b>%s?</b> +LastPropals=Poslední %s nabídky +LastClosedProposals=Poslední %s uzavřené nabídky +LastModifiedProposals=Poslední %s upravené nabídky +AllPropals=Všechny nabídky +LastProposals=Poslední nabídky +SearchAProposal=Hledat nabídku +ProposalsStatistics=Statistiky obchodních nabídek NumberOfProposalsByMonth=Číslo podle měsíce -AmountOfProposalsByMonthHT=Částka, o měsíc (bez DPH) -NbOfProposals=Počet obchodních návrhů -ShowPropal=Zobrazit návrhu -PropalsDraft=Dáma +AmountOfProposalsByMonthHT=Částka podle měsíce (bez DPH) +NbOfProposals=Počet obchodních nabídek +ShowPropal=Zobrazit nabídku +PropalsDraft=Návrhy PropalsOpened=Otevřeno -PropalsNotBilled=Uzavřeno není účtována -PropalStatusDraft=Návrh (musí být ověřena) -PropalStatusValidated=Ověřené (Návrh je v provozu) -PropalStatusOpened=Ověřené (Návrh je v provozu) +PropalsNotBilled=Uzavřeno, není účtováno +PropalStatusDraft=Návrh (musí být ověřen) +PropalStatusValidated=Ověřeno (návrh je otevřen) +PropalStatusOpened=Ověřeno (návrh je otevřen) PropalStatusClosed=Zavřeno -PropalStatusSigned=Podpis (potřeby fakturace) +PropalStatusSigned=Podpis (potřeba fakturace) PropalStatusNotSigned=Nejste přihlášen (uzavřený) PropalStatusBilled=Účtováno PropalStatusDraftShort=Návrh @@ -45,44 +45,42 @@ PropalStatusValidatedShort=Ověřené PropalStatusOpenedShort=Otevřeno PropalStatusClosedShort=Zavřeno PropalStatusSignedShort=Podepsaný -PropalStatusNotSignedShort=Nejste přihlášen +PropalStatusNotSignedShort=Nepodepsaný PropalStatusBilledShort=Účtováno -PropalsToClose=Komerční návrhy zavřít -PropalsToBill=Podepsaly obchodní návrhy zákona -ListOfProposals=Seznam obchodních návrhů -ActionsOnPropal=Události na návrhu -NoOpenedPropals=Žádné otevřené obchodní návrhy -NoOtherOpenedPropals=Žádný jiný otevřel obchodní návrhy -RefProposal=Komerční návrh ref -SendPropalByMail=Poslat obchodní návrh poštou -FileNotUploaded=Soubor nebyl nahrán -FileUploaded=Soubor byl úspěšně nahrán -AssociatedDocuments=Dokumenty související s návrhem: +PropalsToClose=Zavřít obchodní nabídky +PropalsToBill=Podepsané obchodní nabídky na účtu +ListOfProposals=Seznam obchodních nabídek +ActionsOnPropal=Události nabídky +NoOpenedPropals=Žádné otevřené obchodní nabídky +NoOtherOpenedPropals=Žádné další otevřené obchodní nabídky +RefProposal=Obchodní nabídka ref +SendPropalByMail=Poslat obchodní nabídku poštou +AssociatedDocuments=Dokumenty související s nabídkou: ErrorCantOpenDir=Nelze otevřít adresář -DatePropal=Datum návrhu -DateEndPropal=Platnost koncové datum +DatePropal=Datum nabídky +DateEndPropal=Datum ukončení platnosti DateEndPropalShort=Datum ukončení -ValidityDuration=Platnost trvání +ValidityDuration=Trvání platnosti CloseAs=Zavřete se stavem -ClassifyBilled=Klasifikovat účtovány -BuildBill=Build fakturu +ClassifyBilled=Označit jako účtováno +BuildBill=Vytvořit fakturu ErrorPropalNotFound=Propal %s nebyl nalezen Estimate=Odhad: EstimateShort=Odhad -OtherPropals=Další návrhy -AddToDraftProposals=Přidat do předlohy návrhu -NoDraftProposals=Žádné návrhy řešení -CopyPropalFrom=Vytvoření obchodní návrh zkopírováním existujícího návrhu -CreateEmptyPropal=Vytvořte prázdný obchodní návrhy vierge nebo ze seznamu produktů / služeb -DefaultProposalDurationValidity=Výchozí komerční Návrh platnost doba (ve dnech) -UseCustomerContactAsPropalRecipientIfExist=Použití zákazníků kontaktní adresu je-li definována místo třetí stranou adresa jako adresa příjemce návrh -ClonePropal=Klon obchodní návrh -ConfirmClonePropal=Jste si jisti, že chcete klonovat komerční návrhu <b>%s?</b> -ConfirmReOpenProp=Jste si jisti, že chcete otevřít zpět komerční návrhu <b>%s?</b> -ProposalsAndProposalsLines=Komerční návrh a vedení -ProposalLine=Návrh linky -AvailabilityPeriod=Dostupnost zpoždění -SetAvailability=Nastavte si obsazenost zpoždění +OtherPropals=Další nabídky +AddToDraftProposals=Přidat do předlohy nabídky +NoDraftProposals=Žádné návrhy nabídek +CopyPropalFrom=Vytvořit obchodní nabídku zkopírováním existující nabídky +CreateEmptyPropal=Vytvořte prázdnou obchodní nabídku z šablony nebo ze seznamu produktů/služeb +DefaultProposalDurationValidity=Doba platnosti výchozí obchodní nabídky (ve dnech) +UseCustomerContactAsPropalRecipientIfExist=Použití kontaktní adresy zákazníka, je-li definována místo třetí stranou jako adresa příjemce nabídky +ClonePropal=Kopírovat obchodní nabídku +ConfirmClonePropal=Jste si jisti, že chcete kopírovat obchodní nabídku <b>%s</b> ? +ConfirmReOpenProp=Jste si jisti, že chcete otevřít zpět obchodní nabídku <b>%s</b> ? +ProposalsAndProposalsLines=Obchodní nabídka a řádky +ProposalLine=Řádky nabídky +AvailabilityPeriod=Dostupné zpoždění +SetAvailability=Nastavte si dostupné zpoždění AfterOrder=po objednání ##### Availability ##### AvailabilityTypeAV_NOW=Bezprostřední @@ -91,12 +89,12 @@ AvailabilityTypeAV_2W=2 týdny AvailabilityTypeAV_3W=3 týdny AvailabilityTypeAV_1M=1 měsíc ##### Types de contacts ##### -TypeContact_propal_internal_SALESREPFOLL=Zástupce následující vypracovaného návrhu -TypeContact_propal_external_BILLING=Zákazník faktura kontakt -TypeContact_propal_external_CUSTOMER=Kontakt se zákazníkem následující vypracovaného návrhu +TypeContact_propal_internal_SALESREPFOLL=Zástupce následující vypracované nabídky +TypeContact_propal_external_BILLING=Fakturační kontakt zákazníka +TypeContact_propal_external_CUSTOMER=Kontakt se zákazníkem pro následující vypracované nabídky # Document models -DocModelAzurDescription=Kompletní návrh modelu (logo. ..) -DocModelJauneDescription=Jaune návrh modelu -DefaultModelPropalCreate=Výchozí model, tvorba -DefaultModelPropalToBill=Výchozí šablona při zavírání obchodní návrh (bude fakturovat) -DefaultModelPropalClosed=Výchozí šablona při zavírání obchodní návrh (nevyfakturované) +DocModelAzurDescription=Kompletní šablona nabídky (logo. ..) +DocModelJauneDescription=Jaune šablona nabídky +DefaultModelPropalCreate=Tvorba z výchozí šablony +DefaultModelPropalToBill=Výchozí šablona při uzavírání obchodní nabídky (bude se fakturovat) +DefaultModelPropalClosed=Výchozí šablona při uzavírání obchodní nabídky (nevyfakturované) diff --git a/htdocs/langs/cs_CZ/resource.lang b/htdocs/langs/cs_CZ/resource.lang index 32bdd92f884785546c5345ebe4e9ebea1f563956..43db6790fe33c7cbb9631e54b547ef6558fe66d4 100644 --- a/htdocs/langs/cs_CZ/resource.lang +++ b/htdocs/langs/cs_CZ/resource.lang @@ -1,34 +1,34 @@ -MenuResourceIndex=Resources -MenuResourceAdd=New resource -MenuResourcePlanning=Resource planning -DeleteResource=Delete resource -ConfirmDeleteResourceElement=Confirm delete the resource for this element -NoResourceInDatabase=No resource in database. -NoResourceLinked=No resource linked +MenuResourceIndex=Zdroje +MenuResourceAdd=Nový zdroj +MenuResourcePlanning=Plánování zdrojů +DeleteResource=Smazat zdroj +ConfirmDeleteResourceElement=Potvrďte odstranění zdroje pro tento element +NoResourceInDatabase=Žádný zdroj v databázi. +NoResourceLinked=Žádný propojený zdroj -ResourcePageIndex=Resources list -ResourceSingular=Resource -ResourceCard=Resource card -AddResource=Create a resource -ResourceFormLabel_ref=Resource name -ResourceType=Resource type -ResourceFormLabel_description=Resource description +ResourcePageIndex=Výpis zdrojů +ResourceSingular=Zdroj +ResourceCard=Karta zdroje +AddResource=Vytvořit zdroj +ResourceFormLabel_ref=Název zdroje +ResourceType=Typ zdroje +ResourceFormLabel_description=Popis zdroje -ResourcesLinkedToElement=Resources linked to element +ResourcesLinkedToElement=Zdroje propojené s prvkem -ShowResourcePlanning=Show resource planning -GotoDate=Go to date +ShowResourcePlanning=Zobrazení plánování zdrojů +GotoDate=Jdi na datum -ResourceElementPage=Element resources -ResourceCreatedWithSuccess=Resource successfully created -RessourceLineSuccessfullyDeleted=Resource line successfully deleted -RessourceLineSuccessfullyUpdated=Resource line successfully updated -ResourceLinkedWithSuccess=Resource linked with success +ResourceElementPage=Prvky zdrojů +ResourceCreatedWithSuccess=Zdroj úspěšně vytvořen +RessourceLineSuccessfullyDeleted=Propojení zdrojů bylo úspěšně odstraněno +RessourceLineSuccessfullyUpdated=Propojení zdrojů bylo úspěšně aktualizováno +ResourceLinkedWithSuccess=Zdroj úspěšně propojen -TitleResourceCard=Resource card -ConfirmDeleteResource=Confirm to delete this resource -RessourceSuccessfullyDeleted=Resource successfully deleted -DictionaryResourceType=Type of resources +TitleResourceCard=Karta zdroje +ConfirmDeleteResource=Potvrďte odstranění tohoto zdroje +RessourceSuccessfullyDeleted=Zdroj úspěšně odstraněn +DictionaryResourceType=Typy zdrojů -SelectResource=Select resource +SelectResource=Výběr zdroje diff --git a/htdocs/langs/cs_CZ/salaries.lang b/htdocs/langs/cs_CZ/salaries.lang index f9dbdb94b20845f9e76a4f3aec8f186aa2b3dff7..8e3208a9d7397b2240d0d1b18ac1f66cf2da0776 100644 --- a/htdocs/langs/cs_CZ/salaries.lang +++ b/htdocs/langs/cs_CZ/salaries.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - users -SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments -SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Kód pro platby mezd v účetnictví +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Kód pro finanční poplatek v účetnictví Salary=Mzda Salaries=Mzdy Employee=Zaměstnanec @@ -8,6 +8,6 @@ NewSalaryPayment=Nová platba mzdy SalaryPayment=Platba mzdy SalariesPayments=Platby mezd ShowSalaryPayment=Ukázat platbu mzdy -THM=Average hourly price -TJM=Average daily price -CurrentSalary=Current salary +THM=Průměrná hodinová mzda +TJM=Průměrná denní cena +CurrentSalary=Současná mzda diff --git a/htdocs/langs/cs_CZ/sendings.lang b/htdocs/langs/cs_CZ/sendings.lang index 31a10e77e1bfae176d69ed3a2416968504e05dfe..7020cd17ac8ca1c5ae81edee98cc68b003d4febc 100644 --- a/htdocs/langs/cs_CZ/sendings.lang +++ b/htdocs/langs/cs_CZ/sendings.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - sendings -RefSending=Ref. náklad +RefSending=Ref. zásilka Sending=Náklad Sendings=Zásilky -AllSendings=All Shipments -Shipment=Náklad +AllSendings=Všechny zásilky +Shipment=Doprava Shipments=Zásilky -ShowSending=Show Sending -Receivings=Receipts -SendingsArea=Zásilky oblast +ShowSending=Ukázat odeslání +Receivings=Doklady +SendingsArea=Oblast zásilek ListOfSendings=Seznam zásilek SendingMethod=Způsob dopravy SendingReceipt=Přepravní doklad @@ -16,71 +16,71 @@ SearchASending=Hledat zásilky StatisticsOfSendings=Statistika zásilek NbOfSendings=Počet zásilek NumberOfShipmentsByMonth=Počet zásilek podle měsíce -SendingCard=Shipment card +SendingCard=Karta zásilky NewSending=Nová zásilka CreateASending=Vytvořit zásilku CreateSending=Vytvořit zásilku -QtyOrdered=Množství objednat +QtyOrdered=Množství objednáno QtyShipped=Množství odesláno QtyToShip=Množství na loď QtyReceived=Množství přijaté -KeepToShip=Remain to ship +KeepToShip=Zůstaňte na loď OtherSendingsForSameOrder=Další zásilky pro tuto objednávku -DateSending=Datum odeslání, aby -DateSendingShort=Datum odeslání, aby +DateSending=Datum odeslání objednávky +DateSendingShort=Datum odeslání objednávky SendingsForSameOrder=Zásilky pro tuto objednávku -SendingsAndReceivingForSameOrder=Zásilky a receivings pro tuto objednávku +SendingsAndReceivingForSameOrder=Zásilky a vratky pro tuto objednávku SendingsToValidate=Zásilky se ověřují StatusSendingCanceled=Zrušený StatusSendingDraft=Návrh -StatusSendingValidated=Ověřené (výrobky na loď nebo již dodávány) +StatusSendingValidated=Ověřené (výrobky pro dodávku nebo již dodány) StatusSendingProcessed=Zpracované StatusSendingCanceledShort=Zrušený StatusSendingDraftShort=Návrh StatusSendingValidatedShort=Ověřené StatusSendingProcessedShort=Zpracované -SendingSheet=Shipment sheet +SendingSheet=Zásilkový list Carriers=Dopravci -Carrier=Nosič +Carrier=Dopravce CarriersArea=Dopravci oblasti -NewCarrier=Nový nosič +NewCarrier=Nový dopravce ConfirmDeleteSending=Jste si jisti, že chcete smazat tuto zásilku? -ConfirmValidateSending=Jste si jisti, že chcete ověřit tuto zásilku s referenčními <b>%s?</b> +ConfirmValidateSending=Jste si jisti, že chcete ověřit tuto zásilku s referenčním <b>%s?</b> ConfirmCancelSending=Jste si jisti, že chcete zrušit tuto zásilku? -GenericTransport=Generic doprava -Enlevement=Dostal zákazník -DocumentModelSimple=Jednoduché Vzor dokladu +GenericTransport=Generická doprava +Enlevement=Obdrželi od zákazníka +DocumentModelSimple=Jednoduchý vzor dokladu DocumentModelMerou=Merou A5 modelu -WarningNoQtyLeftToSend=Varování: žádné zboží mají být dodány. -StatsOnShipmentsOnlyValidated=Statistiky provedena na zásilky pouze ověřených. Datum použity je datum schválení zásilky (plánované datum dodání není vždy známo). -DateDeliveryPlanned=Čelní termín dodání -DateReceived=Datum doručení obdržel -SendShippingByEMail=Poslat zásilku EMail -SendShippingRef=Submission of shipment %s -ActionsOnShipping=Události na zásilky +WarningNoQtyLeftToSend=Varování: žádné zboží nečeká na dopravu +StatsOnShipmentsOnlyValidated=Statistiky vedené pouze na ověřené zásilky. Datum použití je datum schválení zásilky (plánované datum dodání není vždy známo). +DateDeliveryPlanned=Plánovaný termín dodání +DateReceived=Datum doručení +SendShippingByEMail=Poslat zásilku mailem +SendShippingRef=Podání zásilky %s +ActionsOnShipping=Události zásilky LinkToTrackYourPackage=Odkaz pro sledování balíku -ShipmentCreationIsDoneFromOrder=Pro tuto chvíli, je vytvoření nové zásilky provést z objednávky karty. -RelatedShippings=Related shipments -ShipmentLine=Zásilka linka +ShipmentCreationIsDoneFromOrder=Pro tuto chvíli, je vytvoření nové zásilky provedeno z objednávkové karty. +RelatedShippings=Související zásilky +ShipmentLine=Řádek zásilky CarrierList=Seznam dopravců -SendingRunning=Product from ordered customer orders -SuppliersReceiptRunning=Product from ordered supplier orders -ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders -ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders -ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent -ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received +SendingRunning=Produkt z objednaných zákaznických objednávek +SuppliersReceiptRunning=Produkt z objednaných dodavatelských objednávek +ProductQtyInCustomersOrdersRunning=Množství výrobku do otevřených objednávek zákazníků +ProductQtyInSuppliersOrdersRunning=Množství výrobku do otevřených dodavatelů zakázek +ProductQtyInShipmentAlreadySent=Množství již odeslaných produktů z objednávek zákazníka +ProductQtyInSuppliersShipmentAlreadyRecevied=Množství již dodaných produktů z otevřených dodavatelských objednávek # Sending methods SendingMethodCATCH=Chytit zákazníka SendingMethodTRANS=Přepravce -SendingMethodCOLSUI=Colissimo +SendingMethodCOLSUI=Colisimo # ModelDocument -DocumentModelSirocco=Jednoduchý model pro dokument o doručení -DocumentModelTyphon=Více Celý dokument model pro potvrzení o doručení (logo. ..) -Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstantní EXPEDITION_ADDON_NUMBER není definováno -SumOfProductVolumes=Součet objemů produktů -SumOfProductWeights=Součet hmotností produktů +DocumentModelSirocco=Jednoduchý model dokumentu pro potvrzení o doručení +DocumentModelTyphon=Více kompletních modelů dokumentů pro potvrzení o doručení (logo. ..) +Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstanta EXPEDITION_ADDON_NUMBER není definována +SumOfProductVolumes=Součet objemu produktů +SumOfProductWeights=Součet hmotnosti produktů # warehouse details -DetailWarehouseNumber= Warehouse details -DetailWarehouseFormat= W:%s (Qty : %d) +DetailWarehouseNumber= Detaily skladu +DetailWarehouseFormat= W:%s (Množství : %d) diff --git a/htdocs/langs/cs_CZ/stocks.lang b/htdocs/langs/cs_CZ/stocks.lang index d284ef346403896634828acf2d3123e3e6846009..b96fdc71ed5d4e11c6d5a27617718cb1e7df4d91 100644 --- a/htdocs/langs/cs_CZ/stocks.lang +++ b/htdocs/langs/cs_CZ/stocks.lang @@ -1,30 +1,30 @@ # Dolibarr language file - Source file is en_US - stocks -WarehouseCard=Skladová karta -Warehouse=Sklad -Warehouses=Sklady -NewWarehouse=Nový sklad / Skladové plochy -WarehouseEdit=Upravit sklad -MenuNewWarehouse=Nový sklad -WarehouseOpened=Warehouse otevřel -WarehouseClosed=Sklad uzavřen +WarehouseCard=Karta skladiště +Warehouse=Skladiště +Warehouses=Skladiště +NewWarehouse=Nový skladiště/skladová oblast +WarehouseEdit=Upravit skladiště +MenuNewWarehouse=Nové skladiště +WarehouseOpened=Skladiště otevřeno +WarehouseClosed=Skladiště uzavřeno WarehouseSource=Zdrojový sklad -WarehouseSourceNotDefined=Ne sklad definován, +WarehouseSourceNotDefined=Není definován žádné skladiště AddOne=Přidat jeden WarehouseTarget=Cílový sklad ValidateSending=Smazat odeslání CancelSending=Zrušit zasílání DeleteSending=Smazat odeslání Stock=Sklad -Stocks=Zásoby -StocksByLotSerial=Stock by lot/serial +Stocks=Sklady +StocksByLotSerial=Sklad množství/série Movement=Pohyb Movements=Pohyby -ErrorWarehouseRefRequired=Sklad referenční jméno je povinné -ErrorWarehouseLabelRequired=Sklad štítek je nutné +ErrorWarehouseRefRequired=Referenční jméno skladiště je povinné +ErrorWarehouseLabelRequired=Štítek skladiště je požadovaný CorrectStock=Upravit skladové zásoby -ListOfWarehouses=Seznam skladů +ListOfWarehouses=Seznam skladišť ListOfStockMovements=Seznam skladových pohybů -StocksArea=Warehouses area +StocksArea=Oblast skladišť Location=Umístění LocationSummary=Krátký název umístění NumberOfDifferentProducts=Počet různých výrobků @@ -33,107 +33,107 @@ LastMovement=Poslední pohyb LastMovements=Poslední pohyby Units=Jednotky Unit=Jednotka -StockCorrection=Správné skladem -StockTransfer=Stock přenos +StockCorrection=Správný sklad +StockTransfer=Přenos zásob StockMovement=Přenést -StockMovements=Sklad převody -LabelMovement=Pohyb štítek +StockMovements=Skladové převody +LabelMovement=Štítek pohybu NumberOfUnit=Počet jednotek UnitPurchaseValue=Jednotková kupní cena TotalStock=Celkem skladem -StockTooLow=Stock příliš nízká -StockLowerThanLimit=Stock nižší než mez výstrahy +StockTooLow=Stav skladu je nízký +StockLowerThanLimit=Stav skladu je nižší než bod výstrahy EnhancedValue=Hodnota PMPValue=Vážená průměrná cena PMPValueShort=WAP -EnhancedValueOfWarehouses=Sklady hodnota -UserWarehouseAutoCreate=Vytvořte sklad automaticky při vytváření uživatele -IndependantSubProductStock=Product stock and subproduct stock are independant +EnhancedValueOfWarehouses=Hodnota skladišť +UserWarehouseAutoCreate=Vytvořte skladiště automaticky při vytváření uživatele +IndependantSubProductStock=Sklady produktů a subproduktů jsou nezávislé QtyDispatched=Množství odesláno -QtyDispatchedShort=Qty dispatched -QtyToDispatchShort=Qty to dispatch -OrderDispatch=Stock dispečink +QtyDispatchedShort=Odeslané množství +QtyToDispatchShort=Odesílané množství +OrderDispatch=Skladový dispečink RuleForStockManagementDecrease=Pravidlo pro snížení řízení zásob RuleForStockManagementIncrease=Pravidlo pro zvýšení řízení zásob -DeStockOnBill=Pokles reálné zásoby na zákazníky faktur / dobropisů validace -DeStockOnValidateOrder=Pokles reálné zásoby na zákazníky objednávky validaci +DeStockOnBill=Pokles reálných zásob na zákaznických fakturách/dobropisech validace +DeStockOnValidateOrder=Pokles reálné zásoby na objednávky zákazníků validace DeStockOnShipment=Pokles reálné zásoby na odeslání potvrzení -ReStockOnBill=Zvýšení reálné zásoby na dodavatele faktur / dobropisů validace -ReStockOnValidateOrder=Zvýšení reálné zásoby na dodavatele objednávek kolaudaci -ReStockOnDispatchOrder=Zvýšení reálné zásoby na ruční dispečinku do skladů, poté, co se s dodavately účelem obdržení -ReStockOnDeleteInvoice=Zvýšení reálné zásoby na faktuře smazání -OrderStatusNotReadyToDispatch=Řád má ještě není, nebo více postavení, které umožňuje zasílání výrobků na skladě skladech. -StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock -NoPredefinedProductToDispatch=Žádné předdefinované produkty pro tento objekt. Takže žádné dispečink skladem je nutná. +ReStockOnBill=Zvýšení reálné zásoby na dodavatele faktur/dobropisů validace +ReStockOnValidateOrder=Zvýšení reálné zásoby na dodavatele objednávek schválení +ReStockOnDispatchOrder=Zvýšení reálné zásoby na ruční dispečinku do skladů poté, co dodavatel objedná zasílání +ReStockOnDeleteInvoice=Zvýšení reálné zásoby na smazané faktuře +OrderStatusNotReadyToDispatch=Objednávka ještě není, nebo nastavení statusu, který umožňuje zasílání výrobků na skladě. +StockDiffPhysicTeoric=Vysvětlení rozdílu mezi fyzickým a teoretickým skladem +NoPredefinedProductToDispatch=Žádné předdefinované produkty pro tento objekt. Takže není třeba odesílání na skladě. DispatchVerb=Odeslání -StockLimitShort=Limit for alert -StockLimit=Stock limit for alert -PhysicalStock=Fyzický kapitál -RealStock=Skutečné Stock +StockLimitShort=Limit pro upozornění +StockLimit=Skladový limit pro upozornění +PhysicalStock=Fyzický sklad +RealStock=Skutečný sklad VirtualStock=Virtuální sklad -MininumStock=Minimální skladem -StockUp=Trčet -MininumStockShort=Stock min -StockUpShort=Trčet -IdWarehouse=Id sklad -DescWareHouse=Popis sklad -LieuWareHouse=Lokalizace sklad -WarehousesAndProducts=Sklady a produkty -WarehousesAndProductsBatchDetail=Warehouses and products (with detail per lot/serial) +MininumStock=Minimální zásoba +StockUp=Navýšení skladu +MininumStockShort=Sklad min +StockUpShort=Navýšení skladu +IdWarehouse=ID skladu +DescWareHouse=Popis skladiště +LieuWareHouse=Lokalizace skladiště +WarehousesAndProducts=Skladiště a produkty +WarehousesAndProductsBatchDetail=Skladiště a výrobky (s detaily na množství/série) AverageUnitPricePMPShort=Vážený průměr cen vstupů AverageUnitPricePMP=Vážený průměr cen vstupů SellPriceMin=Prodejní jednotka Cena EstimatedStockValueSellShort=Hodnota k prodeji -EstimatedStockValueSell=Hodnota prodávat +EstimatedStockValueSell=Hodnota k prodeji EstimatedStockValueShort=Vstupní hodnota zásob EstimatedStockValue=Vstupní hodnota zásob -DeleteAWarehouse=Odstranění skladu -ConfirmDeleteWarehouse=Jste si jisti, že chcete smazat skladu <b>%s?</b> -PersonalStock=Osobní Stock %s +DeleteAWarehouse=Odstranění skladiště +ConfirmDeleteWarehouse=Jste si jisti, že chcete smazat skladiště <b>%s?</b> +PersonalStock=Osobní sklad %s ThisWarehouseIsPersonalStock=Tento sklad představuje osobní zásobu %s %s -SelectWarehouseForStockDecrease=Zvolte sklad použít pro snížení skladem -SelectWarehouseForStockIncrease=Zvolte sklad použít pro zvýšení stavu zásob -NoStockAction=Žádné akce skladem -LastWaitingSupplierOrders=Objednávky čekání na recepcích +SelectWarehouseForStockDecrease=Zvolte skladiště pro použití snížení zásob +SelectWarehouseForStockIncrease=Zvolte skladiště pro zvýšení stavu zásob +NoStockAction=Žádné akce ve skladu +LastWaitingSupplierOrders=Čekající objednávky na přijetí DesiredStock=Požadovaná skladem StockToBuy=Chcete-li objednat Replenishment=Naplnění ReplenishmentOrders=Doplňování objednávky -VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differs -UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock, for replenishment feature -UseVirtualStock=Use virtual stock -UsePhysicalStock=Use physical stock -CurentSelectionMode=Curent selection mode -CurentlyUsingVirtualStock=Virtual stock -CurentlyUsingPhysicalStock=Physical stock +VirtualDiffersFromPhysical=Podle zvýšení/snížení skladové možnosti se fyzické a virtuální zásoby (fyzické aktuální objednávky) mohou lišit. +UseVirtualStockByDefault=Použijte virtuální sklad ve výchozím nastavení, namísto fyzického skladu pro funkci doplňování +UseVirtualStock=Použít virtuální zásoby +UsePhysicalStock=Použít fyzický sklad +CurentSelectionMode=Režim aktuálního výběru +CurentlyUsingVirtualStock=Virtuální zásoby +CurentlyUsingPhysicalStock=Fyzické zásoby RuleForStockReplenishment=Pravidlo pro doplňování zásob -SelectProductWithNotNullQty=Vyberte alespoň jeden produkt s Množství NOT NULL a dodavatelem -AlertOnly= Upozornění pouze -WarehouseForStockDecrease=Skladová <b>%s</b> budou použity pro snížení skladem -WarehouseForStockIncrease=Skladová <b>%s</b> budou použity pro zvýšení stavu zásob -ForThisWarehouse=Z tohoto skladu -ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. +SelectProductWithNotNullQty=Vyberte alespoň jeden produkt s množství větším než 0 a dodavatelem +AlertOnly= Pouze upozornění +WarehouseForStockDecrease=Skladiště <b>%s</b> budou použity pro snížení skladu +WarehouseForStockIncrease=Skladiště <b>%s</b> budou použity pro zvýšení stavu zásob +ForThisWarehouse=Z tohoto skladiště +ReplenishmentStatusDesc=Toto je seznam všech produktů s nižší než požadovanou zásobou skladem (nebo nižší než hodnota výstrahy, pokud pole "pouze upozornění" je zaškrtnuto), a doporučuji vám vytvořit dodavatelské objednávky pro doplnění rozdílu. +ReplenishmentOrdersDesc=Toto je seznam všech otevřených dodavatelských objednávek, včetně předem stanovených výrobků. Jen otevřené objednávky s předdefinovanými produkty, které mohou mít vliv na zásoby jsou zde viditelné. Replenishments=Splátky -NbOfProductBeforePeriod=Množství produktů %s na skladě, než zvolené období (<%s) -NbOfProductAfterPeriod=Množství produktů %s na skladě po zvolené období (> %s) -MassMovement=Mass movement -MassStockMovement=Mass pohyb zásob -SelectProductInAndOutWareHouse=Vyberte produkt, množství, zdrojový sklad a cílový sklad, pak klikněte na "%s". Jakmile se tak stane pro všechny požadované pohyby, klikněte na "%s". -RecordMovement=Záznam transfert -ReceivingForSameOrder=Receipts for this order -StockMovementRecorded=Stock movements recorded -RuleForStockAvailability=Rules on stock requirements -StockMustBeEnoughForInvoice=Stock level must be enough to add product/service into invoice -StockMustBeEnoughForOrder=Stock level must be enough to add product/service into order -StockMustBeEnoughForShipment= Stock level must be enough to add product/service into shipment -MovementLabel=Label of movement -InventoryCode=Movement or inventory code -IsInPackage=Contained into package -ShowWarehouse=Show warehouse -MovementCorrectStock=Stock content correction for product %s -MovementTransferStock=Stock transfer of product %s into another warehouse -WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when "product lot" module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. -InventoryCodeShort=Inv./Mov. code -NoPendingReceptionOnSupplierOrder=No pending reception due to opened supplier order -ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (<strong>%s</strong>) already exists but with different eatby or sellby date (found <strong>%s</strong> but you enter <strong>%s</strong>). +NbOfProductBeforePeriod=Množství produktů %s na skladě, než zvolené období (< %s) +NbOfProductAfterPeriod=Množství produktů %s na skladě po zvolené období (> %s) +MassMovement=Hromadný pohyb +MassStockMovement=Hromadný pohyb zásob +SelectProductInAndOutWareHouse=Vyberte produkt, množství, zdrojový sklad a cílový sklad, pak klikněte na "%s". Jakmile se tak stane pro všechny požadované pohyby, klikněte na "%s". +RecordMovement=Záznam převodu +ReceivingForSameOrder=Příjmy pro tuto objednávku +StockMovementRecorded=Zaznamenány pohyby zásob +RuleForStockAvailability=Pravidla o požadavcích na skladě +StockMustBeEnoughForInvoice=Úroveň zásob musí být dostatečná pro přidání výrobku/služby do faktury +StockMustBeEnoughForOrder=Úroveň zásob musí být dostatečná pro přidání výrobku/služby do objednávky +StockMustBeEnoughForShipment= Úroveň zásob musí být dostatečná pro přidání výrobku/služby do zásilky +MovementLabel=Štítek pohybu +InventoryCode=Kód pohybu nebo zásob +IsInPackage=Obsažené v zásilce +ShowWarehouse=Ukázat skladiště +MovementCorrectStock=Sklad obsahuje korekci pro produkt %s +MovementTransferStock=Přenos skladových produktů %s do jiného skladiště +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Zdrojové skladiště zde musí být definováno při "množství produktu" v modulu. To bude použito na seznam který obsahuje množství/sérii a je k dispozici pro výrobek, který požaduje data množství/sérii pro pohyb. Chcete-li poslat výrobky z různých skladišť, sestavujete zásilku do několika kroků. +InventoryCodeShort=Inventární/pohybový kód +NoPendingReceptionOnSupplierOrder=Nečeká na příjem kvůli otevřené dodavatelské objednávce +ThisSerialAlreadyExistWithDifferentDate=Toto množství/sériové číslo (<strong>%s</strong>) už ale s odlišnou spotřebou nebo datem prodeje existuje (found <strong>%s</strong> ale zadáte <strong>%s</strong>). diff --git a/htdocs/langs/cs_CZ/suppliers.lang b/htdocs/langs/cs_CZ/suppliers.lang index 7515875ecc33c336fb652357c08c738992a4a6d4..a5d82beee48d165383fc6d56439e0c453d9bb115 100644 --- a/htdocs/langs/cs_CZ/suppliers.lang +++ b/htdocs/langs/cs_CZ/suppliers.lang @@ -1,46 +1,46 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Dodavatelé -AddSupplier=Create a supplier -SupplierRemoved=Dodavatel odstraní -SuppliersInvoice=Dodavatelé faktura +AddSupplier=Vytvořit dodavatele +SupplierRemoved=Odstranit dodavatele +SuppliersInvoice=Faktura dodavatele NewSupplier=Nový dodavatel History=Historie ListOfSuppliers=Seznam dodavatelů ShowSupplier=Zobrazit dodavatele -OrderDate=Objednat Datum -BuyingPrice=Nákup cenu -BuyingPriceMin=Minimální kupní cena -BuyingPriceMinShort=Minimální kupní cena -TotalBuyingPriceMin=Total of subproducts buying prices -SomeSubProductHaveNoPrices=Some sub-products have no price defined -AddSupplierPrice=Přidat cena dodavatele zboží -ChangeSupplierPrice=Změna dodavatele cenu -ErrorQtyTooLowForThisSupplier=Nedostatečné množství tohoto podniku, nebo není definována cena k tomuto produktu tohoto podniku -ErrorSupplierCountryIsNotDefined=Země tohoto podniku není definován. Napravit jako první. -ProductHasAlreadyReferenceInThisSupplier=Tento produkt je již odkaz na tohoto dodavatele -ReferenceSupplierIsAlreadyAssociatedWithAProduct=Tento odkaz Dodavatel je již spojena s odkazem: %s -NoRecordedSuppliers=Žádné zaznamenané dodavatelé -SupplierPayment=Dodavatel platba -SuppliersArea=Dodavatelé oblast +OrderDate=Datum objednávky +BuyingPrice=Nákupní cena +BuyingPriceMin=Minimální nákupní cena +BuyingPriceMinShort=Min. nákupní cena +TotalBuyingPriceMin=Nákupní ceny vedlejších produktů celkem +SomeSubProductHaveNoPrices=Některé vedlejší produkty nemají stanovené žádné ceny +AddSupplierPrice=Přidat dodavatelskou cenu +ChangeSupplierPrice=Změnit dodavatelskou cenu +ErrorQtyTooLowForThisSupplier=Nedostatečné množství pro tohoto dodavatele, nebo není definována cena k tomuto produktu pro tohoto dodavatele +ErrorSupplierCountryIsNotDefined=Země tohoto dodavatele není definována. Napravte jako první. +ProductHasAlreadyReferenceInThisSupplier=Tento výrobek má již odkaz na tohoto dodavatele +ReferenceSupplierIsAlreadyAssociatedWithAProduct=Tato referenční dodavatel je již spojeno s odkazem: %s +NoRecordedSuppliers=Žádní zaznamenaní dodavatelé +SupplierPayment=Platba dodavatele +SuppliersArea=Oblast dodavatelů RefSupplierShort=Ref. dodavatel Availability=Dostupnost -ExportDataset_fournisseur_1=Dodavatelských faktur Seznam faktur a vedení +ExportDataset_fournisseur_1=Výpis dodavatelských faktur a seznam řádků ExportDataset_fournisseur_2=Dodavatel faktury a platby -ExportDataset_fournisseur_3=Dodavatel objednávky a objednávka linky +ExportDataset_fournisseur_3=Dodavatel objednávky a řádky objednávek ApproveThisOrder=Schválit tuto objednávku -ConfirmApproveThisOrder=Jste si jisti, že chcete schválit pořadí <b>%s?</b> -DenyingThisOrder=Deny this order -ConfirmDenyingThisOrder=Jste si jisti, že chcete popírat objednávky <b>%s?</b> -ConfirmCancelThisOrder=Jste si jisti, že chcete zrušit tuto objednávku <b>%s?</b> +ConfirmApproveThisOrder=Jste si jisti, že chcete schválit tuto objednávku <b>%s?</b> +DenyingThisOrder=Zakázat tuto objednávku +ConfirmDenyingThisOrder=Jste si jisti, že chcete zakázat tuto objednávku <b>%s</b> ? +ConfirmCancelThisOrder=Jste si jisti, že chcete zrušit tuto objednávku <b>%s</b> ? AddCustomerOrder=Vytvoření objednávky zákazníka -AddCustomerInvoice=Můžete si zákazník fakturu -AddSupplierOrder=Můžete se s dodavately objednávku -AddSupplierInvoice=Vytvořte dodavatelské faktury -ListOfSupplierProductForSupplier=Seznam výrobků a cen dodavatelských <b>%s</b> -NoneOrBatchFileNeverRan=Žádný nebo dávkový <b>%s</b> ne běžel nedávno +AddCustomerInvoice=Vytvoření faktury zákazníka +AddSupplierOrder=Vytvoření objednávky dodavatele +AddSupplierInvoice=Vytvoření dodavatelské faktury +ListOfSupplierProductForSupplier=Seznam výrobků a cen pro dodavatele <b>%s</b> +NoneOrBatchFileNeverRan=Žádný nebo dávkový <b>%s</b> neběžel v poslední době SentToSuppliers=Odeslané dodavatelům -ListOfSupplierOrders=List of supplier orders -MenuOrdersSupplierToBill=Supplier orders to invoice -NbDaysToDelivery=Delivery delay in days -DescNbDaysToDelivery=The biggest delay is display among order product list -UseDoubleApproval=Use double approval (the second approval can be done by any user with the dedicated permission) +ListOfSupplierOrders=Seznam dodavatelských objednávek +MenuOrdersSupplierToBill=Fakturované zakázky dodavatele +NbDaysToDelivery=Zpoždění dodávky ve dnech +DescNbDaysToDelivery=Největší zpoždění je zobrazeno mimo seznam pořadí produktů +UseDoubleApproval=Použít dvojí schválení (druhé schválení může být provedeno uživateli se specifickým svolením) diff --git a/htdocs/langs/cs_CZ/trips.lang b/htdocs/langs/cs_CZ/trips.lang index 72a8632728185b9ed4981f5ce9d816db7c8b2599..2a6e6a5be57146a905e5cf9ef14748db4def7f0c 100644 --- a/htdocs/langs/cs_CZ/trips.lang +++ b/htdocs/langs/cs_CZ/trips.lang @@ -1,102 +1,102 @@ # Dolibarr language file - Source file is en_US - trips -ExpenseReport=Expense report -ExpenseReports=Expense reports -Trip=Expense report -Trips=Expense reports -TripsAndExpenses=Expenses reports -TripsAndExpensesStatistics=Expense reports statistics -TripCard=Expense report card -AddTrip=Create expense report -ListOfTrips=List of expense report +ExpenseReport=Zpráva výdaje +ExpenseReports=Zpráva výdajů +Trip=Zpráva výdaje +Trips=Zprávy výdaje +TripsAndExpenses=Zprávy výdajů +TripsAndExpensesStatistics=Statistiky výdaje +TripCard=Karta zpráv výdajů +AddTrip=Vytvoření zprávy o výdajích +ListOfTrips=Seznam zpráv výdajů ListOfFees=Sazebník poplatků -NewTrip=New expense report -CompanyVisited=Firma / nadace navštívil +NewTrip=Nová zpráva výdaje +CompanyVisited=Firma/nadace navštívena Kilometers=Kilometry FeesKilometersOrAmout=Množství nebo kilometrů -DeleteTrip=Delete expense report -ConfirmDeleteTrip=Are you sure you want to delete this expense report ? -ListTripsAndExpenses=List of expense reports -ListToApprove=Waiting for approval -ExpensesArea=Expense reports area -SearchATripAndExpense=Search an expense report -ClassifyRefunded=Classify 'Refunded' -ExpenseReportWaitingForApproval=A new expense report has been submitted for approval -ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s -TripId=Id expense report -AnyOtherInThisListCanValidate=Person to inform for validation. -TripSociete=Information company -TripSalarie=Informations user -TripNDF=Informations expense report -DeleteLine=Delete a ligne of the expense report -ConfirmDeleteLine=Are you sure you want to delete this line ? -PDFStandardExpenseReports=Standard template to generate a PDF document for expense report -ExpenseReportLine=Expense report line +DeleteTrip=Smazat zprávy o výdajích +ConfirmDeleteTrip=Jste si jisti, že chcete smazat tuto zprávu o výdajích? +ListTripsAndExpenses=Seznam vyúčtování výdajů +ListToApprove=Čekání na schválení +ExpensesArea=Oblast vyúčtování výdajů +SearchATripAndExpense=Hledat zprávu o výdajích +ClassifyRefunded=Označit jako 'Vráceno' +ExpenseReportWaitingForApproval=Nová zpráva výdajů byla předložena ke schválení +ExpenseReportWaitingForApprovalMessage=Nová zpráva výdajů byla předložena, a čeká na schválení.\n- Uživatel: %s\n- Období: %s\nKlikněte zde pro schválení: %s +TripId=ID zprávy výdajů +AnyOtherInThisListCanValidate=Informovat osobu o schválení. +TripSociete=Informace o firmě +TripSalarie=Informace o uživateli +TripNDF=Informace o správě nákladů +DeleteLine=Vymazat Ligne výdajovou zprávu +ConfirmDeleteLine=Jste si jisti, že chcete smazat tento řádek? +PDFStandardExpenseReports=Standardní šablona pro vytvoření PDF dokumentu pro zprávy o výdajích +ExpenseReportLine=Výdajová zpráva řádek TF_OTHER=Ostatní -TF_TRANSPORTATION=Transportation +TF_TRANSPORTATION=Doprava TF_LUNCH=Oběd TF_METRO=Metro -TF_TRAIN=Train -TF_BUS=Bus -TF_CAR=Car -TF_PEAGE=Toll -TF_ESSENCE=Fuel +TF_TRAIN=Vlak +TF_BUS=Autobus +TF_CAR=Auto +TF_PEAGE=Mýto +TF_ESSENCE=Palivo TF_HOTEL=Hostel TF_TAXI=Taxi -ErrorDoubleDeclaration=You have declared another expense report into a similar date range. -ListTripsAndExpenses=List of expense reports -AucuneNDF=No expense reports found for this criteria -AucuneLigne=There is no expense report declared yet -AddLine=Add a line -AddLineMini=Add +ErrorDoubleDeclaration=Deklaroval jste další hlášení výdajů do podobného časového období. +ListTripsAndExpenses=Seznam vyúčtování výdajů +AucuneNDF=Žádné zprávy o výdajích nalezených podle tohoto kritéria +AucuneLigne=Neexistuje žádná zpráva o právě deklarovaném výdaji +AddLine=Přidat řádek +AddLineMini=Přidat -Date_DEBUT=Period date start -Date_FIN=Period date end -ModePaiement=Payment mode -Note=Note -Project=Project +Date_DEBUT=Datum zahájení období +Date_FIN=Datum ukončení období +ModePaiement=Režim platby +Note=poznámka +Project=Projekt -VALIDATOR=User to inform for approbation -VALIDOR=Approved by -AUTHOR=Recorded by -AUTHORPAIEMENT=Paied by -REFUSEUR=Denied by -CANCEL_USER=Canceled by +VALIDATOR=Uživatel informoval o kolaudaci +VALIDOR=Schváleno +AUTHOR=Zaznamenáno +AUTHORPAIEMENT=Placeno +REFUSEUR=Zamítnuto +CANCEL_USER=Zrušeno -MOTIF_REFUS=Reason -MOTIF_CANCEL=Reason +MOTIF_REFUS=Důvod +MOTIF_CANCEL=Důvod -DATE_REFUS=Deny date -DATE_SAVE=Validation date -DATE_VALIDE=Validation date -DATE_CANCEL=Cancelation date -DATE_PAIEMENT=Payment date +DATE_REFUS=Datum zamítnutí +DATE_SAVE=Datum schválení +DATE_VALIDE=Datum schválení +DATE_CANCEL=Datum přerušení +DATE_PAIEMENT=Datum platby -TO_PAID=Pay -BROUILLONNER=Reopen -SendToValid=Sent to approve -ModifyInfoGen=Edit -ValidateAndSubmit=Validate and submit for approval +TO_PAID=Platba +BROUILLONNER=Znovu otevřeno +SendToValid=Odesláno ke schválení +ModifyInfoGen=Úprava +ValidateAndSubmit=Kontrola a odeslání schválení -NOT_VALIDATOR=You are not allowed to approve this expense report -NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. +NOT_VALIDATOR=Nemáte dovoleno schvalovat tuto zprávu o výdajích +NOT_AUTHOR=Nejste autorem této zprávy výdajů. Operace zrušena. -RefuseTrip=Deny an expense report -ConfirmRefuseTrip=Are you sure you want to deny this expense report ? +RefuseTrip=Zamítnout zprávu o výdajích +ConfirmRefuseTrip=Jste si jisti, že chcete zamítnout tuto zprávu o výdajích? -ValideTrip=Approve expense report -ConfirmValideTrip=Are you sure you want to approve this expense report ? +ValideTrip=Schválit zprávu o výdajích +ConfirmValideTrip=Jste si jisti, že chcete schválit tuto zprávu o výdajích? -PaidTrip=Pay an expense report -ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? +PaidTrip=Platit zprávu o výdajích +ConfirmPaidTrip=Jste si jisti, že chcete změnit stav této zprávy výdajů na "Placeno"? -CancelTrip=Cancel an expense report -ConfirmCancelTrip=Are you sure you want to cancel this expense report ? +CancelTrip=Zrušit zprávu o výdajích +ConfirmCancelTrip=Jste si jisti, že chcete zrušit tuto zprávu o výdajích? -BrouillonnerTrip=Move back expense report to status "Draft"n -ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? +BrouillonnerTrip=Přesun zpět zprávu o výdajích do stavu "Koncept" n +ConfirmBrouillonnerTrip=Jste si jisti, že chcete přesunout tuto zprávu o výdajích na status "Koncept"? -SaveTrip=Validate expense report -ConfirmSaveTrip=Are you sure you want to validate this expense report ? +SaveTrip=Ověřit zprávu o výdajích +ConfirmSaveTrip=Jste si jisti, že chcete ověřit tuto zprávu o výdajích? -NoTripsToExportCSV=No expense report to export for this period. +NoTripsToExportCSV=Žádná zpráva o výdajích na export pro toto období. diff --git a/htdocs/langs/cs_CZ/users.lang b/htdocs/langs/cs_CZ/users.lang index 2083fc76f2fdbce371b66697586b658269bf0cfa..bde2e649dca26db3c7c5ba8979d0992b329c713b 100644 --- a/htdocs/langs/cs_CZ/users.lang +++ b/htdocs/langs/cs_CZ/users.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - users -HRMArea=HRM area +HRMArea=HRM oblast UserCard=Karta uživatele ContactCard=Karta kontaktu GroupCard=Karta skupiny @@ -86,7 +86,7 @@ MyInformations=Moje údaje ExportDataset_user_1=Uživatelé Dolibarr a jejich vlastnosti DomainUser=Doménový uživatel %s Reactivate=Reaktivace -CreateInternalUserDesc=This form allows you to create an user internal to your company/foundation. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. +CreateInternalUserDesc=Tento formulář vám umožní vytvořit interního uživateli Vaší společnosti/nadace. Pro vytvoření externího uživatele (zákazník, dodavatel, ...), použijte tlačítko 'Vytvořit uživatele' z karty kontaktu třetí strany. InternalExternalDesc=<b>Interní</b> uživatel je uživatel, který je součástí vaší firmy / nadace. <br> <b>Externí</b> uživatel je zákazník, dodavatel nebo jiný. <br><br> V obou případech se oprávněními definují práva na Dolibarr. Externí uživatel navíc může mít jinou nabídku menu než-li interní (viz Domů - Nastavení - Zobrazení) PermissionInheritedFromAGroup=Povolení uděleno, neboť je zděděno z některé uživatelské skupiny. Inherited=Zděděný @@ -102,7 +102,7 @@ UserDisabled=Uživatel %s zakázán UserEnabled=Uživatel %s aktivován UserDeleted=Uživatel %s odstraněn NewGroupCreated=Skupina %s vytvořena -GroupModified=Group %s modified +GroupModified=Skupina %s upravena GroupDeleted=Skupina %s odstraněna ConfirmCreateContact=Jste si jisti, že chcete vytvořit účet Dolibarr k tomuto kontaktu? ConfirmCreateLogin=Jste si jisti, že chcete vytvořit účet Dolibarr pro tohoto člena? @@ -113,10 +113,10 @@ YourRole=Vaše role YourQuotaOfUsersIsReached=Vaše kvóta aktivních uživatelů je dosažena! NbOfUsers=Počet uživatelů DontDowngradeSuperAdmin=Pouze superadmin může ponížit superadmina -HierarchicalResponsible=Supervisor +HierarchicalResponsible=Supervizor HierarchicView=Hierarchické zobrazení UseTypeFieldToChange=Použijte pole Typ pro změnu OpenIDURL=OpenID URL LoginUsingOpenID=Použijte OpenID pro přihlášení -WeeklyHours=Weekly hours -ColorUser=Color of the user +WeeklyHours=Týdenní hodiny +ColorUser=Barva uživatele diff --git a/htdocs/langs/cs_CZ/withdrawals.lang b/htdocs/langs/cs_CZ/withdrawals.lang index 0af0c654f6452dac8bcfadd51f11417d9390dd0b..86dbd7bcc575b89b85ea239492a25642f9b47072 100644 --- a/htdocs/langs/cs_CZ/withdrawals.lang +++ b/htdocs/langs/cs_CZ/withdrawals.lang @@ -1,97 +1,97 @@ # Dolibarr language file - Source file is en_US - withdrawals -StandingOrdersArea=Trvalé příkazy plochu -CustomersStandingOrdersArea=Zákazníci trvalých příkazů plochu +StandingOrdersArea=Plocha trvalých příkazů +CustomersStandingOrdersArea=Plocha trvalých příkazů zákazníků StandingOrders=Trvalé příkazy StandingOrder=Trvalé příkazy -NewStandingOrder=Nový trvalého příkazu -StandingOrderToProcess=Chcete-li zpracovat +NewStandingOrder=Nový trvalý příkaz +StandingOrderToProcess=Ve zpracování StandingOrderProcessed=Zpracované Withdrawals=Výběry -Withdrawal=Odnětí -WithdrawalsReceipts=Abstinenční příjmy -WithdrawalReceipt=Odstoupení příjem +Withdrawal=Výběr +WithdrawalsReceipts=Výběrové příjmy +WithdrawalReceipt=Výběrový příjem WithdrawalReceiptShort=Příjem -LastWithdrawalReceipts=Poslední příjmy %s stažení -WithdrawedBills=Stažené z faktury -WithdrawalsLines=Abstinenční linky -RequestStandingOrderToTreat=Request for standing orders to process -RequestStandingOrderTreated=Request for standing orders processed -NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. -CustomersStandingOrders=Objednávky zákazníků stojící -CustomerStandingOrder=Zákazník trvalý příkaz -NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request -NbOfInvoiceToWithdrawWithInfo=Nb. of invoice with withdraw request for customers having defined bank account information -InvoiceWaitingWithdraw=Faktura čeká odstoupit -AmountToWithdraw=Částka, která má zrušit -WithdrawsRefused=Odstoupí odmítl -NoInvoiceToWithdraw=Žádný zákazník fakturu na platbu režimu "stáhnout" čeká. Přejděte na "odstoupit" kartu na faktuře karty podat žádost. +LastWithdrawalReceipts=Poslední %s výběrové příjmy +WithdrawedBills=Vybráno z faktury +WithdrawalsLines=Řádky výběrů +RequestStandingOrderToTreat=Žádost o trvalé příkazy pro zpracování +RequestStandingOrderTreated=Žádost o zpracované trvalé příkazy +NotPossibleForThisStatusOfWithdrawReceiptORLine=Není to možné. Výběrový status musí být nastaven na 'připsání' před prohlášením odmítnutí na konkrétních řádcích. +CustomersStandingOrders=Trvalé příkazy zákazníka +CustomerStandingOrder=Trvalý příkaz zákazníka +NbOfInvoiceToWithdraw=Faktury s požadavkem výběru +NbOfInvoiceToWithdrawWithInfo=Faktury s požadavkem výběru pro zákazníky, kterř mají nastavené informace o bankovním účtu +InvoiceWaitingWithdraw=Faktura čekající na výběr +AmountToWithdraw=Částka výběru +WithdrawsRefused=Odmítnutí výběru +NoInvoiceToWithdraw=Žádné zákaznické faktury v režimu platby "výběr"nečekají. Přejděte na "výběrovou" tabulku na kartě faktury a vytvořte požadavek ResponsibleUser=Odpovědný uživatel -WithdrawalsSetup=Odstoupení nastavení -WithdrawStatistics=Natáhněte si statistiky -WithdrawRejectStatistics=Natáhněte odmítnout Statistika -LastWithdrawalReceipt=Poslední %s odstoupení příjmy -MakeWithdrawRequest=Zkontrolujte stáhnout žádost -ThirdPartyBankCode=Třetí stranou kód banky -ThirdPartyDeskCode=Třetí stranou stůl kód -NoInvoiceCouldBeWithdrawed=Ne faktura withdrawed s úspěchem. Zkontrolujte, že faktury jsou na firmy s platným BAN. -ClassCredited=Klasifikovat připsána -ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? -TransData=Transmission date -TransMetod=Transmission method +WithdrawalsSetup=Nastavení výběrů +WithdrawStatistics=Statistiky výběrů +WithdrawRejectStatistics=Statistiky odmítnutých výběrů +LastWithdrawalReceipt=Poslední %s výběrové příjmy +MakeWithdrawRequest=Vytvořit požadavek výběru +ThirdPartyBankCode=Bankovní kód třetí strany +ThirdPartyDeskCode=Karta kódů třetí strany +NoInvoiceCouldBeWithdrawed=Neúspěšný výběr z faktur. Zkontrolujte, že faktury jsou na firmy s platným BAN. +ClassCredited=Označit přidání kreditu +ClassCreditedConfirm=Jste si jisti, že chcete zařadit tento výběr příjmu jako připsaný na váš bankovní účet? +TransData=Datum přenosu +TransMetod=Způsob přenosu Send=Odeslat Lines=Řádky -StandingOrderReject=Issue a rejection -WithdrawalRefused=Withdrawal refused -WithdrawalRefusedConfirm=Jste si jisti, že chcete zadat stažení odmítnutí pro společnost +StandingOrderReject=Vydat odmítnutí +WithdrawalRefused=Výběr odmítnut +WithdrawalRefusedConfirm=Jste si jisti, že chcete zadat odmítnutí výběru pro společnost RefusedData=Datum odmítnutí RefusedReason=Důvod odmítnutí RefusedInvoicing=Fakturace odmítnutí -NoInvoiceRefused=Nenabíjejte odmítnutí -InvoiceRefused=Invoice refused (Charge the rejection to customer) -Status=Postavení +NoInvoiceRefused=Neúčtovat odmítnutí +InvoiceRefused=Faktura odmítnuta (Účtujte odmítnutí k zákazníkovi) +Status=Status StatusUnknown=Neznámý StatusWaiting=Čekání -StatusTrans=Sent +StatusTrans=odesláno StatusCredited=Připsání -StatusRefused=Odmítl +StatusRefused=Odmítnutí StatusMotif0=Nespecifikovaný -StatusMotif1=Insufficient funds -StatusMotif2=Request contested +StatusMotif1=Nedostatek finančních prostředků +StatusMotif2=Žádost o napadení StatusMotif3=Bez příkazu k výběru -StatusMotif4=Objednávky zákazníka -StatusMotif5=RIB unusable +StatusMotif4=Objednávka zákazníka +StatusMotif5=RIB nepoužitelný StatusMotif6=Účet bez rovnováhy StatusMotif7=Soudní rozhodnutí StatusMotif8=Jiný důvod -CreateAll=Odeberte všechny +CreateAll=Vybrat vše CreateGuichet=Pouze kancelář CreateBanque=Pouze banky OrderWaiting=Čekání na léčbu -NotifyTransmision=Odstoupení Převodovka -NotifyEmision=Odstoupení emisí -NotifyCredit=Odstoupení Credit -NumeroNationalEmetter=Národní Vysílač číslo -PleaseSelectCustomerBankBANToWithdraw=Vyberte informace o účtu zákazníka banky odstoupit +NotifyTransmision=Převod výběru +NotifyEmision=Výběr emise +NotifyCredit=Výběr kreditu +NumeroNationalEmetter=Národní převodní číslo +PleaseSelectCustomerBankBANToWithdraw=Vyberte informace o účtu zákazníka banky pro výběr WithBankUsingRIB=U bankovních účtů pomocí RIB -WithBankUsingBANBIC=U bankovních účtů pomocí IBAN / BIC / SWIFT -BankToReceiveWithdraw=Bankovní účet pro příjem odstoupí +WithBankUsingBANBIC=U bankovních účtů pomocí IBAN/BIC/SWIFT +BankToReceiveWithdraw=Bankovní účet pro příjem výběru CreditDate=Kredit na -WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) -ShowWithdraw=Zobrazit Natáhněte -IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as paid to allow prior withdrawal management. -DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. -WithdrawalFile=Odstoupení soubor -SetToStatusSent=Nastavte na stav "odeslaný soubor" -ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid" -StatisticsByLineStatus=Statistics by status of lines +WithdrawalFileNotCapable=Nelze generovat soubor výběru příjmu pro vaši zemi %s (Vaše země není podporována) +ShowWithdraw=Zobrazit výběr +IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Nicméně, pokud faktura má alespoň jednu dosud nezpracovanou platbu z výběru, nebude nastavena jako placená pro povolení řízení výběru. +DoStandingOrdersBeforePayments=Tato karta vám umožňuje požádat o trvalý příkaz. Jakmile to bude hotové,jděte do menu Bankovní údaje-> Výběry pro zřízení trvalého příkazu. Když je trvalý příkazu hotov, platba na faktuře bude automaticky zaznamenána a faktura uzavřena, pokud zbývající částka k placení je nula. +WithdrawalFile=Soubor výběru +SetToStatusSent=Nastavte na stav "Odeslaný soubor" +ThisWillAlsoAddPaymentOnInvoice=To se bude vztahovat i platby faktur a bude klasifikováno jako "Placeno" +StatisticsByLineStatus=Statistika podle stavu řádků ### Notifications -InfoCreditSubject=Platba %s trvalého příkazu bankou -InfoCreditMessage=Trvalý příkaz %s byla vyplacena bankou <br> Údaje o platbě: %s -InfoTransSubject=Přenos %s trvalého příkazu do banky -InfoTransMessage=The standing order %s has been sent to bank by %s %s.<br><br> -InfoTransData=Amount: %s<br>Method: %s<br>Date: %s -InfoFoot=Toto je automatická zpráva odeslaná Dolibarr +InfoCreditSubject=Platba trvalého příkazu %s bankou +InfoCreditMessage=Trvalý příkaz %s byl vyplacen bankou <br> Údaje o platbě: %s +InfoTransSubject=Přenos trvalého příkazu %s do banky +InfoTransMessage=Trvalý příkaz %s byl odeslán do banky prostřednictvím %s %s.<br><br> +InfoTransData=Částka: %s<br>Metoda: %s<br>Datum: %s +InfoFoot=Toto je automatická zpráva odeslaná Dolibarrem InfoRejectSubject=Trvalý příkaz odmítl -InfoRejectMessage=Dobrý den, <br><br> trvalý příkaz na faktuře %s týkajících se společnosti, %s, s množstvím %s byla odmítnuta bankou. <br><br> - <br> %s -ModeWarning=Volba pro reálný režim nebyl nastaven, můžeme zastavit po tomto simulaci +InfoRejectMessage=Dobrý den, <br><br> trvalý příkaz na faktuře %s týkající se společnosti, %s, s množstvím %s byl odmítnut bankou. <br><br> - <br> %s +ModeWarning=Volba pro reálný režim nebyl nastaven, můžeme zastavit tuto simulaci diff --git a/htdocs/langs/cs_CZ/workflow.lang b/htdocs/langs/cs_CZ/workflow.lang index 599d9c2ac17a8ea8b601581d6184ef98c5649e11..c91127aff4ff91fa3286ab4562fdc961fea9008b 100644 --- a/htdocs/langs/cs_CZ/workflow.lang +++ b/htdocs/langs/cs_CZ/workflow.lang @@ -1,11 +1,11 @@ # Dolibarr language file - Source file is en_US - admin -WorkflowSetup=Workflow modul nastavení -WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. -ThereIsNoWorkflowToModify=Není workflow můžete upravit pro modul bylo aktivováno. -descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Vytvoření objednávky zákazníka automaticky po komerční Návrh je podepsán -descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Vytvořte zákaznické faktury automaticky po komerční Návrh je podepsán -descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Vytvořte zákaznické faktury automaticky po uzavření smlouvy ověřena -descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Vytvořte zákaznické faktury automaticky po zákazníkovi, aby je uzavřen -descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Třídit propojené zdrojový návrh účtoval když je objednávka zákazníka nastaven na placenou -descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Třídit spojeny zdroj objednávka zákazníka (y) účtoval, když je zákazník faktury nastaven na placené -descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Třídit propojený zdroj objednávky zákazníka (y) účtoval když je ověřen zákazníky faktura +WorkflowSetup=Nastavení workflow modulu +WorkflowDesc=Tento modul je určen k úpravě chování automatických akcí, v aplikaci. Ve výchozím nastavení workflow je otevřen (uděláte něco, co chcete). Můžete aktivovat automatické akce, které jsou zajímavé. +ThereIsNoWorkflowToModify=Workflow zde není nastaven, můžete upravit modul pokud ho chcete aktivovat. +descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Vytvoření objednávky zákazníka automaticky po podepsání komerčního návrhu +descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Vytvoření zákaznické faktury automaticky po podepsání komerčního návrhu +descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Vytvoření zákaznické faktury automaticky po schválení kontraktu +descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Vytvoření zákaznické faktury automaticky po uzavření objednávky zákazníka +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Označit propojený zdrojový návrh jako zaúčtovaný, když je objednávka zákazníka nastavena jako placená +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Označit propojenou zdrojovou objednávku zákazníka(ů) jako zaúčtované, když jsou zákaznické faktury nastaveny jako placené +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Označit propojenou zdrojovou objednávku zákazníka(ů) jako zaúčtovanou, když je ověřená zákaznická faktura diff --git a/htdocs/langs/de_AT/main.lang b/htdocs/langs/de_AT/main.lang index 8d21e402e1a329ce4890670bc41315907e7850df..d90d69cf151d38e8f382d58accb73201b1cb5bec 100644 --- a/htdocs/langs/de_AT/main.lang +++ b/htdocs/langs/de_AT/main.lang @@ -48,7 +48,6 @@ DolibarrBoard=dolibarr Übersciht January=Jänner ReportName=Berichtname FillTownFromZip=Stadt aus PLZ ergänzen -AmountInCurrency=Betrag in %s NbOfCustomers=Anzahl der Kundena RebuildDoc=Dokument neu erzeugen RefCustomer=Kunden Nr. diff --git a/htdocs/langs/de_AT/other.lang b/htdocs/langs/de_AT/other.lang index 3504dd431ffbc57e0181a7ce071ef2f67fac6df7..5d348ab99b6e6ce142202534ddcb82defe173581 100644 --- a/htdocs/langs/de_AT/other.lang +++ b/htdocs/langs/de_AT/other.lang @@ -1,6 +1,7 @@ # Dolibarr language file - Source file is en_US - other ToolsDesc=Dieser Bereich ist zur Gruppe diverse Werkzeuge nicht verfügbar in andere Menüeinträge gewidmet. <br><br> Diese Tools können aus dem Menü auf der Seite zu erreichen. DateToBirth=Geburtstdatum +Notify_ORDER_SUPPLIER_VALIDATE=Lieferanten, um validierte Notify_WITHDRAW_TRANSMIT=Transmission Rückzug Notify_WITHDRAW_CREDIT=Kreditkarten Rückzug Notify_WITHDRAW_EMIT=Isue Rückzug @@ -10,7 +11,6 @@ Notify_PROPAL_SENTBYMAIL=Gewerbliche Vorschlag per Post Notify_BILL_PAYED=Kunden Rechnung bezahlt Notify_BILL_CANCEL=Kunden Rechnung storniert Notify_BILL_SENTBYMAIL=Kunden Rechnung per Post geschickt -Notify_ORDER_SUPPLIER_VALIDATE=Lieferanten, um validierte Notify_ORDER_SUPPLIER_SENTBYMAIL=Lieferant Bestellung per Post geschickt Notify_BILL_SUPPLIER_VALIDATE=Lieferantenrechnung validiert Notify_BILL_SUPPLIER_SENTBYMAIL=Lieferant Rechnung per Post geschickt diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index 728834fdd4ab8965e46bf10f4b403f77f03ba2c8..bc7fec76f5f555147b6b79a194df49c71aab92cb 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -30,7 +30,7 @@ HTMLCharset=Zeichensatz für die generierten HTML-Seiten DBStoringCharset=Zeichensatz der Datenbank-Speicherung DBSortingCharset=Zeichensatz der Datenbank-Sortierung WarningModuleNotActive=Modul <b>%s</b> muss aktiviert sein -WarningOnlyPermissionOfActivatedModules=Hier werden nur Berechtigungen im Zusammenhang mit aktivierten Module angezeigt. Weitere Module können Sie unter Einstellungen-Module aktivieren. +WarningOnlyPermissionOfActivatedModules=Achtung, hier werden nur Berechtigungen im Zusammenhang mit aktivierten Module angezeigt. Weitere Module können Sie unter Start->Einstellungen-Module aktivieren. DolibarrSetup=dolibarr Installation oder Upgrade DolibarrUser=Benutzer InternalUser=Interner Benutzer @@ -66,13 +66,13 @@ DelaiedFullListToSelectContact=Warten bis Taste gedrückt bevor der Inhalt der K SearchFilter=Suchfilter Optionen NumberOfKeyToSearch=Anzahl der Buchstaben um eine Suche auszulösen: %s ViewFullDateActions=Zeige alle Terminaktionen in der Partneransicht -NotAvailableWhenAjaxDisabled=Bei deaktiviertem Ajax nicht verfügbar +NotAvailableWhenAjaxDisabled=Nicht verfügbar, wenn Ajax deaktiviert JavascriptDisabled=JavaScript deaktiviert UsePopupCalendar=Popups für die Datumseingabe verwenden UsePreviewTabs=Vorschautabs verwenden -ShowPreview=Zeige Vorschau +ShowPreview=Vorschau anzeigen PreviewNotAvailable=Vorschau nicht verfügbar -ThemeCurrentlyActive=Derzeit aktivierte Oberfläche +ThemeCurrentlyActive=derzeit aktivierte grafische Oberfläche CurrentTimeZone=Aktuelle Zeitzone des PHP-Servers MySQLTimeZone=Aktuelle Zeitzone von MySql (Datenbank) TZHasNoEffect=Daten werden vom Datenbank-Server gespeichert und zurückgeliefert, als würde der eingegebene String abgelegt werden. Die Zeitzone hat nur dann eine Auswirkung, wenn die UNIX_TIMESTAMP-Funktion benutzt wird (Dolibarr nutzt diese nicht, daher sollte die Datenbank-TZ keine Rolle spielen, selbst wenn diese nach Dateneingabe geändert wird). @@ -132,7 +132,7 @@ PHPTZ=Zeitzone der PHP-Version PHPServerOffsetWithGreenwich=PHP-Server Zeit-Offset Greenwich-Breite (Sekunden) ClientOffsetWithGreenwich=Benutzer/Browser Zeit-Offset Greenwich-Breite (Sekunden) DaylingSavingTime=Sommerzeit (Benutzer) -CurrentHour=Aktuelle Systemzeit +CurrentHour=PHP-Zeit (Server) CompanyTZ=Unternehmenszeitzone (Hauptunternehmen) CompanyHour=Unternehmenszeit (Hauptunternehmen) CurrentSessionTimeOut=Aktuelle Session timeout @@ -157,10 +157,10 @@ PurgeAreaDesc=Hier können Sie alle vom System erzeugten und gespeicherten Datei PurgeDeleteLogFile=Löschen der Protokolldatei <b>%s</b> des Systemprotokollmoduls (kein Risiko des Datenverlusts) PurgeDeleteTemporaryFiles=Alle temporären Dateien löschen (kein Datenverlustrisiko) PurgeDeleteAllFilesInDocumentsDir=Alle Datein im Verzeichnis <b>%s</b> löschen. Dies beinhaltet temporäre Dateien ebenso wie Datenbanksicherungen, Dokumente (Partner, Rechnungen, ...) und alle Inhalte des ECM-Moduls. -PurgeRunNow=Jetzt löschen +PurgeRunNow=Jetzt bereinigen PurgeNothingToDelete=Keine zu löschenden Verzeichnisse oder Dateien PurgeNDirectoriesDeleted=<b>%s</b> Dateien oder Verzeichnisse gelöscht. -PurgeAuditEvents=Alle Protokolle löschen +PurgeAuditEvents=Bereinige alle Sicherheitsereignisse ConfirmPurgeAuditEvents=Möchten Sie wirklich alle Protokolle löschen? Alle Sicherheitsprotokolle werden dadurch gelöscht, andere Dateien sind nicht betroffen. NewBackup=Neue Sicherung GenerateBackup=Sicherung erzeugen @@ -173,8 +173,8 @@ BackupResult=Sicherungszusammenfassung BackupFileSuccessfullyCreated=Sicherungsdatei erfolgreich erzeugt YouCanDownloadBackupFile=Sie können die erstellte Sicherungsdatei jetzt herunterladen NoBackupFileAvailable=Keine verfügbare Sicherungsdatei -ExportMethod=Exportmethode -ImportMethod=Importmethode +ExportMethod=Export-Methode +ImportMethod=Import-Methode ToBuildBackupFileClickHere=Um eine Sicherungsdatei zu erstellen klicken Sie bitte <a href="%s">hier</a>. ImportMySqlDesc=Zum Wiederherstellen einer Sicherungsdatei müssen Sie folgenden MySql Befehl über die Kommandozeile ausführen: ImportPostgreSqlDesc=Zum Wiederherstellen einer Sicherungsdatei müssen Sie folgenden pg_restore Befehl über die Kommandozeile ausführen: @@ -182,8 +182,8 @@ ImportMySqlCommand=%s %s < mybackupfile.sql ImportPostgreSqlCommand=%s %s mybackupfile.sql FileNameToGenerate=Name der zu erstellenden Datei Compression=Komprimierung -CommandsToDisableForeignKeysForImport=Befehl zur Deaktivierung der Fremdschlüsselüberprüfung -CommandsToDisableForeignKeysForImportWarning=Zwingend, wenn Sie den SQL-Dump später wiederherstellen wollen +CommandsToDisableForeignKeysForImport=Befehl, um Fremdschlüssel beim Import zu deaktivieren +CommandsToDisableForeignKeysForImportWarning=Zwingend erforderlich, wenn Sie den SQL-Dump später wiederherstellen möchten ExportCompatibility=Kompatibilität der erzeugten Exportdatei MySqlExportParameters=MySQL-Exportparameter PostgreSqlExportParameters= PostgreSQL Export-Parameter @@ -215,7 +215,7 @@ ModulesJobDesc=Die Geschäftstypenmodule erlauben eine einfache Einrichtung des ModulesMarketPlaceDesc=Hier finden Sie weitere Module auf externen Web-Sites ModulesMarketPlaces=Sie können zusätzliche Module im Web finden... DoliStoreDesc=DoliStore, der offizielle Marktplatz für dolibarr Module/Erweiterungen -DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) +DoliPartnersDesc=Liste mit einigen Unternehmen, die entwickeln/liefern On-Demand-Module oder Funktionen (Hinweis: Jede Open-Source-Unternehmen beherscht die PHP-Sprache und kann bestimmte Entwicklungen liefern) WebSiteDesc=Website-Anbieter für Ihre Suche nach weiteren Modulen URL=Link BoxesAvailable=Verfügbare Boxen @@ -281,7 +281,7 @@ MAIN_SMS_SENDMODE=Methode zum Senden von SMS MAIN_MAIL_SMS_FROM=Standard Versendetelefonnummer der SMS-Funktion FeatureNotAvailableOnLinux=Diese Funktion ist auf Unix-Umgebungen nicht verfügbar. Testen Sie Ihr Programm sendmail lokal. SubmitTranslation=Sollte die Übersetzung für eine Sprache nicht vollständig sein oder Fehler beinhalten, können Sie die entsprechenden Sprachdateien im Verzeichnis <b>langs/%s</b> bearbeiten und anschließend Ihre Änderungen mit der Entwicklergemeinschaft auf www.dolibarr.org teilen. -ModuleSetup=Moduleinstellunen +ModuleSetup=Moduleinstellung ModulesSetup=Moduleinstellungen ModuleFamilyBase=System ModuleFamilyCrm=Kundenverwaltung (CRM) @@ -289,7 +289,7 @@ ModuleFamilyProducts=Produktverwaltung ModuleFamilyHr=Personalverwaltung ModuleFamilyProjects=Projektverwaltung/Zusammenarbeit ModuleFamilyOther=Andere -ModuleFamilyTechnic=Multi-Modulwerkzeuge +ModuleFamilyTechnic=Multi-Module Werkzeuge ModuleFamilyExperimental=Experimentelle Module ModuleFamilyFinancial=Finanzmodule (Rechnungswesen/Finanzen) ModuleFamilyECM=Inhaltsverwaltung (ECM) @@ -349,8 +349,8 @@ FirstnameNamePosition=Reihenfolge von Vor- und Nachname DescWeather=Die folgenden Bilder werden auf der Übersichtansicht angezeigt, wenn die Anzahl der verspäteten Aufgaben diese Werte erreichen: KeyForWebServicesAccess=Schlüssel um Web Services (Parameter "dolibarrkey" in webservices) zu benützen TestSubmitForm=Testbereich -ThisForceAlsoTheme=Dieser Menü-Manager wird sein eigenes Theme benutzen, unabhängig der Wahl des Nutzers. Auch wenn dieser Menü-Manager für Smartphones ausgelegt ist kann er nicht auf allen Smartphones angezeigt werden. Verwenden Sie ein anderes Menü-Manager, wenn Sie Probleme bemerken. -ThemeDir=Theme Ordner +ThisForceAlsoTheme=Bei Verwendung dieser Menü-Verwaltung wird die eigene Layout-Vorlage verwendet unabhängig von der Layout Einstellung des Benutzers. Auch wenn diese Menü-Verwaltung für Smartphones ausgelegt ist kann er nicht auf allen Smartphones angezeigt werden. Verwenden Sie eine andere Menü-Verwaltung, wenn Sie Probleme bemerken. +ThemeDir=Verzeichnis Layout-Vorlagen ConnectionTimeout=Verbindung Timeout ResponseTimeout=Antwort Timeout SmsTestMessage=Test Nachricht von __PHONEFROM__ zu __PHONETO__ @@ -395,7 +395,7 @@ ExtrafieldParamHelpselect=Parameterlisten müssen das Format Schlüssel,Wert hab ExtrafieldParamHelpcheckbox=Parameterlisten müssen das Format Schlüssel,Wert haben<br><br> zum Beispiel:<br>1,Wert1<br>2,Wert2<br>3,Wert3<br>... ExtrafieldParamHelpradio=Parameterlisten müssen das Format Schlüssel,Wert haben<br><br> zum Beispiel:<br>1,Wert1<br>2,Wert2<br>3,Wert3<br>... ExtrafieldParamHelpsellist=Parameter-Liste stammt aus einer Tabelle<br>Syntax : \ntable_name:label_field:id_field::filter<br>Beispiel :\nc_typent:libelle:id::filter<br><br> \nFilter kann ein einfacher Test (z.B. aktiv = 1) angezeigt werden nur aktiv, Wert <br> wenn Sie auf extrafields filtern möchten verwenden syntaxt extra.fieldcode = ... (wo Feld-Code ist der Code, der extrafield) <br><br> Um die Liste haben, je nach dem anderen : \n<br>c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=Parameter-Liste stammt aus einer Tabelle <br> Syntax: table_name:label_field:id_field::filter<br> Beispiel:c_typent:libelle:id::filter <br><br> Filter kann ein einfacher Test (zB active=1) nur aktive Wert angezeigt, wenn Sie filtern <br> wenn Sie auf extrafields filtern möchten verwenden Sie syntaxt extra.fieldcode=... \n\n(wobei fieldcode ist der Code vom extrafield) <br><br> \num die Liste basierend auf einer anderen zu haben<br>c_typent:libelle:id:parent_list_code|parent_column:filter LibraryToBuildPDF=Verwendete Bibliothek zur PDF-Erzeugung WarningUsingFPDF=Achtung: Ihre <b>conf.php</b> enthält <b>$dolibarr_pdf_force_fpdf=1</b> Dies bedeutet, dass Sie die FPDF-Bibliothek verwenden, um PDF-Dateien zu erzeugen. Diese Bibliothek ist alt und unterstützt viele Funktionen nicht (Unicode-, Bild-Transparenz, kyrillische, arabische und asiatische Sprachen, ...), so dass es zu Fehlern bei der PDF-Erstellung kommen kann. <br> Um dieses Problem zu beheben und volle Unterstützung der PDF-Erzeugung zu erhalten, laden Sie bitte die <a href="http://www.tcpdf.org/" target="_blank">TCPDF Bibliothek</a> , dann kommentieren Sie die Zeile <b>$dolibarr_pdf_force_fpdf=1</b> aus oder entfernen diese und fügen statt dessen <b>$dolibarr_lib_TCPDF_PATH='Pfad_zum_TCPDF_Verzeichnisr'</b> ein LocalTaxDesc=In einigen Ländern gelten 2 oder 3 Steuern auf jede Rechnungszeile. Wenn dies der Fall ist, wählen Sie Typ für die zweite und dritte Steuer und seine Geschwindigkeit. Mögliche Art sind: <br> 1: Ortstaxe gelten über Produkte und Dienstleistungen, ohne Mehrwertsteuer (MwSt nicht der örtlichen Steuer angewendet) <br> 2: Ortstaxe gelten für Produkte und Dienstleistungen vor Mehrwertsteuer (MwSt auf Höhe + localtax berechnet) <br> 3: Ortstaxe gelten für Produkte ohne Mehrwertsteuer (MwSt nicht der örtlichen Steuer angewendet) <br> 4: Ortstaxe gelten für Erzeugnisse, bevor Mehrwertsteuer (MwSt auf Höhe + localtax berechnet) <br> 5: Ortstaxe gelten für Dienstleistungen, ohne Mehrwertsteuer (MwSt nicht der örtlichen Steuer angewendet) <br> 6: Ortstaxe gelten für Dienstleistungen vor Mehrwertsteuer (MwSt auf Höhe + localtax berechnet) @@ -432,8 +432,8 @@ Module22Name=E-Mail-Kampagnen Module22Desc=E-Mail-Kampagnenverwaltung Module23Name= Energie Module23Desc= Überwachung des Energieverbrauchs -Module25Name=Kundenbestellungen -Module25Desc=Kundenbestellungsverwaltung +Module25Name=Kundenaufträge +Module25Desc=Kundenauftragsverwaltung Module30Name=Rechnungen Module30Desc=Rechnungs- und Gutschriftsverwaltung für Kunden. Rechnungsverwaltung für Lieferanten Module40Name=Lieferanten @@ -456,15 +456,15 @@ Module55Name=Barcodes Module55Desc=Barcode-Verwaltung Module56Name=Telefonie Module56Desc=Telefonie-Integration -Module57Name=Daueraufträge -Module57Desc=Daueraufträge und Entzugsmanagement. Hierzu gehört auch Generation von SEPA-Datei für europäische Länder. +Module57Name=Abbuchungsaufträge +Module57Desc=Abbuchungsaufträge und Entzugsmanagement. Hierzu gehört auch Generation von SEPA-Datei für europäische Länder. Module58Name=ClickToDial Module58Desc=ClickToDial-Integration Module59Name=Bookmark4u Module59Desc=Neues Bookmark4u Konto zu Systembenutzerkonto hinzufügen Module70Name=Service Module70Desc=Serviceverwaltung -Module75Name=Reise- und Fahrtspesen +Module75Name=Reisekosten und Reisehinweise Module75Desc=Reise- und Fahrtspesenverwaltung Module80Name=Lieferungen Module80Desc=Versand und Lieferauftragsverwaltung @@ -521,7 +521,7 @@ Module2200Desc=Mathematische Ausdrücke für Preise aktivieren Module2300Name=Cron Module2300Desc=CronJob Verwaltung Module2400Name=Agenda -Module2400Desc=Maßnahmen/Aufgaben und Agendaverwaltung +Module2400Desc=Termine/Aufgaben und Terminplanung Module2500Name=Inhaltsverwaltung(ECM) Module2500Desc=Speicherung und Verteilung von Dokumenten Module2600Name=WebServices @@ -569,7 +569,7 @@ Permission19=Rechnungen löschen Permission21=Angebote einsehen Permission22=Angebote erstellen/bearbeiten Permission24=Angebote freigeben -Permission25=Angeobte per E-Mail versenden +Permission25=Angebote per E-Mail versenden Permission26=Angebote schließen Permission27=Angebote löschen Permission28=Angebote exportieren @@ -592,13 +592,13 @@ Permission75=Erstellen Typen von Mitgliedschaft Permission76=Daten exportieren Permission78=Abonnements einsehen Permission79=Abonnements erstellen/bearbeiten -Permission81=Kundenbestellungen einsehen -Permission82=Kundenbestellungen erstellen/bearbeiten -Permission84=Kundenbestellungen freigeben -Permission86=Kundenbestellungen per E-Mail senden -Permission87=Kundenbestellungen schließen -Permission88=Kundenbestellungen verwerfen -Permission89=Kundenbestellungen löschen +Permission81=Kundenaufträge einsehen +Permission82=Kundenaufträge erstellen/bearbeiten +Permission84=Kundenaufträge freigeben +Permission86=Kundenaufträge per E-Mail versenden +Permission87=Kundenaufträge abschließen +Permission88=Kundenaufträge verwerfen +Permission89=Kundenaufträge löschen Permission91=Steuern/Sozialbeiträge einsehen Permission92=Steuern/Sozialbeiträge erstellen/bearbeiten Permission93=Steuern/Sozialbeiträge löschen @@ -625,7 +625,7 @@ Permission142=Aufgaben erstellen/bearbeiten Permission144=Löschen aller Projekte und Aufgaben (einschließlich privater auch nicht in Verbindung treten) Permission146=Lieferanten einsehen Permission147=Statistiken einsehen -Permission151=Daueraufträge einsehen +Permission151=Abbucher einsehen Permission152=Dauerauftragsanträge erstellen/bearbeiten Permission153=Dauerauftragsbelege übertragen Permission154=Dauerauftragsbelege kreditieren/ablehnen @@ -644,7 +644,7 @@ Permission181=Lieferantenbestellungen einsehen Permission182=Lieferantenbestellungen erstellen/bearbeiten Permission183=Lieferantenbestellungen freigeben Permission184=Lieferantenbestellungen bestätigen -Permission185=Bestellung oder Lieferantenbestellungen verwerfen +Permission185=Lieferantenbestellungen bestellen oder verwerfen Permission186=Lieferantenbestellungen empfangen Permission187=Lieferantenbestellungen schließen Permission188=Lieferantenbestellungen verwerfen @@ -765,17 +765,17 @@ Permission1236=Lieferantenrechnungen, -attribute und zahlungen exportieren Permission1237=Lieferantenbestellungen mit Details exportieren Permission1251=Massenimports von externen Daten ausführen (data load) Permission1321=Kundenrechnungen, -attribute und -zahlungen exportieren -Permission1421=Kundenbestellungen und Attribute exportieren +Permission1421=Exportieren von Kundenaufträge und Attribute Permission23001=anzeigen cronjobs Permission23002=erstellen/ändern cronjobs Permission23003=cronjobs löschen Permission23004=cronjobs ausführen -Permission2401=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto einsehen -Permission2402=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto erstellen/bearbeiten -Permission2403=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto löschen -Permission2411=Maßnahmen (Termine/Aufgaben) in Anderer einsehen -Permission2412=Maßnahmen (Termine/Aufgaben) in Anderer erstellen/bearbeiten -Permission2413=Maßnahmen (Termine/Aufgaben) in Anderer löschen +Permission2401=Ereignisse (Termine/Aufgaben) in Verbindung mit eigenem Konto einsehen +Permission2402=Ereignisse (Termine/Aufgaben) in Verbindung mit eigenem Konto erstellen/bearbeiten +Permission2403=Ereignisse (Termine/Aufgaben) in Verbindung mit eigenem Konto löschen +Permission2411=Ereignisse (Termine/Aufgaben) Anderer einsehen +Permission2412=Ereignisse (Termine/Aufgaben) Anderer erstellen/bearbeiten +Permission2413=Ereignisse (Termine/Aufgaben) Anderer löschen Permission2501=Dokumente herunterladen oder einsehen Permission2502=Dokumente herunterladen Permission2503=Dokumente bestätigen oder löschen @@ -792,14 +792,14 @@ Permission59001=Gewinnspanne einsehen Permission59002=Gewinspanne definieren Permission59003=Lesen aller Benutzer Margen DictionaryCompanyType=Partnertyp -DictionaryCompanyJuridicalType=Gesellschaftsformen von Drittanbietern +DictionaryCompanyJuridicalType=Gesellschafts- und Unternehmenformen DictionaryProspectLevel=Geschäftsaussicht DictionaryCanton=Bundesland/Kanton DictionaryRegion=Regionen DictionaryCountry=Länder DictionaryCurrency=Währungen DictionaryCivility=Anredeformen -DictionaryActions=Maßnahmen +DictionaryActions=Liste Arten von Kalenderereignissen DictionarySocialContributions=Sozialbeitragstypen DictionaryVAT=MwSt.-Sätze DictionaryRevenueStamp=Anzahl der Steuermarken @@ -813,7 +813,7 @@ DictionarySendingMethods=Versandarten DictionaryStaff=Mitarbeiter DictionaryAvailability=Lieferverzug DictionaryOrderMethods=Bestellmethoden -DictionarySource=Quelle der Angebote/Bestellungen +DictionarySource=Quelle der Angebote/Aufträge DictionaryAccountancyplan=Kontenplan DictionaryAccountancysystem=Kontenplan Modul DictionaryEMailTemplates=Emailvorlage @@ -859,7 +859,7 @@ CalcLocaltax2=Einkauf CalcLocaltax2Desc=Lokale Steuer-Reports sind die Summe der lokalen Steuern auf Einkäufe CalcLocaltax3=Verkauf CalcLocaltax3Desc=Lokale Steuer-Reports sind die Summe der lokalen Steuern auf Verkäufe -LabelUsedByDefault=Standardmäßig verwendete Bezeichnung falls keine Übersetzung vorhanden ist +LabelUsedByDefault=Bezeichnung wird verwendet falls keine Übersetzung für den Code vorhanden ist. LabelOnDocuments=Bezeichnung auf Dokumenten NbOfDays=Anzahl der Tage AtEndOfMonth=Am Ende des Monats @@ -874,7 +874,7 @@ DocumentRootServer=Dokumenten-Stammordner des Webservers DataRootServer=Daten-Verzeichnis IP=IP Port=Port -VirtualServerName=Name des Virtual-Server +VirtualServerName=Name des virtuellen Servers AllParameters=Alle Parameter OS=OS PhpEnv=Env @@ -916,8 +916,8 @@ DefaultMenuTopManager=Top-Menüverwaltung DefaultMenuLeftManager=Verwaltung linkes Menü DefaultMenuManager= Standard Menü-Verwaltung DefaultMenuSmartphoneManager=Smartphone Menü-Verwaltung -Skin=Oberfläche Layout -DefaultSkin=Standardlayout für Oberfläche +Skin=grafische Oberfläche +DefaultSkin=Standardvorlage grafische Oberfläche MaxSizeList=Maximale Listenlänge DefaultMaxSizeList=Maximale Listenlänge (Standard) MessageOfDay=Nachricht des Tages @@ -948,15 +948,15 @@ Alerts=Benachrichtigungen Delays=Verspätungen DelayBeforeWarning=Frist bis zur Benachrichtigung DelaysBeforeWarning=Fristen bis zur Warnung -DelaysOfToleranceBeforeWarning=Toleranz für die Frist vor Benachrichtigungen +DelaysOfToleranceBeforeWarning=Verzögerungstoleranz vor Warnung DelaysOfToleranceDesc=Hier können Sie die Verspätungstoleranz einstellen, bevor eine Benachrichtigung auf dem Bildschirm für jedes verspätete Element mit dem Symbol %s ausgegeben wird. -Delays_MAIN_DELAY_ACTIONS_TODO=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über die noch nicht erledigte, geplante Maßnahme -Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Verzögerungstoleranz (in Tagen) vor Benachrichtigung noch nicht bearbeitete Aufträge -Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Verzögerungstoleranz (in Tagen), bevor Alarm für nicht bearbeteitet Lieferanten-Bestellungen aktiviert wird -Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über abzuschließende Angebote -Delays_MAIN_DELAY_PROPALS_TO_BILL=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über nicht in Rechnung gestellte Angebote -Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über zu aktivierende Leistungen -Delays_MAIN_DELAY_RUNNING_SERVICES=Verzögerungstoleranz (in Tagen) vor Benachrichtigung zu überfälligen Leistungen +Delays_MAIN_DELAY_ACTIONS_TODO=Verzögerungstoleranz (in Tagen) vor Warnung für noch nicht erledigte, geplante Ereignisse +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Verzögerungstoleranz (in Tagen) vor Warnung für noch nicht bearbeitete Aufträge +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Verzögerungstoleranz (in Tagen), vor Warnung für nicht bearbeitete Lieferantenbestellungen +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Verzögerungstoleranz (in Tagen) vor Warnung für abzuschließende Angebote +Delays_MAIN_DELAY_PROPALS_TO_BILL=Verzögerungstoleranz (in Tagen) vor Warnung für nicht in Rechnung gestellte Angebote +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Verzögerungstoleranz (in Tagen) vor Warnung für zu aktivierende Leistungen +Delays_MAIN_DELAY_RUNNING_SERVICES=Verzögerungstoleranz (in Tagen) vor Warnung für überfällige Vertrags-Leistungen Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über unbezahlte Lieferantenrechnungen Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über unbezahlte Kundenrechnungen Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über Bankkontenabgleich @@ -989,11 +989,11 @@ SystemAreaForAdminOnly=Dieser Bereich steht ausschließlich Administratoren zur CompanyFundationDesc=Tragen Sie hier alle Informationen zum Unternehmen ein, das Sie verwalten möchten DisplayDesc=Hier können Sie die Oberfläche, sowie das allgemeine 'Look and Feel' des Systems anpassen AvailableModules=Verfügbare Module -ToActivateModule=Zum Aktivieren von Modulen gehen Sie zu Übersicht->Einstellungen->Module +ToActivateModule=Zum Aktivieren von Modulen gehen Sie zu Start->Einstellungen->Module SessionTimeOut=Sitzungszeitbegrenzung SessionExplanation=Dieser Wert garantiert, dass eine Sitzung nie vor Zeitablauf beendet wird. Die PHP-Sitzungsverwaltung garantiert jedoch nicht, dass eine Sitzung wirklich nach Ablauf dieser Zeit beendet wird. Hierzu kann es kommen, wenn ein System zur Sitzungscache-Bereinigung im Einsatz ist.<br>Hinweis: ohne spezielles System wird PHP die Sitzung nach etwa <b>%s/%s</b> beenden - allerdings erst nach dem Start einer anderen Sitzung. TriggersAvailable=Verfügbare Trigger -TriggersDesc=Trigger sind Dateien, die nach einem Kopieren in das Verzeichnis <b>htdocs/core/triggers</b> das Workflow-Verhalten des Systems beeinflussen. Diese stellen neue, mit Systemereignissen verbundene, Maßnahmen dar (Neuer Partner angelegt, Rechnung freigegeben, ...). +TriggersDesc=Trigger sind Dateien, die nach einem Kopieren in das Verzeichnis <b>htdocs/core/triggers</b> das Workflow-Verhalten des Systems beeinflussen. Diese stellen neue, mit Systemereignissen verbundene, Ereignisse dar (Neuer Partner angelegt, Rechnung freigegeben, ...). TriggerDisabledByName=Trigger in dieser Datei sind durch das <b>-NORUN</b>-Suffix in ihrem Namen deaktviert. TriggerDisabledAsModuleDisabled=Trigger in dieser Datei sind durch das übergeordnete Modul <b>%s</b> deaktiviert. TriggerAlwaysActive=Trigger in dieser Datei sind unabhängig der Modulkonfiguration immer aktiviert. @@ -1032,14 +1032,14 @@ WeekStartOnDay=Wochenstart RunningUpdateProcessMayBeRequired=Eine Systemaktualisierung scheint erforderlich (Programmversion %s unterscheidet sich von Datenbankversion %s) YouMustRunCommandFromCommandLineAfterLoginToUser=Diesen Befehl müssen Sie auf der Kommandozeile (nach Login auf der Shell mit Benutzer <b>%s</b>) ausführen. YourPHPDoesNotHaveSSLSupport=Ihre PHP-Konfiguration unterstützt keine SSL-Verschlüsselung -DownloadMoreSkins=Weitere Oberflächen (Skins) herunterladen +DownloadMoreSkins=Weitere grafische Oberflächen/Themes herunterladen SimpleNumRefModelDesc=Liefere eine Nummer im Format %syymm-nnnn zurück, wobei YY für das Jahr, MM für das Monat und nnnn für eine 4-stellige, nicht unterbrochene Zahlensequenz steht ShowProfIdInAddress=Zeige professionnal ID mit Adressen auf Dokumente ShowVATIntaInAddress=Ausblenden UID Nummer in Adressen auf Dokumenten. TranslationUncomplete=Teilweise Übersetzung -SomeTranslationAreUncomplete=Einige Sprachen könnten nur teilweise oder fehlerhaft übersetzt sein. Wenn Sie Fehler bemerken, können Sie die Sprachdateien verbessern, indem Sie sich bei <a href="http://transifex.com/projects/p/dolibarr/" target="_blank">Transifex</a> regsitrieren. +SomeTranslationAreUncomplete=Einige Sprachen könnten nur teilweise oder fehlerhaft übersetzt sein. Wenn Sie Fehler bemerken, können Sie die Sprachdateien verbessern, indem Sie sich bei <a href="http://transifex.com/projects/p/dolibarr/" target="_blank">Transifex</a> registrieren. MenuUseLayout=Machen Sie vertikales Menü hidable (Option Javascript muss nicht deaktiviert werden) -MAIN_DISABLE_METEO=Deaktivieren meteo Blick +MAIN_DISABLE_METEO=Deaktivere Wetteransicht TestLoginToAPI=Testen Sie sich anmelden, um API ProxyDesc=Einige Features von Dolibarr müssen einen Internet-Zugang zu Arbeit haben. Definieren Sie hier Parameter für diese. Wenn die Dolibarr Server hinter einem Proxy-Server, erzählt jene Parameter Dolibarr wie man Internet über ihn zugreifen. ExternalAccess=Externer Zugriff @@ -1071,25 +1071,25 @@ SendmailOptionNotComplete=Achtung, auf einigen Linux-Systemen, E-Mails von Ihrem PathToDocuments=Dokumentenpfad PathDirectory=Verzeichnispfad SendmailOptionMayHurtBuggedMTA=Feature-Mails mit der Methode "PHP mail direkt" senden generiert eine Mail-Nachricht, die nicht korrekt möglicherweise von einigen Mail-Servern empfangen analysiert werden. Ergebnis ist, dass manche Mails nicht von Menschen, die von thoose abgehört Plattformen gehostet gelesen werden. Es ist bei einigen Internet-Providern (Ex: Orange in Frankreich). Dies ist nicht ein Problem in Dolibarr noch in PHP aber auf empfangende Mail-Server. Sie können jedoch hinzuzufügen MAIN_FIX_FOR_BUGGED_MTA Option auf 1 in die Setup - andere zu Dolibarr ändern, um dies zu vermeiden. Sie können jedoch Probleme mit anderen Servern, dass die Achtung streng dem SMTP-Standard zu erleben. Die andere Lösung (empfohlen) ist es, die Methode "SMTP-Socket-Bibliothek", die keine Nachteile hat benutzen. -TranslationSetup=Configuration de la traduction +TranslationSetup=Übersetzungseinstellungen TranslationDesc=Wahl der Sprache auf dem Bildschirm sichtbar verändert werden kann: <br> * Weltweit aus dem Menü <strong>Start - Einstellungen - Anzeige</strong> <br> * Für die Benutzer nur von <strong>Benutzer-Registerkarte Anzeige</strong> von Benutzer-Karte (klicken Sie auf Login-Bildschirm auf der Oberseite). TotalNumberOfActivatedModules=Summe aktivierter Module: <b>%s</b> YouMustEnableOneModule=Sie müssen mindestens 1 Modul aktivieren ClassNotFoundIntoPathWarning=Klasse %s nicht innerhalb PHP-Pfad gefunden YesInSummer=Ja im Sommer -OnlyFollowingModulesAreOpenedToExternalUsers=Bitte beachten: nur die folgenden Module sind für externe Nutzer verfügbar (unabhängig von deren Rechten): +OnlyFollowingModulesAreOpenedToExternalUsers=Hinweis: Nur die folgenden Module sind für externe Nutzer verfügbar (unabhängig von der Berechtigung dieser Benutzer): SuhosinSessionEncrypt=Sitzungsspeicher durch Suhosin verschlüsselt ConditionIsCurrently=Einstellung ist aktuell %s YouUseBestDriver=Sie verwenden den Treiber %s, dies ist derzeit der beste verfügbare. YouDoNotUseBestDriver=Sie verwenden Treiber %s, aber der Treiber %s wird empfohlen. NbOfProductIsLowerThanNoPb=Sie haben nur %s Produkte/Leistungen in der Datenbank. Daher ist keine bestimmte Optimierung erforderlich. SearchOptim=Such Optimierung -YouHaveXProductUseSearchOptim=Sie haben %s Produkte/Leistungen in die Datenbank. Sie sollten die Konstante PRODUCT_DONOTSEARCH_ANYWHERE auf 1 unter in Übersicht-Einstellungen-Andere Einstellungen hinzufügen, wodurch sich das Suchlimit in der Datenbank von Anfang des Strings möglich gemacht wird, und der Index verwendet wird, dadurch sollten sie \nsofort Antwort auf Ihre suche bekommen. +YouHaveXProductUseSearchOptim=Sie haben %s Produkte/Leistungen in die Datenbank. Sie sollten die Konstante PRODUCT_DONOTSEARCH_ANYWHERE auf 1 unter Start-Einstellungen-Andere Einstellungen hinzufügen, wodurch das Suchlimit in der Datenbank von Anfang des Strings möglich gemacht wird, und der Index verwendet wird, dadurch sollten sie sofort Antwort auf Ihre suche bekommen. BrowserIsOK=Sie benutzen den Webbrowser %s. Dieser ist hinsichtlich Sicherheit und Leistung ok. BrowserIsKO=Sie benutzen den Webbrowser %s. Dieser ist bekannt für Sicherheitsprobleme, schlechte Leistung und Zuverlässigkeit. Wir empfehlen Ihnen, Firefox, Chrome, Opera oder Safari zu nutzen. XDebugInstalled=XDebug installiert. XCacheInstalled=XCache installiert. -AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +AddRefInList=Darstellung Kunden- /Lieferanten- Nr. in Listen (Listbox oder ComboBox) und die meisten von Hyperlinks. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". FieldEdition=Bearbeitung von Feld %s FixTZ=Zeitzonen-Korrektur FillThisOnlyIfRequired=Beispiel: +2 (nur ausfüllen, wenn Sie Probleme mit der Zeitzone haben) @@ -1141,7 +1141,7 @@ WebCalTestOk=Verbindung zum Server '%s' für Datenbank '%s' mit Benutzer '%s' er WebCalTestKo1=Verbindung zum Server '%s' erfolgreich, aber Datenbank '%s' konnte nicht erreicht werden. WebCalTestKo2=Verbindung zum Server '%s' mit dem Benutzer '%s' fehlgeschlagen. WebCalErrorConnectOkButWrongDatabase=Datenbankverbindung aufgebaut, es scheint sich jedoch um keine Webkalender-Datenbank zu handeln -WebCalAddEventOnCreateActions=Kalendereintrag bei neuer Maßnahmen erstellen +WebCalAddEventOnCreateActions=Ein Kalenderereignis auf eine Aktionen erstellen WebCalAddEventOnCreateCompany=Kalendereintrag bei neuem Partner erstellen WebCalAddEventOnStatusPropal=Kalendereintrag bei Angebotsstatusänderung WebCalAddEventOnStatusContract=Kalendereintrag bei Vertragsstatusänderung @@ -1298,11 +1298,11 @@ LDAPSetupForVersion3=LDAP-Server für Version 3 konfiguriert LDAPSetupForVersion2=LDAP-Server für Version 2 konfiguriert LDAPDolibarrMapping=Dolibarr Mapping LDAPLdapMapping=LDAP-Mapping -LDAPFieldLoginUnix=Login (Unix) +LDAPFieldLoginUnix=Benutzername (Unix) LDAPFieldLoginExample=Beispiel: uid LDAPFilterConnection=Suchfilter LDAPFilterConnectionExample=Example : &(objectClass=inetOrgPerson) -LDAPFieldLoginSamba=Login (samba,activedirectory) +LDAPFieldLoginSamba=Benutzername (Samba,Active Directory) LDAPFieldLoginSambaExample=Beispiel : samaccountname LDAPFieldFullname=Vorname Nachname LDAPFieldFullnameExample=Beispiel : cn @@ -1362,11 +1362,11 @@ PerfDolibarr=Leistungs-Einstellungen/Optimierungsreport YouMayFindPerfAdviceHere=Auf dieser Seite finden Sie einige Überprüfungen oder Hinweise zur Leistung. NotInstalled=Nicht installiert, Ihr Server wird dadurch nicht verlangsamt. ApplicativeCache=Applicative Cache -MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.<br>More information here <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>Note that a lot of web hosting provider does not provide such cache server. +MemcachedNotAvailable=Kein Cache Anwendung gefunden. \nSie können die Leistung durch die Installation des Cache-Server Memcached und die Aktivierung des Anwendungs Cache Modul\n<br>hier mehr Informationen <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>\nverbessern.\nBeachten Sie, dass viele Billig-Provider keine solche Cache-Server in ihrer Infrastruktur anbieten. MemcachedModuleAvailableButNotSetup=Module memcached für applicative Cache gefunden, aber Setup-Modul ist nicht vollständig. MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled.. -OPCodeCache=OPCode cache -NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad). +OPCodeCache=OPCode Cache +NoOPCodeCacheFound=Kein OPCode Cache gefunden.Vielleicht sind Sie mit einem anderen OPCode Cache wie XCache oder eAccelerator (gut), vielleicht haben Sie keinen OPCode Cache (sehr schlecht) . HTTPCacheStaticResources=HTTP Cache für statische Ressourcen (CSS, img, Javascript) FilesOfTypeCached=Dateien vom Typ %s werden vom HTTP Server zwischengespeichert FilesOfTypeNotCached=Dateien vom Typ %s werden vom HTTP Server nicht zwischengespeichert @@ -1384,7 +1384,7 @@ NumberOfProductShowInSelect=Max. Anzahl der Produkte in Mehrfachauswahllisten (0 ConfirmDeleteProductLineAbility=Bestätigung für die Entfernung von Produktzeilen in Formularen ModifyProductDescAbility=Produktbeschreibungen in Formularen individuell anpassbar ViewProductDescInFormAbility=Anzeige dr Produktbeschreibungen in Formularen (andernfalls als Popup-Tooltip) -ViewProductDescInThirdpartyLanguageAbility=Visualisierung von Produkten Beschreibungen in der Sprache thirdparty +ViewProductDescInThirdpartyLanguageAbility=Anzeige der Produktbeschreibungen in der Sprache des Partners UseSearchToSelectProductTooltip=Wenn Sie eine große Anzahl von Produkten (> 100.000) haben, können Sie die Geschwindigkeit verbessern, indem Sie in Einstellungen -> Andere die Konstante PRODUCT_DONOTSEARCH_ANYWHERE auf 1 setzen. Die Suche startet dann am Beginn des Strings. UseSearchToSelectProduct=Suchfeld statt Listenansicht für die Produktauswahl verwenden. UseEcoTaxeAbility=Umweltabgaben unterstüzten @@ -1469,7 +1469,7 @@ OSCommerceTestKo2=Verbindung zum Server '%s' mit dem Benutzer '%s' fehlgeschlage ##### Stock ##### StockSetup=Warenlager-Modul Einstellungen UserWarehouse=Persönliche Warenläger verwenden -IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up. +IfYouUsePointOfSaleCheckModule=Wenn Sie ein Point of Sale-Modul (POS-Modul Standard oder andere externe POS-Module) verwenden, kann diese Einstellung von Ihrem Point Of Sale-Modul übersteuert werden. \nDie meisten POS -Module wurden entwickelt, um sofort eine Rechnung zu erstellen und das Lager standardmäßig zu verringern, egal welche Optionen hier ausgewählt wurde. \nAlso, wenn Sie während einem Verkauf einen Lagerabgang in Ihrem Point of Sale möchten oder nicht, so müssen sie auch die Konfiguration des POS-Modules überprüfen. ##### Menu ##### MenuDeleted=Menü gelöscht TreeMenu=Baumansicht @@ -1517,15 +1517,15 @@ SupposedToBeInvoiceDate=Rechnungsdatum verwendet Buy=Kaufen Sell=Verkaufen InvoiceDateUsed=Rechnungsdatum verwendet -YourCompanyDoesNotUseVAT=Für Ihr Unternehmen wurde keine MwSt.-Verwendung definiert (Übersicht-Einstellungen-Unternehmen/Stiftung), entsprechend stehen in der Konfiguration keine MwSt.-Optionen zur Verfügung. +YourCompanyDoesNotUseVAT=Für Ihr Unternehmen wurde keine MwSt.-Verwendung definiert (Start-Einstellungen-Unternehmen/Stiftung), entsprechend stehen in der Konfiguration keine MwSt.-Optionen zur Verfügung. AccountancyCode=Kontierungs-Code AccountancyCodeSell=Verkaufskonto-Code AccountancyCodeBuy=Einkaufskonto-Code ##### Agenda ##### -AgendaSetup=Agenda-Moduleinstellungen +AgendaSetup=Aufgaben/Termine-Modul Einstellungen PasswordTogetVCalExport=Passwort für den VCal-Export PastDelayVCalExport=Keine Termine exportieren die älter sind als -AGENDA_USE_EVENT_TYPE=Verwenden der Termintypen \nEinstellen unter (Übersicht -> Einstellungen -> Wörterbücher -> Maßnahme) +AGENDA_USE_EVENT_TYPE=Verwenden der Termintypen \nEinstellen unter (Start -> Einstellungen -> Wörterbücher -> Ereignistypen) AGENDA_DEFAULT_FILTER_TYPE=Diesen Ereignistyp automatisch in den Suchfilter für die Agenda-Ansicht übernehmen AGENDA_DEFAULT_FILTER_STATUS=Diesen Ereignisstatus automatisch in den Suchfilter für die Agenda-Ansicht übernehmen AGENDA_DEFAULT_VIEW=Welchen Reiter möchten Sie beim Öffnen der Agenda automatisch anzeigen @@ -1538,9 +1538,9 @@ CashDeskThirdPartyForSell=Standardpartner für Kassenverkäufe CashDeskBankAccountForSell=Standard-Bargeldkonto für Kassenverkäufe (erforderlich) CashDeskBankAccountForCheque= Finanzkonto für Scheckeinlösungen CashDeskBankAccountForCB= Finanzkonto für die Einlösung von Bargeldzahlungen via Kreditkarte -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). +CashDeskDoNotDecreaseStock=Deaktiviere Lagerabgangsbuchung wenn ein Verkauf auf einem Point of Sale durchgeführt wird\n (wenn "Nein", wird die Lagerabgangsbuchung immer durchgeführt , auch wann im Modul Produktbestandsverwaltung was anderes ausgewählt wurde). CashDeskIdWareHouse=Lager für Entnahmen festlegen und und erzwingen -StockDecreaseForPointOfSaleDisabled=Verringerung des Lagerbastandes durch Point of Sale deaktivert +StockDecreaseForPointOfSaleDisabled=Lagerrückgang bei Verwendung von Point of Sale deaktivert StockDecreaseForPointOfSaleDisabledbyBatch=Auf Rückgang der POS ist nicht mit viel Sparfunktionen CashDeskYouDidNotDisableStockDecease=Sie haben die Reduzierung der Lagerbestände nicht deaktiviert, wenn Sie einen Verkauf auf dem POS durchführen.\nAuch ist ein Lager/Standort notwendig. ##### Bookmark ##### @@ -1615,10 +1615,10 @@ NoModueToManageStockIncrease=Kein Modul zur automatische Bestandserhöhung ist a YouMayFindNotificationsFeaturesIntoModuleNotification=Sie können Optionen für E-Mail-Benachrichtigungen von Aktivierung und Konfiguration des Moduls "Benachrichtigung" finden. ListOfNotificationsPerContact=Liste der Benachrichtigungen nach Kontakt* ListOfFixedNotifications=Liste von ausbesserten Benachrichtigungen -GoOntoContactCardToAddMore=Go on the tab "Notifications" of a thirdparty contact to add or remove notifications for contacts/addresses +GoOntoContactCardToAddMore=Gehen Sie auf die Registerkarte "Hinweise" von einem Partner Kontakt , um Hinweise für Kontakte/Adressen zu erstellen oder zu entfernen Threshold=Schwellenwert BackupDumpWizard=Assistenten zum erstellen der Datenbank-Backup Dump-Datei SomethingMakeInstallFromWebNotPossible=Die Installation von dem externen Modul ist aus folgenden Gründen vom Web-Interface nicht möglich: SomethingMakeInstallFromWebNotPossible2=Aus diesem Grund wird die Prozess hier beschriebenen Upgrade ist nur manuelle Schritte ein privilegierter Benutzer tun kann. -InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file <strong>%s</strong> to allow this feature. +InstallModuleFromWebHasBeenDisabledByFile=Installieren von externen Modul aus der Anwendung wurde von Ihrem Administrator deaktiviert. \nSie müssen ihn bitten, die Datei<strong>%s</strong> zu entfernen, um diese Funktion zu ermöglichen. ConfFileMuseContainCustom=Installation eines externen Modul aus der Anwendung speichern Sie die Modul-Dateien in Verzeichnis <strong>%s</strong>. Zu haben dieses Verzeichnis durch Dolibarr verarbeitet, müssen Sie das Setup Ihrer <strong>conf/conf.php</strong> Option haben <br> - - <strong>$dolibarr_main_url_root_alt</strong> auf <<strong>$dolibarr_main_url_root_alt="/custom"</strong> enabled <strong>= "/custom"</strong> <br> - <strong>$dolibarr_main_document_root_alt</strong> zu Wert aktiviert <strong>"%s/custom"</strong> diff --git a/htdocs/langs/de_DE/agenda.lang b/htdocs/langs/de_DE/agenda.lang index 54e1cbd9d45a457a683640f921a5047a5bbd15d3..a817845d128db6479c733f924eabffbce5537c31 100644 --- a/htdocs/langs/de_DE/agenda.lang +++ b/htdocs/langs/de_DE/agenda.lang @@ -1,42 +1,42 @@ # Dolibarr language file - Source file is en_US - agenda IdAgenda=ID Veranstaltung -Actions=Termine -ActionsArea=Bereich Termine (Veranstaltungen und Aufgaben) +Actions=Ereignisse +ActionsArea=Bereich Ereignisse (Termine und Aufgaben) Agenda=Terminplanung Agendas=Tagesordnungen -Calendar=Kalender -Calendars=Kalender -LocalAgenda=Internetkalender -ActionsOwnedBy=Maßnahme gehört +Calendar=Terminkalender +Calendars=Terminkalender +LocalAgenda=interne Kalender +ActionsOwnedBy=Ereignis stammt von AffectedTo=Zugewiesen an DoneBy=Erledigt von -Event=Aktion -Events=Termine -EventsNb=Anzahl der Termine -MyEvents=Meine Termine -OtherEvents=Weitere Termine -ListOfActions=Terminliste +Event=Ereignis +Events=Ereignisse +EventsNb=Anzahl der Ereignisse +MyEvents=Meine Ereignisse +OtherEvents=Weitere Ereignisse +ListOfActions=Liste Ereignisse Location=Standort EventOnFullDay=Ganztägig -SearchAnAction= Suche Maßnahme / Aufgabe -MenuToDoActions=Alle unvollständigen Termine -MenuDoneActions=Alle abgeschlossenen Termine -MenuToDoMyActions=Meine offenen Termine -MenuDoneMyActions=Meine abgeschlossenen Termine -ListOfEvents=Liste der Termine (Internetkalender) +SearchAnAction= Termin/Aufgabe suchen +MenuToDoActions=Alle unvollst. Termine +MenuDoneActions=Alle abgeschl. Termine +MenuToDoMyActions=Meine unvollst. Termine +MenuDoneMyActions=Meine abgeschl. Termine +ListOfEvents=Liste Ereignisse (interner Kalender) ActionsAskedBy=Termine eingetragen von ActionsToDoBy=Ereignisse zugewiesen an ActionsDoneBy=Termine erledigt von -ActionsForUser=Maßnahmen für Benutzer -ActionsForUsersGroup=Maßnahmen für alle Benutzer der Gruppe +ActionsForUser=Ereignisse für Benutzer +ActionsForUsersGroup=Ereignisse für Benutzer der Gruppe ActionAssignedTo=Ereignis zugewiesen an -AllMyActions= Alle meine Termine/Aufgaben -AllActions= Alle Termine / Aufgaben +AllMyActions= Alle meine Ereignisse +AllActions= Alle Ereignisse ViewList=Listenansicht ViewCal=Kalenderansicht ViewDay=Tagesansicht ViewWeek=Wochenansicht -ViewPerUser=Ansicht nach Benutzer +ViewPerUser=Benutzeransicht ViewWithPredefinedFilters= Ansicht mit vordefinierten Filtern AutoActions= Automatische Befüllung der Tagesordnung AgendaAutoActionDesc= Definieren Sie hier Termine zur automatischen Übernahme in den Terminkalender. Ist nichts aktviert (Standardmäßig), umfasst der Terminkalender nur manuell eingetragene Termine. @@ -48,7 +48,7 @@ InvoiceValidatedInDolibarr=Rechnung freigegeben InvoiceValidatedInDolibarrFromPos=Rechnung %s von POS validiert InvoiceBackToDraftInDolibarr=Rechnung %s in den Entwurf Status zurücksetzen InvoiceDeleteDolibarr=Rechnung %s gelöscht -OrderValidatedInDolibarr=Bestellung %s freigegeben +OrderValidatedInDolibarr=Auftrag %s freigegeben OrderDeliveredInDolibarr=Bestellung %s als geliefert markieren OrderCanceledInDolibarr=Auftrag storniert %s OrderBilledInDolibarr=Bestellung %s als bezahlt markieren @@ -57,7 +57,7 @@ OrderRefusedInDolibarr=Bestellung %s abgelehnt OrderBackToDraftInDolibarr=Bestellen %s zurück nach Draft-Status OrderCanceledInDolibarr=Auftrag storniert %s ProposalSentByEMail=Angebot %s per E-Mail versendet -OrderSentByEMail=Kundenbestellung %s per E-Mail versendet +OrderSentByEMail=Kundenauftrag %s per E-Mail versendet InvoiceSentByEMail=Kundenrechnung %s per E-Mail versendet SupplierOrderSentByEMail=Lieferantenbestellung %s per E-Mail versendet SupplierInvoiceSentByEMail=Lieferantenrechnung %s per E-Mail versendet @@ -69,17 +69,17 @@ DateActionPlannedStart= Geplantes Startdatum DateActionPlannedEnd= Geplantes Enddatum DateActionDoneStart= Effektiver Beginn DateActionDoneEnd= Effektives Ende -DateActionStart= Startdatum -DateActionEnd= Enddatum +DateActionStart= Beginnt +DateActionEnd= Endet AgendaUrlOptions1=Sie können die Ausgabe über folgende Parameter filtern: -AgendaUrlOptions2=<b>Login =%s</b> für die Ausgabe an Aktionen erstellt, die von oder an den Benutzer <b>%s</b> zugeordnet beschränken. -AgendaUrlOptions3=<b>logina=%s</b> begrenzt die Ausgabe auf von Benutzer <b>%s</b> erstellte Maßnahmen. -AgendaUrlOptions4=<b>logint=%s</b> begrenzt die Ausgabe auf von Benutzer <b>%s</b> betroffene Maßnahmen. -AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> begrenzt die die Ausgabe auf Maßnahmen im Zusammenhang mit Projekt <b>PROJECT_ID</b>. +AgendaUrlOptions2=<b>login=%s</b> begrenzt die Ausgabe auf den Benutzer <b>%s</b> erstellte oder zugewiesene Ereignissen ein. +AgendaUrlOptions3=<b>logina=%s</b> begrenzt die Ausgabe auf den Benutzer <b>%s</b> erstellte Ereignissen. +AgendaUrlOptions4=<b>logint=%s</b> begrenzt die Ausgabe auf den Benutzer <b>%s</b> zugewiesene Ereignissen. +AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> begrenzt die Ausgabe auf die dem Projekte <b>PROJECT_ID</b> zugewiesene Ereignissen. AgendaShowBirthdayEvents=Zeige Geburtstage AgendaHideBirthdayEvents=Geburtstage ausblenden Busy=Besetzt -ExportDataset_event1=Liste der Massnahmen +ExportDataset_event1=Liste Ereignisse des Kalender DefaultWorkingDays=Standard-Werktage der Woche (z.B. 1-5, 1-6) DefaultWorkingHours=Reguläre Arbeitszeit pro Tag (z.B. 9-18) # External Sites ical @@ -92,7 +92,7 @@ ExtSiteUrlAgenda=URL Adresse um .ical Datei zu erreichen ExtSiteNoLabel=Keine Beschreibung WorkingTimeRange=Arbeitszeit-Bereich WorkingDaysRange=Arbeitstag-Bereich -AddEvent=Maßnahme erstellen +AddEvent=Ereignis erstellen MyAvailability=Meine Verfügbarkeit ActionType=Ereignistyp -DateActionBegin=Startdatum des Ereignisses +DateActionBegin=Beginnzeit des Ereignis diff --git a/htdocs/langs/de_DE/banks.lang b/htdocs/langs/de_DE/banks.lang index 7b6f04e41b8fe5b9296322a155bc8d10ebe52eb2..b8befaf598e9820b2287e2540567d38dbb7df46a 100644 --- a/htdocs/langs/de_DE/banks.lang +++ b/htdocs/langs/de_DE/banks.lang @@ -32,14 +32,14 @@ ShowAllTimeBalance=Zeige Kontostand seit Eröffnung AllTime=Vom start Reconciliation=Zahlungsabgleich RIB=Kontonummer -IBAN=IBAN -IbanValid=IBAN is gültig +IBAN=IBAN-Nummer +IbanValid=IBAN ist gültig IbanNotValid=IBAN ist nicht gültig -BIC=BIC / SWIFT Code -SwiftValid=BIC/SWIFT ist gültig -SwiftNotValid=BIC/Swift ist nicht gültig -StandingOrders=Daueraufträge -StandingOrder=Dauerauftrag +BIC=BIC Code +SwiftValid=BIC ist gültig +SwiftNotValid=BIC ist nicht gültig +StandingOrders=Abbuchungsaufträge +StandingOrder=Abbuchungsauftrag Withdrawals=Entnahmen Withdrawal=Entnahme AccountStatement=Kontoauszug @@ -48,7 +48,7 @@ AccountStatements=Kontoauszüge LastAccountStatements=Letzte Kontoauszüge Rapprochement=Zahlungsabgleich IOMonthlyReporting=Monatsbericht -BankAccountDomiciliation=BLZ +BankAccountDomiciliation=Kontoadresse BankAccountCountry=Bankkonto Land BankAccountOwner=Kontoinhaber BankAccountOwnerAddress=Kontoinhaber-Adresse @@ -85,7 +85,7 @@ RemoveFromRubriqueConfirm=Möchten Sie die Kategoriezuweisung wirklich entfernen ListBankTransactions=Liste der Transaktionen IdTransaction=Transaktions-ID BankTransactions=Bank-Transaktionen -SearchTransaction=Suche Transaktion +SearchTransaction=Transaktion suchen ListTransactions=Transaktionsliste ListTransactionsByCategory=Transaktionen/Kategorie TransactionsToConciliate=Auszugleichende Transaktionen @@ -121,7 +121,7 @@ TransferDesc=Transfer zwischen Konten. Gebucht werden beide Sätze (eine Belastu TransferFrom=Von TransferTo=An TransferFromToDone=Eine Überweisung <b>von %s nach %s iHv %s %s</b> wurde verbucht. -CheckTransmitter=Überbringer +CheckTransmitter=Übermittler ValidateCheckReceipt=Scheck annehmen? ConfirmValidateCheckReceipt=Scheck wirklich annehmen? Eine Änderung ist anschliessend nicht mehr möglich. DeleteCheckReceipt=Scheck löschen @@ -132,7 +132,7 @@ ShowCheckReceipt=Zeige Scheck Einzahlungsbeleg NumberOfCheques=Anzahl der Schecks DeleteTransaction=Transaktion löschen ConfirmDeleteTransaction=Möchten Sie diese Transaktion wirklich löschen? -ThisWillAlsoDeleteBankRecord=Dies löscht auch erstellte Bankbewegungen +ThisWillAlsoDeleteBankRecord=Dies wird auch erstellte Bankbewegungen löschen BankMovements=Bankbewegungen CashBudget=Bargeldbestand PlannedTransactions=Geplante Transaktionen @@ -159,7 +159,7 @@ ThenCheckLinesAndConciliate=Dann die Zeilen im Bankauszug prüfen und Klicken BankDashboard=Bankkonten Zusammenfassung DefaultRIB=Standart Bankkonto-Nummer AllRIB=Alle Bankkonto-Nummern -LabelRIB=Bankkonto-Nummer Bezeichnung +LabelRIB=Bankkonto Bezeichnung NoBANRecord=Keine Bankkonto-Nummern Einträge DeleteARib=Lösche Bankkonto-Nummern Eintrag ConfirmDeleteRib=Möchten Sie diesen Bankkonto-Nummern Eintrag wirklich löschen? diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang index f97ba9e646e9e85f874003e82e390fe6f46c8e9f..3ee6219c8cbb1a1bc90353435f0072cc74cf424f 100644 --- a/htdocs/langs/de_DE/bills.lang +++ b/htdocs/langs/de_DE/bills.lang @@ -6,7 +6,7 @@ BillsCustomer=Kundenrechnung BillsSuppliers=Lieferantenrechnungen BillsCustomersUnpaid=Offene Kundenrechnungen BillsCustomersUnpaidForCompany=Unbezahlte Rechnungen für Kunden %s -BillsSuppliersUnpaid=Unbezahlte Rechnungen des Lieferanten +BillsSuppliersUnpaid=Unbezahlte Lieferanten-Rechnungen BillsSuppliersUnpaidForCompany=Unbezahlte Rechnungen des Lieferanten %s BillsLate=Verspätete Zahlungen BillsStatistics=Statistik Kundenrechnungen @@ -76,7 +76,7 @@ PaymentRule=Zahlungsregel PaymentMode=Zahlungsart PaymentTerm=Zahlungskonditionen PaymentConditions=Zahlungsbedingungen -PaymentConditionsShort=Zahlungsbedingungen +PaymentConditionsShort=Zahlungsziel PaymentAmount=Zahlungsbetrag ValidatePayment=Zahlung freigeben PaymentHigherThanReminderToPay=Zahlungsbetrag übersteigt Zahlungserinnerung @@ -84,17 +84,17 @@ HelpPaymentHigherThanReminderToPay=Achtung, die Zahlung eines oder mehrerer Rech HelpPaymentHigherThanReminderToPaySupplier=Achtung, der Zahlungsbetrag einer oder mehrerer Rechnungen ist höher als der offene Restbetrag.<br>Bearbeiten Sie Ihre Eingabe oder bestätigen Sie die Überzahlung. ClassifyPaid=Als 'bezahlt' markieren ClassifyPaidPartially=Als 'teilweise bezahlt' markieren -ClassifyCanceled=Als 'storniert' markieren +ClassifyCanceled=Rechnung 'aufgegeben' ClassifyClosed=Als 'geschlossen' markieren ClassifyUnBilled=Als "nicht verrechnet" markieren CreateBill=Erstelle Rechnung AddBill=Rechnung/Gutschrift erstellen AddToDraftInvoices=Zu Rechnungsentwurf hinzufügen DeleteBill=Lösche Rechnung -SearchACustomerInvoice=Suche Kundenrechnung -SearchASupplierInvoice=Suche Lieferantenrechnung -CancelBill=Rechnung stornieren -SendRemindByMail=Zahlungserinnerung per E-Mail senden +SearchACustomerInvoice=Kundenrechnung suchen +SearchASupplierInvoice=Lieferantenrechnung suchen +CancelBill=Rechnung aufgeben +SendRemindByMail=Zahlungserinnerung per E-Mail versenden DoPayment=Zahlung tätigen DoPaymentBack=Rückzahlung tätigen ConvertToReduc=In Rabatt umwandeln @@ -103,15 +103,15 @@ EnterPaymentDueToCustomer=Kundenzahlung fällig stellen DisabledBecauseRemainderToPayIsZero=Deaktiviert, da Zahlungserinnerung auf null steht Amount=Betrag PriceBase=Preis -BillStatus=Rechnungsstatus +BillStatus=Rechnung Status BillStatusDraft=Entwurf (freizugeben) BillStatusPaid=Bezahlt BillStatusPaidBackOrConverted=Bezahlt oder in Rabatt umgewandelt BillStatusConverted=Umgerechnet auf Rabatt -BillStatusCanceled=Storniert +BillStatusCanceled=Aufgegeben BillStatusValidated=Freigegeben (zu bezahlen) BillStatusStarted=Begonnen -BillStatusNotPaid=Offen +BillStatusNotPaid=nicht bezahlt BillStatusClosedUnpaid=Geschlossen (unbezahlt) BillStatusClosedPaidPartially=Bezahlt (teilweise) BillShortStatusDraft=Entwurf @@ -121,7 +121,7 @@ BillShortStatusConverted=Verarbeitete BillShortStatusCanceled=Storniert BillShortStatusValidated=Freigegeben BillShortStatusStarted=Begonnen -BillShortStatusNotPaid=Offen +BillShortStatusNotPaid=offen BillShortStatusClosedUnpaid=Geschlossen BillShortStatusClosedPaidPartially=Bezahlt (teilweise) PaymentStatusToValidShort=Freizugeben @@ -136,7 +136,7 @@ ErrorInvoiceOfThisTypeMustBePositive=Fehler: Rechnungen dieses Typs verlangen na ErrorCantCancelIfReplacementInvoiceNotValidated=Fehler: Sie können keine Rechnung stornieren, deren Ersatzrechnung sich noch im Status 'Entwurf' befindet BillFrom=Von BillTo=An -ActionsOnBill=Maßnahmen zu dieser Rechnung +ActionsOnBill=Ereignisse zu dieser Rechnung NewBill=Neue Rechnung LastBills=%s neueste Rechnungen LastCustomersBills=%s neueste Kundenrechnungen @@ -151,8 +151,8 @@ ConfirmDeleteBill=Möchten Sie diese Rechnung wirklich löschen? ConfirmValidateBill=Möchten Sie die Rechnung Nr. <b>%s</b> wirklich freigeben? ConfirmUnvalidateBill=Sind Sie sicher, dass Sie die Rechnung <b>%s</b> wieder in den Entwurfstatus ändern möchten? ConfirmClassifyPaidBill=Sind Sie sicher, dass Sie ändern möchten <b>Rechnung %s,</b> um den Status bezahlt? -ConfirmCancelBill=Möchten Sie die Rechnung <b>%s</b> wirklich stornieren? -ConfirmCancelBillQuestion=Warum wollen Sie klassifizieren diese Rechnung "aufgegeben"? +ConfirmCancelBill=Möchten Sie die Rechnung <b>%s</b> wirklich aufgeben? +ConfirmCancelBillQuestion=Warum möchten Sie diese Rechnung als "aufgegeben" klassifizieren? ConfirmClassifyPaidPartially=Möchten Sie die Rechnung <b>%s</b> wirklich als 'teilweise bezahlt' markieren? ConfirmClassifyPaidPartiallyQuestion=Diese Rechnung wurde nicht vollständig bezahlt. Was sind Gründe für das Schließen dieser Rechnung? ConfirmClassifyPaidPartiallyReasonAvoir=Der offene Zahlbetrag <b>( %s %s)</b> resultiert aus einem gewährten Skonto. Zur Korrektur der MwSt. wird eine Gutschrift angelegt. @@ -177,7 +177,7 @@ UnvalidateBill=Ungültige Rechnung NumberOfBills=Anzahl der Rechnungen NumberOfBillsByMonth=Anzahl Rechnungen pro Monat AmountOfBills=Anzahl der Rechnungen -AmountOfBillsByMonthHT=Anzahl der Rechnungen pro Monat (nach Steuern) +AmountOfBillsByMonthHT=Gesamtbetrag Rechnungen pro Monat (inkl. Steuern) ShowSocialContribution=Zeige Sozialbeitrag ShowBill=Zeige Rechnung ShowInvoice=Zeige Rechnung @@ -189,7 +189,7 @@ File=Datei AlreadyPaid=Bereits bezahlt AlreadyPaidBack=Bereits zurückbezahlt AlreadyPaidNoCreditNotesNoDeposits=Bereits bezahlte (ohne Gutschriften und Einlagen) -Abandoned=Weggefallen +Abandoned=Aufgegeben RemainderToPay=Offener Zahlbetrag RemainderToTake=Verbleibender Restbetrag RemainderToPayBack=Zurück zu zahlender Restbetrag @@ -199,7 +199,7 @@ ExcessReceived=Erhaltener Überschuss EscompteOffered=Rabatt angeboten (Skonto) SendBillRef=Einreichung der Rechnung %s SendReminderBillRef=Einreichung von Rechnung %s (Erinnerung) -StandingOrders=Daueraufträge +StandingOrders=Lastschriftverfahren StandingOrder=Dauerauftrag NoDraftBills=Keine Rechnungsentwürfe NoOtherDraftBills=Keine Rechnungsentwürfe Anderer @@ -207,8 +207,8 @@ NoDraftInvoices=Keine Rechnungsentwürfe RefBill=Rechnungs Nr. ToBill=Zu verrechnen RemainderToBill=Zu verrechnender Restbetrag -SendBillByMail=Rechnung per E-Mail senden -SendReminderBillByMail=Erinnerung per E-Mail senden +SendBillByMail=Rechnung per E-Mail versenden +SendReminderBillByMail=Erinnerung per E-Mail versenden RelatedCommercialProposals=Verknüpfte Angebote MenuToValid=Zur Freigabe DateMaxPayment=Zahlungsziel @@ -268,7 +268,7 @@ DiscountStillRemaining=Noch verbleibender Rabatt DiscountAlreadyCounted=Rabatt bereits berücksichtigt BillAddress=Rechnungsanschrift HelpEscompte=Bei diesem Rabatt handelt es sich um einen Skonto. -HelpAbandonBadCustomer=Dieser Betrag wurde aufgegeben (Kundennverschulden) ist als uneinbringlich zu werten. +HelpAbandonBadCustomer=Dieser Betrag wurde aufgegeben (Kundenverschulden) ist als uneinbringlich zu werten. HelpAbandonOther=Dieser Betrag wurde auf Grund eines Fehlers aufgegeben (falsche Rechnung oder an falschen Kunden) IdSocialContribution=Sozialbeitrags id PaymentId=Zahlung id @@ -286,7 +286,7 @@ CloneInvoice=Rechnung duplizieren ConfirmCloneInvoice=Möchten sie die Rechnung <b>%s</b> wirklich duplizieren? DisabledBecauseReplacedInvoice=Aktion unzulässig, da die betreffende Rechnung ersetzt wurde DescTaxAndDividendsArea=Dieser Bereich stellt eine Übersicht aller Zahlungen für sonstige Ausgaben dar. Nur Datensätze mit Zahlung im festgelegten Jahr sind enthalten. -NbOfPayments=Zahl der Zahlungen +NbOfPayments=Anzahl der Zahlungen SplitDiscount=Split Rabatt in zwei ConfirmSplitDiscount=Sind Sie sicher, dass Sie diesen Rabatt in Höhe von <b>%s</b>%s in 2 kleinere Rabatte teilen wollen? TypeAmountOfEachNewDiscount=Input für jeden der zwei Teile: @@ -345,7 +345,7 @@ Residence=Wohnsitz IBANNumber=IBAN-Nummer IBAN=IBAN BIC=BIC/SWIFT -BICNumber=BIC/SWIFT Code +BICNumber=BIC Code ExtraInfos=Zusatzinformationen RegulatedOn=Gebucht am ChequeNumber=Schecknummer @@ -428,7 +428,7 @@ ModifyAllLines=Bearbeite alle Zeilen CreateNextSituationInvoice=Erstelle nächsten Position NotLastInCycle=Diese Rechnung ist nicht die letzte im Zyklus und darf nicht geändert werden. DisabledBecauseNotLastInCycle=Der folgende Situation ist bereits vorhanden. -DisabledBecauseFinal=Diese Situation ist vollständig. +DisabledBecauseFinal=Dieser Status ist endgültig. CantBeLessThanMinPercent=Der Fortschritt kann nicht kleiner als sein bisheriger Wert werden. NoSituations=Keine offenen Positionen InvoiceSituationLast=Allgemeine Endrechnung diff --git a/htdocs/langs/de_DE/bookmarks.lang b/htdocs/langs/de_DE/bookmarks.lang index 076956adba6e9680a7a21e2d47ba5e5fecc4fcca..78f28cf4a1eed4725266b376e84e7178d5d46fdd 100644 --- a/htdocs/langs/de_DE/bookmarks.lang +++ b/htdocs/langs/de_DE/bookmarks.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - marque pages -AddThisPageToBookmarks=Fügen Sie diese Seite zu Ihren Lesezeichen hinzu +AddThisPageToBookmarks=Anfügen dieser Seite zu den Lesezeichen Bookmark=Lesezeichen Bookmarks=Lesezeichen NewBookmark=Neues Lesezeichen @@ -9,11 +9,11 @@ ReplaceWindow=Aktuelles Fenster ersetzen BookmarkTargetNewWindowShort=Neues Fenster BookmarkTargetReplaceWindowShort=Aktuelles Fenster BookmarkTitle=Titel des Lesezeichens -UrlOrLink=URL +UrlOrLink=Link BehaviourOnClick=Verhalten bei Klick auf den Link -CreateBookmark=Erstelle Lesezeichen -SetHereATitleForLink=Geben Sie hier einen Linktitel ein -UseAnExternalHttpLinkOrRelativeDolibarrLink=Verwenden Sie eine externe http-URL oder eine URL relativ zum Systempfad +CreateBookmark=Lesezeichen erstellen +SetHereATitleForLink=Erfasse hier einen Titel für das Lesezeichen +UseAnExternalHttpLinkOrRelativeDolibarrLink=Verwenden Sie eine absolute externe URL oder eine relative Dolibarr URL ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Bitte wählen Sie, ob sich ein geklickter Link in einem neuen oder demselben Fenster öffnet -BookmarksManagement=Lesezeichen verwalten +BookmarksManagement=Verwalten von Lesezeichen ListOfBookmarks=Liste der Lesezeichen diff --git a/htdocs/langs/de_DE/boxes.lang b/htdocs/langs/de_DE/boxes.lang index ea6180a654231d02b4a4eca7b3230f03cdd2f186..3f6cfa6b610f9bb69faceb4ebf499ad32f8328e1 100644 --- a/htdocs/langs/de_DE/boxes.lang +++ b/htdocs/langs/de_DE/boxes.lang @@ -14,7 +14,7 @@ BoxLastSuppliers=Zuletzt bearbeitete Lieferanten BoxLastCustomerOrders=Zuletzt bearbeitete Kundenaufträge BoxLastValidatedCustomerOrders=Letzte freigegebene Kundenaufträge BoxLastBooks=Zuletzt bearbeitete Konten -BoxLastActions=Zuletzt bearbeitete Maßnahmen +BoxLastActions=Zuletzt bearbeitete Ereignisse BoxLastContracts=Zuletzt abgeschlossene Verträge BoxLastContacts=Letzte Kontakte/Adressen BoxLastMembers=Letzte Mitglieder @@ -24,7 +24,7 @@ BoxSalesTurnover=Umsatz BoxTotalUnpaidCustomerBills=Summe offener Kundenrechnungen (OP Gesamt) BoxTotalUnpaidSuppliersBills=Summe offener Lieferantenrechnungen BoxTitleLastBooks=Letzte %s aufgezeichnet Bücher -BoxTitleNbOfCustomers=Nombre de-Client +BoxTitleNbOfCustomers=Anzahl der Kunden BoxTitleLastRssInfos=%s letzte Neuigkeiten aus %s BoxTitleLastProducts=Letzte %s bearbeitete Produkte/Leistungen BoxTitleProductsAlertStock=Lagerbestands-Warnungen @@ -55,7 +55,7 @@ BoxTitleLastModifiedContacts=Zuletzt geändert %s Kontakte/Adressen BoxMyLastBookmarks=Meine %s letzten Lesezeichen BoxOldestExpiredServices=Die ältesten abgelaufenen aktiven Dienste BoxLastExpiredServices=Letzte %s ältesten aktive Kontakte mit abgelaufenem Diensten -BoxTitleLastActionsToDo=%s letzte Maßnahmen zur Erledigung +BoxTitleLastActionsToDo=%s letzte Ereignisse zu erledigen BoxTitleLastContracts=%s zuletzt bearbeitete Verträge BoxTitleLastModifiedDonations=Zuletzt geändert %s Spenden BoxTitleLastModifiedExpenses=Zuletzt geändert %s Aufwendungen @@ -63,10 +63,10 @@ BoxGlobalActivity=Globale Aktivität (Rechnungen, Angebote, Aufträge) FailedToRefreshDataInfoNotUpToDate=Fehler beim RSS-Abruf. Letzte erfolgreiche Aktualisierung: %s LastRefreshDate=Letztes Aktualisierungsdatum NoRecordedBookmarks=Keine Lesezeichen gesetzt. Klicken Sie <a href="%s">hier</a>, um ein Lesezeichen zu setzen. -ClickToAdd=Hir klicken um hinzuzufügen. +ClickToAdd=Hier klicken um hinzuzufügen. NoRecordedCustomers=Keine erfassten Kunden NoRecordedContacts=Keine erfassten Kontakte -NoActionsToDo=Keine Maßnahmen gesetzt +NoActionsToDo=Keine Aufgaben/Termine zu erledigen NoRecordedOrders=Keine erfassten Kundenaufträge NoRecordedProposals=Keine erfassten Angebote NoRecordedInvoices=Keine erfassten Kundenrechnungen @@ -85,13 +85,13 @@ BoxTitleLatestModifiedSupplierOrders=Letzte %s bearbeiteten Lieferantenbestellun NoSupplierOrder=Keine bearbeiteten Lieferantenbestellungen BoxCustomersInvoicesPerMonth=Kundenrechnungen pro Monat BoxSuppliersInvoicesPerMonth=Lieferantenrechnungen pro Monat -BoxCustomersOrdersPerMonth=Kundenbestellungen pro Monat +BoxCustomersOrdersPerMonth=Kundenaufträge pro Monat BoxSuppliersOrdersPerMonth=Lieferantenbestellungen pro Monat BoxProposalsPerMonth=Angebote pro Monat NoTooLowStockProducts=Keine Produkte unter der min. Warenlimite BoxProductDistribution=Verteilung von Produkten/Leistungen BoxProductDistributionFor=Verteilung von %s für %s ForCustomersInvoices=Kundenrechnungen -ForCustomersOrders=Kundenbestellungen +ForCustomersOrders=Kundenaufträge ForProposals=Angebote LastXMonthRolling=Die letzten %s Monate rollier diff --git a/htdocs/langs/de_DE/cashdesk.lang b/htdocs/langs/de_DE/cashdesk.lang index 7c8f36a2b903bb89352848d930868b3fc8d7966e..6a408c7dd2c714b62261c11c17654f8df5f5e2f3 100644 --- a/htdocs/langs/de_DE/cashdesk.lang +++ b/htdocs/langs/de_DE/cashdesk.lang @@ -31,10 +31,10 @@ TotalTicket=Gesamtanzahl Ticket NoVAT=Keine Mehrwertsteuer bei diesem Verkauf Change=Überschüss erhalten CalTip=Klicken um den Kalender anzuzeigen -CashDeskSetupStock=Das bei der Rechnungserstellung der Bestand gemindet wird ist nicht definiert. Ändern Sie die Einstellungen oder wechseln Sie das Lager. +CashDeskSetupStock=Der Bestand wird bei der Rechnungserstellung gemindert es wurde jedoch kein Lager dafür definiert. <br>Ändern Sie die Einstellung oder wechseln Sie das Lager. BankToPay=Kundenkonto ShowCompany=Zeige Unternehmen ShowStock=Zeige Lager DeleteArticle=Klicken, um diesen Artikel zu entfernen FilterRefOrLabelOrBC=Suche (Ref/Label) -# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. +UserNeedPermissionToEditStockToUsePos=Sie bitten, ab dem Rechnungserstellung zu verringern, so dass Benutzer, die POS verwenden müssen, um die Erlaubnis, Lager zu bearbeiten. diff --git a/htdocs/langs/de_DE/categories.lang b/htdocs/langs/de_DE/categories.lang index ce96c9c15db8c9c1e48a70fcf12a18ac410c2d97..07224c8db73a61853db5a5cb49131543610227a7 100644 --- a/htdocs/langs/de_DE/categories.lang +++ b/htdocs/langs/de_DE/categories.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - categories -Rubrique=Kategorie -Rubriques=Kategorien -categories=Kategorien +Rubrique=Schlagwort/Kategorie +Rubriques=Schlagwörter/Kategorien +categories=Schlagwörter/Kategorien TheCategorie=Die Kategorie NoCategoryYet=Keine Kategorie von dieser Art erstellt In=In @@ -51,7 +51,7 @@ MemberIsInCategories=Dieses Mitglied ist folgenden Kategorien zugewiesen ContactIsInCategories=Dieser Kontakt ist folgenden Kategorien zugewiesen ProductHasNoCategory=Dieses Produkt/Service ist keiner Kategorie zugewiesen. SupplierHasNoCategory=Dieser Lieferant ist keiner Kategorie zugewiesen. -CompanyHasNoCategory= Dieses Unternehmen ist keiner Kategorie zugewiesen. +CompanyHasNoCategory= Dieser Partner ist keiner Kategorie zugewiesen. MemberHasNoCategory= Dieses Mitglied ist keiner Kategorie zugewiesen. ContactHasNoCategory= Dieser Kontakt ist keiner Kategorie zugewiesen. ClassifyInCategory=Folgender Kategorie zuweisen diff --git a/htdocs/langs/de_DE/commercial.lang b/htdocs/langs/de_DE/commercial.lang index 81b3a207484487c91069e2be6d600e31b5097ea0..98dbeaa859951dcaf57e30c0e8458ebb3c8c1817 100644 --- a/htdocs/langs/de_DE/commercial.lang +++ b/htdocs/langs/de_DE/commercial.lang @@ -7,22 +7,22 @@ Customer=Kunde Customers=Kunden Prospect=Lead Prospects=Leads -DeleteAction=Maßnahme / Aufgabe löschen -NewAction=Neue Maßnahme / Aufgabe -AddAction=Maßnahme/Aufgabe erstellen -AddAnAction=Maßnahme/Aufgabe erstellen +DeleteAction=Termin/Aufgabe löschen +NewAction=Neue/r Termin/Aufgabe +AddAction=Termin/Aufgabe erstellen +AddAnAction=Termin/Aufgabe erstellen AddActionRendezVous=erstelle Termin -Rendez-Vous=Treffen +Rendez-Vous=Verabreden ConfirmDeleteAction=Möchten Sie diese Aufgabe wirklich löschen? -CardAction=Maßnahmenkarte +CardAction=Ereignisse Übersicht PercentDone=Fortschritt ActionOnCompany=Partner ActionOnContact=Kontakt TaskRDV=Treffen TaskRDVWith=Treffen mit %s ShowTask=Zeige Aufgabe -ShowAction=Zeige Maßnahme -ActionsReport=Maßnahmenbericht +ShowAction=Ereignisse anzeigen +ActionsReport=Ereignis Report ThirdPartiesOfSaleRepresentative=Partner mit Vertriebsmitarbeiter SalesRepresentative=Vertriebsmitarbeiter SalesRepresentatives=Vertreter @@ -37,23 +37,23 @@ ListOfProspects=Leads-Liste ListOfCustomers=Kundenliste LastDoneTasks=Letzte %s abgeschlossene Aufgaben LastRecordedTasks=Letzte Aufgaben -LastActionsToDo=Letzte %s älteste, nicht abgeschlossene Maßnahmen -DoneAndToDoActionsFor=Abgeschlossene und zu erledigende Maßnahmen für %s -DoneAndToDoActions=Abgeschlossene und zu erledigende Maßnahmen -DoneActions=Abgeschlossene Maßnahmen -DoneActionsFor=Abgeschlossene Maßnahmen für %s -ToDoActions=Unvollständige Maßnahmen -ToDoActionsFor=Unvollständige Maßnahmen für %s +LastActionsToDo=Letzte %s älteste, nicht erled. Aufgaben/Termine +DoneAndToDoActionsFor=Abgeschlossene und unvollständige Ereignisse für %s +DoneAndToDoActions=Abgeschlossene und zu unvollständige Ereignisse +DoneActions=Abgeschlossene Ereignisse +DoneActionsFor=Abgeschlossene Ereignisse für %s +ToDoActions=Unvollständige Ereignisse +ToDoActionsFor=Unvollständige Ereignisse für %s SendPropalRef=Einreichung der Angebote %s SendOrderRef=Einreichung der Bestellung %s StatusNotApplicable=Nicht anwendbar StatusActionToDo=Zu erledigen StatusActionDone=Abgeschlossen -MyActionsAsked=Selbst angelegte Maßnahmen +MyActionsAsked=Ereignisse von mir erzeugt MyActionsToDo=Meine To-Do-Liste MyActionsDone=Meine abgeschlossenen Ereignisse StatusActionInProcess=In Bearbeitung -TasksHistoryForThisContact=Maßnahmen zu diesem Kontakt +TasksHistoryForThisContact=Ereignisse zu diesem Kontakt LastProspectDoNotContact=Nicht kontaktieren LastProspectNeverContacted=Noch nicht kontaktiert LastProspectToContact=Zu kontaktieren @@ -61,9 +61,9 @@ LastProspectContactInProcess=Kontaktaufnahme läuft LastProspectContactDone=Kontaktaufnahme erledigt DateActionPlanned=Geplantes Erledigungsdatum DateActionDone=Echtes Erledigungsdatum -ActionAskedBy=Maßnahme erbeten von +ActionAskedBy=Ereignis erstellt von ActionAffectedTo=Ereignis zugewiesen an -ActionDoneBy=Maßnahme erledigt von +ActionDoneBy=Ereignis erledigt von ActionUserAsk=Aufgenommen durch ErrorStatusCantBeZeroIfStarted=Ist das Feld '<b>Echtes Erledigungsdatum</b>' ausgefüllt, so wurde die Aktion bereits gestartet (oder beendet) und der '<b>Status</b>' kann nicht 0%% sein. ActionAC_TEL=Anruf diff --git a/htdocs/langs/de_DE/companies.lang b/htdocs/langs/de_DE/companies.lang index 715434bc44f6a42a7cf862d1768218656522cd0c..39fb77901eac2b45f14400fdd2654cb45005058b 100644 --- a/htdocs/langs/de_DE/companies.lang +++ b/htdocs/langs/de_DE/companies.lang @@ -73,7 +73,7 @@ Chat=Chat PhonePro=Telefon berufl. PhonePerso=Telefon privat PhoneMobile=Mobiltelefon -No_Email=Versenden sie keine Spammails +No_Email=keine E-Mail-Kampagne senden Fax=Fax Zip=PLZ Town=Stadt @@ -265,7 +265,7 @@ EditContact=Kontakt bearbeiten EditContactAddress=Kontakt/Adresse bearbeiten Contact=Kontakt ContactsAddresses=Kontakte/Adressen -NoContactDefinedForThirdParty=Für diesen Kunden ist keine Adresse angegeben +NoContactDefinedForThirdParty=Für diesen Partner ist kein Kontakt eingetragen NoContactDefined=Kein Kontakt für diesen Partner DefaultContact=Standardkontakt AddCompany=Firma erstellen @@ -304,7 +304,7 @@ ContactForInvoices=Rechnungskontakt NoContactForAnyOrder=Kein Kontakt für Bestellungen NoContactForAnyProposal=Kein Kontakt für Offerte NoContactForAnyContract=Kein Kontakt für Verträge -NoContactForAnyInvoice=Kein Kontakt für Rechnungen +NoContactForAnyInvoice=Dieser Kontakt ist kein Kontakt für jegliche Rechnung NewContact=Neuer Kontakt NewContactAddress=Neuer Kontakt/Adresse LastContacts=Letzte Kontakte @@ -323,7 +323,7 @@ VATIntraManualCheck=Sie können die Überprüfung auch manuell durchführen <a h ErrorVATCheckMS_UNAVAILABLE=Anfrage nicht möglich. Überprüfungsdienst wird vom Mitgliedsland nicht angeboten (%s). NorProspectNorCustomer=sonstige Adresse JuridicalStatus=Rechtsform -Staff=Mitarbeiter +Staff=Mitarbeiterzahl ProspectLevelShort=Potenzial ProspectLevel=Lead-Potenzial ContactPrivate=Privat @@ -365,7 +365,7 @@ NoParentCompany=Keine Mutterfirma ExportImport=Import-Export ExportCardToFormat=Karte in Format exportieren ContactNotLinkedToCompany=Kontakt keinem Partner zugeordnet -DolibarrLogin=Login +DolibarrLogin=Dolibarr Benutzername NoDolibarrAccess=Kein Zugang ExportDataset_company_1=Partner (Unternehmen/Stiftungen/Personen) und Eigenschaften ExportDataset_company_2=Kontakte und Eigenschaften diff --git a/htdocs/langs/de_DE/compta.lang b/htdocs/langs/de_DE/compta.lang index 7b70ba6c288748b6dd95107cdcb56188647ae85c..249e8bd2daa13338d2bac0e8ec38761976307f75 100644 --- a/htdocs/langs/de_DE/compta.lang +++ b/htdocs/langs/de_DE/compta.lang @@ -38,20 +38,20 @@ Withdrawal=Entnahme Withdrawals=Entnahmen AmountHTVATRealReceived=Einnahmen (netto) AmountHTVATRealPaid=Ausgaben (netto) -VATToPay=Zu zahlende MwSt. +VATToPay=MwSt. Verkäufe - USt. VATReceived=Erhobene MwSt. -VATToCollect=Zu erhebende MwSt. +VATToCollect=MwSt. Einkäufe - VSt. VATSummary=MwSt. Saldo LT2SummaryES=EKSt. Übersicht -LT1SummaryES=RE Balance +LT1SummaryES=Saldo RE VATPaid=Bezahlte MwSt. SalaryPaid=Gezahlter Lohn LT2PaidES=EKSt. gezahlt LT1PaidES=RE Zahlungen LT2CustomerES=EKSt. Verkauf LT2SupplierES=EKSt. Einkauf -LT1CustomerES=RE sales -LT1SupplierES=RE purchases +LT1CustomerES=RE Verkäufe +LT1SupplierES=RE Einkäufe VATCollected=Erhobene MwSt. ToPay=Zu zahlen ToGet=Zu erhalten @@ -84,11 +84,11 @@ DateStartPeriod=Startdatum für Zeitraum DateEndPeriod=Enddatum für Zeitraum NewVATPayment=Neue MwSt. Zahlung newLT2PaymentES=Neue EKSt. Zahlung -newLT1PaymentES=New RE payment +newLT1PaymentES=Neue RE Zahlung LT2PaymentES=EKSt. Zahlung LT2PaymentsES=EKSt. Zahlungen -LT1PaymentES=RE Payment -LT1PaymentsES=RE Payments +LT1PaymentES=RE Zahlung +LT1PaymentsES=RE Zahlungen VATPayment=MwSt.-Zahlung VATPayments=MwSt-Zahlungen SocialContributionsPayments=Sozialbeitragszahlungen @@ -122,15 +122,15 @@ DeleteSocialContribution=Sozialbeitrag löschen ConfirmDeleteSocialContribution=Möchten Sie diesen Sozialbeitrag wirklich löschen? ExportDataset_tax_1=Sozialbeiträge und Zahlungen CalcModeVATDebt=Modus <b>%s Mwst. auf Engagement Rechnungslegung %s</b>. -CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>. -CalcModeDebt=Mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>. -CalcModeEngagement=Mode <b>%sIncomes-Expenses%s</b> said <b>cash accounting</b> -CalcModeLT1= Mode <b>%sRE on customer invoices - suppliers invoices%s</b> -CalcModeLT1Debt=Mode <b>%sRE on customer invoices%s</b> -CalcModeLT1Rec= Mode <b>%sRE on suppliers invoices%s</b> -CalcModeLT2= Mode <b>%sIRPF on customer invoices - suppliers invoices%s</b> -CalcModeLT2Debt=Mode <b>%sIRPF on customer invoices%s</b> -CalcModeLT2Rec= Mode <b>%sIRPF on suppliers invoices%s</b> +CalcModeVATEngagement=Modus <b>%sTVA auf Einnahmen-Ausgaben%s</b>. +CalcModeDebt=Modus <b>%sForderungen-Verbindlichkeiten%s</b> sagt <b>Engagement Rechnungslegung.</b> +CalcModeEngagement=Modus <b>%sEinnahmen-Ausgaben%s</b> die <b>Kassenbuchführung</b> +CalcModeLT1= Modus <b>%sRE auf Kundenrechnungen - Lieferantenrechnungen%s</b> +CalcModeLT1Debt=Modus <b>%sRE auf Kundenrechnungen%s</b> +CalcModeLT1Rec= Modus <b>%sRE auf Lieferantenrechnungen%s</b> +CalcModeLT2= Modus<b>%sIRPF auf Kundenrechnungen - Lieferanten Rechnungen%s</b> +CalcModeLT2Debt=Modus <b>%sIRPF auf Kundenrechnungen%s</b> +CalcModeLT2Rec= Modus <b>%sIRPF aufLieferantenrechnungen%s</b> AnnualSummaryDueDebtMode=Saldo der Erträge und Aufwendungen, Jahresübersicht AnnualSummaryInputOutputMode=Saldo der Erträge und Aufwendungen, Jahresübersicht AnnualByCompaniesDueDebtMode=Die Einnahmen/Ausgaben-Bilanz nach Partnern im Modus <b>%sForderungen-Verbindlichkeiten%s</b> meldet <b>Kameralistik</b>. @@ -145,14 +145,14 @@ RulesCAIn=- Beinhaltet alle tatsächlich erfolgten Zahlungen von Kunden.<br>- Es DepositsAreNotIncluded=- Noch sind Anzahlungsrechnungen inbegriffen DepositsAreIncluded=- Anzahlungsrechnungen sind inbegriffen LT2ReportByCustomersInInputOutputModeES=Bericht von Partner EKSt. -LT1ReportByCustomersInInputOutputModeES=Report by third party RE +LT1ReportByCustomersInInputOutputModeES=Bericht von Kunden RE VATReportByCustomersInInputOutputMode=Bericht zur vereinnahmten und bezahlten MwSt. nach Kunden VATReportByCustomersInDueDebtMode=Bericht zur vereinnahmten und bezahlten MwSt. nach Kunden VATReportByQuartersInInputOutputMode=Quartalsbericht zur vereinnahmten und bezahlten MwSt. -LT1ReportByQuartersInInputOutputMode=Report by RE rate +LT1ReportByQuartersInInputOutputMode=Bericht von RE Rate LT2ReportByQuartersInInputOutputMode=Quartal-Bericht EKSt. Rate VATReportByQuartersInDueDebtMode=Quartalsbericht zur vereinnahmten und bezahlten MwSt. -LT1ReportByQuartersInDueDebtMode=Report by RE rate +LT1ReportByQuartersInDueDebtMode=Bericht von RE Ratex LT2ReportByQuartersInDueDebtMode=Quartal-Bericht EKSt. Rate SeeVATReportInInputOutputMode=Siehe <b>%sMwSt.-Einnahmen%s</b>-Bericht für eine standardmäßige Berechnung SeeVATReportInDueDebtMode=Siehe <b>%sdynamischen MwSt.%s</b>-Bericht für eine Berechnung mit dynamischer Option @@ -195,7 +195,7 @@ Mode1=Methode 1 Mode2=Methode 2 CalculationRuleDesc=Zur Berechnung der Gesamt-MwSt. gibt es zwei Methoden: <br>Methode 1 rundet die Steuer in jeder Zeile und addiert zum Schluss. <br>Methode 2 summiert alle Steuer-Zeilen und rundet am Ende. <br>Das endgültige Ergebnis kann sich in wenigen Cent unterscheiden. Standardmodus ist <b>Modus %s.</b> CalculationRuleDescSupplier=Wählen Sie die geeignete Methode, um zum gleichen Ergebnis wie Ihr Lieferant zu kommen. -TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a <b>cash accountancy</b> mode is not relevant. This report is only available when using <b>engagement accountancy</b> mode (see setup of accountancy module). +TurnoverPerProductInCommitmentAccountingNotRelevant=Umsatz Bericht pro Produkt, bei der Verwendung einer <b>Kassabuch Buchhaltung</b> ist der Modus nicht relevant. Dieser Bericht ist nur bei Verwendung <b>Buchführungsmodus Periodenrechnung</b> (siehe Setup das Modul Buchhaltung). CalculationMode=Berechnungsmodus AccountancyJournal=Buchhaltungscode-Journal ACCOUNTING_VAT_ACCOUNT=Standard-Erlöskonto, um MwSt einzuziehen diff --git a/htdocs/langs/de_DE/contracts.lang b/htdocs/langs/de_DE/contracts.lang index b6ed03c343ce2cd839542a920ba90d04370b48bb..9657804b2414cb4a98c5a578dd9cc2005177f479 100644 --- a/htdocs/langs/de_DE/contracts.lang +++ b/htdocs/langs/de_DE/contracts.lang @@ -22,19 +22,19 @@ Contracts=Verträge ContractsAndLine=Verträge und Zeilen von Verträgen Contract=Vertrag NoContracts=Keine Verträge -MenuServices=Services -MenuInactiveServices=Inaktive Services -MenuRunningServices=Aktive Services -MenuExpiredServices=Abgelaufene Services +MenuServices=Leistungen +MenuInactiveServices=Inaktive Leistungen +MenuRunningServices=Laufende Leistungen +MenuExpiredServices=Abgelaufene Leistungen MenuClosedServices=Geschlossene Services NewContract=Neuer Vertrag AddContract=Vertrag erstellen -SearchAContract=Suche einen Vertrag +SearchAContract=Kundenvertrag suchen DeleteAContract=Löschen eines Vertrages CloseAContract=Schließen eines Vertrages ConfirmDeleteAContract=Möchten Sie diesen Vertrag und alle verbundenen Services wirklich löschen? ConfirmValidateContract=Möchten Sie diesen Vertrag wirklich freigeben? -ConfirmCloseContract=Dies schließt auch alle verbundenen Services (aktiv oder nicht). Möchten Sie den Vertrag dennoch schließen? +ConfirmCloseContract=Dies schließt auch alle verbundenen Leistungen (aktiv oder nicht). Sind sie sicher, dass Sie den Vertrag schließen möchten? ConfirmCloseService=Möchten Sie dieses Service wirklich mit Datum <b>%s</b> schließen? ValidateAContract=Einen Vertrag freigeben ActivateService=Service aktivieren @@ -76,7 +76,7 @@ BoardRunningServices=Abgelaufene, aktive Leistungen ServiceStatus=Leistungs-Status DraftContracts=Vertragsentwürfe CloseRefusedBecauseOneServiceActive=Schließen nicht möglich, es existieren noch aktive Leistungen -CloseAllContracts=Alle Verträge schließen +CloseAllContracts=schließe alle Vertragsleistungen DeleteContractLine=Vertragsposition löschen ConfirmDeleteContractLine=Möchten Sie diese Vertragsposition wirklich löschen? MoveToAnotherContract=In einen anderen Vertrag verschieben diff --git a/htdocs/langs/de_DE/cron.lang b/htdocs/langs/de_DE/cron.lang index b9771b15595889161a4075c7b4d5de5d3bd2012f..f7e204ab99e2a6401186ab2e9552bf0c237e1308 100644 --- a/htdocs/langs/de_DE/cron.lang +++ b/htdocs/langs/de_DE/cron.lang @@ -26,7 +26,7 @@ CronLastOutput=Ausgabe der letzten Ausführung CronLastResult=Letzter Resultatcode CronListOfCronJobs=Liste der geplanten Jobs CronCommand=Befehl -CronList=Geplante cronjobs +CronList=Cronjob Liste CronDelete=cronjobs löschen CronConfirmDelete=Möchten Sie diesen Cronjob wirklich löschen? CronExecute=Starte geplante cronjobs @@ -35,8 +35,8 @@ CronInfo=Das Schedule Cron-Jobs Module erlaubt die geplanten Cron-Jobs die prog CronWaitingJobs=Wartende Jobs CronTask=Job CronNone=Keine -CronDtStart=Startdatum -CronDtEnd=Vertragsende +CronDtStart=Beginnzeit +CronDtEnd=Endet CronDtNextLaunch=Nächste Ausführung CronDtLastLaunch=Letzte Ausführung CronFrequency=Häufigkeit @@ -69,11 +69,11 @@ CronTaskInactive=Dieser Job ist deaktiviert CronDtLastResult=Datum letztes Resultat CronId=ID CronClassFile=Klassen (filenames.class.php) -CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module). <BR> For exemple to fetch method of Dolibarr Product object /htdocs/<u>product</u>/class/product.class.php, the value of module is <i>product</i> -CronClassFileHelp=The file name to load. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/<u>product.class.php</u>, the value of class file name is <i>product.class.php</i> -CronObjectHelp=The object name to load. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is <i>Product</i> -CronMethodHelp=The object method to launch. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is is <i>fecth</i> -CronArgsHelp=The method arguments. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be <i>0, ProductRef</i> +CronModuleHelp=Name des Dolibarr Modul (funktioniert auch mit externen Dolibarr Modul). <BR> Als Beispiel um die Funktion fetch der Dolibarr Produkt Klasse /htdocs/<u>product</u>/class/product.class.php aufzurufen, der Wert des Modul ist <i>product.</i> +CronClassFileHelp=Der Name der Datei zu laden<BR> Als Beispiel um die Funktion fetch der Dolibarr Produkt Klasse /htdocs/product/class/<u>product.class.php</u> aufzurufen, ist der Name der Datei <i>product.class.php</i> +CronObjectHelp=Der Klassennamen um zu laden. <BR> Als Beispiel um die Funktion fetch der Dolibarr Produkt Klasse /htdocs/product/class/product.class.php aufzurufen, der Klassennamen-Wert ist <i>Produkt-</i> +CronMethodHelp=Die Objektmethode, um zu starten. <BR> Zum Beispiel um die Methode fetch vom Dolibarr Produkt Objekt /htdocs/product/class/product.class.php aufzurufen, ist der Methoden-Wert <i>fetch</i> +CronArgsHelp=Das Methodenargument/Input-Parameter.<BR> Zum Beispiel um die Methode fetch vom Dolibarr Produkt Objekt /htdocs/product/class/product.class.php aufzurufen, ist der Input-Parameter-Wert <i>0, RefProduit</i> CronCommandHelp=Die auszuführende System-Kommandozeile CronCreateJob=Erstelle neuen cronjob # Info @@ -84,5 +84,5 @@ CronType_method=Aufrufmethode einer Dolibarr Class CronType_command=Shell-Befehl CronMenu=Cron CronCannotLoadClass=Kann Klasse %s oder Object %s nicht laden -UseMenuModuleToolsToAddCronJobs=Rufe Menu "Home - Modules tools - Job Liste" auf um geplante Aufgaben zu sehen und zu verändern. +UseMenuModuleToolsToAddCronJobs=Öffnen Sie das Menü "Start - Module Werkzeuge - Cronjob Liste" auf um geplante Skript-Aufgaben zu sehen und zu verändern. TaskDisabled=Aufgabe deaktiviert diff --git a/htdocs/langs/de_DE/dict.lang b/htdocs/langs/de_DE/dict.lang index d3cf80f0e8e28d039286fd527e6a3754fd713a5c..7e269b2f34b92f0d627fdf7445b0d759e77d5517 100644 --- a/htdocs/langs/de_DE/dict.lang +++ b/htdocs/langs/de_DE/dict.lang @@ -232,7 +232,7 @@ CountryUY=Uruguay CountryUZ=Usbekistan CountryVU=Vanuatu CountryVE=Venezuela -CountryVN=Viet Nam +CountryVN=Vietnam CountryVG=Virgin Islands, British CountryVI=Virgin Islands, US CountryWF=Wallis und Futuna @@ -257,7 +257,7 @@ CivilityDR=Doktor Currencyeuros=Euro CurrencyAUD=AU Dollar CurrencySingAUD=AU Dollar -CurrencyCAD=CAN Dollar +CurrencyCAD=CAN Dollars CurrencySingCAD=CAN Dollar CurrencyCHF=Schweizer Franken CurrencySingCHF=Schweizer Franken @@ -291,7 +291,7 @@ CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentSingEUR=Cent CurrencyCentINR=Paisa -CurrencyCentSingINR=paise +CurrencyCentSingINR=Paise CurrencyThousandthSingTND=Tausendstel #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang index cd447809292af347fadfd73b03978430ffc9939e..3bb1a6439babf5477cd8c42561808c490f50ba6d 100644 --- a/htdocs/langs/de_DE/errors.lang +++ b/htdocs/langs/de_DE/errors.lang @@ -1,14 +1,14 @@ # Dolibarr language file - Source file is en_US - errors # No errors -NoErrorCommitIsDone=Kein Fehler, wir führen fort +NoErrorCommitIsDone=Kein Fehler, Befehl wurde ausgeführt # Errors Error=Fehler Errors=Fehler ErrorButCommitIsDone=Fehler aufgetreten, Freigabe erfolgt dennoch -ErrorBadEMail=E-Mail %s ist nicht korrekt +ErrorBadEMail=E-Mailadresse %s ist nicht korrekt ErrorBadUrl=URL %s ist nicht korrekt -ErrorLoginAlreadyExists=Login %s existiert bereits. +ErrorLoginAlreadyExists=Benutzername %s existiert bereits. ErrorGroupAlreadyExists=Gruppe %s existiert bereits. ErrorRecordNotFound=Eintrag wurde nicht gefunden. ErrorFailToCopyFile=Konnte die Datei <b>'%s'</b> nicht nach <b>'%s'</b> kopieren. @@ -29,7 +29,7 @@ ErrorBadBarCodeSyntax=Falsche Syntax für den Barcode. Vielleicht haben Sie eine ErrorCustomerCodeRequired=Kunden Nr. erforderlich ErrorBarCodeRequired=Barcode erforderlich ErrorCustomerCodeAlreadyUsed=Diese Kunden-Nr. ist bereits vergeben. -ErrorBarCodeAlreadyUsed=Barcode bereits vergeben +ErrorBarCodeAlreadyUsed=Barcode wird bereits verwendet ErrorPrefixRequired=Präfix erforderlich ErrorUrlNotValid=Die angegebene Website-Adresse ist ungültig ErrorBadSupplierCodeSyntax=Die eingegebene Lieferanten Nr. ist unzulässig. @@ -67,15 +67,15 @@ ErrorBadFormatValueList=Die Liste darf nicht mehr als ein <u>%s</u> enthalten, m ErrorFieldCanNotContainSpecialCharacters=Das Feld <b>%s</b> darf keine Sonderzeichen enthalten. ErrorFieldCanNotContainSpecialNorUpperCharacters=Das Feld <b>%s</b> darf weder Sonderzeichen noch Großbuchstaben enthalten. ErrorNoAccountancyModuleLoaded=Kein Buchhaltungsmodul aktiviert -ErrorExportDuplicateProfil=Dieses Exportprofil existiert bereits. +ErrorExportDuplicateProfil=Dieser Profilname existiert bereits für dieses Exportprofil. ErrorLDAPSetupNotComplete=Der LDAP-Abgleich für dieses System ist nicht vollständig eingerichtet. ErrorLDAPMakeManualTest=Eine .ldif-Datei wurde im Verzeichnis %s erstellt. Laden Sie diese Datei von der Kommandozeile aus um mehr Informationen über Fehler zu erhalten. -ErrorCantSaveADoneUserWithZeroPercentage=Maßnahmen können nicht mit Status "Nicht begonnen" gespeichert werden, wenn das Feld "Erledigt durch" ausgefüllt ist. +ErrorCantSaveADoneUserWithZeroPercentage=Ereignisse können nicht mit Status "Nicht begonnen" gespeichert werden, wenn das Feld "Erledigt durch" ausgefüllt ist. ErrorRefAlreadyExists=Die Nr. für den Erstellungsvorgang ist bereits vergeben ErrorPleaseTypeBankTransactionReportName=Bitte geben Sie den Bankbeleg zu dieser Transaktion ein (Format MMYYYY oder TTMMYYYY) ErrorRecordHasChildren=Kann diesen Eintrag nicht löschen da er noch über Kindelemente verfügt. ErrorRecordIsUsedCantDelete=Eintrag kann nicht gelöscht werden. Er wird bereits benutzt oder ist in einem anderen Objekt enthalten. -ErrorModuleRequireJavascript=Diese Funktion erfordert aktiviertes JavaScript. Aktivieren/deaktivieren können Sie Javascript im Menü Übersicht(Home)-> Einstellungen->Anzeige. +ErrorModuleRequireJavascript=Diese Funktion erfordert aktiviertes JavaScript. Aktivieren/deaktivieren können Sie Javascript im Menü Start-> Einstellungen->Anzeige. ErrorPasswordsMustMatch=Die eingegebenen Passwörter müssen identisch sein. ErrorContactEMail=Ein technischer Fehler ist aufgetreten. Bitte kontaktieren Sie Ihren Administrator unter der folgenden E-Mail-Adresse <b>%s</b> und fügen Sie den Fehlercode <b>%s</b> in Ihrer Nachricht ein, oder (noch besser) fügen Sie einen Screenshot dieser Seite als Anhang bei. ErrorWrongValueForField=Falscher Wert für Feld Nr. <b>%s</b> (Wert '<b>%s</b>' passt nicht zur Regex-Regel <b>%s</b>) @@ -92,11 +92,11 @@ ErrorBadMask=Fehler auf der Maske ErrorBadMaskFailedToLocatePosOfSequence=Fehler, Maske ohne fortlaufende Nummer ErrorBadMaskBadRazMonth=Fehler, falscher Reset-Wert ErrorMaxNumberReachForThisMask=Maximum Größe für diese Maske erreicht -ErrorCounterMustHaveMoreThan3Digits=Zähler muss länger als 3 Stellen sein +ErrorCounterMustHaveMoreThan3Digits=Zähler muss mehr als 3 Stellen haben ErrorSelectAtLeastOne=Fehler. Wählen Sie mindestens einen Eintrag. ErrorProductWithRefNotExist=Produkt mit der Nummer '<i>%s</i>' nicht gefunden ErrorDeleteNotPossibleLineIsConsolidated=Löschen nicht möglich, da der Datensatz mit einer Banktransaktion verbunden ist. -ErrorProdIdAlreadyExist=%s wird an einen Dritten übertragen +ErrorProdIdAlreadyExist=%s wurde bereits einem Partner zugewiesen ErrorFailedToSendPassword=Fehler beim Zusenden des Passworts ErrorFailedToLoadRSSFile=RSS-Feeds welche Fehler erhalten. Versuchen Sie die Konstante 'MAIN_SIMPLEXMLLOAD_DEBUG' hinzufügen, wenn die Fehlermeldungen nicht genügend Informationen enthält. ErrorPasswordDiffers=Passwörter stimmen nicht überein, bitte erneut eingeben. @@ -159,8 +159,8 @@ ErrorPriceExpression22=Negatives Ergebnis '%s' ErrorPriceExpressionInternal=Interner Fehler '%s' ErrorPriceExpressionUnknown=Unbekannter Fehler '%s' ErrorSrcAndTargetWarehouseMustDiffers=Quelle und Ziel-Lager müssen unterschiedlich sein -ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on a product requiring lot/serial information -ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action +ErrorTryToMakeMoveOnProductRequiringBatchData=Fehler, Sie versuchen Sie eine Lagerbewegung ohne Chargen-/Seriennummer zu machen, bei einem Produkt welches diese Information benötigt +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=Alle erfassten Eingänge müssen zunächst überprüft werden (genehmigt oder abgelehnt), bevor es erlaubt ist diese Aktion auszuführen ErrorCantSetReceptionToTotalDoneWithReceptionDenied=Alle gespeicherten Empfänge müssen erst überprüft werden (zugelassen), bevor es ihm gestattet ist diese Aktion zu tun ErrorGlobalVariableUpdater0=HTTP-Anforderung ist mit dem Fehler '%s' fehlgeschlagen ErrorGlobalVariableUpdater1=JSON format '%s' ungültig @@ -181,7 +181,7 @@ WarningPassIsEmpty=Warnung: Derzeit ist kein Datenbankpasswort gesetzt. Dies ist WarningConfFileMustBeReadOnly=Achtung: Die Konfigurationsdatei (<b>htdocs/conf/conf.php</b>) kann von Ihrem Webserver überschrieben werden. Dies ist eine ernstzunehmende Sicherheitslücke. Ändern Sie den Zugriff schnellstmöglich auf reinen Lesezugriff. Wenn Sie Windows und das FAT-Format für Ihre Festplatte nutzen, seien Sie sich bitte bewusst dass dieses Format keine individuellen Dateiberechtigungen unterstützt und so auch nicht völlig sicher ist, WarningsOnXLines=Warnhinweise in <b>%s</b> Quellzeilen WarningNoDocumentModelActivated=Für das Erstellen von Dokumenten ist keine Vorlage gewählt. Eine Vorlage wird standardmäßig ausgewählt, bis Sie die Moduleinstellungen angepasst haben. -WarningLockFileDoesNotExists=Warnung, wenn Setup abgeschlossen ist, müssen Sie die Installations- und Migration-Tools deaktivieren. Dazu fügen Sie die Datei <b>install.lock</b> dem Verzeichnis <b> %s</b> hinzu. Das fehlend dieser Datei stelle eine Sicherheitslücke dar. +WarningLockFileDoesNotExists=Warnung, nachdem das Setup abgeschlossen ist, müssen Sie die Installations- und Migrations-Tools deaktivieren. Dazu fügen Sie die Datei <b>install.lock</b> in dem Verzeichnis <b>%s</b> hinzu. Das fehlen dieser Datei stellt eine Sicherheitslücke dar. WarningUntilDirRemoved=Diese Warnung bleibt so lange bestehen, bis die Sicherheitslücke geschlossen wurde (nur für Administratoren sichtbar). WarningCloseAlways=Achtung: es wird auch dann geschlossen, wenn der Betrag zwischen Quelle und Ziel unterschiedlich ist. Aktivieren Sie dieses Feature mit Bedacht. WarningUsingThisBoxSlowDown=Warnung: Der Einsatz dieser Box verlangsamt sämtliche Seiten mit dieser Box spürbar. diff --git a/htdocs/langs/de_DE/exports.lang b/htdocs/langs/de_DE/exports.lang index 13bfdcaa1237c063278f31eb1bd1767c7d66f539..46e5808214e9c690dd74939dc811e882392bf625 100644 --- a/htdocs/langs/de_DE/exports.lang +++ b/htdocs/langs/de_DE/exports.lang @@ -97,7 +97,7 @@ EmptyLine=Leerzeile (verworfen) CorrectErrorBeforeRunningImport=Beheben Sie zuerst alle Fehler bevor Sie den endgültigen Import starten. FileWasImported=Datei wurde mit der Nummer <b>%s</b> importiert. YouCanUseImportIdToFindRecord=Sie können alle importierten Einträge in Ihrer Datenbank finden, indem Sie nach dem Feld <b>import_key='%s'</b> filtern. -NbOfLinesOK=Anzahl der Zeilen ohne Fehler und Warnungen: <b>%s</b>. +NbOfLinesOK=Zeilenanzahl ohne Fehler und Warnungen: <b>%s</b>. NbOfLinesImported=Anzahl der erfolgreich importierten Zeilen: <b>%s</b>. DataComeFromNoWhere=Der einzufügende Wert kommt nicht aus der Quelldatei. DataComeFromFileFieldNb=Der einzufügende Wert stammt aus Feldnummer <b>%s</b> der Quelldatei. @@ -125,7 +125,7 @@ BankAccountNumber=Kontonummer BankAccountNumberKey=Schlüssel SpecialCode=Spezialcode ExportStringFilter=%% erlaubt die Ersetzung eines oder mehrerer Zeichen im Text -ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day<br>YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days<br> > YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days<br> < YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days +ExportDateFilter='YYYY' 'YYYYMM' 'YYYYMMDD': filtert nach einem Jahr/Monat/Tag<br>'YYYY+YYYY' 'YYYYMM+YYYYMM' 'YYYYMMDD+YYYYMMDD': filtert über einen Bereich von Jahren/Monaten/Tagen<br>'>YYYY' '>YYYYMM' '>YYYYMMDD': filtert auf die folgenden Jahre/Monate/Tage<br>'<YYYY' '<YYYYMM' '<YYYYMMDD': filtert auf die vorhergehenden Jahre/Monate/Tage ExportNumericFilter='NNNNN' filtert genau einen Wert<br>'NNNNN+NNNNN' filtert einen Wertebereich<br>'>NNNNN' filtert nach kleineren Werten<br>'>NNNNN' filtert nach größeren Werten ## filters SelectFilterFields=Wenn Sie nach bestimmten Werten filtern wollen, geben Sie diese Werte hier ein. diff --git a/htdocs/langs/de_DE/externalsite.lang b/htdocs/langs/de_DE/externalsite.lang index e4afde906aceacbe3b36e161ce807a192ab37ec0..8a91fc705e6f0cf05bfa70b3e10366254a13dd46 100644 --- a/htdocs/langs/de_DE/externalsite.lang +++ b/htdocs/langs/de_DE/externalsite.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup-Link zu einer externen URL +ExternalSiteSetup=Konfigurations-Link auf externe Webseite ExternalSiteURL=URL der externen Seite ExternalSiteModuleNotComplete=Module ExternalSite wurde nicht richtig konfiguriert. ExampleMyMenuEntry=Mein Menü-Eintrag diff --git a/htdocs/langs/de_DE/holiday.lang b/htdocs/langs/de_DE/holiday.lang index 658b81d78a9f67ba33df537d777d1b7e7287b64c..348537fa1a3a3f746efafc25ac3082c20fcc60a8 100644 --- a/htdocs/langs/de_DE/holiday.lang +++ b/htdocs/langs/de_DE/holiday.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - holiday -HRM=Mitarbeiter +HRM=PM Holidays=Urlaub CPTitreMenu=Urlaub MenuReportMonth=Monatsauszug @@ -14,9 +14,9 @@ DateFinCP=Urlaubsende DateCreateCP=Erstellungsdatum DraftCP=Entwurf ToReviewCP=Wartet auf Genehmigung -ApprovedCP=Genehmigt -CancelCP=Zurückgezogen -RefuseCP=Abgelehnt +ApprovedCP=genehmigt +CancelCP=widerrufen +RefuseCP=abgelehnt ValidatorCP=genehmigt durch ListeCP=Urlaubsliste ReviewedByCP=Wird geprüft von @@ -26,7 +26,7 @@ DelayToRequestCP=Urlaubsanträge müssen mindestens <b>%s Tage</b> im voraus ges MenuConfCP=Urlaubsliste bearbeiten UpdateAllCP=Urlaube aktualisieren SoldeCPUser=Feriensaldo ist <b>%s</b> Tage. -ErrorEndDateCP=Sie müssen ein End-Datum wählen, dass nach dem Start-Datum liegt. +ErrorEndDateCP=Sie müssen ein Urlaubsende-Datum wählen, dass nach dem Urlaubsbeginn-Datum liegt. ErrorSQLCreateCP=Ein SQL Fehler trat auf bei der Eerstellung von: ErrorIDFicheCP=Fehler aufgetreten: der Urlaubsantrag existiert nicht. ReturnCP=Zurück zur vorherigen Seite @@ -49,8 +49,8 @@ ErrorCantDeleteCP=Fehler: Sie haben nicht die Berechtigung, diesen Urlaubsantrag CantCreateCP=Sie haben nicht die Berechtigung Urlaub zu beantragen. InvalidValidatorCP=Sie müssen einen Vorgesetzten wählen, der Ihre Urlaubsanfrage genehmigt. CantUpdate=Sie können diesen Urlaubsantrag nicht aktualisieren -NoDateDebut=Sie müssen ein Startdatum wählen. -NoDateFin=Sie müssen ein Enddatum wählen. +NoDateDebut=Sie müssen ein Urlaubsbeginn Datum wählen. +NoDateFin=Sie müssen ein Urlaubsende Datum wählen. ErrorDureeCP=Ihr Urlaubsantrag enthält keine Werktage. TitleValidCP=Urlaubsantrag genehmigen ConfirmValidCP=Möchten Sie diesen Urlaubsantrag wirklich genehmigen? @@ -76,7 +76,7 @@ LogCP=Log der Aktualisierung von verfügbaren Urlaubstagen ActionByCP=Ausgeführt von UserUpdateCP=Für den Benutzer PrevSoldeCP=Vorherige Übersicht -NewSoldeCP=Neue Übersicht +NewSoldeCP=Neuer Saldo alreadyCPexist=Ein Urlaubsantrag wurde für diese Periode bereits erstellt. UserName=Nachname Employee=Angestellter @@ -98,8 +98,8 @@ ErrorUpdateConfCP=Ein Fehler trat beim Bearbeiten auf, bitte nochmals versuchen. AddCPforUsers=Bitte geben Sie die Anzahl Urlaubstage der Benutzer an, <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">indem Sie hier klicken</a>. DelayForSubmitCP=Letztmöglicher Termin für Urlaubsanträge AlertapprobatortorDelayCP=der Urlaubsantrag hält die Frist nicht ein! -AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay -AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance +AlertValidatorDelayCP=Verhinde Bestätigung wenn der Urlaubsantrag nicht die Frist einhaltet +AlertValidorSoldeCP=Verhindern, die Bestätigung wenn der Urlaubsantrag das Gleichgewichts überschreitet nbUserCP=Anzahl unterstützter Benutzer im Urlaubsmodul nbHolidayDeductedCP=Anzahl Urlaubstage, die für jeden genommenen Ferientag abgezogen werden nbHolidayEveryMonthCP=Anzahl hinzugefügter Urlaubstage pro Monat @@ -108,16 +108,16 @@ Module27130Desc= Verwaltung von Urlaubsanträgen TitleOptionMainCP=Wichtigste Urlaubs-Einstellungen TitleOptionEventCP=Einstellungen des Urlaubs Bedienungsruf für Veranstaltungen ValidEventCP=Freigeben -UpdateEventCP=Maßnahmen aktualisieren +UpdateEventCP=Ereignisse aktualisieren CreateEventCP=Erstelle -NameEventCP=Titel der Maßnahme -OkCreateEventCP=Maßnahme erfolgreich zugefügt. -ErrorCreateEventCP=Fehler bei der Erstellung der Maßnahme. -UpdateEventOkCP=Maßnahme erfolgreich aktualisiert. -ErrorUpdateEventCP=Fehler bei der Aktualisierung der Maßnahme. -DeleteEventCP=Maßnahme löschen -DeleteEventOkCP=Maßnahme wurde gelöscht. -ErrorDeleteEventCP=Fehler bei der Löschung der Maßnahme. +NameEventCP=Name des Ereignis +OkCreateEventCP=Ereignis erfolgreich angefügt. +ErrorCreateEventCP=Fehler bei der Erstellung des Ereignis. +UpdateEventOkCP=Die Aktualisierung des Ereignis ging gut. +ErrorUpdateEventCP=Fehler bei der Aktualisierung des Ereignis. +DeleteEventCP=Ereignis löschen +DeleteEventOkCP=Das Ereignis wurde gelöscht. +ErrorDeleteEventCP=Fehler bei der Löschung des Ereignis. TitleDeleteEventCP=Löschen von Sonderurlaub TitleCreateEventCP=Erstellen von Sonderurlaub TitleUpdateEventCP=Verändern oder Löschen von Sonderurlaub diff --git a/htdocs/langs/de_DE/install.lang b/htdocs/langs/de_DE/install.lang index 5609141c87965fb33619c5ece2e0a7fe845305c7..c1cdba7d9ea7ccb5cc75ec572882d627cf738538 100644 --- a/htdocs/langs/de_DE/install.lang +++ b/htdocs/langs/de_DE/install.lang @@ -54,7 +54,7 @@ DatabaseServer=Datenbankserver DatabaseName=Name der Datenbank DatabasePrefix=Präfix für die Tabellen der Datenbank Login=Anmeldung -AdminLogin=Login für Dolibarr Datenbank-Administrator. +AdminLogin=Administrator Benutzername für Dolibarr Datenbank Password=Passwort PasswordAgain=Passwort wiederholen AdminPassword=Passwort des dolibarr-Datenbankadministrators @@ -148,7 +148,7 @@ OpenBaseDir=PHP openbasedir Einstellungen YouAskToCreateDatabaseSoRootRequired=Sie haben die Option "Datenbank erstellen" ausgewählt. Hierfür müssen Sie Benutzername und Passwort des Datenbank-Super-Users in das untenstehende Formular eintragen. YouAskToCreateDatabaseUserSoRootRequired=Sie haben die Option "Datenbankbenutzer erstellen" ausgewählt. Hierfür müssen Sie Benutzername und Passwort des Datenbank-Super-Users in das untenstehende Formular eintragen. NextStepMightLastALongTime=Der aktuelle Vorgang kann mehrere Minuten dauern. Holen Sie sich eine frische Tasse Kaffee, oder nutzen Sie die Gelegenheit für eine Rauchpause. Warten Sie jedoch bitte in jedem Fall, bis der nächste Bildschirm vollständig angezeigt wird, bevor Sie fortfahren. -MigrationCustomerOrderShipping=Kundenbestellungsversand aktualisieren +MigrationCustomerOrderShipping=Kundenauftragslieferung aktualisieren MigrationShippingDelivery=Aktualisiere die Speicherung von Lieferungen (Versandart?) MigrationShippingDelivery2=Aktualisiere die Speicherung von Lieferungen 2 (Versandart 2?) MigrationFinished=Migration abgeschlossen @@ -161,7 +161,7 @@ ErrorDatabaseVersionForbiddenForMigration=Die Version Ihres Datenbankmanager ist ######### # upgrade MigrationFixData=Denormalisierte Daten bereinigen -MigrationOrder=Datenmigration für Kundenbestellungen +MigrationOrder=Datenmigration für Kundenaufträge MigrationSupplierOrder=Datenmigration für Lieferantenbestellungen MigrationProposal=Datenmigration für Angebote MigrationInvoice=Datenmigration für Kundenrechnungen @@ -205,7 +205,7 @@ MigrationDeliveryAddress=Update Lieferadresse in Versand MigrationProjectTaskActors=Datenmigration für llx_projet_task_actors Tabelle MigrationProjectUserResp=Datenmigration des Feldes fk_user_resp von llx_projet nach llx_element_contact MigrationProjectTaskTime=Aktualisiere aufgewandte Zeit (in Sekunden) -MigrationActioncommElement=Aktualisiere die Maßnahmen +MigrationActioncommElement=Aktualisiere die Termine/Aufgaben MigrationPaymentMode=Migration der Daten für die Zahlungsart MigrationCategorieAssociation=Kategorien verschieben MigrationEvents=Migration of events to add event owner into assignement table diff --git a/htdocs/langs/de_DE/link.lang b/htdocs/langs/de_DE/link.lang index 759caca087651b52460c8f847d69e8df721d7570..0961f84c6448d3e20fb2249d42d4441447629449 100644 --- a/htdocs/langs/de_DE/link.lang +++ b/htdocs/langs/de_DE/link.lang @@ -1,4 +1,4 @@ -LinkANewFile=Verknüpfen Sie ein neues Dokument/Datei +LinkANewFile=Verknüpfen Sie eine neue Datei / Dokument LinkedFiles=Verknüpfte Dateien und Dokumente NoLinkFound=Keine eingetragenen Verknüpfungen LinkComplete=Die Datei wurde erfolgreich verknüpft diff --git a/htdocs/langs/de_DE/mails.lang b/htdocs/langs/de_DE/mails.lang index 01ce07198047d8eb61939efed97a212ee6b3a2af..e04d73b5ac96b6afd41d79576da74a517f0c9aee 100644 --- a/htdocs/langs/de_DE/mails.lang +++ b/htdocs/langs/de_DE/mails.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - mails -Mailing=E-Mail +Mailing=Mailversand EMailing=E-Mail-Kampagne Mailings=E-Mail-Kampagnen EMailings=E-Mail-Kampagne @@ -53,7 +53,7 @@ ConfirmValidMailing=Möchten Sie diese E-Mail-Kampagne wirklich freigeben? ConfirmResetMailing=Achtung, wenn Sie diese E-Mail Kampangne (<b>%s</b>), können Sie diese Aktion nochmals versenden. Sind Sie sicher, das ist tun möchten? ConfirmDeleteMailing=Möchten Sie diese E-Mail-Kampagne wirklich löschen? NbOfRecipients=Anzahl der Empfänger -NbOfUniqueEMails=Zahl der einzigartigen E-Mail-Adressen +NbOfUniqueEMails=Anzahl einzigartige E-Mail-Adressen NbOfEMails=Anzahl der E-Mails TotalNbOfDistinctRecipients=Anzahl der Empfänger NoTargetYet=Noch keine Empfänger ausgewählt (Bitte wechseln Sie zur Registerkarte "Empfänger") @@ -77,12 +77,12 @@ CheckRead=Lesebestätigung YourMailUnsubcribeOK=Die E-Mail-Adresse <b>%s</b> ist korrekt aus der Mailing-Liste ausgetragen. MailtoEMail=Verknüpfung zu E-Mail ActivateCheckRead=Erlaube den Zugriff auf den "Abmelde"-Link -ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature +ActivateCheckReadKey=Sicherheitsschlüssel für die Verschlüsselung von URLs in der Lesebestätigungs- und bei der Abmeldenfunktion verwendet EMailSentToNRecipients=E-Mail versandt an %s Empfänger. XTargetsAdded=<b>%s</b> Empfänger der Liste zugefügt EachInvoiceWillBeAttachedToEmail=Ein Dokument mit der Standard-Vorlage für Rechnungen wird erstellt und an jede E-Mail angehängt. MailTopicSendRemindUnpaidInvoices=Zahlungserinnerung für Rechnung %s (%s) -SendRemind=Zahlungserinnerung per E-Mail senden +SendRemind=Zahlungserinnerung per E-Mail versenden RemindSent=%s Erinnerung(en) gesendet AllRecipientSelectedForRemind=Alle Partner ausgewählt und wenn eine Email angegeben ist (beachten sie, dass eine Mail pro Rechnung geschickt wird) NoRemindSent=Keine eMail-Erinnerung versandt @@ -114,13 +114,13 @@ SendMail=E-Mail versenden SentBy=Gesendet von MailingNeedCommand=Aus Sicherheitsgründen sollten E-Mails von der Kommandozeile aus versandt werden. Bitten Sie Ihren Server Administrator um die Ausführung des folgenden Befehls, um den Versand an alle Empfänger zu starten: MailingNeedCommand2=Sie können den Versand jedoch auch online starten, indem Sie den Parameter MAILING_LIMIT_SENDBYWEB auf den Wert der pro Sitzung gleichzeitig zu versendenden Mails setzen. Die entsprechenden Einstellungen finden Sie unter Übersicht-Einstellungen-Andere. -ConfirmSendingEmailing=If you can't or prefer sending them with your www browser, please confirm you are sure you want to send emailing now from your browser ? +ConfirmSendingEmailing=Wenn Sie nicht es oder bevorzugen sie das senden mit Ihrem Web-Browser, bestätigen Sie bitte sicher, dass Sie jetzt eine E-Mail von Ihrem Browser senden wollen? LimitSendingEmailing=Hinweis: Aus Sicherheits- und Zeitüberschreitungsgründen ist der Online-Versand von E-Mails auf <b>%s</b> Empfänger je Sitzung beschränkt. TargetsReset=Liste leeren ToClearAllRecipientsClickHere=Klicken Sie hier, um die Empfängerliste zu leeren ToAddRecipientsChooseHere=Fügen Sie Empfänger über die Listenauswahl hinzu NbOfEMailingsReceived=Empfangene E-Mail-Kampagnen -NbOfEMailingsSend=Massenmails versandt +NbOfEMailingsSend=E-Mail-Kampagne versandt IdRecord=Eintrag-ID DeliveryReceipt=Zustellbestätigung YouCanUseCommaSeparatorForSeveralRecipients=Trennen Sie mehrere Empfänger mit einem <b>Komma</b> @@ -136,8 +136,8 @@ SomeNotificationsWillBeSent=%s Benachrichtigungen werden per E-Mail versandt AddNewNotification=Neues E-Mail-Beachrichtigungsziel aktivieren ListOfActiveNotifications=Liste aller aktiven E-Mail-Beachrichtigungsziele ListOfNotificationsDone=Liste aller versandten E-Mail Benachrichtigungen -MailSendSetupIs=Der E-Mail-Versand wurde auf '%s' konfiguriert. Dieser Modus kann nicht für Massen-Mails verwendet werden. -MailSendSetupIs2=Sie müssen zuerst mit einem Admin-Konto im Menü %sHome - Einstellungen - EMails%s den Parameter <strong>'%s'</strong> auf den Modus '%s' ändern. Dann können Sie die Daten des SMTP-Servers von Ihrem Internetdienstanbieter eingeben und die Masse-E-Mail-Funktion nutzen. -MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. -YouCanAlsoUseSupervisorKeyword=You can also add the keyword <strong>__SUPERVISOREMAIL__</strong> to have email being sent to the supervisor of user (works only if an email is defined for this supervisor) -NbOfTargetedContacts=Current number of targeted contact emails +MailSendSetupIs=Der E-Mail-Versand wurde auf '%s' konfiguriert. Dieser Modus kann nicht für E-Mail-Kampagnen verwendet werden. +MailSendSetupIs2=Sie müssen zuerst mit einem Admin-Konto im Menü %sStart - Einstellungen - EMails%s den Parameter <strong>'%s'</strong> auf den Modus '%s' ändern. Dann können Sie die Daten des SMTP-Servers von Ihrem Internetdienstanbieter eingeben und die E-Mail-Kampagnen-Funktion nutzen. +MailSendSetupIs3=Bei Fragen über die Einrichtung Ihres SMTP-Servers, können Sie %s fragen. +YouCanAlsoUseSupervisorKeyword=Sie können auch das Schlüsselwort <strong>__SUPERVISOREMAIL__</strong> um E-Mail haben, die an den Vorgesetzten des Benutzers gesendet hinzufügen (funktioniert nur, wenn eine E-Mail für dieses Supervisor definiert) +NbOfTargetedContacts=Aktuelle Anzahl der E-Mails-Kontakte diff --git a/htdocs/langs/de_DE/main.lang b/htdocs/langs/de_DE/main.lang index b4e7985d55e759fbb4febb39f193fcd78879b782..f6bf1ec94e81a41f5281ea7ccfca0eaadd1e4e8e 100644 --- a/htdocs/langs/de_DE/main.lang +++ b/htdocs/langs/de_DE/main.lang @@ -26,7 +26,7 @@ FormatDateHourText=%d %B %Y %H:%M DatabaseConnection=Datenbankverbindung NoTranslation=Keine Übersetzung NoRecordFound=Kein Eintrag gefunden -NoError=Es ist kein Fehler +NoError=kein Fehler Error=Fehler ErrorFieldRequired=Feld '%s' ist erforderlich ErrorFieldFormat=Der Wert in Feld '%s' ist ungültig @@ -46,7 +46,7 @@ ErrorFileNotUploaded=Die Datei konnte nicht hochgeladen werden. Stellen Sie sich ErrorInternalErrorDetected=Interner Fehler entdeckt ErrorNoRequestRan=Abfrage ist nicht erfolgreich gelaufen ErrorWrongHostParameter=Ungültige Host-Parameter -ErrorYourCountryIsNotDefined=Ihr Land ist nicht definiert. Bitte vervollständigen Sie das Profil unter Home-Einstellungen-Bearbeiten. +ErrorYourCountryIsNotDefined=Ihr Land ist nicht definiert. Bitte vervollständigen Sie das Profil unter Start - Einstellungen - Firma/Stiftung ErrorRecordIsUsedByChild=Kann diesen Eintrag nicht löschen. Dieser Eintrag wird von mindestens einem untegeordneten Datensatz verwendet. ErrorWrongValue=Ungültiger Wert ErrorWrongValueForParameterX=Ungültiger Wert für den Parameter %s @@ -56,8 +56,8 @@ ErrorDuplicateField=Dieser Wert ist nicht einzigartig (schon vorhanden) ErrorSomeErrorWereFoundRollbackIsDone=Einige Fehler wurden gefunden. Änderungen rückgängig gemacht. ErrorConfigParameterNotDefined=Parameter <b>%s</b> innerhalb der Konfigurationsdatei <b>conf.php.</b> nicht definiert. ErrorCantLoadUserFromDolibarrDatabase=Kann Benutzer <b>%s</b> nicht aus der Systemdatenbank laden. -ErrorNoVATRateDefinedForSellerCountry=Keine MwSt.-Sätze für Verkäuferland '%s' definiert. -ErrorNoSocialContributionForSellerCountry=Für das Verkäuferland '%s' wurde kein Sozialbetrag definiert. +ErrorNoVATRateDefinedForSellerCountry=Fehler, keine MwSt.-Sätze für Land '%s' definiert. +ErrorNoSocialContributionForSellerCountry=Fehler, für Land '%s' wurde kein Sozialbetrag definiert. ErrorFailedToSaveFile=Fehler beim Speichern der Datei. SetDate=Datum SelectDate=Wählen Sie ein Datum @@ -69,19 +69,19 @@ FileUploaded=Datei wurde erfolgreich hochgeladen FileWasNotUploaded=Ein Dateianhang wurde gewählt aber noch nicht hochgeladen. Klicken Sie auf "Datei anhängen" um den Vorgang zu starten. NbOfEntries=Anzahl der Einträge GoToWikiHelpPage=Zur Wiki-Hilfeseite (Internetzugang erforderlich) -GoToHelpPage=Zur Hilfeseite +GoToHelpPage=Hilfe lesen RecordSaved=Eintrag gespeichert RecordDeleted=Eintrag gelöscht LevelOfFeature=Funktionslevel NotDefined=Nicht definiert DefinedAndHasThisValue=Mit diesem Wert definiert -IsNotDefined=Nicht definiert +IsNotDefined=undefiniert DolibarrInHttpAuthenticationSoPasswordUseless=Authentifizierungsmodus mit dem Wert <b>%s</b> in der Konfigurationsdatei <b>conf.php.</b> definiert.<br> Die Passwort-Datenbank ist dadurch eine externe und Änderungen in diesem Bereich haben unter Umständen keine Auswirkungen. Administrator=Administrator Undefined=Nicht definiert PasswordForgotten=Passwort vergessen? SeeAbove=Siehe oben -HomeArea=Home +HomeArea=Startseite LastConnexion=Letzte Verbindung PreviousConnexion=Letzte Anmeldung ConnectedOnMultiCompany=Mit Entität verbunden @@ -102,13 +102,13 @@ NotePrivate=Anmerkung (privat) PrecisionUnitIsLimitedToXDecimals=Stückpreisgenauigkeit im System auf <b>%s</b> Dezimalstellen beschränkt. DoTest=Testen ToFilter=Filtern -WarningYouHaveAtLeastOneTaskLate=Achtung: Mindestens ein Element hat sein Fälligkeitsdatum überschritten. +WarningYouHaveAtLeastOneTaskLate=Achtung: Bei mindestens einem Element wurde die Toleranz der Zeitverzögerung überschritten. yes=ja Yes=Ja no=nein No=Nein All=Alle -Home=Übersicht +Home=Start Help=Hilfe OnlineHelp=Online-Hilfe PageWiki=Wiki-Seite @@ -278,7 +278,7 @@ MonthOfDay=Tag des Monats HourShort=H MinuteShort=mn Rate=Rate -UseLocalTax=Mit MwSt. +UseLocalTax=inkl. MwSt. Bytes=Bytes KiloBytes=Kilobyte MegaBytes=Megabyte @@ -321,7 +321,7 @@ PriceQtyHT=Preis für diese Menge (netto) PriceQtyMinHT=Mindestmengenpreis (netto) PriceQtyTTC=Preis für diese Menge (brutto) PriceQtyMinTTC=Mindestmengenpreis (brutto) -Percentage=Prozentbetrag +Percentage=Prozentangabe Total=Gesamt SubTotal=Zwischensumme TotalHTShort=Nettosumme @@ -361,8 +361,8 @@ RefPayment=Zahlungs-Nr. CommercialProposalsShort=Angebote Comment=Kommentar Comments=Kommentare -ActionsToDo=Zu erledigende Maßnahmen -ActionsDone=Erledigte Maßnahmen +ActionsToDo=unvollständige Ereignisse +ActionsDone=Abgeschlossene Ereignisse ActionsToDoShort=Zu erledigen ActionsRunningshort=Begonnen ActionsDoneShort=Erledigt @@ -375,10 +375,10 @@ CompanyFoundation=Firma/Stiftung ContactsForCompany=Ansprechpartner/Adressen dieses Partners ContactsAddressesForCompany=Ansprechpartner / Adressen zu diesem Partner AddressesForCompany=Adressen für den Partner -ActionsOnCompany=Maßnahmen zu diesem Partner +ActionsOnCompany=Ereignisse zu diesem Partner ActionsOnMember=Aktionen zu diesem Mitglied -NActions=%s Maßnahmen -NActionsLate=%s verspätete Maßnahmen +NActions=%s Ereignisse +NActionsLate=%s verspätet RequestAlreadyDone=Anfrage bereits bekannt Filter=Filter RemoveFilter=Filter entfernen @@ -390,7 +390,7 @@ Duration=Dauer TotalDuration=Gesamtdauer Summary=Zusammenfassung MyBookmarks=Meine Lesezeichen -OtherInformationsBoxes=Boxen mit Zusatzinformationen +OtherInformationsBoxes=Meine Informationsboxen DolibarrBoard=Dolibarr Übersciht DolibarrStateBoard=Statistik DolibarrWorkBoard=Aufgabenübersicht @@ -398,7 +398,7 @@ Available=Verfügbar NotYetAvailable=Noch nicht verfügbar NotAvailable=Nicht verfügbar Popularity=Beliebtheit -Categories= Kategorien / Bezeichnungen +Categories= Schlagwörter/Kategorien Category=Kategorie/Bezeichnung By=Von From=Von @@ -507,7 +507,7 @@ ReportDescription=Beschreibung Report=Bericht Keyword=Stichwort Legend=Legende -FillTownFromZip=Stadt zur PLZ ergänzen +FillTownFromZip=Ort zur PLZ ergänzen Fill=Eintragen Reset=Zurücksetzen ShowLog=Zeige Protokoll @@ -515,7 +515,7 @@ File=Datei Files=Dateien NotAllowed=Nicht erlaubt ReadPermissionNotAllowed=Sie haben keine Leseberechtigung -AmountInCurrency=Betrag in %s Währung +AmountInCurrency=Betrag in %s Example=Beispiel Examples=Beispiele NoExample=Kein Beispiel @@ -580,7 +580,7 @@ GoBack=Zurück CanBeModifiedIfOk=Änderung möglich falls gültig CanBeModifiedIfKo=Änderung möglich falls ungültig RecordModifiedSuccessfully=Wert erfolgreich geändert -RecordsModified=%s Einträge geändert +RecordsModified=%s Datensätze geändert AutomaticCode=Automatischer Code NotManaged=Nicht verwaltet FeatureDisabled=Funktion deaktiviert @@ -607,7 +607,7 @@ MenuECM=Dokumente MenuAWStats=Statistiken MenuMembers=Mitglieder MenuAgendaGoogle=Google-Agenda -ThisLimitIsDefinedInSetup=Gesetzte Dolibarr-Limits (Menü Home-Einstellungen-Sicherheit): %s Kb, PHP Limit: %s Kb +ThisLimitIsDefinedInSetup=Gesetzte Dolibarr-Limits (Menü Start-Einstellungen-Sicherheit): %s Kb, PHP Limit: %s Kb NoFileFound=Keine Dokumente in diesem Verzeichnis CurrentUserLanguage=Aktuelle Benutzersprache CurrentTheme=Aktuelle Oberfläche @@ -678,7 +678,7 @@ LinkedToSpecificUsers=Mit Kontakt verknüpft DeleteAFile=Datei löschen ConfirmDeleteAFile=Sind Sie sicher dass Sie diese Datei löschen möchten? NoResults=Keine Ergebnisse -ModulesSystemTools=Modulwerkzeuge +ModulesSystemTools=Module Werkzeuge Test=Testen Element=Element NoPhotoYet=Noch keine Bilder verfügbar @@ -696,11 +696,11 @@ AccountCurrency=Kontowährung ViewPrivateNote=Zeige Notizen XMoreLines=%s Zeile(n) versteckt PublicUrl=Öffentliche URL -AddBox=Box zufügen +AddBox=Box anfügen SelectElementAndClickRefresh=Wählen Sie ein Element und clicken Sie Aktualisieren PrintFile=Drucke Datei %s ShowTransaction=Transaktion anzeigen -GoIntoSetupToChangeLogo=Gehen Sie zu Übersicht - Einstellungen - Firma/Stiftung um das Logo zu ändern oder gehen Sie in Übersicht - Einstellungen - Anzeige um es zu verstecken. +GoIntoSetupToChangeLogo=Gehen Sie zu Start - Einstellungen - Firma/Stiftung um das Logo zu ändern oder gehen Sie in Start -> Einstellungen -> Anzeige um es zu verstecken. Deny=ablehnen Denied=abgelehnt # Week day diff --git a/htdocs/langs/de_DE/members.lang b/htdocs/langs/de_DE/members.lang index c84ef7d5f205549777a47c84d5bf3184c106dc10..a9076f41d733a270785b6f0e0f08d0dd1e2db572 100644 --- a/htdocs/langs/de_DE/members.lang +++ b/htdocs/langs/de_DE/members.lang @@ -78,12 +78,12 @@ MembersTypeSetup=Mitgliedsarten einrichten NewSubscription=Neues Abonnement NewSubscriptionDesc=In diesem Formular können Sie Ihr Abonnement als neues Mitglied der Stiftung angeben. Wenn Sie Ihr Abonnement erneuern (falls Sie Mitglied sind) wollen, kontaktieren Sie bitte den Stiftungsrat per E-Mail %s. Subscription=Abonnement -Subscriptions=Abonnements +Subscriptions=Mitgliedschaften / Beiträge SubscriptionLate=Verspätet SubscriptionNotReceived=Abonnement nie erhalten SubscriptionLateShort=Verspätet SubscriptionNotReceivedShort=Nie erhalten -ListOfSubscriptions=Liste der Abonnements +ListOfSubscriptions=Liste der Beiträge SendCardByMail=Karte per E-Mail versenden AddMember=Mitglied erstellen NoTypeDefinedGoToSetup=Sie haben noch keine Mitgliedsarten definiert. Sie können dies unter Einstellungen-Mitgliedsarten vornehmen. @@ -116,7 +116,7 @@ ExportDataset_member_1=Mitglieder und Abonnements ImportDataset_member_1=Mitglieder LastMembers=%s neueste Mitglieder LastMembersModified=%s zuletzt bearbeitete Mitglieder -LastSubscriptionsModified=Zuletzt geändert %s Abonnements +LastSubscriptionsModified=%s zuletzt bearbeitete Mitgliedschaften AttributeName=Attributname String=Zeichenkette Text=Text @@ -154,7 +154,7 @@ HTPasswordExport=Datei erstellen für htpassword NoThirdPartyAssociatedToMember=Mit diesem Mitglied ist kein Partner verknüpft ThirdPartyDolibarr=Partner MembersAndSubscriptions= Mitglieder und Abonnements -MoreActions=Ergänzende Erfassungsmaßnahmen +MoreActions=Ergänzende Erfassungsereignisse MoreActionsOnSubscription=Ergänzende Maßnahmen standardmäßig vorgeschlagen bei der Aufnahme einer Subscription MoreActionBankDirect=Autom. einen Einzugsermächtigunsantrag zum Mitgliedskonto erstellen MoreActionBankViaInvoice=Autom. eine Rechnung zum Mitgliedskonto erstellen und Zahlung auf Rechnung setzen @@ -186,7 +186,7 @@ Exports=Exports NewMemberbyWeb=Neues Mitgliede hinzugefügt, warte auf Genehmigung. NewMemberForm=Neues Mitgliederformular SubscriptionsStatistics=Statistik über Abonnements -NbOfSubscriptions=Anzahl der Abonnements +NbOfSubscriptions=Anzahl der Beiträge AmountOfSubscriptions=Beiträge der Abonnements TurnoverOrBudget=Umsatz (für eine Firma) oder Budget (für eine Stiftung) DefaultAmount=Standardbetrag für ein Abonnement @@ -200,7 +200,7 @@ DOLIBARRFOUNDATION_PAYMENT_FORM=Um Ihre Beitragszahlung mit einer Banküberweisu ByProperties=nach Eigenschaften MembersStatisticsByProperties=Mitgliederstatistik nach Eigenschaften MembersByNature=Mitglieder von Natur aus -VATToUseForSubscriptions=Mehrwertsteuersatz für Abonnements +VATToUseForSubscriptions=Mehrwertsteuersatz für Mitgliedschaften NoVatOnSubscription=Kein MwSt. auf Mitgliedschaft. -MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription -ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s +MEMBER_PAYONLINE_SENDEMAIL=E-Mail, um zu warnen, wenn Dolibarr erhält eine Bestätigung von einer validierte Zahlung des Mitglieds +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Produkt/Leistung verwendet für den Beitrag in der Rechnungszeile: %s diff --git a/htdocs/langs/de_DE/opensurvey.lang b/htdocs/langs/de_DE/opensurvey.lang index a2f86189548990564c9c598b01a65053697aae13..90c245a5933ee67017166cbb09e78dbaf68abf72 100644 --- a/htdocs/langs/de_DE/opensurvey.lang +++ b/htdocs/langs/de_DE/opensurvey.lang @@ -22,7 +22,7 @@ TheBestChoices=Die besten Möglichkeiten sind momentan with=mit OpenSurveyHowTo=Wenn Sie an dieser Abstimmung teilnehmen möchten, nennen Sie Ihren Namen, wählen Sie die am besten passenden Werte und bestätigen mit dem Plus-Button am Ende der Zeile. CommentsOfVoters=Kommentare der Wähler -ConfirmRemovalOfPoll=Bist Du sicher, dass Du diese Abstimmung (und alle Stimmen) entfernen wilst +ConfirmRemovalOfPoll=Sind Sie sicher, dass Sie diese Umfrage löschen wollen (mit allen gespeicherten Stimmen) RemovePoll=Entferne Abstimmung UrlForSurvey=Öffentliche URL für einen Direktzugriff zur Umfrage PollOnChoice=Sie erstellen eine Umfrage mit einer Multiple Choice-Variante. Geben Sie zuerst alle möglichen Varianten für die Abstimmung ein: @@ -63,4 +63,4 @@ ErrorOpenSurveyDateFormat=Das Datum muss das Format YYYY-MM-DD haben ErrorInsertingComment=Beim Eintragen Ihres Kommentars ist ein Fehler aufgetreten MoreChoices=Geben Sie weitere Wahlmöglichkeiten ein SurveyExpiredInfo=Diese Umfrage ist abgelaufen. -EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s +EmailSomeoneVoted=%s hat eine Zeile gefüllt. Sie können Ihre Umfrage unter dem Link finden: %s diff --git a/htdocs/langs/de_DE/orders.lang b/htdocs/langs/de_DE/orders.lang index 9f09e0474a733fda6c397c55542bb6fcfb24bbd2..68dd670908c2f43f0a990b0353c79fcbfc6766a5 100644 --- a/htdocs/langs/de_DE/orders.lang +++ b/htdocs/langs/de_DE/orders.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - orders -OrdersArea=Kundenbestellungen-Übersicht +OrdersArea=Kundenaufträge-Übersicht SuppliersOrdersArea=Übersicht Lieferantenbestellungen OrderCard=Bestell-Karte OrderId=Bestell-ID @@ -15,12 +15,12 @@ MakeOrder=Erzeuge Bestellung SupplierOrder=Lieferantenbestellung SuppliersOrders=Lieferantenbestellungen SuppliersOrdersRunning=Aktuelle Lieferantenbestellungen -CustomerOrder=Kundenbestellung -CustomersOrders=Kundenbestellungen -CustomersOrdersRunning=Aktuelle Kundenbestellungen -CustomersOrdersAndOrdersLines=Kundenbestellungen und Bestellpositionen +CustomerOrder=Kundenauftrag +CustomersOrders=Kundenaufträge +CustomersOrdersRunning=Aktuelle Kundenaufträge +CustomersOrdersAndOrdersLines=Kundenaufträge und Auftragspositionen OrdersToValid=Freizugebende Bestellungen -OrdersToBill=Gelieferte Kundenbestellungen +OrdersToBill=Gelieferte Kundenaufträge OrdersInProcess=Bestellungen in Bearbeitung OrdersToProcess=Zu bearbeitende Bestellungen SuppliersOrdersToProcess=Lieferantenbestellung in Bearbeitung @@ -56,8 +56,8 @@ ProductQtyInDraftOrWaitingApproved=Produktmenge in Bestellentwurf oder Bestellun DraftOrWaitingApproved=Entwurf oder genehmigt, noch nicht bestellt DraftOrWaitingShipped=Entwurf oder bestätigt, noch nicht versandt MenuOrdersToBill=Bestellverrechnung -MenuOrdersToBill2=abrechenbare Bestellungen -SearchOrder=Suche Bestellung +MenuOrdersToBill2=abrechenbare Aufträge +SearchOrder=Suche Auftrag / Bestellung SearchACustomerOrder=Kundenauftrag suchen SearchASupplierOrder=Suche Lieferantenbestellung ShipProduct=Produkt versenden @@ -77,12 +77,12 @@ AddToDraftOrders=Zu Bestellentwurf hinzufügen ShowOrder=Zeige Bestellung NoOpenedOrders=Keine offenen Bestellungen NoOtherOpenedOrders=Keine offenen Bestellungen Anderer -NoDraftOrders=Keine Bestellentwürfe +NoDraftOrders=Keine Auftrags-Entwürfe OtherOrders=Bestellungen Anderer -LastOrders=Letzte %s Kundenbestellungen -LastCustomerOrders=Letzte %s Kundenbestellungen +LastOrders=Letzte %s Kundenaufträge +LastCustomerOrders=Letzte %s Kundenaufträge LastSupplierOrders=Letzte %s Lieferantenbestellungen -LastModifiedOrders=%s zuletzt bearbeitete Bestellungen +LastModifiedOrders=Die letzen %s bearbeiteten Bestellungen LastClosedOrders=%s zuletzt geschlossene Bestellungen AllOrders=Alle Bestellungen NbOfOrders=Anzahl der Bestellungen @@ -90,32 +90,32 @@ OrdersStatistics=Bestellstatistik OrdersStatisticsSuppliers=Statistik Lieferantenbestellungen NumberOfOrdersByMonth=Anzahl der Bestellungen pro Monat AmountOfOrdersByMonthHT=Anzahl der Aufträge pro Monat (nach Steuern) -ListOfOrders=Liste der Bestellungen +ListOfOrders=Liste Aufträge CloseOrder=Bestellung schließen ConfirmCloseOrder=Möchten Sie diese Bestellung wirklich schließen? Nach ihrer Schließung kann eine Bestellung nur mehr in Rechnung gestellt werden. ConfirmCloseOrderIfSending=Möchten Sie diese Bestellung wirklich schließen? Tun Sie dies erst nachdem alle Versandvorgäng abgeschlossen wurden. ConfirmDeleteOrder=Möchten Sie diese Bestellung wirklich löschen? ConfirmValidateOrder=Möchten Sie diese Bestellung wirklich unter dem Namen <b>%s</b> freigeben? ConfirmUnvalidateOrder=Sind Sie sicher, die den Auftrag <b>%s</b> wieder in ein Angebot umzuwandeln? -ConfirmCancelOrder=Möchten Sie diese Bestellung wirklich verwerfen? +ConfirmCancelOrder=Möchten Sie diese Bestellung wirklich wirklich stornieren? ConfirmMakeOrder=Hiermit bestätigen Sie, diese Bestellung am <b>%s</b> persönlich angelegt zu haben. GenerateBill=Erzeuge Rechnung ClassifyShipped=Als geliefert markieren ClassifyBilled=Als verrechnet markieren ComptaCard=Buchhaltungskarte -DraftOrders=Bestellentwürfe +DraftOrders=Entwürfe RelatedOrders=Ähnliche Bestellungen -RelatedCustomerOrders=Ähnliche Kundenbestellungen +RelatedCustomerOrders=Ähnliche Kundenaufträge RelatedSupplierOrders=Ähnliche Lieferantenbestellungen OnProcessOrders=Bestellungen in Bearbeitung RefOrder=Bestell-Nr. RefCustomerOrder=Kunden-Bestellung-Nr. RefCustomerOrderShort=Kunden-BestellNr. SendOrderByMail=Bestellung per Post versenden -ActionsOnOrder=Maßnahmen zu dieser Bestellung +ActionsOnOrder=Ereignisse zu dieser Bestellung NoArticleOfTypeProduct=Keine Artikel vom Typ 'Produkt' und deshalb keine Versandkostenposition OrderMode=Bestellweise -AuthorRequest=Authorenrechte anfordern +AuthorRequest=Autor/Anforderer UseCustomerContactAsOrderRecipientIfExist=Anschrift des Partnerkontakts statt Partneradresse für die Zustellung verwenden RunningOrders=Offene Bestellungen UserWithApproveOrderGrant=Benutzer mit Berechtigung zur 'Bestellfreigabe' diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang index f5deec7c0032309234713b4c0f2e66f1129736fa..e1102c2445f1bcd114a2f54e9c95ea28eda60066 100644 --- a/htdocs/langs/de_DE/other.lang +++ b/htdocs/langs/de_DE/other.lang @@ -2,7 +2,7 @@ SecurityCode=Sicherheitsschlüssel Calendar=Kalender Tools=Werkzeuge -ToolsDesc=Dieser Bereich ist bestimmt für die Gruppe "Verschiedenes" und nicht in andern Menüeinträgen verfügbar.<br /><br /> Diese Tools können Sie über das Menü auf dieser Seite erreichen. +ToolsDesc=Diese Seite ist eine Zusammenstellung "Verschiedener Werkzeuge" die nicht in andere Menüeinträgen passen.<br><br> Diese Tools können Sie über dieses Menü auf dieser Seite erreichen.\n Birthday=Geburtstag BirthdayDate=Geburtstag DateToBirth=Geburtsdatum @@ -12,16 +12,17 @@ Notify_FICHINTER_VALIDATE=Eingriff freigegeben Notify_FICHINTER_SENTBYMAIL=Service per E-Mail versendet Notify_BILL_VALIDATE=Rechnung freigegeben Notify_BILL_UNVALIDATE=Rechnung nicht freigegeben +Notify_ORDER_SUPPLIER_VALIDATE=freigegebene Lieferantenbestellung Notify_ORDER_SUPPLIER_APPROVE=Lieferantenbestellung freigegeben Notify_ORDER_SUPPLIER_REFUSE=Lieferantenbestellung abgelehnt -Notify_ORDER_VALIDATE=Kundenbestellung freigegeben +Notify_ORDER_VALIDATE=Kundenauftrag freigegeben Notify_PROPAL_VALIDATE=Angebot freigegeben Notify_PROPAL_CLOSE_SIGNED=geschlossene Verkäufe Signiert Angebote Notify_PROPAL_CLOSE_REFUSED=Geschlossene Verkäufe Angebot abgelehnt Notify_WITHDRAW_TRANSMIT=Transaktion zurückziehen Notify_WITHDRAW_CREDIT=Kreditkarten Rücknahme Notify_WITHDRAW_EMIT=Ausgabe aussetzen -Notify_ORDER_SENTBYMAIL=Kundenbestellung mit E-Mail versendet +Notify_ORDER_SENTBYMAIL=Kundenauftrag mit E-Mail versendet Notify_COMPANY_CREATE=Durch Dritte erstellt Notify_COMPANY_SENTBYMAIL=Von Partnern gesendete Mails Notify_PROPAL_SENTBYMAIL=Angebot mit E-Mail gesendet @@ -48,7 +49,7 @@ Notify_TASK_CREATE=Aufgabe erstellt Notify_TASK_MODIFY=Aufgabe geändert Notify_TASK_DELETE=Aufgabe gelöscht SeeModuleSetup=Finden Sie im Modul-Setup %s -NbOfAttachedFiles=Anzahl der angehängten Dateien/okumente +NbOfAttachedFiles=Anzahl der angehängten Dateien/Dokumente TotalSizeOfAttachedFiles=Gesamtgröße der angehängten Dateien/Dokumente MaxSize=Maximalgröße AttachANewFile=Neue Datei/Dokument anhängen @@ -82,14 +83,14 @@ ValidatedBy=Freigegeben von %s CanceledBy=Storniert von %s ClosedBy=Geschlossen von %s CreatedById=Erstellt von User-ID -ModifiedById=letzte Änderung von User-ID +ModifiedById=letzte Änderung von Benutzer-ID ValidatedById=Freigabe durch User-ID CanceledById=Storno durch User-ID ClosedById=geschlossen von User-ID -CreatedByLogin=Erstellt von User +CreatedByLogin=erstellt von Benutzername ModifiedByLogin=letzte Änderung durch User ValidatedByLogin=Freigabe durch User -CanceledByLogin=Storno durch User +CanceledByLogin=storniert durch Benutzername ClosedByLogin=geschlossen von User FileWasRemoved=Datei wurde entfernt DirWasRemoved=Verzeichnis wurde entfernt diff --git a/htdocs/langs/de_DE/paybox.lang b/htdocs/langs/de_DE/paybox.lang index fd8fcba4236fa187140c912a443a98b754f81f6e..7c5dc96fc420f3c82e97f1e912dd12801223919f 100644 --- a/htdocs/langs/de_DE/paybox.lang +++ b/htdocs/langs/de_DE/paybox.lang @@ -36,5 +36,5 @@ NewPayboxPaymentReceived=Neue Paybox-Zahlung erhalten NewPayboxPaymentFailed=Neue Paybox-Zahlungen probiert, aber fehlgeschlagen PAYBOX_PAYONLINE_SENDEMAIL=Status-Email nach einer Zahlung (erfolgreich oder nicht) PAYBOX_PBX_SITE=Wert für PayBox Seite -PAYBOX_PBX_RANG=Value for PBX Rang -PAYBOX_PBX_IDENTIFIANT=Value for PBX ID +PAYBOX_PBX_RANG=Wert für PBX Rang +PAYBOX_PBX_IDENTIFIANT=Wert für PBX ID diff --git a/htdocs/langs/de_DE/printipp.lang b/htdocs/langs/de_DE/printipp.lang index c4ce34ef962212f7afd5a2331730904da36ceb68..b2e884cbfdbb82fc589bf8547fb05bfc4c91ee7a 100644 --- a/htdocs/langs/de_DE/printipp.lang +++ b/htdocs/langs/de_DE/printipp.lang @@ -4,7 +4,7 @@ PrintIPPDesc=Dieses Modul fügt einen "Drucken"-Button zu, um Dokumente direkt z PRINTIPP_ENABLED="Direktdruck"-Symbol in Dokumentlisten anzeigen PRINTIPP_HOST=Druckserver PRINTIPP_PORT=Port -PRINTIPP_USER=Login +PRINTIPP_USER=Benutzername PRINTIPP_PASSWORD=Passwort NoPrinterFound=Keine Drucker gefunden (CUPS-Konfiguration prüfen) FileWasSentToPrinter=Datei %s zum Drucker gesandt diff --git a/htdocs/langs/de_DE/products.lang b/htdocs/langs/de_DE/products.lang index 5dc2f4c922951aaa70d667e365ff9c542fd453dc..1682366a0860388e2a05eb645cc8f3f43c17d15d 100644 --- a/htdocs/langs/de_DE/products.lang +++ b/htdocs/langs/de_DE/products.lang @@ -31,7 +31,7 @@ ProductsNotOnSell=Produkte weder für Ein- noch Verkauf ProductsOnSellAndOnBuy=Produkte für Ein- und Verkauf ServicesOnSell=Leistungen für Ein- oder Verkauf ServicesNotOnSell=Leistungen weder für Ein- noch Verkauf -ServicesOnSellAndOnBuy=Services für Ein- und Verkauf +ServicesOnSellAndOnBuy=Leistungen für Ein- und Verkauf InternalRef=Interne Referenz LastRecorded=Zuletzt erfasste, verfügbare Produkte/Leistungen LastRecordedProductsAndServices=%s zuletzt erfasste Produkte/Leistungen diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index 40549046770fade7cd8dbce8488223c0d3955d3f..9adc7b2d38050324da015050605f8c203886da90 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -14,7 +14,7 @@ MyTasksDesc=Diese Ansicht ist für Sie beschränkt auf Projekte oder Aufgaben be OnlyOpenedProject=Nur geöffnete Projekte sind sichtbar (Projekte im Status Entwurf oder geschlossenen sind nicht sichtbar). TasksPublicDesc=Diese Ansicht ist beschränkt auf Projekt und Aufgaben bei welchen Sie über Leserechte verfügen. TasksDesc=Diese Ansicht zeigt alle Projekte und Aufgaben (Ihre Benutzerberechtigungen berechtigt Sie alles zu sehen). -AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. +AllTaskVisibleButEditIfYouAreAssigned=Alle Aufgaben des Projektes sind sichtbar, Sie können jedoch nur\ndie Zeit für Aufgaben die Ihnen zugewiesen sind, eingeben. ProjectsArea=Projektübersicht NewProject=Neues Projekt AddProject=Projekt erstellen @@ -64,17 +64,17 @@ Progress=Fortschritt ProgressDeclared=Angegebener Fortschritt ProgressCalculated=Kalkulierter Fortschritt Time=Zeitaufwand -ListProposalsAssociatedProject=Liste der mit diesem Projekt verbundenen Angebote -ListOrdersAssociatedProject=Liste der mit diesem Projekt verbundenen Bestellungen -ListInvoicesAssociatedProject=Liste der mit diesem Projekt verbundenen Rechnungen -ListPredefinedInvoicesAssociatedProject=Liste der mit diesem Projekt verknüpften Rechnungsvorlagen -ListSupplierOrdersAssociatedProject=Liste der mit diesem Projekt verbundenen Lieferantenbestellungen -ListSupplierInvoicesAssociatedProject=Liste der mit diesem Projekt verbundenen Lieferantenrechnungen -ListContractAssociatedProject=Liste der mit diesem Projekt verbundenen Verträge -ListFichinterAssociatedProject=Liste der mit diesem Projekt verknüpften Services -ListExpenseReportsAssociatedProject=Liste der mit diesem Projekt verknüpften Spesenabrechnungen -ListDonationsAssociatedProject=Liste der mit diesem Projekt verbundenen Spenden -ListActionsAssociatedProject=Liste der mit diesem Projekt verknüpften Maßnahmen +ListProposalsAssociatedProject=Liste Angebote, die mit diesem Projekt verknüpft sind +ListOrdersAssociatedProject=Liste Aufträge, die mit diesem Projekt verknüpft sind +ListInvoicesAssociatedProject=Liste Rechnungen, die mit diesem Projekt verknüpft sind +ListPredefinedInvoicesAssociatedProject=Liste Rechnungsvorlagen, die mit diesem Projekt verknüpft sind +ListSupplierOrdersAssociatedProject=Liste Lieferantenbestellungen, die mit diesem Projekt verknüpft sind +ListSupplierInvoicesAssociatedProject=Liste Lieferantenrechnungen, die mit diesem Projekt verknüpft sind +ListContractAssociatedProject=Liste Verträge, die mit diesem Projekt verknüpft sind +ListFichinterAssociatedProject=Liste Eingriffe, die mit diesem Projekt verknüpft sind +ListExpenseReportsAssociatedProject=Liste Spesenabrechnungen, die mit diesem Projekt verknüpft sind +ListDonationsAssociatedProject=Liste Spenden, die mit diesem Projekt verknüpft sind +ListActionsAssociatedProject=Liste Ereignisse, die mit diesem Projekt verknüpft sind ActivityOnProjectThisWeek=Projektaktivitäten dieser Woche ActivityOnProjectThisMonth=Projektaktivitäten dieses Monats ActivityOnProjectThisYear=Projektaktivitäten dieses Jahres @@ -88,7 +88,7 @@ CloseAProject=Projekt schließen ConfirmCloseAProject=Möchten Sie dieses Projekt wirklich schließen? ReOpenAProject=Projekt öffnen ConfirmReOpenAProject=Möchten Sie dieses Projekt wirklich wiedereröffnen? -ProjectContact=Projektkontakt +ProjectContact=Projekt Kontakte ActionsOnProject=Projektaktionen YouAreNotContactOfProject=Sie sind diesem privaten Projekt nicht als Kontakt zugeordnet. DeleteATimeSpent=Lösche einen Zeitaufwand @@ -136,7 +136,7 @@ PlannedWorkload=Geplante Auslastung PlannedWorkloadShort=Workload WorkloadOccupation=Workloadzuordnung ProjectReferers=Verknüpfte Objekte -SearchAProject=Suchen Sie ein Projekt +SearchAProject=Projekt suchen ProjectMustBeValidatedFirst=Projekt muss erst bestätigt werden ProjectDraft=Projekt-Entwürfe FirstAddRessourceToAllocateTime=Eine Ressource zuordnen, um Zeit festzulegen diff --git a/htdocs/langs/de_DE/propal.lang b/htdocs/langs/de_DE/propal.lang index a21c2a45e2129969b8e68dc3607b88eae3973625..948b89bb947ab6641cf03d3b091c282164735b35 100644 --- a/htdocs/langs/de_DE/propal.lang +++ b/htdocs/langs/de_DE/propal.lang @@ -5,7 +5,7 @@ ProposalShort=Angebot ProposalsDraft=Angebotsentwürfe ProposalDraft=Angebotsentwurf ProposalsOpened=Offene Angebote -Prop=Angebot +Prop=Angebote CommercialProposal=Angebot CommercialProposals=Angebote ProposalCard=Angebotskarte @@ -28,7 +28,7 @@ SearchAProposal=Angebot suchen ProposalsStatistics=Angebotsstatistiken NumberOfProposalsByMonth=Anzahl pro Monat AmountOfProposalsByMonthHT=Betrag pro Monat (nach Steuern) -NbOfProposals=Zahl der Angebote +NbOfProposals=Anzahl der Angebote ShowPropal=Zeige Angebot PropalsDraft=Entwürfe PropalsOpened=Offen @@ -50,11 +50,11 @@ PropalStatusBilledShort=Verrechnet PropalsToClose=Zu schließende Angebote PropalsToBill=Unterzeichnete Angebote zur Verrechnung ListOfProposals=Liste der Angebote -ActionsOnPropal=Maßnahmen zum Angebot +ActionsOnPropal=Ereignisse zum Angebot NoOpenedPropals=Keine offenen Angebote NoOtherOpenedPropals=Keine offene Angebote Dritter RefProposal=Angebots-Nr. -SendPropalByMail=Angebot per E-Mail senden +SendPropalByMail=Angebot per E-Mail versenden AssociatedDocuments=Dokumente verknüpft mit dem Angebot: ErrorCantOpenDir=Verzeichnis kann nicht geöffnet werden DatePropal=Angebotsdatum diff --git a/htdocs/langs/de_DE/sendings.lang b/htdocs/langs/de_DE/sendings.lang index 7de0830fadd756621e8693aa3d623b223dfd91db..567a1d8d6792d8538111821c3678fc840e45335f 100644 --- a/htdocs/langs/de_DE/sendings.lang +++ b/htdocs/langs/de_DE/sendings.lang @@ -46,16 +46,16 @@ CarriersArea=Spediteursübersicht NewCarrier=Neuer Spediteur ConfirmDeleteSending=Möchten Sie diese Lieferung wirklich löschen? ConfirmValidateSending=Möchten Sie diese Auslieferung <b>%s</b> wirklich freigeben? -ConfirmCancelSending=Sind Sie sicher, dass Sie diese Auslieferung stornieren wollen? +ConfirmCancelSending=Möchten Sie diese Lieferung wirklich wirklich stornieren? GenericTransport=Generischer Transport Enlevement=Vom Kunden erhalten DocumentModelSimple=Einfache Dokumentvorlage DocumentModelMerou=Merou A5-Modell WarningNoQtyLeftToSend=Achtung, keine Produkte für den Versand StatsOnShipmentsOnlyValidated=Versandstatistik (nur Freigegebene). Das Datum ist das der Freigabe (geplantes Lieferdatum ist nicht immer bekannt). -DateDeliveryPlanned=Geplantes Zustellungsdatum +DateDeliveryPlanned=Geplanter Liefertermin DateReceived=Datum der Zustellung -SendShippingByEMail=Verand per E-Mail +SendShippingByEMail=Versand per E-Mail SendShippingRef=Versendung der Auslieferung %s ActionsOnShipping=Hinweis zur Lieferung LinkToTrackYourPackage=Link zur Paket- bzw. Sendungsverfolgung @@ -67,7 +67,7 @@ SendingRunning=Die Produktion von dem bestellten Kundenaufträge SuppliersReceiptRunning=Produkt aus Lieferantenbestellung ProductQtyInCustomersOrdersRunning=Produktmenge in geöffneter Kunden Bestellungen ProductQtyInSuppliersOrdersRunning=Produktmenge in geöffneter Lieferantenbestellungen -ProductQtyInShipmentAlreadySent=Produktmenge aus geöffneter Kundenbestellung bereits versandt +ProductQtyInShipmentAlreadySent=Produktmenge bereits in offenen Kundenaufträgen enthalten ProductQtyInSuppliersShipmentAlreadyRecevied=Produktmenge aus Lieferantenbestellung bereits erhalten # Sending methods diff --git a/htdocs/langs/de_DE/stocks.lang b/htdocs/langs/de_DE/stocks.lang index a9d5e75d4e7660d7829ad2aed239997e283afe6d..3053ba30ab0f35cc37b387304b5c13de510da082 100644 --- a/htdocs/langs/de_DE/stocks.lang +++ b/htdocs/langs/de_DE/stocks.lang @@ -16,7 +16,7 @@ CancelSending=Lieferung abbrechen DeleteSending=Lieferung löschen Stock=Warenbestand Stocks=Warenbestände -StocksByLotSerial=Stock by lot/serial +StocksByLotSerial=Lager nach ChNr / SN Movement=Lagerbewegung Movements=Lagerbewegungen ErrorWarehouseRefRequired=Warenlager-Referenz erforderlich @@ -70,7 +70,7 @@ StockLimitShort=Alarmschwelle StockLimit=Sicherungsbestand für autom. Benachrichtigung PhysicalStock=Physisches Warenlager RealStock=Realer Lagerbestand -VirtualStock=Virtuelles Warenlager +VirtualStock=Theoretisches Warenlager MininumStock=Mindestlagerstand StockUp=Aufstocken MininumStockShort=Sicherungsbestand @@ -83,8 +83,8 @@ WarehousesAndProductsBatchDetail=Warenlager und Produkte (mit Detail per lot / s AverageUnitPricePMPShort=Gewichteter Durchschnitts-Einkaufspreis AverageUnitPricePMP=Gewichteter Durchschnitts-Eingangspreis SellPriceMin=Verkaufspreis -EstimatedStockValueSellShort=Abverkaufsmenge -EstimatedStockValueSell=Abverkaufsmenge +EstimatedStockValueSellShort=Verkaufswert +EstimatedStockValueSell=Lager Verkaufswert EstimatedStockValueShort=Eingangsmenge EstimatedStockValue=Eingangsmenge DeleteAWarehouse=Warenlager löschen @@ -97,24 +97,24 @@ NoStockAction=Keine Vorratsänderung LastWaitingSupplierOrders=Bestellungen warten auf Wareneingang DesiredStock=gewünschter Lagerbestand StockToBuy=zu bestellen -Replenishment=Nachschub +Replenishment=Nachbestellung ReplenishmentOrders=Nachbestellungen -VirtualDiffersFromPhysical=Je nach den Einstellungen zur Erhöhung/Verminderung des Lagerbestands können physischer und virtueller Bestand (realer + aktuelle Bestellungen) voneinander abweichen -UseVirtualStockByDefault=Benutze virtuelle Lagerbestände anstatt des physischem Bestands für Nachschub -UseVirtualStock=virtuelles Warenlager verwenden +VirtualDiffersFromPhysical=Je nach den Einstellungen zur Erhöhung/Minderung des Lagerbestands können physischer und theoretischer Bestand (tatsächliche + laufende Bestellungen) voneinander abweichen +UseVirtualStockByDefault=Nutze theoretische Lagerbestände anstatt des physischem Bestands für die Nachbestellungsfunktion +UseVirtualStock=theoretisches Warenlager verwenden UsePhysicalStock=Physisches Warenlager verwenden CurentSelectionMode=Aktueller Auswahl-Modus -CurentlyUsingVirtualStock=Virtuelles Warenlager +CurentlyUsingVirtualStock=Theoretisches Warenlager CurentlyUsingPhysicalStock=Physisches Warenlager -RuleForStockReplenishment=Regel für Lager-Nachschub +RuleForStockReplenishment=Regeln für Nachbestellungen SelectProductWithNotNullQty=Wählen Sie mindestens ein Produkt mit einer Menge ungleich Null und einen Lieferanten AlertOnly= Nur Warnungen WarehouseForStockDecrease=Das Lager <b>%s</b> wird für Entnahme verwendet WarehouseForStockIncrease=Das Lager <b>%s</b> wird für Wareneingang verwendet ForThisWarehouse=Für dieses Lager ReplenishmentStatusDesc=Dies ist eine Liste aller Produkte, deren Lagerbestand unter dem Sollbestand liegt (bzw. unter der Alarmschwelle, wenn die Auswahlbox "Nur Alarm" gewählt ist) , die Ihnen Vorschläge für Lieferantenbestellungen liefert, um die Differenzen auszugleichen. -ReplenishmentOrdersDesc=Das ist eine Liste aller geöffneten Lieferantenaufträge einschließlich vordefinierter Produkte. Nur geöffnete Bestellungen mit vordefinierten Produkten, so dass möglicherweise Lager betreffen, sind hier sichtbar. -Replenishments=Nachschub +ReplenishmentOrdersDesc=Das ist eine Liste aller offener Lieferantenbestellungen einschließlich vordefinierter Produkte. Nur geöffnete Bestellungen mit vordefinierten Produkten, sofern es das Lager betrifft, sind hier sichtbar. +Replenishments=Nachbestellung NbOfProductBeforePeriod=Menge des Produkts %s im Lager vor der gewählten Periode (< %s) NbOfProductAfterPeriod=Menge des Produkts %s im Lager nach der gewählten Periode (> %s) MassMovement=Massenbewegung @@ -133,7 +133,7 @@ IsInPackage=In Paket enthalten ShowWarehouse=Zeige Lager MovementCorrectStock=Lager korrigiert für Produkt %s MovementTransferStock=Umlagerung des Produkt %s in ein anderes Lager -WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when "product lot" module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. -InventoryCodeShort=Inv./Mov. code +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Quelle Lager muss hier definiert werden wenn das "Produkt Posten" Modul aktiviert ist. \nEs wird zum auflisten welche Posten/Serien verfügbar für Produkte die erforderliche Posten/Serien Daten für die Bewegung erforderlich.\nWenn Sie Produkte aus verschiedenen Lagern versenden, erstellen sie den Versand einfach in mehreren Schritten. +InventoryCodeShort=Inv. / Mov. Kode NoPendingReceptionOnSupplierOrder=Keine anstehenden Eingänge aufgrund geöffneter Lieferantenbestellungen -ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (<strong>%s</strong>) already exists but with different eatby or sellby date (found <strong>%s</strong> but you enter <strong>%s</strong>). +ThisSerialAlreadyExistWithDifferentDate=Diese Charge- / Seriennummer (<strong>%s</strong>) ist bereits vorhanden, jedoch mit unterschiedlichen Haltbarkeits- oder Verfallsdatum. \n(Gefunden: <strong>%s</strong> Erfasst: <strong>%s</strong>) diff --git a/htdocs/langs/de_DE/suppliers.lang b/htdocs/langs/de_DE/suppliers.lang index cb02512e7390e7c5495e5865ec8ac82be7688a27..de2f1f6a9660ede3d044223deff491c97fb55f01 100644 --- a/htdocs/langs/de_DE/suppliers.lang +++ b/htdocs/langs/de_DE/suppliers.lang @@ -22,7 +22,7 @@ ReferenceSupplierIsAlreadyAssociatedWithAProduct=Für dieses Produkt existiert b NoRecordedSuppliers=Keine Lieferanten erfasst SupplierPayment=Lieferantenzahlung SuppliersArea=Lieferantenübersicht -RefSupplierShort=Kurzbezeichnung Lieferant +RefSupplierShort=Ref . Lieferant Availability=Verfügbarkeit ExportDataset_fournisseur_1=Lieferantenrechnungen und Positionen ExportDataset_fournisseur_2=Lieferantenrechnungen und Zahlungen @@ -32,9 +32,9 @@ ConfirmApproveThisOrder=Möchten Sie diese Bestellung wirklich bestätigen <b>%s DenyingThisOrder=Bestellung ablehnen ConfirmDenyingThisOrder=Möchten Sie diese Bestellung wirklich ablehnen <b>%s</b> ? ConfirmCancelThisOrder=Möchten Sie diese Bestellung wirklich verwerfen <b>%s</b> ? -AddCustomerOrder=Erzeuge Kundenbestellung +AddCustomerOrder=Erzeuge Kundenauftrag AddCustomerInvoice=Kundenrechnung erstellen -AddSupplierOrder=Erzeuge Lieferantenbestellung +AddSupplierOrder=Lieferantenbestellung erstellen AddSupplierInvoice=Lieferantenrechnung erstellen ListOfSupplierProductForSupplier=Produkt- und Preisliste für Anbieter <b>%s</b> NoneOrBatchFileNeverRan=Keiner oder Batch-Job <b>%s</b> wurde nie ausgeführt @@ -43,4 +43,4 @@ ListOfSupplierOrders=Liste der Lieferantenbestellungen MenuOrdersSupplierToBill=Zu berechnende Lieferantenbestellungen NbDaysToDelivery=Lieferverzug in Tagen DescNbDaysToDelivery=Max. Verspätungstoleranz in Tage für Lieferung -UseDoubleApproval=Use double approval (the second approval can be done by any user with the dedicated permission) +UseDoubleApproval=Verwenden Sie die doppelte Genehmigung (die zweite Genehmigung kann von jedem Benutzer mit einem speziellen Benutzerrecht durchgeführt werden) diff --git a/htdocs/langs/de_DE/trips.lang b/htdocs/langs/de_DE/trips.lang index f6a3d526efda9ca4135d26c07a698cbbff008754..aba3a7b80d32e6aeec5e715d28cfa2a41cc7c086 100644 --- a/htdocs/langs/de_DE/trips.lang +++ b/htdocs/langs/de_DE/trips.lang @@ -3,7 +3,7 @@ ExpenseReport=Spesenabrechnung ExpenseReports=Spesenabrechnungen Hinweis Trip=Spesenabrechnung Trips=Spesenabrechnungen -TripsAndExpenses=Reise- und Spesenabrechnungen +TripsAndExpenses=Reise- und Fahrtspesen TripsAndExpensesStatistics=Reise- und Spesen Statistik TripCard=Reisekosten Karte AddTrip=Reisekostenabrechnung erstellen @@ -21,8 +21,8 @@ ExpensesArea=Spesenabrechnungen SearchATripAndExpense=Suche nach einer Spesenabrechnung ClassifyRefunded=Als 'rückerstattet' markieren ExpenseReportWaitingForApproval=Eine neue Reisekostenabrechnung ist zur Genehmigung vorgelegt worden -ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s -TripId=Id expense report +ExpenseReportWaitingForApprovalMessage=Eine neue Kostenabrechnung wurde vorgelegt und steht zur Überprüfung an.\n- Benutzer: %s \n- Zeitraum: %s \nKlicken Sie hier, um zu überprüfen: %s +TripId=Spesenabrechnung ID AnyOtherInThisListCanValidate=Person für die Validierung zu informieren . TripSociete=Partner TripSalarie=Mitarbeiter diff --git a/htdocs/langs/de_DE/users.lang b/htdocs/langs/de_DE/users.lang index b8c4133d5f0186968c18f3bf0f92d568399e0d49..d30044c41414a2dd1c95f9b4ca39373aa850a448 100644 --- a/htdocs/langs/de_DE/users.lang +++ b/htdocs/langs/de_DE/users.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - users -HRMArea=HRM-Bereich +HRMArea=PM - Personalmanagment - Übersicht UserCard=Benutzerkarte ContactCard=Kontaktkarte GroupCard=Firmenverbundkarte @@ -13,9 +13,9 @@ PasswordChangedTo=Neues Passwort: %s SubjectNewPassword=Ihr neues Passwort AvailableRights=Verfügbare Berechtigungen OwnedRights=Besitz Berechtigungen -GroupRights=Gruppe Berechtigungen +GroupRights=Gruppenberechtigungen UserRights=Benutzerberechtigungen -UserGUISetup=Einstellungen Benutzeroberfläche +UserGUISetup=Benutzeroberfläche DisableUser=Deaktiviere Benutzer DisableAUser=Einen Benutzer deaktivieren DeleteUser=Lösche Benutzer @@ -36,8 +36,8 @@ ConfirmReinitPassword=Möchten Sie das Passwort für Benutzer <b>%s</b> wirklich ConfirmSendNewPassword=Möchten Sie für diesen Benutzer <b>%s</b> wirklich ein neues Passwort generieren und diesem per Mail zusenden? NewUser=Neuer Benutzer CreateUser=Benutzer erstellen -SearchAGroup=Suche Gruppe -SearchAUser=Suche Benutzer +SearchAGroup=Gruppe suchen +SearchAUser=Benutzer suchen LoginNotDefined=Benutzername ist nicht gesetzt. NameNotDefined=Name ist nicht gesetzt. ListOfUsers=Liste der Benutzer @@ -55,7 +55,7 @@ NewGroup=Neue Gruppe CreateGroup=Gruppe erstellen RemoveFromGroup=Gruppenzuweisung entfernen PasswordChangedAndSentTo=Passwort geändert und an <b>%s</b> gesendet. -PasswordChangeRequestSent=Anfrage auf eine Änderung das Passworts für <b>%s</b> an <b>%s</b> gesendet. +PasswordChangeRequestSent=Kennwort-Änderungsanforderung für <b>%s</b> gesendet an <b>%s</b>. MenuUsersAndGroups=Benutzer & Gruppen LastGroupsCreated=%s zuletzt erstellte Gruppen LastUsersCreated=%s zuletzt erstellte Benutzer @@ -69,7 +69,7 @@ ListOfUsersInGroup=Liste der Benutzer in dieser Gruppe ListOfGroupsForUser=Liste der Gruppen dieses Benutzers UsersToAdd=Dieser Gruppe zuzuweisende Benutzer GroupsToAdd=Diesem Benutzer zuzuweisende Gruppen -NoLogin=Kein Login +NoLogin=Keine Verbindung LinkToCompanyContact=Mit Partner/Kontakt verknüpfen LinkedToDolibarrMember=Mit Mitglied verknüpfen LinkedToDolibarrUser=Mit Systembenutzer verknüpft @@ -113,7 +113,7 @@ YourRole=Ihre Rolle YourQuotaOfUsersIsReached=Ihr Kontingent aktiver Benutzer ist erreicht NbOfUsers=Anzahl der Benutzer DontDowngradeSuperAdmin=Nur ein SuperAdmin kann einen SuperAdmin downgraden -HierarchicalResponsible=Aufseher +HierarchicalResponsible=Vorgesetzter HierarchicView=Hierarchische Ansicht UseTypeFieldToChange=Nutzen sie das Feld "Typ" zum ändern OpenIDURL=OpenID URL diff --git a/htdocs/langs/de_DE/withdrawals.lang b/htdocs/langs/de_DE/withdrawals.lang index 2f2b5ce1cb4a95fa67369c0e47fd3060b87dc60c..e663476014f5f478ea6e28bccbf87d1741c60d92 100644 --- a/htdocs/langs/de_DE/withdrawals.lang +++ b/htdocs/langs/de_DE/withdrawals.lang @@ -1,9 +1,9 @@ # Dolibarr language file - Source file is en_US - withdrawals -StandingOrdersArea=Dauerauftragsübersicht +StandingOrdersArea=Lastschriftverfahren SEPA Übersicht CustomersStandingOrdersArea=SEPA-Lastschriftverfahren-Übersicht -StandingOrders=Daueraufträge -StandingOrder=Dauerauftrag -NewStandingOrder=Neuer Dauerauftrag +StandingOrders=Lastschriftverfahren +StandingOrder=Lastschriftverfahren +NewStandingOrder=Neuer Abbucher StandingOrderToProcess=Zu bearbeiten StandingOrderProcessed=Bearbeitet Withdrawals=Abbuchungen @@ -15,11 +15,11 @@ LastWithdrawalReceipts=%s neuste Abbuchungsbelege WithdrawedBills=Abgebuchte Rechnungen WithdrawalsLines=Abbuchungszeilen RequestStandingOrderToTreat=Anfrage für Dauerauftrage zu bearbeiten -RequestStandingOrderTreated=Anfrage für Daueraufträge bearbeitet -NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. -CustomersStandingOrders=Daueraufträge (Kunden) -CustomerStandingOrder=Dauerauftrag (Kunde) -NbOfInvoiceToWithdraw=Nr. der abzubuchenden Rechnung +RequestStandingOrderTreated=Anfrage für Lastschriftauftrag bearbeitet +NotPossibleForThisStatusOfWithdrawReceiptORLine=Funktion nicht verfügbar. Der Status des Abbucher muss auf "durchgeführt" gesetzt sein bevor eine Erklärung für die Ablehnung eingetragen werden können. +CustomersStandingOrders=Kunden Lastschriftverfahren +CustomerStandingOrder=Kunde Lastschriftverfahren +NbOfInvoiceToWithdraw=Anzahl der abzubuchenden Rechnungen NbOfInvoiceToWithdrawWithInfo=Anzahl der Rechnungen mit Abbuchungsanfragen für Kunden mit einem hinterlegten Bankkonto InvoiceWaitingWithdraw=Rechnung warten auf Abbuchung AmountToWithdraw=Abbuchungsbetrag @@ -73,25 +73,25 @@ NotifyCredit=Abbuchungsgutschrift NumeroNationalEmetter=Nat. Überweisernummer PleaseSelectCustomerBankBANToWithdraw=Wählen Sie das Kundenkonto für die Abbuchung WithBankUsingRIB=Bankkonten mit RIB -WithBankUsingBANBIC=Bankkonten mit IBAN/BIC/SWIFT +WithBankUsingBANBIC=Bankkonten mit IBAN/BIC BankToReceiveWithdraw=Bankkonto für Abbuchungen CreditDate=Am WithdrawalFileNotCapable=Abbuchungsformular für Ihr Land %s konnte nicht erstellt werden (Dieses Land wird nicht unterstützt). ShowWithdraw=Zeige Abbuchung IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Wenn eine Rechnung mindestens eine noch zu bearbeitende Verbuchung vorweist, kann diese nicht als bezahlt markiert werden. -DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +DoStandingOrdersBeforePayments=In diesem Register können Sie ein Lastschriftverfahren anfordern. Ist das erledigt, gehen Sie im Menü Finanzen auf das Menü neuer Abbucher um die Lastschriften zu verwalten. Wenn das Lastschriftverfahren abgeschlossen ist, wird die Zahlung bei Rechnung automatisch aufgezeichnet werden, und die Rechnung wird abgeschlossen, wenn kein Rechnungsbetrag mehr offen ist. WithdrawalFile=Datei abbuchen SetToStatusSent=Setze in Status "Datei versandt" ThisWillAlsoAddPaymentOnInvoice=Dies wird auch Zahlungen auf Rechnungen erstellen und diese als bezahlt markieren StatisticsByLineStatus=Statistiken nach Statuszeilen ### Notifications -InfoCreditSubject=Zahlung des Dauerauftrags %s -InfoCreditMessage=Der Dauerauftrag %s wurde von der Bank gebucht<br>Zahlungsdaten: %s -InfoTransSubject=Übertragung des Dauerauftrags %s -InfoTransMessage=Der Dauerauftrag %s wurde von %s %s an die Bank übertragen.<br><br> +InfoCreditSubject=Zahlung Abbucher %s an die Bank +InfoCreditMessage=Der Abbucher %s wurde von der Bank gebucht<br>Zahlungsdatum: %s +InfoTransSubject=Übertragung des Abbucher %s zu Bank +InfoTransMessage=Der Abbucher %s wurde von %s %s an die Bank übertragen.<br><br> InfoTransData=Betrag: %s<br>Verwendungszweck: %s<br>Datum: %s InfoFoot=Dies ist eine automatisierte Nachricht von Dolibarr -InfoRejectSubject=Dauerauftrag abgelehnt -InfoRejectMessage=Hallo,<br><br>der Dauerauftrag für die Rechnung %s von der Firma %s, mit einem Betrag von %s wurde von der Bank abgelehnt.<br><br>--<br>%s +InfoRejectSubject=Lastschriftverfahren abgelehnt +InfoRejectMessage=Hallo,<br><br>das Lastschriftverfahren für die Rechnung %s von der Firma %s, mit einem Betrag von %s wurde von der Bank abgelehnt.<br><br>--<br>%s ModeWarning=Echtzeit-Modus wurde nicht aktiviert, wir stoppen nach der Simulation. diff --git a/htdocs/langs/de_DE/workflow.lang b/htdocs/langs/de_DE/workflow.lang index 11644cd0e8699857a704801950e2f53162c759af..6fb285f3ad35c99f91ce2b179b23bef10a3f8fbb 100644 --- a/htdocs/langs/de_DE/workflow.lang +++ b/htdocs/langs/de_DE/workflow.lang @@ -2,10 +2,10 @@ WorkflowSetup=Workflow Moduleinstellungen WorkflowDesc=Dieses Modul wurde entwickelt um zu verändern das Verhalten von automatischen Aktionen. Standardmäßig ist die Workflow geöffnet (Sie können alles in Ihrer Reihenfolge erledigen). Sie können automatische Vorgänge aktivieren, falls Sie für Sie von Interesse. ThereIsNoWorkflowToModify=Es gibt keine Vorgänge für das aktivierte Modul die Sie ändern können. -descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Erstelle eine automatische Kundenbestellung, nachdem ein Angebot unterzeichnet wurde +descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Erstelle einen Kundenauftrag automatisch, nachdem ein Angebot unterzeichnet wurde descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Erstelle eine automatische Kundenrechnung, nachdem ein Angebot unterzeichnet wurde descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Erstselle eine automatische Kundenrechnung, nachdem ein Vertrag freigegeben wurde -descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Erstselle eine automatische Kundenrechnung, nachdem eine Kundenbestellung geschlossen wurde +descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Erstelle automatisch eine Kundenrechnung, nachdem ein Kundenauftrag geschlossen wurde descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Kennzeichne verknüpftes Angebot als in Rechnung gestellt, wenn der Kundenauftrag als bezahlt markiert wird -descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Kennzeichne verknüpfte Kundenbestellung(en) als in Rechnung gestellt, wenn die Kundenrechnung als bezahlt markiert wird -descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Kennzeichne verknüpfte Kundenbestellung(en) als in Rechnung gestellt, wenn die Kundenrechnung bestätigt wird +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Kennzeichne verknüpfte Kundenaufträge als verrechnet, wenn die Kundenrechnung als bezahlt markiert wird +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Kennzeichne verknüpfte Kundenaufträge als verrechnet, wenn die Kundenrechnung bestätigt wird diff --git a/htdocs/langs/en_GB/categories.lang b/htdocs/langs/en_GB/categories.lang new file mode 100644 index 0000000000000000000000000000000000000000..6173fc601e656cce7cce5c1aba6ea019e91f232e --- /dev/null +++ b/htdocs/langs/en_GB/categories.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - categories +CatContactList=List of contact tags/categories and contact diff --git a/htdocs/langs/en_GB/sendings.lang b/htdocs/langs/en_GB/sendings.lang new file mode 100644 index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf --- /dev/null +++ b/htdocs/langs/en_GB/sendings.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - sendings +DateDeliveryPlanned=Planed date of delivery diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 7e098787fd014c6d55c43183a402efade29a89ec..94bc57e705057a491d14c034c1fda37e9afe6b44 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -149,7 +149,6 @@ MenuForUsers=Menu for users LangFile=.lang file System=System SystemInfo=System information -SystemTools=System tools SystemToolsArea=System tools area SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for. Purge=Purge @@ -232,8 +231,8 @@ Security=Security Passwords=Passwords DoNotStoreClearPassword=Do no store clear passwords in database but store only encrypted value (Activated recommended) MainDbPasswordFileConfEncrypted=Database password encrypted in conf.php (Activated recommended) -InstrucToEncodePass=To have password encoded into the <b>conf.php</b> file, replace the line <br><b>$dolibarr_main_db_pass="..."</b><br>by<br><b>$dolibarr_main_db_pass="crypted:%s"</b> -InstrucToClearPass=To have password decoded (clear) into the <b>conf.php</b> file, replace the line <br><b>$dolibarr_main_db_pass="crypted:..."</b><br>by<br><b>$dolibarr_main_db_pass="%s"</b> +InstrucToEncodePass=To have password encoded into the <b>conf.php</b> file, replace the line <br><b>$dolibarr_main_db_pass="...";</b><br>by<br><b>$dolibarr_main_db_pass="crypted:%s";</b> +InstrucToClearPass=To have password decoded (clear) into the <b>conf.php</b> file, replace the line <br><b>$dolibarr_main_db_pass="crypted:...";</b><br>by<br><b>$dolibarr_main_db_pass="%s";</b> ProtectAndEncryptPdfFiles=Protection of generated pdf files (Activated NOT recommended, breaks mass pdf generation) ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature make building of a global cumulated pdf not working (like unpaid invoices). Feature=Feature @@ -524,10 +523,10 @@ Module2400Name=Agenda Module2400Desc=Events/tasks and agenda management Module2500Name=Electronic Content Management Module2500Desc=Save and share documents -Module2600Name=WebServices -Module2600Desc=Enable the Dolibarr web services server -Module2610Name=Api -Module2610Desc=Enable the Dolibarr REST API +Module2600Name=API services (Web services SOAP) +Module2600Desc=Enable the Dolibarr SOAP server providing API services +Module2610Name=API services (Web services REST) +Module2610Desc=Enable the Dolibarr REST server providing API services Module2650Name=WebServices (client) Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) Module2700Name=Gravatar @@ -940,6 +939,7 @@ CompanyZip=Zip CompanyTown=Town CompanyCountry=Country CompanyCurrency=Main currency +CompanyObject=Object of the company Logo=Logo DoNotShow=Do not show DoNotSuggestPaymentMode=Do not suggest @@ -1638,3 +1638,6 @@ SomethingMakeInstallFromWebNotPossible=Installation of external module is not po SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is only manual steps a privileged user can do. InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file <strong>%s</strong> to allow this feature. ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br>- <strong>$dolibarr_main_url_root_alt</strong> enabled to value <strong>$dolibarr_main_url_root_alt="/custom"</strong><br>- <strong>$dolibarr_main_document_root_alt</strong> enabled to value <strong>"%s/custom"</strong> +HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over +PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective +NotSupportedByAllThemes=Will works with eldy theme but is not supported by all themes diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index e700271368d6203b4d070a76336a8a0c2a6045ec..a0626c1087f1c71759b01218f77ab6720e7dec21 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -410,10 +410,10 @@ OutstandingBillReached=Reached max. for outstanding bill MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. LeopardNumRefModelDesc=The code is free. This code can be modified at any time. ManagingDirectors=Manager(s) name (CEO, director, president...) -SearchThirdparty=Search thirdparty +SearchThirdparty=Search third party SearchContact=Search contact -MergeOriginThirdparty=Origin thirdparty -MergeThirdparties=Merge thirdparties -ConfirmMergeThirdparties=Are you sure you want to merge this thirdparty? All linked objects (invoices...) will be linked with the destination thirdparty +MergeOriginThirdparty=Duplicate third party (third party you want to delete) +MergeThirdparties=Merge third parties +ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one. ThirdpartiesMergeSuccess=Thirdparties have been merged ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted. \ No newline at end of file diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang index 5d7abf732ab4a744c257a624d92a281fff08745c..ff511f00d275f5e606f61e31b16e5972dbb8c8a3 100644 --- a/htdocs/langs/en_US/cron.lang +++ b/htdocs/langs/en_US/cron.lang @@ -4,10 +4,10 @@ About = About CronAbout = About Cron CronAboutPage = Cron about page # Right -Permission23101 = Read Scheduled task -Permission23102 = Create/update Scheduled task -Permission23103 = Delete Scheduled task -Permission23104 = Execute Scheduled task +Permission23101 = Read Scheduled job +Permission23102 = Create/update Scheduled job +Permission23103 = Delete Scheduled job +Permission23104 = Execute Scheduled job # Admin CronSetup= Scheduled job management setup URLToLaunchCronJobs=URL to check and launch cron jobs if required @@ -55,9 +55,9 @@ CronEach=Every JobFinished=Job launched and finished #Page card CronAdd= Add jobs -CronHourStart= Start hour and date of task -CronEvery= And execute task each -CronObject= Instance/Object to create +CronHourStart= Start hour and date of job +CronEvery=Execute job each +CronObject=Instance/Object to create CronArgs=Parameters CronSaveSucess=Save succesfully CronNote=Comment diff --git a/htdocs/langs/en_US/languages.lang b/htdocs/langs/en_US/languages.lang index d20aab00146c591c4ec9bf5678a42b92c44e619b..aaeeb235544421208b68e18db0f0666f563ace40 100644 --- a/htdocs/langs/en_US/languages.lang +++ b/htdocs/langs/en_US/languages.lang @@ -2,6 +2,7 @@ Language_ar_AR=Arabic Language_ar_SA=Arabic +Language_bn_BD=Bengali Language_bg_BG=Bulgarian Language_bs_BA=Bosnian Language_ca_ES=Catalan @@ -21,9 +22,10 @@ Language_en_SA=English (Saudi Arabia) Language_en_US=English (United States) Language_en_ZA=English (South Africa) Language_es_ES=Spanish -Language_es_DO=Spanish (Dominican Republic) Language_es_AR=Spanish (Argentina) Language_es_CL=Spanish (Chile) +Language_es_CO=Spanish (Colombia) +Language_es_DO=Spanish (Dominican Republic) Language_es_HN=Spanish (Honduras) Language_es_MX=Spanish (Mexico) Language_es_PY=Spanish (Paraguay) @@ -45,7 +47,10 @@ Language_id_ID=Indonesian Language_is_IS=Icelandic Language_it_IT=Italian Language_ja_JP=Japanese +Language_ka_GE=Georgian +Language_kn_IN=Kannada Language_ko_KR=Korean +Language_lo_LA=Lao Language_lt_LT=Lithuanian Language_lv_LV=Latvian Language_mk_MK=Macedonian @@ -64,6 +69,7 @@ Language_sv_SV=Swedish Language_sv_SE=Swedish Language_sq_AL=Albanian Language_sk_SK=Slovakian +Language_sw_SW=Kiswahili Language_th_TH=Thai Language_uk_UA=Ukrainian Language_uz_UZ=Uzbek diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 0d7377b89e44a6231409cbaaaac8b555b8e3624c..ae766c7a14788a2571f84ea533a0f6a396e70fe0 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -413,6 +413,8 @@ Qty=Qty ChangedBy=Changed by ApprovedBy=Approved by ApprovedBy2=Approved by (second approval) +Approved=Approved +Refused=Refused ReCalculate=Recalculate ResultOk=Success ResultKo=Failure @@ -678,6 +680,7 @@ LinkedToSpecificUsers=Linked to a particular user contact DeleteAFile=Delete a file ConfirmDeleteAFile=Are you sure you want to delete file NoResults=No results +SystemTools=System tools ModulesSystemTools=Modules tools Test=Test Element=Element @@ -704,6 +707,8 @@ GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into Deny=Deny Denied=Denied ListOfTemplates=List of templates +Genderman=Man +Genderwoman=Woman # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index d7fba120cb3e624872ea403ec5ea8ddc62fa3871..1d7ece0c98de824b7e96399f6e3f40c832a9fed7 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -294,3 +294,4 @@ LastUpdated=Last updated CorrectlyUpdated=Correctly updated PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is PropalMergePdfProductChooseFile=Select PDF files +IncludingProductWithTag=Including product with tag \ No newline at end of file diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 18c9b82de965f5d7db5bf802e8d71aef237358f8..25db18df4744e9d4b9929612671c881ffee3d53b 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -14,7 +14,8 @@ MyTasksDesc=This view is limited to projects or tasks you are a contact for (wha OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). -AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. +AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. Assign task to you if you want to enter time on it. +OnlyYourTaskAreVisible=Only tasks you are assigned on are visible. Assign task to you if you want to enter time on it. ProjectsArea=Projects area NewProject=New project AddProject=Create project @@ -75,6 +76,7 @@ ListFichinterAssociatedProject=List of interventions associated with the project ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListDonationsAssociatedProject=List of donations associated with the project ListActionsAssociatedProject=List of events associated with the project +ListTaskTimeUserProject=List of time consumed on tasks of project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month ActivityOnProjectThisYear=Activity on project this year @@ -145,4 +147,8 @@ InputPerWeek=Input per week InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact -TasksWithThisUserAsContact=Tasks assigned to this user \ No newline at end of file +TasksWithThisUserAsContact=Tasks assigned to this user +ResourceNotAssignedToProject=Not assigned to project +ResourceNotAssignedToTask=Not assigned to task +AssignTaskToMe=Assign task to me +AssignTask=Assign \ No newline at end of file diff --git a/htdocs/langs/en_US/salaries.lang b/htdocs/langs/en_US/salaries.lang index 0f5f636a3f3f23b311c17e8ced1745393409c05f..953a9c7540cbb06d6209140b32aaa0d23261e324 100644 --- a/htdocs/langs/en_US/salaries.lang +++ b/htdocs/langs/en_US/salaries.lang @@ -10,4 +10,6 @@ SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment THM=Average hourly price TJM=Average daily price -CurrentSalary=Current salary \ No newline at end of file +CurrentSalary=Current salary +THMDescription=This value may be used to calculate cost of time consumed on a project entered by users if module project is used +TJMDescription=This value is currently as information only and is not used for any calculation diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 9670d002be6648d2fae971f64ac1af1b402b5fdd..e6764df49a29929057e371a4d7362f0820d59aca 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -57,6 +57,7 @@ RemoveFromGroup=Remove from group PasswordChangedAndSentTo=Password changed and sent to <b>%s</b>. PasswordChangeRequestSent=Request to change password for <b>%s</b> sent to <b>%s</b>. MenuUsersAndGroups=Users & Groups +MenuMyUserCard=My user card LastGroupsCreated=Last %s created groups LastUsersCreated=Last %s users created ShowGroup=Show group diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index 7894351c01f68c0e43eb5f40f5eb616f7c3ff3ac..40aaf476f728af3c63bf04e112f889f33a699a8b 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -84,6 +84,9 @@ WithdrawalFile=Withdrawal file SetToStatusSent=Set to status "File Sent" ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid" StatisticsByLineStatus=Statistics by status of lines +RUM=RUM +RUMWillBeGenerated=RUM number will be generated once bank account information are saved +WithdrawMode=Withdraw mode (FRST or RECUR) ### Notifications InfoCreditSubject=Payment of standing order %s by the bank diff --git a/htdocs/langs/es_AR/categories.lang b/htdocs/langs/es_AR/categories.lang new file mode 100644 index 0000000000000000000000000000000000000000..6173fc601e656cce7cce5c1aba6ea019e91f232e --- /dev/null +++ b/htdocs/langs/es_AR/categories.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - categories +CatContactList=List of contact tags/categories and contact diff --git a/htdocs/langs/es_AR/sendings.lang b/htdocs/langs/es_AR/sendings.lang new file mode 100644 index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf --- /dev/null +++ b/htdocs/langs/es_AR/sendings.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - sendings +DateDeliveryPlanned=Planed date of delivery diff --git a/htdocs/langs/es_CO/categories.lang b/htdocs/langs/es_CO/categories.lang new file mode 100644 index 0000000000000000000000000000000000000000..6173fc601e656cce7cce5c1aba6ea019e91f232e --- /dev/null +++ b/htdocs/langs/es_CO/categories.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - categories +CatContactList=List of contact tags/categories and contact diff --git a/htdocs/langs/es_CO/sendings.lang b/htdocs/langs/es_CO/sendings.lang new file mode 100644 index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf --- /dev/null +++ b/htdocs/langs/es_CO/sendings.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - sendings +DateDeliveryPlanned=Planed date of delivery diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index 8161a7a8e7c525bc591f6e7407afdf032c3d1aae..cc346f1b38c6e304b1814ba21cc4f86a287a9c85 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -1,6 +1,18 @@ # Dolibarr language file - Source file is en_US - admin -Module30Name=Facturas y notas de crédito -Module30Desc=Gestión de facturas y notas de crédito a clientes. Gestión facturas de proveedores -BillsNumberingModule=Módulo de numeración de facturas y notas de crédito -CreditNoteSetup=Configuración del módulo notas de crédito -CreditNotePDFModules=Modelo de documento de notas de crédito +AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +UnpackPackageInDolibarrRoot=Unpack package file into directory dedicated to external modules: <b>%s</b> +ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir +LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax) +Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members) +Module39000Name=Product lot +Module39000Desc=Lot or serial number, eat-by and sell-by date management on products +MAIN_ROUNDING_RULE_TOT=Size of rounding range (for rare countries where rounding is done on something else than base 10) +BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example). +BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant. +RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>). +RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. +NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:<br>* per third parties contacts (customers or suppliers), one contact at time.<br>* or by setting global target email addresses in module setup page. +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management +MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) diff --git a/htdocs/langs/es_MX/banks.lang b/htdocs/langs/es_MX/banks.lang index a5411981c4b7b4144252b282386c367c9fd74825..e58cf5e72b5b543b3b197112ab0728bd9d5e9edf 100644 --- a/htdocs/langs/es_MX/banks.lang +++ b/htdocs/langs/es_MX/banks.lang @@ -1,2 +1,2 @@ # Dolibarr language file - Source file is en_US - banks -BankAccountDomiciliation=Tarjeta +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD diff --git a/htdocs/langs/es_MX/bills.lang b/htdocs/langs/es_MX/bills.lang index e62583d9e733b92219ca9764c362521644b858a0..f1e67a676c3b8f859eeb97a19b2077c9f770bd27 100644 --- a/htdocs/langs/es_MX/bills.lang +++ b/htdocs/langs/es_MX/bills.lang @@ -1,24 +1,2 @@ # Dolibarr language file - Source file is en_US - bills -InvoiceAvoir=Nota de crédito -InvoiceAvoirAsk=Nota de crédito para corregir la factura -InvoiceAvoirDesc=La <b>nota de crédito</b> es una factura negativa destinada a compensar un importe de factura que difiere del importe realmente pagado (por haber pagado de más o por devolución de productos, por ejemplo). -InvoiceHasAvoir=Corregida por una o más notas de crédito -ConfirmConvertToReduc=¿Quiere convertir esta nota de crédito en una reducción futura?<br>El importe de esta nota de crédito se almacenará para este cliente. Podrá utilizarse para reducir el importe de una próxima factura del cliente. -AddBill=Crear factura o nota de crédito -EnterPaymentDueToCustomer=Realizar pago de notas de crédito al cliente -ErrorInvoiceAvoirMustBeNegative=Error, una factura de tipo nota de crédito debe tener un importe negativo -BillTo=Receptor -ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar <b>(%s %s)</b> se ha regularizado (ya que artículo se ha devuelto, olvidado entregar, descuento no definido...) mediante una nota de crédito -ConfirmClassifyPaidPartiallyReasonOtherDesc=Esta elección será posible, por ejemplo, en los casos siguiente:<br>-pago parcial ya que una partida de productos se ha devuleto.<br>- reclamado por no entregar productos de la factura <br>En todos los casos, la reclamación debe regularizarse mediante una nota de crédito -ShowInvoiceAvoir=Ver nota de crédito -AlreadyPaidNoCreditNotesNoDeposits=Ya pagado (excluidos las notas de crédito y anticipos) -AddCreditNote=Crear nota de crédito -ShowDiscount=Ver la nota de crédito -CreditNote=Nota de crédito -CreditNotes=Notas de crédito -DiscountFromCreditNote=Descuento resultante de la nota de crédito %s -AbsoluteDiscountUse=Este tipo de crédito no puede ser utilizado en una factura antes de su validación -Residence=Tarjeta -PaymentByTransferOnThisBankAccount=Cuenta para depositos y transferencias -CreditNoteConvertedIntoDiscount=Esta nota de crédito se convirtió en %s -TerreNumRefModelDesc1=Devuelve el número bajo el formato %syymm-nnnn para las facturas y %syymm-nnnn para las notas de crédito donde yy es el año, mm. el mes y nnnn un contador secuencial sin ruptura y sin permanencia a 0 +ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. diff --git a/htdocs/langs/es_MX/categories.lang b/htdocs/langs/es_MX/categories.lang index 7e6b383c28777e691e6aeda865e0fbd64368015a..6173fc601e656cce7cce5c1aba6ea019e91f232e 100644 --- a/htdocs/langs/es_MX/categories.lang +++ b/htdocs/langs/es_MX/categories.lang @@ -1,2 +1,2 @@ # Dolibarr language file - Source file is en_US - categories -NotCategorized=Sin Categoría +CatContactList=List of contact tags/categories and contact diff --git a/htdocs/langs/es_MX/commercial.lang b/htdocs/langs/es_MX/commercial.lang new file mode 100644 index 0000000000000000000000000000000000000000..18d8db068019668b61d38d3d592361512787d725 --- /dev/null +++ b/htdocs/langs/es_MX/commercial.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - commercial +ActionAffectedTo=Event assigned to diff --git a/htdocs/langs/es_MX/companies.lang b/htdocs/langs/es_MX/companies.lang deleted file mode 100644 index 3727bea2735681a94d1af2700aef8ff64a784828..0000000000000000000000000000000000000000 --- a/htdocs/langs/es_MX/companies.lang +++ /dev/null @@ -1,7 +0,0 @@ -# Dolibarr language file - Source file is en_US - companies -State=Estado -Town=Municipio -VATIntra=RFC -VATIntraShort=RFC -VATIntraVeryShort=RFC -CompanyHasCreditNote=Este cliente tiene <b>%s %s</b> notas de crédito/anticipos disponibles diff --git a/htdocs/langs/es_MX/cron.lang b/htdocs/langs/es_MX/cron.lang new file mode 100644 index 0000000000000000000000000000000000000000..3f755fc725ddd5456b18be474d97bb473b926e36 --- /dev/null +++ b/htdocs/langs/es_MX/cron.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - cron +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes diff --git a/htdocs/langs/es_MX/interventions.lang b/htdocs/langs/es_MX/interventions.lang new file mode 100644 index 0000000000000000000000000000000000000000..84b26b1f95e09fc2fc1872c75da0c2922d92c3e8 --- /dev/null +++ b/htdocs/langs/es_MX/interventions.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - interventions +PrintProductsOnFichinterDetails=interventions generated from orders diff --git a/htdocs/langs/es_MX/mails.lang b/htdocs/langs/es_MX/mails.lang new file mode 100644 index 0000000000000000000000000000000000000000..4b5c7e95999646832e8f362031bea410cff97fe0 --- /dev/null +++ b/htdocs/langs/es_MX/mails.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - mails +ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature diff --git a/htdocs/langs/es_MX/main.lang b/htdocs/langs/es_MX/main.lang index cf154fa6429bf444a0b200675f35b607d38c1907..2e691473326d372b5db42468423519b3171a0d8a 100644 --- a/htdocs/langs/es_MX/main.lang +++ b/htdocs/langs/es_MX/main.lang @@ -4,21 +4,18 @@ FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, -FormatDateShort=%d/%m/%Y -FormatDateShortInput=%d/%m/%Y -FormatDateShortJava=dd/MM/yyyy -FormatDateShortJavaInput=dd/MM/yyyy -FormatDateShortJQuery=dd/mm/yy -FormatDateShortJQueryInput=dd/mm/yy +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy FormatHourShortJQuery=HH:MI -FormatHourShort=%H:%M +FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M -FormatDateTextShort=%d %b %Y -FormatDateText=%d %B %Y -FormatDateHourShort=%d/%m/%Y %H:%M -FormatDateHourSecShort=%d/%m/%Y %H:%M:%S -FormatDateHourTextShort=%d %b %Y %H:%M -FormatDateHourText=%d %B %Y %H:%M -AmountHT=Subtotal -TotalHT=Subtotal -TotalVAT=IVA +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p diff --git a/htdocs/langs/es_MX/orders.lang b/htdocs/langs/es_MX/orders.lang new file mode 100644 index 0000000000000000000000000000000000000000..6d902132a46c48d6f743f1f168bee74da6e2aee7 --- /dev/null +++ b/htdocs/langs/es_MX/orders.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - orders +StatusOrderOnProcessShort=Ordered +StatusOrderOnProcess=Ordered - Standby reception +ApproveOrder=Approve order +LastOrders=Last %s customer orders diff --git a/htdocs/langs/es_MX/other.lang b/htdocs/langs/es_MX/other.lang new file mode 100644 index 0000000000000000000000000000000000000000..c50a095e492a0a57ef32d24cc9891598517ad128 --- /dev/null +++ b/htdocs/langs/es_MX/other.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - other +Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded +SeeModuleSetup=See setup of module %s diff --git a/htdocs/langs/es_MX/productbatch.lang b/htdocs/langs/es_MX/productbatch.lang new file mode 100644 index 0000000000000000000000000000000000000000..53edc04d8c4739de1ae060d5f7aa8f6ea9aeba85 --- /dev/null +++ b/htdocs/langs/es_MX/productbatch.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - productbatch +ManageLotSerial=Use lot/serial number +ProductStatusOnBatch=Yes (lot/serial required) +ProductStatusNotOnBatch=No (lot/serial not used) +Batch=Lot/Serial +atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number +batch_number=Lot/Serial number +DetailBatchNumber=Lot/Serial details +DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +printBatch=Lot/Serial: %s +WhenProductBatchModuleOnOptionAreForced=When module Lot/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. diff --git a/htdocs/langs/es_MX/sendings.lang b/htdocs/langs/es_MX/sendings.lang new file mode 100644 index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf --- /dev/null +++ b/htdocs/langs/es_MX/sendings.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - sendings +DateDeliveryPlanned=Planed date of delivery diff --git a/htdocs/langs/es_MX/stocks.lang b/htdocs/langs/es_MX/stocks.lang index 295151fbd08c95862f65433c98b4e77a1792be91..3a989d45e7d76f98ef7f2c88d06f084430a13f18 100644 --- a/htdocs/langs/es_MX/stocks.lang +++ b/htdocs/langs/es_MX/stocks.lang @@ -1,3 +1,2 @@ # Dolibarr language file - Source file is en_US - stocks -DeStockOnBill=Decrementar los stocks físicos sobre las facturas/notas de crédito a clientes -ReStockOnBill=Incrementar los stocks físicos sobre las facturas/notas de crédito de proveedores +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when "product lot" module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/es_MX/suppliers.lang b/htdocs/langs/es_MX/suppliers.lang new file mode 100644 index 0000000000000000000000000000000000000000..5213cec4e07ca18ac9ed641ce598c046ac788a1e --- /dev/null +++ b/htdocs/langs/es_MX/suppliers.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - suppliers +DenyingThisOrder=Deny this order diff --git a/htdocs/langs/es_MX/trips.lang b/htdocs/langs/es_MX/trips.lang new file mode 100644 index 0000000000000000000000000000000000000000..f5e6f1a92ebf2effd4c01d542d91c3f665207a85 --- /dev/null +++ b/htdocs/langs/es_MX/trips.lang @@ -0,0 +1,14 @@ +# Dolibarr language file - Source file is en_US - trips +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +NewTrip=New expense report +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report diff --git a/htdocs/langs/et_EE/accountancy.lang b/htdocs/langs/et_EE/accountancy.lang index bb9b358c045f01051eecca5063c4127d6cb21672..28cfd06f2b7cfdd78441fe48ce82b68751e4971f 100644 --- a/htdocs/langs/et_EE/accountancy.lang +++ b/htdocs/langs/et_EE/accountancy.lang @@ -1,10 +1,10 @@ # Dolibarr language file - en_US - Accounting Expert CHARSET=UTF-8 -Accounting=Accounting -Globalparameters=Global parameters -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years +Accounting=Raamatupidamine +Globalparameters=Globaalsed parameetrid +Chartofaccounts=Kontoplaan +Fiscalyear=Majandusaastad Menuaccount=Accounting accounts Menuthirdpartyaccount=Thirdparty accounts MenuTools=Tools diff --git a/htdocs/langs/et_EE/cashdesk.lang b/htdocs/langs/et_EE/cashdesk.lang index a5611bc272a532bd8df1759b8263fe48ca291605..75b0a8482016588ab41f07a882b3ce779f815453 100644 --- a/htdocs/langs/et_EE/cashdesk.lang +++ b/htdocs/langs/et_EE/cashdesk.lang @@ -1,7 +1,7 @@ # Language file - Source file is en_US - cashdesk -CashDeskMenu=Müügikoht -CashDesk=Müügikoht -CashDesks=Müügikoht +CashDeskMenu=Kassa +CashDesk=Kassa +CashDesks=Kassa CashDeskBank=Pangakonto CashDeskBankCash=Pangakonto (sularaha) CashDeskBankCB=Pangakonto (kaardimakse) @@ -14,7 +14,7 @@ CashDeskOn=kohta CashDeskThirdParty=Kolmas isik CashdeskDashboard=Ligipääs müügikohale ShoppingCart=Ostukorv -NewSell=Uus müü +NewSell=Uus müük BackOffice=Keskkontor AddThisArticle=Lisa see artikkel RestartSelling=Mine müümisel tagasi @@ -37,4 +37,4 @@ ShowCompany=Näita ettevõtet ShowStock=Näita ladu DeleteArticle=Klõpsa selle artikli eemaldamiseks FilterRefOrLabelOrBC=Otsi (viide/nimi) -# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. +UserNeedPermissionToEditStockToUsePos=Hetkeseadistuste järgi vähendatakse laoseisu arve loomisel, seega peab kassa kasutajal olema õigus laoseisu muutmiseks. diff --git a/htdocs/langs/et_EE/companies.lang b/htdocs/langs/et_EE/companies.lang index 4b94f2e23e36fa9ea1f06cbe65320a98361560da..aafc764f97bc3ccf41e4c10abb64bd9212e5c8a3 100644 --- a/htdocs/langs/et_EE/companies.lang +++ b/htdocs/langs/et_EE/companies.lang @@ -259,8 +259,8 @@ AvailableGlobalDiscounts=Saadaval olevad summalised allahindlused DiscountNone=Pole Supplier=Hankija CompanyList=Ettevõtte nimekiri -AddContact=Lisa kontakt -AddContactAddress=Lisa kontakt/aadress +AddContact=Uus kontakt +AddContactAddress=Uus kontakt/aadress EditContact=Muuda kontakti EditContactAddress=Muuda kontakti/aadressi Contact=Kontakt @@ -268,8 +268,8 @@ ContactsAddresses=Kontaktid/aadressid NoContactDefinedForThirdParty=Antud kolmanda isikuga pole ühtki kontakti seotud NoContactDefined=Kontakti pole määratud DefaultContact=Vaikimisi kontakt/aadress -AddCompany=Lisa ettevõte -AddThirdParty=Lisa kolmas isik +AddCompany=Uus ettevõte +AddThirdParty=Uus kolmas isik DeleteACompany=Kustuta ettevõte PersonalInformations=Isikuandmed AccountancyCode=Raamatupidamise kood @@ -379,8 +379,8 @@ DeliveryAddressLabel=Tarneaadressi etikett DeleteDeliveryAddress=Kustuta tarneaadress ConfirmDeleteDeliveryAddress=Kas tahad kindlasti selle tarneaadressi kustutada? NewDeliveryAddress=Uus tarneaadress -AddDeliveryAddress=Lisa aadress -AddAddress=Lisa aadress +AddDeliveryAddress=Uus aadress +AddAddress=Uus aadress NoOtherDeliveryAddress=Ühtki täiendavat tarneaadressi pole määratud SupplierCategory=Hankija kategooria JuridicalStatus200=Sõltumatu @@ -397,7 +397,7 @@ YouMustCreateContactFirst=Pead looma kolmanda isikuga seotud e-posti kontaktid e ListSuppliersShort=Hankijate nimekiri ListProspectsShort=Huviliste nimekiri ListCustomersShort=Klientide nimekiri -ThirdPartiesArea=Third parties and contact area +ThirdPartiesArea=Kolmandate isikute ja kontaktide ala LastModifiedThirdParties=Viimased %s muudetud kolmandat isikut UniqueThirdParties=Kokku unikaalseid kolmandaid isikuid InActivity=Avatud @@ -410,5 +410,5 @@ OutstandingBillReached=Jõudis maksmata summa maksimumini MonkeyNumRefModelDesc=Tagasta arv formaadiga %syymm-nnnn kliendikoodi jaoks ja %syymm-nnnn hankija koodi jaoks, kus yy on aasta, mm on kuu ja nnnn on katkestuseta jada, mille väärtus pole kunagi 0. LeopardNumRefModelDesc=Kood on vaba, seda saab igal ajal muuta. ManagingDirectors=Haldaja(te) nimi (CEO, direktor, president...) -SearchThirdparty=Search thirdparty -SearchContact=Search contact +SearchThirdparty=Otsi kolmandat isikut +SearchContact=Otsi kontakti diff --git a/htdocs/langs/et_EE/install.lang b/htdocs/langs/et_EE/install.lang index 2c61df2288aa175874141d4557cad63914db1fc1..a72fd0be7ff18dac7f3165f6e1a2a7630db083e8 100644 --- a/htdocs/langs/et_EE/install.lang +++ b/htdocs/langs/et_EE/install.lang @@ -155,8 +155,8 @@ MigrationFinished=Migreerimine lõpetatud LastStepDesc=<strong>Viimane samm:</strong> Määra siin tarkvaraga ühendumiseks kasutatav kasutajanimi ja parool. Hoia neid alles, kuna selle kontoga saab administreerida kõiki teisi kasutajaid. ActivateModule=Aktiveeri moodul %s ShowEditTechnicalParameters=Klõpsa siia lisaparameetrite näitamiseks/muutmiseks (spetsialisti režiim) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... -ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) +WarningUpgrade=Hoiatus:\nKas oled oma andmebaasi varundanud?\nSoovitame seda tungivalt teha: mõningate andmebaaside puukide tõttu (nt MySQL 5.5.40), võib selle protsessi käigus kaduma minna andmeid või tabeleid, seega on enne migratsiooni alustamist tungivalt soovitatav teha andmebaasist täielik tõmmis.\n\nKlõpsa OK migratsiooni alustamiseks... +ErrorDatabaseVersionForbiddenForMigration=Sinu andmebaasi versioon on %s. Selles versioonis on tõsine puuk, mis põhjustab andmebaasi struktuuri muutmisel andmekadu, nagu seda teeb migratsiooni protsess. Seega ei ole migratsioon lubatud seni, kuni uuendad oma andmebaasi parandustega versioonile (teadaolevate vigaste versioonide nimekiri: %s) ######### # upgrade @@ -208,7 +208,7 @@ MigrationProjectTaskTime=Uuendamiseks kulutatud aeg sekundites MigrationActioncommElement=Uuenda tegevuste andmec MigrationPaymentMode=Maksete režiimi andmete migreerimine MigrationCategorieAssociation=Kategooriate migreerimine -MigrationEvents=Migration of events to add event owner into assignement table +MigrationEvents=Sündmuste migreerimine sündmuse omaniku lisamiseks seoste tabelisse ShowNotAvailableOptions=Näita mitte saadaval olevaid lisavalikuid HideNotAvailableOptions=Peida mitte saadaval olevad lisavalikud diff --git a/htdocs/langs/et_EE/main.lang b/htdocs/langs/et_EE/main.lang index 2a99ca35036b941559f79040fa0d5e853da6cb4d..37257f3cb9cb50305e589308d841b5e1eee8bdbe 100644 --- a/htdocs/langs/et_EE/main.lang +++ b/htdocs/langs/et_EE/main.lang @@ -62,10 +62,10 @@ ErrorFailedToSaveFile=Viga: faili salvestamine ebaõnnestus. SetDate=Sea kuupäev SelectDate=Vali kuupäev SeeAlso=Vaata lisaks %s -SeeHere=See here +SeeHere=Vaata siia BackgroundColorByDefault=Vaikimisi taustavärv -FileNotUploaded=The file was not uploaded -FileUploaded=The file was successfully uploaded +FileNotUploaded=Ei suutnud faili üles laadida +FileUploaded=Fail on edukalt üles laetud FileWasNotUploaded=Fail on valitud manustamiseks, kuid on veel üles laadimata. Klõpsa "Lisa fail" nupul selle lisamiseks. NbOfEntries=Kannete arv GoToWikiHelpPage=Loe online abi (vajab võrguühendust) @@ -141,7 +141,7 @@ Cancel=Tühista Modify=Muuda Edit=Toimeta Validate=Kinnita -ValidateAndApprove=Validate and Approve +ValidateAndApprove=Valideeri ja kiida heaks ToValidate=Kinnitada Save=Salvesta SaveAs=Salvesta kui @@ -159,7 +159,7 @@ Search=Otsi SearchOf=Otsi Valid=Kehtiv Approve=Kiida heaks -Disapprove=Disapprove +Disapprove=Lükka tagasi ReOpen=Ava uuesti Upload=Saada fail ToLink=Seosta @@ -173,7 +173,7 @@ User=Kasutaja Users=Kasutajad Group=Rühm Groups=Rühmad -NoUserGroupDefined=No user group defined +NoUserGroupDefined=Ühtki kasutajate gruppi pole määratletud Password=Parool PasswordRetype=Korda parooli NoteSomeFeaturesAreDisabled=Pane tähele, et palju mooduleid ja funktsioone on demoversioonis keelatud. @@ -220,9 +220,9 @@ Next=Järgmine Cards=Kaardid Card=Kaart Now=Nüüd -HourStart=Start hour +HourStart=Algustund Date=Kuupäev -DateAndHour=Date and hour +DateAndHour=Päev ja tund DateStart=Alguskuupäev DateEnd=Lõppkuupäev DateCreation=Loomise kuupäev @@ -243,8 +243,8 @@ DatePlanShort=Planeeritud kuupäev DateRealShort=Reaalne kuupäev DateBuild=Aruande koostamise kuupäev DatePayment=Maksekuupäev -DateApprove=Approving date -DateApprove2=Approving date (second approval) +DateApprove=Heakskiitmise kuupäev +DateApprove2=Heakskiitmise kuupäev (teine nõuseolek) DurationYear=aasta DurationMonth=kuu DurationWeek=nädal @@ -267,7 +267,7 @@ days=päeva Hours=Tundi Minutes=Minutit Seconds=Sekundit -Weeks=Weeks +Weeks=Nädalad Today=Täna Yesterday=Eile Tomorrow=Homme @@ -301,7 +301,7 @@ UnitPriceHT=Ühiku hind (neto) UnitPriceTTC=Ühiku hind PriceU=ÜH PriceUHT=ÜH (neto) -AskPriceSupplierUHT=P.U. HT Requested +AskPriceSupplierUHT=P.U. HT nõutud PriceUTTC=ÜH Amount=Summa AmountInvoice=Arve summa @@ -352,10 +352,10 @@ FullList=Täielik nimekiri Statistics=Statistika OtherStatistics=Muu statistika Status=Staatus -Favorite=Favorite +Favorite=Lemmik ShortInfo=Inform Ref=Viide -ExternalRef=Ref. extern +ExternalRef=Väline viide RefSupplier=Hankija viide RefPayment=Makse viide CommercialProposalsShort=Pakkumised @@ -379,7 +379,7 @@ ActionsOnCompany=Selle kolmanda isikuga seotud tegevused ActionsOnMember=Selle liikmega seotud tegevused NActions=%s tegevust NActionsLate=%s hiljaks jäänud -RequestAlreadyDone=Request already recorded +RequestAlreadyDone=Nõue on juba salvestatud Filter=Filtreeri RemoveFilter=Eemalda filter ChartGenerated=Graafik loodud @@ -398,8 +398,8 @@ Available=Saadaval NotYetAvailable=Pole veel saadaval NotAvailable=Pole saadaval Popularity=Populaarsus -Categories=Tags/categories -Category=Tag/category +Categories=Sildid/kategooriad +Category=Silt/kategooria By=Isik From=Kellelt to=kellele @@ -411,8 +411,8 @@ OtherInformations=Muu informatsioon Quantity=Kogus Qty=Kogus ChangedBy=Muutis -ApprovedBy=Approved by -ApprovedBy2=Approved by (second approval) +ApprovedBy=Kiitis heaks +ApprovedBy2=Kiitis heaks (teine nõusolek) ReCalculate=Arvuta uuesti ResultOk=Õnnestumine ResultKo=Viga @@ -531,7 +531,7 @@ DateFromTo=Alates %s kuni %s DateFrom=Alates %s DateUntil=Kuni %s Check=Kontrolli -Uncheck=Uncheck +Uncheck=Võta tagasi Internal=Sisene External=Väline Internals=Sisene @@ -663,7 +663,7 @@ OptionalFieldsSetup=Lisaatribuutide seadistamine URLPhoto=Foto/logo URL SetLinkToThirdParty=Seosta muu kolmanda isikuga CreateDraft=Loo mustand -SetToDraft=Back to draft +SetToDraft=Tagasi mustandiks ClickToEdit=Klõpsa muutmiseks ObjectDeleted=Objekt %s kustutatud ByCountry=Riigi järgi @@ -697,12 +697,12 @@ ViewPrivateNote=Vaata märkmeid XMoreLines=%s joon(t) varjatud PublicUrl=Avalik link AddBox=Lisa kast -SelectElementAndClickRefresh=Select an element and click Refresh -PrintFile=Print File %s -ShowTransaction=Show transaction -GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into Home - Setup - Display to hide. -Deny=Deny -Denied=Denied +SelectElementAndClickRefresh=Vali element ja klõpsa 'Värskenda' +PrintFile=Prindi fail %s +ShowTransaction=Näita tehingut +GoIntoSetupToChangeLogo=Mine Kodu - Seadistamine - Ettevõte logo muutmiseks või mine Kodu - Seadistamine - Kuva logo peitmiseks. +Deny=Lükka tagasi +Denied=Tagasi lükatud # Week day Monday=Esmaspäev Tuesday=Teisipäev diff --git a/htdocs/langs/et_EE/products.lang b/htdocs/langs/et_EE/products.lang index 49b37b138c276be344e85bd8a70e00e59b4d7c35..f04f73b02f5b949fc2acf3de0f039e45e3be9485 100644 --- a/htdocs/langs/et_EE/products.lang +++ b/htdocs/langs/et_EE/products.lang @@ -221,14 +221,14 @@ Quarter1=1. kvartal Quarter2=2. kvartal Quarter3=3. kvartal Quarter4=4. kvartal -BarCodePrintsheet=Print bar code -PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button <b>%s</b>. -NumberOfStickers=Number of stickers to print on page -PrintsheetForOneBarCode=Print several stickers for one barcode +BarCodePrintsheet=Prindi vöötkood +PageToGenerateBarCodeSheets=Selle tööriistaga saad printida lehtedele etikette. Vali lehe formaat, vöötkoodi tüüp ja vöötkoodi värtus, ning siis klõpsa nupul <b>%s</b>. +NumberOfStickers=Lehele prinditavate kleepsude arv +PrintsheetForOneBarCode=Prindi ühe vöötkoodi jaoks mitu etiketti BuildPageToPrint=Loo prinditav leht -FillBarCodeTypeAndValueManually=Fill barcode type and value manually. -FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product. -FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a thirdparty. +FillBarCodeTypeAndValueManually=Täida vöötkoodi tüüp ja väärtus käsitsi +FillBarCodeTypeAndValueFromProduct=Täida vöötkoodi tüüp ja väärtus toote vöötkoodi välja abil +FillBarCodeTypeAndValueFromThirdParty=Täida vöötkoodi tüüp ja väärtus kolmanda isiku vöötkoodi välja abil DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s. DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for thirdparty %s. BarCodeDataForProduct=Barcode information of product %s : @@ -258,12 +258,12 @@ MinSupplierPrice=Minimum supplier price DynamicPriceConfiguration=Dynamic price configuration GlobalVariables=Global variables GlobalVariableUpdaters=Global variable updaters -GlobalVariableUpdaterType0=JSON data -GlobalVariableUpdaterHelp0=Parses JSON data from specified URL, VALUE specifies the location of relevant value, -GlobalVariableUpdaterHelpFormat0=format is {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"} -GlobalVariableUpdaterType1=WebService data +GlobalVariableUpdaterType0=JSON andmed +GlobalVariableUpdaterHelp0=Sõelu JSONi andmed määratletud URLilt, VALUE määrab ära seotud väärtuse asukoha +GlobalVariableUpdaterHelpFormat0=formaat on {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"} +GlobalVariableUpdaterType1=WebService andmed GlobalVariableUpdaterHelp1=Parses WebService data from specified URL, NS specifies the namespace, VALUE specifies the location of relevant value, DATA should contain the data to send and METHOD is the calling WS method GlobalVariableUpdaterHelpFormat1=format is {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}} -UpdateInterval=Update interval (minutes) -LastUpdated=Last updated -CorrectlyUpdated=Correctly updated +UpdateInterval=Uuendamise intervall (minutities) +LastUpdated=Viimati uuendatud +CorrectlyUpdated=Õigesti uuendatud diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 5102f1f513075eccf2b72e825642ff4d0d9b0898..cc346f1b38c6e304b1814ba21cc4f86a287a9c85 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -1,7 +1,18 @@ # Dolibarr language file - Source file is en_US - admin -VATManagement=Gestion TPS -VATIsUsedDesc=Le taux de TPS proposé par défaut lors de la création de proposition commerciale, facture, commande, etc... répond à la règle standard suivante :<br>Si vendeur non assujetti à TPS, TPS par défaut=0. Fin de règle.<br>Si le (pays vendeur= pays acheteur) alors TPS par défaut=TPS du produit vendu. Fin de règle.<br>Si vendeur et acheteur dans Communauté européenne et bien vendu= moyen de transport neuf (auto, bateau, avion), TPS par défaut=0 (La TPS doit être payée par acheteur au centre d'impôts de son pays et non au vendeur). Fin de règle.<br>Si vendeur et acheteur dans Communauté européenne et acheteur= particulier alors TPS par défaut=TPS du produit vendu. Fin de règle.<br>Si vendeur et acheteur dans Communauté européenne et acheteur= entreprise alors TPS par défaut=0. Fin de règle.<br>Sinon TPS proposée par défaut=0. Fin de règle.<br> -VATIsNotUsedDesc=Le taux de TPS proposé par défaut est 0. C'est le cas d'associations, particuliers ou certaines petites sociétés. -LocalTax1IsUsedDesc=Utilisation de 2ème type taxe (TVQ) -LocalTax1IsNotUsedDesc=Pas d'utilisation de 2ème type taxe (TVQ) -LocalTax1Management=Gestion TVQ +AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan +AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +UnpackPackageInDolibarrRoot=Unpack package file into directory dedicated to external modules: <b>%s</b> +ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir +LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax) +Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members) +Module39000Name=Product lot +Module39000Desc=Lot or serial number, eat-by and sell-by date management on products +MAIN_ROUNDING_RULE_TOT=Size of rounding range (for rare countries where rounding is done on something else than base 10) +BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example). +BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant. +RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>). +RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. +NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:<br>* per third parties contacts (customers or suppliers), one contact at time.<br>* or by setting global target email addresses in module setup page. +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management +MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) diff --git a/htdocs/langs/fr_CA/banks.lang b/htdocs/langs/fr_CA/banks.lang new file mode 100644 index 0000000000000000000000000000000000000000..e58cf5e72b5b543b3b197112ab0728bd9d5e9edf --- /dev/null +++ b/htdocs/langs/fr_CA/banks.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - banks +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD diff --git a/htdocs/langs/fr_CA/bills.lang b/htdocs/langs/fr_CA/bills.lang new file mode 100644 index 0000000000000000000000000000000000000000..f1e67a676c3b8f859eeb97a19b2077c9f770bd27 --- /dev/null +++ b/htdocs/langs/fr_CA/bills.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - bills +ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. diff --git a/htdocs/langs/fr_CA/categories.lang b/htdocs/langs/fr_CA/categories.lang new file mode 100644 index 0000000000000000000000000000000000000000..6173fc601e656cce7cce5c1aba6ea019e91f232e --- /dev/null +++ b/htdocs/langs/fr_CA/categories.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - categories +CatContactList=List of contact tags/categories and contact diff --git a/htdocs/langs/fr_CA/commercial.lang b/htdocs/langs/fr_CA/commercial.lang new file mode 100644 index 0000000000000000000000000000000000000000..18d8db068019668b61d38d3d592361512787d725 --- /dev/null +++ b/htdocs/langs/fr_CA/commercial.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - commercial +ActionAffectedTo=Event assigned to diff --git a/htdocs/langs/fr_CA/companies.lang b/htdocs/langs/fr_CA/companies.lang deleted file mode 100644 index 1f9cc9ada7625529378d9ba308b6890a7c09e072..0000000000000000000000000000000000000000 --- a/htdocs/langs/fr_CA/companies.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - companies -VATIsUsed=Assujetti à la TPS -VATIsNotUsed=Non assujetti à la TPS -LocalTax1IsUsedES=Assujetti à TVQ -LocalTax1IsNotUsedES=Non assujetti à TVQ diff --git a/htdocs/langs/fr_CA/cron.lang b/htdocs/langs/fr_CA/cron.lang new file mode 100644 index 0000000000000000000000000000000000000000..3f755fc725ddd5456b18be474d97bb473b926e36 --- /dev/null +++ b/htdocs/langs/fr_CA/cron.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - cron +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes diff --git a/htdocs/langs/fr_CA/interventions.lang b/htdocs/langs/fr_CA/interventions.lang new file mode 100644 index 0000000000000000000000000000000000000000..84b26b1f95e09fc2fc1872c75da0c2922d92c3e8 --- /dev/null +++ b/htdocs/langs/fr_CA/interventions.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - interventions +PrintProductsOnFichinterDetails=interventions generated from orders diff --git a/htdocs/langs/fr_CA/mails.lang b/htdocs/langs/fr_CA/mails.lang new file mode 100644 index 0000000000000000000000000000000000000000..4b5c7e95999646832e8f362031bea410cff97fe0 --- /dev/null +++ b/htdocs/langs/fr_CA/mails.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - mails +ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature diff --git a/htdocs/langs/fr_CA/main.lang b/htdocs/langs/fr_CA/main.lang index 376a1f7296657cf854f9c1aa6170085c1d6aba93..2e691473326d372b5db42468423519b3171a0d8a 100644 --- a/htdocs/langs/fr_CA/main.lang +++ b/htdocs/langs/fr_CA/main.lang @@ -2,28 +2,20 @@ DIRECTION=ltr FONTFORPDF=helvetica FONTSIZEFORPDF=10 -SeparatorDecimal=, -SeparatorThousand=None -FormatDateShort=%d.%m.%Y -FormatDateShortInput=%d.%m.%Y -FormatDateShortJava=dd.MM.yyyy -FormatDateShortJavaInput=dd.MM.yyyy -FormatDateShortJQuery=dd.mm.yy -FormatDateShortJQueryInput=dd.mm.yy +SeparatorDecimal=. +SeparatorThousand=, +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy FormatHourShortJQuery=HH:MI -FormatHourShort=%H:%M +FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M -FormatDateTextShort=%d %b %Y -FormatDateText=%d %B %Y -FormatDateHourShort=%d.%m.%Y %H:%M -FormatDateHourSecShort=%d/%m/%Y %H:%M:%S -FormatDateHourTextShort=%d %b %Y %H:%M -FormatDateHourText=%d %B %Y %H:%M -ErrorNoVATRateDefinedForSellerCountry=Erreur, aucun taux de taxe défini pour le pays '%s'. -AmountVAT=Montant TPS -AmountLT1=Montant TVQ -TotalVAT=Total TPS -TotalLT1=Total TVQ -IncludedVAT=Dont TPS -VAT=TPS -VATRate=Taux TPS +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p diff --git a/htdocs/langs/fr_CA/orders.lang b/htdocs/langs/fr_CA/orders.lang new file mode 100644 index 0000000000000000000000000000000000000000..6d902132a46c48d6f743f1f168bee74da6e2aee7 --- /dev/null +++ b/htdocs/langs/fr_CA/orders.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - orders +StatusOrderOnProcessShort=Ordered +StatusOrderOnProcess=Ordered - Standby reception +ApproveOrder=Approve order +LastOrders=Last %s customer orders diff --git a/htdocs/langs/fr_CA/other.lang b/htdocs/langs/fr_CA/other.lang new file mode 100644 index 0000000000000000000000000000000000000000..c50a095e492a0a57ef32d24cc9891598517ad128 --- /dev/null +++ b/htdocs/langs/fr_CA/other.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - other +Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded +SeeModuleSetup=See setup of module %s diff --git a/htdocs/langs/fr_CA/productbatch.lang b/htdocs/langs/fr_CA/productbatch.lang new file mode 100644 index 0000000000000000000000000000000000000000..53edc04d8c4739de1ae060d5f7aa8f6ea9aeba85 --- /dev/null +++ b/htdocs/langs/fr_CA/productbatch.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - productbatch +ManageLotSerial=Use lot/serial number +ProductStatusOnBatch=Yes (lot/serial required) +ProductStatusNotOnBatch=No (lot/serial not used) +Batch=Lot/Serial +atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number +batch_number=Lot/Serial number +DetailBatchNumber=Lot/Serial details +DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +printBatch=Lot/Serial: %s +WhenProductBatchModuleOnOptionAreForced=When module Lot/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. diff --git a/htdocs/langs/fr_CA/sendings.lang b/htdocs/langs/fr_CA/sendings.lang new file mode 100644 index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf --- /dev/null +++ b/htdocs/langs/fr_CA/sendings.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - sendings +DateDeliveryPlanned=Planed date of delivery diff --git a/htdocs/langs/fr_CA/suppliers.lang b/htdocs/langs/fr_CA/suppliers.lang new file mode 100644 index 0000000000000000000000000000000000000000..5213cec4e07ca18ac9ed641ce598c046ac788a1e --- /dev/null +++ b/htdocs/langs/fr_CA/suppliers.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - suppliers +DenyingThisOrder=Deny this order diff --git a/htdocs/langs/fr_CA/trips.lang b/htdocs/langs/fr_CA/trips.lang new file mode 100644 index 0000000000000000000000000000000000000000..f5e6f1a92ebf2effd4c01d542d91c3f665207a85 --- /dev/null +++ b/htdocs/langs/fr_CA/trips.lang @@ -0,0 +1,14 @@ +# Dolibarr language file - Source file is en_US - trips +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +NewTrip=New expense report +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 4e3a10e72dc82a88fe89b61f46d7f44816ba78e9..e364c5c2961c06b4afe168946cb8e496cb1ca8a8 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -61,8 +61,8 @@ UseSearchToSelectCompany=Utilisez un champ avec auto-complétion pour choisir le ActivityStateToSelectCompany= Ajouter une option de filtrage lors des recherches pour afficher/masquer les tiers en exercice ou ayant cessé d'exercer UseSearchToSelectContactTooltip=Si vous avez un nombre important de contacts (>100 000), vous pourrez améliorer les performances en positionnant la constante CONTACT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines. UseSearchToSelectContact=Utilisez un champ avec auto-complétion pour choisir les contacts (plutôt qu'une liste déroulante). -DelaiedFullListToSelectCompany=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste les tiers (Cela peut augmenter les performances si vous avez un grand nombre de tiers) -DelaiedFullListToSelectContact=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste les contacts (Cela peut augmenter les performances si vous avez un grand nombre de contacts) +DelaiedFullListToSelectCompany=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste des tiers (Cela peut augmenter les performances si vous avez un grand nombre de tiers) +DelaiedFullListToSelectContact=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste des contacts (Cela peut augmenter les performances si vous avez un grand nombre de contacts) SearchFilter=Options des filtres de recherche NumberOfKeyToSearch=Nb carac. déclenchant recherche : %s ViewFullDateActions=Afficher les dates complètes des événements dans la fiche de tiers @@ -232,7 +232,7 @@ Security=Sécurité Passwords=Mots de passe DoNotStoreClearPassword=Ne pas stocker de mots de passe en clair dans la base (Activation recommandée) MainDbPasswordFileConfEncrypted=Chiffrer le mot de passe de la base dans le fichier conf.php (Activation recommandée) -InstrucToEncodePass=Pour avoir le mot de passe de la base encodé dans le fichier de configuration <b>conf.php</b>, remplacer dans ce fichier la ligne<br><b>$dolibarr_main_db_pass="..."</b><br>par<br><b>$dolibarr_main_db_pass="crypted:%s"</b> +InstrucToEncodePass=Pour chiffrer le mot de passe de la base dans le fichier de configuration <b>conf.php</b>, remplacer la ligne<br><b>$dolibarr_main_db_pass="...";</b><br>par<br><b>$dolibarr_main_db_pass="crypted:%s";</b> InstrucToClearPass=Pour avoir le mot de passe de la base décodé (en clair) dans le fichier de configuration <b>conf.php</b>, remplacer dans ce fichier la ligne<br><b>$dolibarr_main_db_pass="crypted:..."</b><br>par<br><b>$dolibarr_main_db_pass="%s"</b> ProtectAndEncryptPdfFiles=Protection des PDF générés (Activation NON recommandée, rend inopérante la génération de PDF de masse) ProtectAndEncryptPdfFilesDesc=La protection d'un document PDF laisse le document libre à la lecture et à l'impression avec tout logiciel de lecture PDF. Par contre, la modification et la copie deviennent impossible. Notez que, de plus, l'utilisation de cette option empêche la génération de PDF cumulés (comme pour le PDF global des impayés). @@ -298,7 +298,7 @@ MenuHandlers=Gestionnaires de menu MenuAdmin=Édition menu DoNotUseInProduction=Ne pas utiliser en production ThisIsProcessToFollow=Voici la procédure à suivre : -ThisIsAlternativeProcessToFollow=This is an alternative setup to process: +ThisIsAlternativeProcessToFollow=Voici une procédure de configuration alternative StepNb=Étape %s FindPackageFromWebSite=Recherche le paquet qui répond à votre besoin (par exemple sur le site web %s). DownloadPackageFromWebSite=Télécharger le package %s. @@ -399,7 +399,7 @@ ExtrafieldParamHelpsellist=La liste vient d'une table<br>Syntaxe: <br>nom_de_tab ExtrafieldParamHelpchkbxlst=Les cases à cocher viennent d'une table<br>Syntaxe: <br>nom_de_table:nom_de_champ:id_champ::filtre<br>Exemple : <br>c_typent:libelle:id::filter<br><br>filter peux être un test simple (exemple active=1 pour ne proposer que les valeur active)<br>si vous voulez faire un filtre sur des attributs supplémentaires, utilisez la syntax extra.champ=... (où champ est la code de l'attribut supplémentaire)<br><br>Pour que la liste soit dépendante d'une autre :<br>c_typent:libelle:id:code_liste_parent|colonne_parent:filter LibraryToBuildPDF=Bibliothèque utilisée pour la génération des PDF WarningUsingFPDF=Attention : votre fichier <b>conf.php</b> contient la directive <b>dolibarr_pdf_force_fpdf=1</b>. Cela signifie que vous utilisez la librairie FPDF pour générer vos fichiers PDF. Cette librairie est ancienne et ne couvre pas de nombreuses fonctionnalités (Unicode, transparence des images, langues cyrilliques, arabes ou asiatiques...), aussi vous pouvez rencontrer des problèmes durant la génération des PDF.<br>Pour résoudre cela et avoir une prise en charge complète de PDF, vous pouvez télécharger la <a href="http://www.tcpdf.org/" target="_blank">bibliothèque TCPDF</a> puis commenter ou supprimer la ligne <b>$dolibarr_pdf_force_fpdf=1</b>, et ajouter à la place <b>$dolibarr_lib_TCPDF_PATH='chemin_vers_TCPDF'</b> -LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax) +LocalTaxDesc=Certains pays appliquent 2 voire 3 taux sur chaque ligne de facture. Si c'est le cas, choisissez le type du deuxième et troisième taux et sa valeur. Les types possibles sont:<br>1 : taxe locale sur les produits et services hors tva (la taxe locale est calculée sur le montant hors taxe)<br>2 : taxe locale sur les produits et services avant tva (la taxe locale est appliquée sur le montant + tva)<br>3 : taxe locale uniquement sur les produits hors tva (la taxe locale est calculée sur le montant hors taxe)<br>4 : taxe locale uniquement sur les produits avant tva (la taxe locale est calculée sur le montant + tva)<br>5 : taxe locale uniquement sur les services hors tva (la taxe locale est calculée sur le montant hors taxe)<br>6 : taxe locale uniquement sur les service avant tva (la taxe locale est calculée sur le montant + tva) SMS=SMS LinkToTestClickToDial=Entrez un numéro de téléphone à appeler pour tester le lien d'appel « ClickToDial » pour l'utilisateur <strong>%s</strong> RefreshPhoneLink=Rafraichir lien @@ -540,10 +540,10 @@ Module5000Name=Multi-société Module5000Desc=Permet de gérer plusieurs sociétés Module6000Name=Workflow Module6000Desc=Gérer le Workflow -Module20000Name=Gestion de la demande de congès +Module20000Name=Gestion des demandes de congès Module20000Desc=Déclaration et suivi des congès des employés -Module39000Name=Product lot -Module39000Desc=Lot or serial number, eat-by and sell-by date management on products +Module39000Name=Lot/Série du produit +Module39000Desc=Gestion des lots et numéro de série, et date de péremption ou consommation sur les produits Module50000Name=PayBox Module50000Desc=Module permettant d'offrir en ligne une page de paiement par carte de crédit avec PayBox Module50100Name=Point de vente @@ -858,7 +858,7 @@ LocalTax2IsUsedDescES= L'IRPF proposé par défaut lors de la création de propo LocalTax2IsNotUsedDescES= L'IRPF proposé par défaut est 0. Fin de règle. LocalTax2IsUsedExampleES= En Espagne, ce sont des professionnels autonomes et indépendants qui offrent des services, et des sociétés qui ont choisi le système fiscal du module. LocalTax2IsNotUsedExampleES= En Espagne, ce sont des sociétés qui ne sont pas soumises au système fiscal du module. -CalcLocaltax=Reports on local taxes +CalcLocaltax=Rapports sur les taxes locales CalcLocaltax1=Ventes - Achats CalcLocaltax1Desc=Les rapports des Taxes locales sont calculées avec la différence entre les taxes locales de ventes et les taxes locales d'achats CalcLocaltax2=Achats @@ -1023,14 +1023,14 @@ NoEventOrNoAuditSetup=Aucun événement d'audit de sécurité n'a été enregist NoEventFoundWithCriteria=Aucun événement d'audit de sécurité trouvé avec ces critères. SeeLocalSendMailSetup=Voir la configuration locale de sendmail BackupDesc=Pour réaliser une sauvegarde complète de Dolibarr, vous devez : -BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example). -BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant. +BackupDesc2=Sauvegardez le contenu du répertoire document (<b>%s</b>) qui contient tous les fichiers envoyés ou générés (vous pouvez créer un zip du répertoire par exemple). +BackupDesc3=Sauvez le contenu de votre base de données (<b>%s</b>) dans un fichier « dump ». Pour cela vous pouvez utiliser l'assistant ci-dessous. BackupDescX=Le répertoire archivé devra être placé en lieu sûr. BackupDescY=Le fichier « dump » généré devra être placé en lieu sûr. BackupPHPWarning=La sauvegarde n'est pas garantie avec cette méthode. Préférez la méthode précédente. RestoreDesc=Pour restaurer une sauvegarde de Dolibarr, vous devez : -RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>). -RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. +RestoreDesc2=Restaurez le fichier archive (fichier zip par exemple) du répertoire documents en extrayant l'arborescence dans le répertoire documents d'une nouvelle installation de Dolibarr ou dans le répertoire documents de cette installation (<b>%s</b>). +RestoreDesc3=Restaurez les données, depuis le fichier « dump » de sauvegarde, dans la base de données d'une nouvelle installation de Dolibarr ou de cette instance en cours (<b>%s</b>). Attention, une fois la restauration faite, il faudra utiliser un identifiant/mot de passe administrateur existant à l'époque de la sauvegarde pour se connecter. Pour restaurer la base dans l'installation actuelle, vous pouvez utiliser l'assistant suivant. RestoreMySQL=Importation MySQL ForcedToByAModule= Cette règle est forcée à <b>%s</b> par un des modules activés PreviousDumpFiles=Fichiers de sauvegarde de la base de données disponibles @@ -1095,7 +1095,7 @@ BrowserIsOK=Vous utilisez le navigateur %s. Ce navigateur est réputé optimisé BrowserIsKO=Vous utilisez le navigateur %s. Ce navigateur est déconseillé pour des raisons de sécurité, performance et qualité des pages restituées. Nous vous recommandons d'utiliser Firefox, Chrome, Opera ou Safari. XDebugInstalled=XDebug est chargé. XCacheInstalled=XCache est chargé. -AddRefInList=Afficher les références client/fournisseur dans les listes (listes déroulantes ou à autocomplétion) et les libellés des liens clickables. Les tiers apparaîtront alors sous la forme "CC12345 - SC45678 - La big company coorp", au lieu de "La big company coorp". +AddRefInList=Afficher les références client/fournisseur dans les listes (listes déroulantes ou à autocomplétion) et les libellés des liens clicables. Les tiers apparaîtront alors sous la forme "CC12345 - SC45678 - La big company coorp", au lieu de "La big company coorp". FieldEdition=Édition du champ %s FixTZ=Correction du fuseau horaire FillThisOnlyIfRequired=Exemple: +2 (ne remplir que si un décalage d'heure est constaté dans l'export) @@ -1547,7 +1547,7 @@ CashDeskBankAccountForCB= Compte par défaut à utiliser pour l'encaissement en CashDeskDoNotDecreaseStock=Désactiver la réduction de stocks systématique lorsque une vente se fait à partir du Point de Vente (si «non», la réduction du stock est faite pour chaque vente faite depuis le POS, quelquesoit l'option de changement de stock définit dans le module Stock). CashDeskIdWareHouse=Forcer et restreindre l'emplacement/entrepôt à utiliser pour la réduction de stock StockDecreaseForPointOfSaleDisabled=Réduction de stock lors de l'utilisation du Point de Vente désactivée -StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management +StockDecreaseForPointOfSaleDisabledbyBatch=La décrémentation de stock depuis ce module Point de Vente n'est pas encore compatible avec la gestion des numéros de lots/série. CashDeskYouDidNotDisableStockDecease=Vous n'avez pas désactivé la réduction de stocks lors de la réalisation d'une vente depuis le Point de Vente. Aussi, un entrepôt/emplacement est nécessaire. ##### Bookmark ##### BookmarkSetup=Configuration du module Marque-pages @@ -1625,6 +1625,6 @@ GoOntoContactCardToAddMore=Allez sur l'onglet "Notifications" d'un contact de ti Threshold=Seuil BackupDumpWizard=Assistant de génération d'un fichier de sauvegarde de la base de données SomethingMakeInstallFromWebNotPossible=L'installation de module externe est impossible depuis l'interface web pour la raison suivante : -SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is only manual steps a privileged user can do. +SomethingMakeInstallFromWebNotPossible2=Pour cette raison, le processus de mise à jour décrit ici est uniquement une série de manipulations que seul un utilisateur ayant des droits privilégiés peut faire InstallModuleFromWebHasBeenDisabledByFile=L'installation de module externe depuis l'application a été désactivé par l'administrator. Vous devez lui demander de supprimer le fichier <strong>%s</strong> pour permettre cette fonctionnalité. -ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br>- <strong>$dolibarr_main_url_root_alt</strong> enabled to value <strong>$dolibarr_main_url_root_alt="/custom"</strong><br>- <strong>$dolibarr_main_document_root_alt</strong> enabled to value <strong>"%s/custom"</strong> +ConfFileMuseContainCustom=Installé un module externe pour l'application enregistre les fichiers de module dans le répertoire <strong>%s</strong>. Pour avoir ce répertoire vu par Dolibarr, vous devez configurer votre <strong>conf/conf.php</strong> d'avoir l'option <br> - <strong>$dolibarr_main_url_root_alt</strong> activé à la valeur <strong>$dolibarr_main_url_root_alt="/custom"</strong><br> - <strong>$dolibarr_main_document_root_alt</strong> activé à la valeur <strong>"%s/custom"</strong> diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang index 3d4ad1aede80564fd309cf722727e181a6fd36dd..2f25040691d4f34ff85ca0bfa4767cc3ce7a7090 100644 --- a/htdocs/langs/fr_FR/banks.lang +++ b/htdocs/langs/fr_FR/banks.lang @@ -163,5 +163,5 @@ LabelRIB=Nom du RIB NoBANRecord=Aucun RIB enregistré DeleteARib=Supprimé RIB enregistré ConfirmDeleteRib=Etes vous sur de vouloir supprimé ce RIB ? -StartDate=Start date -EndDate=End date +StartDate=Date de début +EndDate=Date de fin diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index 3cc4fbd11addd9a9aef948995ef600842d5c603c..c04ae00f4745a109acf664b88fd6b06bbf46e36c 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -203,4 +203,4 @@ MembersByNature=Adhérents par nature VATToUseForSubscriptions=Taux de TVA pour les adhésions NoVatOnSubscription=Pas de TVA sur les adhésions MEMBER_PAYONLINE_SENDEMAIL=Email à avertir en cas de retour de paiement validé pour une cotisation -ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Produit utilisé pour la ligne d'abonnement dans la facture: %s +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Produit/Service utilisé pour la ligne de cotisation dans la facture: %s diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang index 6f38e908c4e54ae158989197c294cb480a903880..7be9c72e53ab8338e38ca5018897cfa0f00e6782 100644 --- a/htdocs/langs/fr_FR/orders.lang +++ b/htdocs/langs/fr_FR/orders.lang @@ -27,7 +27,7 @@ SuppliersOrdersToProcess=Commandes fournisseurs à traiter StatusOrderCanceledShort=Annulée StatusOrderDraftShort=Brouillon StatusOrderValidatedShort=Validée -StatusOrderSentShort=En cours de traitement +StatusOrderSentShort=En cours StatusOrderSent=Envoi en cours StatusOrderOnProcessShort=Commandé StatusOrderProcessedShort=Traitée diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index b8087ff18c86690f8ca236e0b43e8c7961f7eac6..84973f468e4e898b28bb104af6bb06d89febf680 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -12,6 +12,7 @@ Notify_FICHINTER_VALIDATE=Validation fiche intervention Notify_FICHINTER_SENTBYMAIL=Envoi fiche d'intervention par email Notify_BILL_VALIDATE=Validation facture client Notify_BILL_UNVALIDATE=Dévalidation facture client +Notify_ORDER_SUPPLIER_VALIDATE=Commande fournisseur enregistrée Notify_ORDER_SUPPLIER_APPROVE=Approbation commande fournisseur Notify_ORDER_SUPPLIER_REFUSE=Refus commande fournisseur Notify_ORDER_VALIDATE=Validation commande client @@ -202,7 +203,7 @@ NewKeyWillBe=Vos nouveaux identifiants pour vous connecter à l'application sero ClickHereToGoTo=Cliquez ici pour aller sur %s YouMustClickToChange=Vous devez toutefois auparavant cliquer sur le lien suivant, afin de valider ce changement de mot de passe ForgetIfNothing=Si vous n'êtes pas à l'origine de cette demande, ignorez simplement ce message. Vos identifiants restent sécurisés. -IfAmountHigherThan=If amount higher than <strong>%s</strong> +IfAmountHigherThan=Si le montant est supérieur à <strong>%s</strong> ##### Calendar common ##### AddCalendarEntry=Ajouter entrée dans le calendrier %s diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang index 708c79321715f5f6a263b833d2b53ec57c81fad2..d2e004231acaada919ea9c474e18edfa8e26547c 100644 --- a/htdocs/langs/fr_FR/productbatch.lang +++ b/htdocs/langs/fr_FR/productbatch.lang @@ -1,7 +1,7 @@ # ProductBATCH language file - en_US - ProductBATCH ManageLotSerial=Utiliser les numéros de lots/série ProductStatusOnBatch=Oui (Lot/Série requis) -ProductStatusNotOnBatch=No (Lot/Série non utilisé) +ProductStatusNotOnBatch=Non (Lot/Série non utilisé) ProductStatusOnBatchShort=Oui ProductStatusNotOnBatchShort=Non Batch=Lot/Série diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 24eef7ce06b3b992d8810fd4d7d4ae21ff257871..3aea8365f9e6856141b622bc461b1cc84b785859 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -128,7 +128,7 @@ TypeContact_project_task_external_TASKEXECUTIVE=Responsable TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributeur TypeContact_project_task_external_TASKCONTRIBUTOR=Contributeur SelectElement=Séléctionnez l'élément -AddElement=Link to element +AddElement=Associer l'élément UnlinkElement=Délier l'élément # Documents models DocumentModelBaleine=Modèle de rapport de projet complet (logo...) diff --git a/htdocs/langs/it_IT/accountancy.lang b/htdocs/langs/it_IT/accountancy.lang index b12cd515f633fc049b038e3d29945a3a4979f7ef..42479a49cac48662f8587fd9218a5127354ac246 100644 --- a/htdocs/langs/it_IT/accountancy.lang +++ b/htdocs/langs/it_IT/accountancy.lang @@ -13,9 +13,9 @@ ConfigAccountingExpert=Configurazione del modulo contabilità esperta Journaux=Giornali JournalFinancial=Giornali finanziari Exports=Esportazioni -Export=Export +Export=Esportazioni Modelcsv=Modello di esportazione -OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +OptionsDeactivatedForThisExportModel=Per questo modello di esportazione, le opzioni sono disattivate Selectmodelcsv=Seleziona un modello di esportazione Modelcsv_normal=Esportazione classica Modelcsv_CEGID=Esporta tramite CEGID Esperto @@ -45,7 +45,7 @@ UpdateAccount=Modifica di un account di contabilità UpdateMvts=Modifica di un movimento WriteBookKeeping=Record accounts in general ledger Bookkeeping=Contabilità generale -AccountBalanceByMonth=Account balance by month +AccountBalanceByMonth=Salso del conto per mese AccountingVentilation=Breakdown accounting AccountingVentilationSupplier=Breakdown accounting supplier @@ -60,8 +60,8 @@ IntoAccount=In the accounting account Ventilate=Ventilate VentilationAuto=Automatic breakdown -Processing=Processing -EndProcessing=The end of processing +Processing=In elaborazione +EndProcessing=Fine del processo AnyLineVentilate=Any lines to ventilate SelectedLines=Righe selezionate Lineofinvoice=Riga fattura diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index afa069aac529ec0ce7557ea3d209af25b7f6015e..a62039e19da167a3c189df1bf06fdf495ebbaba1 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -397,7 +397,7 @@ ExtrafieldParamHelpradio=La lista dei parametri deve rispettare il formato chiav ExtrafieldParamHelpsellist=La lista dei parametri viene da una tabella<br />Sintassi: table_name:label_field:id_field::filter<br>Per esempio: c_typent:libelle:id::filter<br /><br />filter può essere un semplice test (tipo active=1 per mostrare solo valori attivi) <br /> se vuoi filtrare per extrafield usa la sintassi extra.fieldcode=... (dove fieldcode è il codice del extrafield)<br /><br />Per far dipendere la lista da un'altra usa:<br />c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter LibraryToBuildPDF=Libreria utilizzata per generare PDF -WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> +WarningUsingFPDF=Avviso: Il tuo <b>conf.php</b> contiene la direttiva <b>dolibarr_pdf_force_fpdf = 1.</b> Questo significa che si utilizza la libreria FPDF per generare file PDF. Questa libreria è obsoleta e non supporta un molte funzioni (Unicode, trasparenza dell'immagine, lingue cirillico, arabo e asiatico, ...), quindi potrebbero verificarsi errori durante la generazione di file PDF. <br> Per risolvere questo problema ed avere un supporto completo di generazione di file PDF, scarica <a href="http://www.tcpdf.org/" target="_blank">biblioteca TCPDF</a> , quindi commentare o rimuovere la riga <b>$ dolibarr_pdf_force_fpdf = 1,</b> e aggiungere invece <b>$ dolibarr_lib_TCPDF_PATH = 'path_to_TCPDF_dir'</b> LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax) SMS=SMS LinkToTestClickToDial=Per testare l'indirizzo ClickToDial dell'utente <strong>%s</strong>, inserisci un numero di telefono @@ -457,7 +457,7 @@ Module55Desc=Gestione codici a barre Module56Name=Telefonia Module56Desc=Integrazione telefonia Module57Name=Ordini permanenti -Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries. +Module57Desc=Gli ordini permanenti e le domiciliazioni. Comprende anche la generazione di file di SEPA per i paesi europei. Module58Name=ClickToDial Module58Desc=Integrazione di un sistema ClickToDial (per esempio Asterisk) Module59Name=Bookmark4u @@ -513,7 +513,7 @@ Module1400Desc=Gestione contabilità per esperti (partita doppia) Module1520Name=Document Generation Module1520Desc=Mass mail document generation Module1780Name=Tag/categorie -Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members) +Module1780Desc=Crea tag / categorie (prodotti, clienti, fornitori, contatti o membri) Module2000Name=FCKeditor Module2000Desc=Permette di usare un editor avanzato per alcune aree di testo Module2200Name=Dynamic Prices @@ -611,7 +611,7 @@ Permission106=Esporta gli invii Permission109=Eliminare spedizioni Permission111=Vedere i conti bancari Permission112=Creare/modificare/cancellare e confrontare operazioni bancarie -Permission113=Setup financial accounts (create, manage categories) +Permission113=Imposta conti finanziari (crea, gestire le categorie) Permission114=Reconciliate transactions Permission115=Operazioni di esportazione ed estratti conto Permission116=Trasferimenti tra conti @@ -629,22 +629,22 @@ Permission151=Vedere ordini permanenti Permission152=Creare/modificare richieste di ordini permanenti Permission153=Trasmettere fatture ordini permanenti Permission154=Pagare/rifiutare fatture ordini permanenti -Permission161=Read contracts/subscriptions +Permission161=Leggi contratti / abbonamenti Permission162=Crea/modifica contratti/abbonamenti -Permission163=Activate a service/subscription of a contract +Permission163=Attiva un servizio/sottoscrizione di un contratto Permission164=Disable a service/subscription of a contract -Permission165=Delete contracts/subscriptions -Permission171=Read trips and expenses (own and his subordinates) -Permission172=Create/modify trips and expenses -Permission173=Delete trips and expenses +Permission165=Elimina contratti / abbonamenti +Permission171=Vedi viaggi e spese (propri e i suoi subordinati) +Permission172=Crea/modifica nota spese +Permission173=Elimina nota spese Permission174=Read all trips and expenses -Permission178=Export trips and expenses +Permission178=Esporta note spese Permission180=Vedere fornitori Permission181=Vedere ordini fornitore Permission182=Creare / modificare ordini fornitore Permission183=Validare ordini fornitore Permission184=Approvare ordini fornitore -Permission185=Order or cancel supplier orders +Permission185=Ordinare o annullare ordini fornitori Permission186=Ricevere ordini fornitore Permission187=Chiudere fornitore ordini Permission188=Annullare ordini fornitore @@ -766,10 +766,10 @@ Permission1237=Esportazione ordini fornitori e loro dettagli Permission1251=Eseguire importazioni di massa di dati esterni nel database (data load) Permission1321=Esportare fatture cliente, attributi e pagamenti Permission1421=Esportare ordini cliente e attributi -Permission23001=Read Scheduled job -Permission23002=Create/update Scheduled job -Permission23003=Delete Scheduled job -Permission23004=Execute Scheduled job +Permission23001=Leggi lavoro pianificato +Permission23002=Crea / Aggiorna lavoro pianificato +Permission23003=Elimina lavoro pianificato +Permission23004=Esegui lavoro pianificato Permission2401=Vedere azioni (eventi o compiti) personali Permission2402=Creare/modificare azioni (eventi o compiti) personali Permission2403=Cancellare azioni (eventi o compiti) personali @@ -1018,12 +1018,12 @@ NoEventFoundWithCriteria=Nessun evento di sicurezza trovato con i criteri di ric SeeLocalSendMailSetup=Controllare le impostazioni locali del server di posta (sendmail) BackupDesc=Per effettuare un backup completo di Dolibarr è necessario: BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example). -BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant. +BackupDesc3=Salva il contenuto del tuo database <b>(%s)</b> in un file dump. È possibile utilizzare il seguente assistente. BackupDescX=L'archivio delle directory va conservato in un luogo sicuro. BackupDescY=Il file generato va conservato in un luogo sicuro. BackupPHPWarning=Il backup non può essere garantito con questo metodo. Preferito quello precedente RestoreDesc=Per ripristinare un backup Dolibarr, è necessario: -RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>). +RestoreDesc2=Ripristinare da un file di archivio (zip file, ad esempio) della cartella Documenti per estrarre la lista dei file nella cartella documenti nella nuova installazione di Dolibarr o in questa cartella di documenti <b>(%s).</b> RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. RestoreMySQL=Importa MySQL ForcedToByAModule= Questa regola è impsotata su <b>%s</b> da un modulo attivo @@ -1209,7 +1209,7 @@ FicheinterNumberingModules=Numerazione dei moduli di intervento TemplatePDFInterventions=Modelli per moduli di intervento in pdf WatermarkOnDraftInterventionCards=Bozze delle schede di intervento filigranate (nessuna filigrana se vuoto) ##### Contracts ##### -ContractsSetup=Contracts/Subscriptions module setup +ContractsSetup= Modulo di configurazione Contratti / Sottoscrizioni ContractsNumberingModules=Moduli per la numerazione dei contratti TemplatePDFContracts=Modelli per documenti e contratti FreeLegalTextOnContracts=Testo libero sui contratti @@ -1420,7 +1420,7 @@ BarcodeDescUPC=Codice a barre di tipo UPC BarcodeDescISBN=Codice a barre di tipo ISBN BarcodeDescC39=Codice a barre di tipo C39 BarcodeDescC128=Codice a barre di tipo C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".<br>For example: /usr/local/bin/genbarcode +GenbarcodeLocation=Bar code generation è uno strumento di linea di comando (utilizzato dal motore interno per alcuni tipi di codici a barre). Deve essere compatibile con "genbarcode". <br> Per esempio: /usr/local/bin/genbarcode BarcodeInternalEngine=Motore interno BarCodeNumberManager=Manager per auto-definizione dei numeri barcode ##### Prelevements ##### @@ -1604,7 +1604,7 @@ NbSpeMin=Minimum number of special characters NbIteConsecutive=Maximum number of repeating same characters NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation SalariesSetup=Setup of module salaries -SortOrder=Sort order +SortOrder=Ordina Format=Formato TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) diff --git a/htdocs/langs/it_IT/agenda.lang b/htdocs/langs/it_IT/agenda.lang index 5ee3c2ee363f251dd07139c2f15c335e7fa884c4..7629981d59b29e1089915da8283d41dca1315d58 100644 --- a/htdocs/langs/it_IT/agenda.lang +++ b/htdocs/langs/it_IT/agenda.lang @@ -29,7 +29,7 @@ ActionsToDoBy=Eventi assegnati a ActionsDoneBy=Azioni fatte da ActionsForUser=Eventi per utente ActionsForUsersGroup=Eventi per tutti gli utenti del gruppo -ActionAssignedTo=Event assigned to +ActionAssignedTo=Evento assegnato a AllMyActions= Tutte i miei compiti/azioni AllActions= Tutte i compiti/azioni ViewList=Vista elenco @@ -49,9 +49,9 @@ InvoiceValidatedInDolibarrFromPos=Ricevute %s validate dal POS InvoiceBackToDraftInDolibarr=Fattura %s riportata allo stato di bozza InvoiceDeleteDolibarr=La fattura %s è stata cancellata OrderValidatedInDolibarr=Ordine convalidato -OrderDeliveredInDolibarr=Order %s classified delivered +OrderDeliveredInDolibarr=Ordine %s classificato consegnato OrderCanceledInDolibarr=ordine %s annullato -OrderBilledInDolibarr=Order %s classified billed +OrderBilledInDolibarr=Ordine %s classificato fatturato OrderApprovedInDolibarr=Ordine %s approvato OrderRefusedInDolibarr=Ordine %s rifiutato OrderBackToDraftInDolibarr=Ordine %s riportato allo stato di bozza @@ -61,9 +61,9 @@ OrderSentByEMail=Ordine cliente %s inviato per email InvoiceSentByEMail=Fattura attiva %s inviata per email SupplierOrderSentByEMail=Ordine fornitore %s inviato per email SupplierInvoiceSentByEMail=Fornitore %s fattura inviata per email -ShippingSentByEMail=Shipment %s sent by EMail -ShippingValidated= Shipment %s validated -InterventionSentByEMail=Intervention %s sent by EMail +ShippingSentByEMail=Spedizione %s inviata per Email +ShippingValidated= Spedizione %s convalidata +InterventionSentByEMail=Intervento %s inviato via Email NewCompanyToDolibarr= Soggetto terzo creato DateActionPlannedStart= Data di inizio prevista DateActionPlannedEnd= Data di fine prevista @@ -72,7 +72,7 @@ DateActionDoneEnd= Data effettiva di fine DateActionStart= Data di inizio DateActionEnd= Data di fine AgendaUrlOptions1=È inoltre possibile aggiungere i seguenti parametri ai filtri di output: -AgendaUrlOptions2=<b>login=%s</b> to restrict output to actions created by or assigned to user <b>%s</b>. +AgendaUrlOptions2=<b>login = %s</b> per limitare l'uscita di azioni create da o assegnate <b>all'utente %s.</b> AgendaUrlOptions3=<b>logina = %s</b> per limitare l'output alle azioni amministrate dall'utente<b>%s</b> AgendaUrlOptions4=<b>logint = %s</b> per limitare l'output alle azioni modificate dall'<b>utente %s</b>. AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> per limitare l'output alle azioni associate al progetto <b>PROJECT_ID</b>. @@ -94,5 +94,5 @@ WorkingTimeRange=Intervallo di tempo di lavoro WorkingDaysRange=Intervallo di giorni di lavoro AddEvent=Crea evento MyAvailability=Mie disponibilità -ActionType=Event type -DateActionBegin=Start event date +ActionType=Tipo di evento +DateActionBegin=Data di inizio evento diff --git a/htdocs/langs/it_IT/bills.lang b/htdocs/langs/it_IT/bills.lang index 9e679d6379acf159604743aae310428d2c7c0a46..89528bc4d23331bc131535ef8713fed6309db1c0 100644 --- a/htdocs/langs/it_IT/bills.lang +++ b/htdocs/langs/it_IT/bills.lang @@ -218,7 +218,7 @@ NoInvoice=Nessuna fattura ClassifyBill=Classificazione fattura SupplierBillsToPay=Fatture fornitori da pagare CustomerBillsUnpaid=Fatture attive non pagate -DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters +DispenseMontantLettres=Le fatture scritte attraverso procedure meccanografiche sono distribuite in base all'ordine in lettere NonPercuRecuperable=Non recuperabile SetConditions=Imposta le condizioni di pagamento SetMode=Imposta la modalità di pagamento diff --git a/htdocs/langs/it_IT/categories.lang b/htdocs/langs/it_IT/categories.lang index 3273f8e1cae2335560f7235f6660a8d88640421e..4eacc02db669db192e2986809fbb114058dedcc3 100644 --- a/htdocs/langs/it_IT/categories.lang +++ b/htdocs/langs/it_IT/categories.lang @@ -39,7 +39,7 @@ ErrForgotField=Hai dimenticato di indicare i campi ErrCatAlreadyExists=La categoria esiste già AddProductToCat=Aggiungere il prodotto ad una tag/categoria ImpossibleAddCat=Non è possibile aggiungere la tag/categoria -ImpossibleAssociateCategory=Impossible to associate the tag/category to +ImpossibleAssociateCategory=Impossibile associare il etichetta/categoria WasAddedSuccessfully=<b> %s </b> aggiunta con successo ObjectAlreadyLinkedToCategory=L'elemento è già collegato a questa tag/categoria CategorySuccessfullyCreated=Tag/categoria %s aggiunta con successo @@ -56,7 +56,7 @@ MemberHasNoCategory=Questo membro non è collegato ad alcuna tag/categoria ContactHasNoCategory=This contact is not in any tags/categories ClassifyInCategory=Aggiungi a tag/categoria NoneCategory=Nessuna -NotCategorized=Without tag/category +NotCategorized=Senza etichetta/categoria CategoryExistsAtSameLevel=Questa categoria esiste già allo stesso livello ReturnInProduct=Torna alla scheda prodotto/servizio ReturnInSupplier=Torna alla scheda fornitore @@ -67,7 +67,7 @@ ContentsNotVisibleByAllShort=Contenuti non visibili a tutti CategoriesTree=Tags/categories tree DeleteCategory=Elimina tag/categoria ConfirmDeleteCategory=Vuoi davvero eliminare questa tag/categoria? -RemoveFromCategory=Remove link with tag/categorie +RemoveFromCategory=Rimuovere link con etichetta/categoria RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the tag/category ? NoCategoriesDefined=No tag/category defined SuppliersCategoryShort=Tag/categoria fornitori diff --git a/htdocs/langs/it_IT/donations.lang b/htdocs/langs/it_IT/donations.lang index d4809b8394bfe8182927cd5d81f579a7d39d01c3..750c8b729b623cf6d3c465a9d23b30913c29b48e 100644 --- a/htdocs/langs/it_IT/donations.lang +++ b/htdocs/langs/it_IT/donations.lang @@ -36,7 +36,7 @@ ThankYou=Grazie IConfirmDonationReception=Si dichiara di aver ricevuto la seguente cifra a titolo di donazione MinimumAmount=L'importo minimo è %s FreeTextOnDonations=Free text to show in footer -FrenchOptions=Options for France +FrenchOptions=Opzioni per la Francia DONATION_ART200=Show article 200 from CGI if you are concerned DONATION_ART238=Show article 238 from CGI if you are concerned DONATION_ART885=Show article 885 from CGI if you are concerned diff --git a/htdocs/langs/it_IT/errors.lang b/htdocs/langs/it_IT/errors.lang index 2dfbe732001c1370d6da896a62c816ea53dac520..06f9f8c0faaf90787b38f6e7b50919998a5b3801 100644 --- a/htdocs/langs/it_IT/errors.lang +++ b/htdocs/langs/it_IT/errors.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - errors # No errors -NoErrorCommitIsDone=Nessun errore, assegnamo +NoErrorCommitIsDone=Nessun errore, committiamo # Errors Error=Errore Errors=Errori @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=I conti bancari di origine e destinazione devono ErrorBadThirdPartyName=Valore non valido per il nome del soggetto terzo ErrorProdIdIsMandatory=%s obbligatorio ErrorBadCustomerCodeSyntax=Sintassi del codice cliente errata -ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. +ErrorBadBarCodeSyntax=Sintassi del codice a barre errata. Potresti aver impostato un barcode errato o definito una maschera di barcode per la numerazione che non corrisponde al valore letto. ErrorCustomerCodeRequired=Il codice cliente è obbligatorio ErrorBarCodeRequired=Barcode richiesto ErrorCustomerCodeAlreadyUsed=Codice cliente già utilizzato @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Per questa funzionalità Javascript deve essere att ErrorPasswordsMustMatch=Le due password digitate devono essere identiche ErrorContactEMail=Si è verificato un errore tecnico. Si prega di contattare l'amministratore all'indirizzo <b>%s</b> <b>%s</b> indicando il codice di errore nel messaggio, o, meglio ancora, allegando uno screenshot della schermata attuale. ErrorWrongValueForField=Valore errato nel campo numero <b>%s</b> (il valore <b>'%s'</b>non corrisponde alla regex <b>%s</b>) -ErrorFieldValueNotIn=Wrong value for field number <b>%s</b> (value '<b>%s</b>' is not a value available into field <b>%s</b> of table <b>%s</b> = <b>%s</b>) +ErrorFieldValueNotIn=Valore errato per il campo numerico <b>%s</b> (valore '<b>%s'</b>' non è un valore consentito nel campo <b>%s</b> della tabella<b>%s =%s)</b> ErrorFieldRefNotIn=Valore errato nel campo numero <b>%s</b> (il valore <b>%s</b>non è un riferimento <b>%s</b> esistente) ErrorsOnXLines=Errori in <b>%s</b> righe del sorgente ErrorFileIsInfectedWithAVirus=Il programma antivirus non è stato in grado di convalidare il file (il file potrebbe essere infetto) @@ -91,8 +91,8 @@ ErrorModuleSetupNotComplete=L'installazione del modulo pare incompleta. Vai su < ErrorBadMask=Errore sulla maschera ErrorBadMaskFailedToLocatePosOfSequence=Errore, maschera senza numero di sequenza ErrorBadMaskBadRazMonth=Errore, valore di reset non valido -ErrorMaxNumberReachForThisMask=Max number reach for this mask -ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits +ErrorMaxNumberReachForThisMask=Numero massimo raggiunto per questa maschera +ErrorCounterMustHaveMoreThan3Digits=Il contatore deve avere più di 3 cifre ErrorSelectAtLeastOne=Errore. Selezionare almeno una voce. ErrorProductWithRefNotExist=Il prodotto con riferimento %s non esiste ErrorDeleteNotPossibleLineIsConsolidated=Impossibile cancellare il record perché è collegato ad una transazione bancaria conciliata @@ -140,26 +140,26 @@ ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Errore, questo membro non è s ErrorThereIsSomeDeliveries=Errore, ci sono alcune consegne collegate a questa spedizione. Cancellazione rifiutata. ErrorCantDeletePaymentReconciliated=Impossibile cancellare un pagamento che ha generato una transazione bancaria che è stata conciliata ErrorCantDeletePaymentSharedWithPayedInvoice=Impossibile cancellare un pagamento condiviso con almeno una fattura con lo stato Pagato -ErrorPriceExpression1=Cannot assign to constant '%s' -ErrorPriceExpression2=Cannot redefine built-in function '%s' -ErrorPriceExpression3=Undefined variable '%s' in function definition -ErrorPriceExpression4=Illegal character '%s' -ErrorPriceExpression5=Unexpected '%s' -ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected) -ErrorPriceExpression8=Unexpected operator '%s' -ErrorPriceExpression9=An unexpected error occured -ErrorPriceExpression10=Iperator '%s' lacks operand -ErrorPriceExpression11=Expecting '%s' -ErrorPriceExpression14=Division by zero -ErrorPriceExpression17=Undefined variable '%s' -ErrorPriceExpression19=Expression not found -ErrorPriceExpression20=Empty expression -ErrorPriceExpression21=Empty result '%s' -ErrorPriceExpression22=Negative result '%s' -ErrorPriceExpressionInternal=Internal error '%s' -ErrorPriceExpressionUnknown=Unknown error '%s' -ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs -ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on a product requiring lot/serial information +ErrorPriceExpression1=Impossibile assegnare la costante '%s' +ErrorPriceExpression2=Impossibile ridefinire la funzione integrata '%s' +ErrorPriceExpression3=Variabile non definita '%s' nella definizione della funzione +ErrorPriceExpression4=Carattere '%s' non valido +ErrorPriceExpression5=Valore imprevisto '%s' +ErrorPriceExpression6=Numero errato di argomenti (inserito %s ,atteso %s) +ErrorPriceExpression8=Operatore imprevisto '%s' +ErrorPriceExpression9=Si è verificato un errore imprevisto +ErrorPriceExpression10=Operatore '%s' senza operando +ErrorPriceExpression11=Atteso '%s' +ErrorPriceExpression14=Divisione per zero +ErrorPriceExpression17=Variabile non definita '%s' +ErrorPriceExpression19=Espressione non trovata +ErrorPriceExpression20=Espressione vuota +ErrorPriceExpression21=Risultato vuoto '%s' +ErrorPriceExpression22=Risultato negativo '%s' +ErrorPriceExpressionInternal=Errore interno '%s' +ErrorPriceExpressionUnknown=Errore sconosciuto '%s' +ErrorSrcAndTargetWarehouseMustDiffers=I magazzini di origine e di destinazione devono essere diversi +ErrorTryToMakeMoveOnProductRequiringBatchData=Errore durante il movimento dello stock senza molte/una serie di informazioni, su un prodotto che richiede molte/una serie di informazioni ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action ErrorCantSetReceptionToTotalDoneWithReceptionDenied=All recorded receptions must first be verified (approved) before being allowed to do this action ErrorGlobalVariableUpdater0=HTTP request failed with error '%s' @@ -168,8 +168,8 @@ ErrorGlobalVariableUpdater2=Parametro mancante: '%s' ErrorGlobalVariableUpdater3=The requested data was not found in result ErrorGlobalVariableUpdater4=SOAP client failed with error '%s' ErrorGlobalVariableUpdater5=No global variable selected -ErrorFieldMustBeANumeric=Field <b>%s</b> must be a numeric value -ErrorFieldMustBeAnInteger=Field <b>%s</b> must be an integer +ErrorFieldMustBeANumeric=Il campo <b>%s</b> deve essere un valore numerico +ErrorFieldMustBeAnInteger=Il campo <b>%s</b> deve essere un numero intero # Warnings WarningMandatorySetupNotComplete=I parametri di configurazione obbligatori non sono ancora stati definiti diff --git a/htdocs/langs/it_IT/orders.lang b/htdocs/langs/it_IT/orders.lang index 934fe566931507317c406eb0b78dda707621153d..ab2c5edce9111edf50ffab0175672216cab0864f 100644 --- a/htdocs/langs/it_IT/orders.lang +++ b/htdocs/langs/it_IT/orders.lang @@ -80,8 +80,8 @@ NoOtherOpenedOrders=Nessun altro ordine aperto NoDraftOrders=Nessuna bozza d'ordine OtherOrders=Altri ordini LastOrders=Last %s customer orders -LastCustomerOrders=Last %s customer orders -LastSupplierOrders=Last %s supplier orders +LastCustomerOrders=Ultimi %s ordini del cliente +LastSupplierOrders=Ultimi %s ordini dei fornitori LastModifiedOrders=Ultimi %s ordini modificati LastClosedOrders=Ultimi %s ordini chiusi AllOrders=Tutti gli ordini diff --git a/htdocs/langs/it_IT/other.lang b/htdocs/langs/it_IT/other.lang index b45819f1962a28ded91e3c7533c350754ffb6582..a1ff97351db73da89a560a5a85567b4655f53e53 100644 --- a/htdocs/langs/it_IT/other.lang +++ b/htdocs/langs/it_IT/other.lang @@ -12,6 +12,7 @@ Notify_FICHINTER_VALIDATE=Intervento convalidato Notify_FICHINTER_SENTBYMAIL=Intervento inviato per posta Notify_BILL_VALIDATE=Convalida fattura attiva Notify_BILL_UNVALIDATE=Ricevuta cliente non convalidata +Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded Notify_ORDER_SUPPLIER_APPROVE=Ordine fornitore approvato Notify_ORDER_SUPPLIER_REFUSE=Ordine fornitore rifiutato Notify_ORDER_VALIDATE=Ordine cliente convalidato @@ -202,7 +203,7 @@ NewKeyWillBe=Le tue nuove credenziali per loggare al software sono ClickHereToGoTo=Clicca qui per andare a %s YouMustClickToChange=Devi cliccare sul seguente link per validare il cambio della password ForgetIfNothing=Se non hai richiesto questo cambio, lascia perdere questa mail. Le tue credenziali sono mantenute al sicuro. -IfAmountHigherThan=If amount higher than <strong>%s</strong> +IfAmountHigherThan=Se l'importo è superiore a <strong>%s</strong> ##### Calendar common ##### AddCalendarEntry=Aggiungi evento al calendario %s diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index 55ccf723ab36b72ea65dcd0fb4eb8af4dd04a7b0..14bed951fe210f7a477e10dd1a7ae2f8124cf77b 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -326,7 +326,7 @@ DoTestSend=Pārbaudīt sūtīšanu DoTestSendHTML=Tests nosūtot HTML ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Kļūda, nevar izmantot iespēju @, ja secība {gggg} {mm} vai {gads} {mm} nav maska. -UMask=Umask parametru jaunus failus uz Unix / Linux / BSD / Mac failu sistēma. +UMask=Umask parametri jauniem failiem Unix/Linux/BSD/Mac failu sistēma. UMaskExplanation=Šis parametrs ļauj noteikt atļaujas, kas pēc noklusējuma failus, ko rada Dolibarr uz servera (laikā augšupielādēt piemēram). <br> Tam jābūt astotnieku vērtība (piemēram, 0666 nozīmē lasīt un rakstīt visiem). <br> Šis parametrs ir bezjēdzīgi uz Windows servera. SeeWikiForAllTeam=Ieskatieties wiki lappusē Pilns visu dalībnieku un to organizāciju UseACacheDelay= Kavēšanās caching eksporta atbildes sekundēs (0 vai tukšs bez cache) @@ -616,8 +616,8 @@ Permission114=Reconciliate transactions Permission115=Eksportēt darījumus un kontu izrakstus Permission116=Pārvietot starp kontiem Permission117=Pārvaldīt pārbaudes dispečervadības -Permission121=Lasīt trešām personām, kas saistītas ar lietotāju -Permission122=Izveidot / mainīt trešās personas saistībā ar lietotāju +Permission121=Skatīt trešās personas, kas saistītas ar lietotāju +Permission122=Izveidot/labot trešās personas, kas saistītas ar lietotāju Permission125=Dzēst trešās personas, kas saistītas ar lietotāju Permission126=Eksportēt trešās puses Permission141=Lasīt projektus (arī privāto es neesmu sazināties par) diff --git a/htdocs/langs/lv_LV/bills.lang b/htdocs/langs/lv_LV/bills.lang index 9b92efa06f35bf913ea681aa7563676767442e00..03076a4d377dd3fa3a2e3190666538623cc1a193 100644 --- a/htdocs/langs/lv_LV/bills.lang +++ b/htdocs/langs/lv_LV/bills.lang @@ -191,12 +191,12 @@ AlreadyPaidBack=Jau atgriezta nauda AlreadyPaidNoCreditNotesNoDeposits=Jau samaksāts (bez kredīta piezīmes un noguldījumiem) Abandoned=Pamests RemainderToPay=Neapmaksāts -RemainderToTake=Remaining amount to take -RemainderToPayBack=Remaining amount to pay back +RemainderToTake=Atlikusī summa, kas jāsaņem +RemainderToPayBack=Atlikusī summa, kas jāatdod atpakaļ Rest=Līdz AmountExpected=Pieprasīto summu ExcessReceived=Excess saņemti -EscompteOffered=Piedāvāto atlaidi (maksājums pirms termiņa) +EscompteOffered=Piedāvāta atlaide (maksājums pirms termiņa) SendBillRef=Submission of invoice %s SendReminderBillRef=Submission of invoice %s (reminder) StandingOrders=Regulārie maksājumi diff --git a/htdocs/langs/lv_LV/boxes.lang b/htdocs/langs/lv_LV/boxes.lang index 2dd27d774c7ecbbe14e3eb3a09496dd486e8eb51..0124626a6efd3e1e6ef03e943575968cd1077a12 100644 --- a/htdocs/langs/lv_LV/boxes.lang +++ b/htdocs/langs/lv_LV/boxes.lang @@ -8,7 +8,7 @@ BoxLastCustomerBills=Pēdējie klientu rēķini BoxOldestUnpaidCustomerBills=Vecākās neapmaksātais klienta rēķins BoxOldestUnpaidSupplierBills=Vecākais neapmaksātais piegādātāja-u rēķins BoxLastProposals=Pēdējie tirdzniecības priekšlikumi -BoxLastProspects=Pēdējās modificēti perspektīvas +BoxLastProspects=Pēdējās labotās perspektīvas BoxLastCustomers=Pēdējie labotie klienti BoxLastSuppliers=Pēdējie labotie piegādātāji BoxLastCustomerOrders=Pēdējie klientu pasūtījumi diff --git a/htdocs/langs/lv_LV/commercial.lang b/htdocs/langs/lv_LV/commercial.lang index cd11fb1be267581629ad2a7dad7bb3e1036a9b7b..9b4726c1f0e6f3229ac8467a0bbea7e01ec60a0e 100644 --- a/htdocs/langs/lv_LV/commercial.lang +++ b/htdocs/langs/lv_LV/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Sazinājāmies DateActionPlanned=Datums, kad pasākums plānots DateActionDone=Datums, kad notikums pabeigts ActionAskedBy=Par notikumu ziņoja -ActionAffectedTo=Event assigned to +ActionAffectedTo=Pasākums piešķirts ActionDoneBy=Notikumu veic ActionUserAsk=Ziņoja ErrorStatusCantBeZeroIfStarted=Ja lauks <b>"Datums darīts"</b> tiek aizpildīta, darbība tiek uzsākts (vai pabeigts), lai lauka <b>"Statuss"</b> nevar būt 0%%. @@ -90,7 +90,7 @@ FromTo=No %s līdz %s MargeOrder=Starpības (apstiprinātas rīkojumi) RecapAnnee=Kopsavilkums par gadu NoData=Nav datu -StatusProsp=Prospect statuss +StatusProsp=Prospekta statuss DraftPropals=Izstrādā komerciālos priekšlikumus SearchPropal=Meklēšana komerciālu priekšlikumu CommercialDashboard=Commercial kopsavilkums diff --git a/htdocs/langs/lv_LV/dict.lang b/htdocs/langs/lv_LV/dict.lang index c42f8b91f0511d3e32a0d9080677216fd54cad33..91020f090e7d4da74f35666ab47d5bf96d4e4fa2 100644 --- a/htdocs/langs/lv_LV/dict.lang +++ b/htdocs/langs/lv_LV/dict.lang @@ -111,11 +111,11 @@ CountryGN=Gvineja CountryGW=Gvineja-Bisava CountryGY=Gajāna CountryHT=Haiti -CountryHM=Hērda sala un Makdonalda +CountryHM=Hērda un Makdonalda salas CountryVA=Svētais Krēsls (Vatikāna Pilsētvalsts) CountryHN=Hondurasa CountryHK=Honkonga -CountryIS=Icelande +CountryIS=Islande CountryIN=Indija CountryID=Indonēzija CountryIR=Irāna @@ -141,7 +141,7 @@ CountryLI=Lihtenšteina CountryLT=Lituania CountryLU=Luksemburga CountryMO=Makao -CountryMK=Maķedonija, bijusī Dienvidslāvijas +CountryMK=Maķedonija CountryMG=Madagaskara CountryMW=Malāvija CountryMY=Malaizija @@ -182,16 +182,16 @@ CountryPG=Papua Jaungvineja CountryPY=Paragvaja CountryPE=Peru CountryPH=Filipīnas -CountryPN=Pitkērna +CountryPN=Pitkērna salas CountryPL=Polija CountryPR=Puertoriko CountryQA=Katara CountryRE=Atkalapvienošanās CountryRO=Rumānija CountryRW=Ruanda -CountrySH=Saint Helena +CountrySH=Svētās Helēnas salas CountryKN=Sentkitsa un Nevisa -CountryLC=Saint Lucia +CountryLC=Sentlūsija CountryPM=Senpjēra un Mikelona CountryVC=Sentvinsenta un Grenadīnas CountryWS=Samoa diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang index db250d8d39a62c34018755cb034e194e35592667..2e0b25f81f67056568783a2d75ea087316fadb85 100644 --- a/htdocs/langs/nb_NO/admin.lang +++ b/htdocs/langs/nb_NO/admin.lang @@ -54,7 +54,7 @@ Chartofaccounts=Chart of accounts Fiscalyear=Regnskapsår ErrorReservedTypeSystemSystemAuto=Value 'system' og 'systemauto' for type er reservert. Du kan bruke 'user' som verdi å legge til din egen oppføring ErrorCodeCantContainZero=Koden kan ikke inneholde verdien 0 -DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) +DisableJavascript=Deaktiver JavaScript og Ajax funksjoner (Anbefalt for blinde og tekstbaserte nettlesere) ConfirmAjax=Bruk bekreftelsesvinduer basert på Ajax UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectCompany=Bruk autofullfør-felt for å velge tredjepart, i stedet for å bruke listeboks. diff --git a/htdocs/langs/nb_NO/agenda.lang b/htdocs/langs/nb_NO/agenda.lang index e2da157733d0552d994f35de6b0bc82b65261229..6f6bf2951809ccb6849e9068c3568e1114a79091 100644 --- a/htdocs/langs/nb_NO/agenda.lang +++ b/htdocs/langs/nb_NO/agenda.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - agenda -IdAgenda=ID hendelse +IdAgenda=Hendelses-ID Actions=Handlinger ActionsArea=Handlingsområde (Hendelser og oppgaver) Agenda=Agenda @@ -17,7 +17,7 @@ MyEvents=Mine hendelser OtherEvents=Andre hendelser ListOfActions=Oversikt over hendelser Location=Lokasjon -EventOnFullDay=Hendelse på full dag +EventOnFullDay=Hendelse over hele dagen(e) SearchAnAction= Finn handling/oppgave MenuToDoActions=Alle åpne handlinger MenuDoneActions=Alle avsluttede handlinger @@ -38,30 +38,30 @@ ViewDay=Dagsvisning ViewWeek=Ukesvisning ViewPerUser=Visning pr. bruker ViewWithPredefinedFilters= Vis med forhåndsdefinerte filtere -AutoActions= Automatisk utfylling av agenda +AutoActions= Automatisk utfylling AgendaAutoActionDesc= Her angir du hvilke handlinger du ønsker at Dolibarr automatisk skal registrere i agendaen. Hvis du ikke velger noe (forhåndsinnstilt), vil bare manuelle handlinger bli registrert i agendaen. AgendaSetupOtherDesc= Her kan du gjøre andre innstillinger i agendamodulen. -AgendaExtSitesDesc=Denne siden lar deg erklære eksterne kilder til kalendere for å se sine arrangementer inn Dolibarr agenda. +AgendaExtSitesDesc=Denne siden lar deg sette opp eksterne kalendere for å visning i Dolibarr agenda. ActionsEvents=Handlinger som Dolibarr automatisk registrerer i agendaen PropalValidatedInDolibarr=Tilbud godkjent InvoiceValidatedInDolibarr=Faktura godkjent InvoiceValidatedInDolibarrFromPos=Faktura %s godkjent fra POS -InvoiceBackToDraftInDolibarr=Faktura %s gå tilbake til utkast status +InvoiceBackToDraftInDolibarr=Sett faktura %s tilbake til utkaststatus InvoiceDeleteDolibarr=Faktura %s slettet OrderValidatedInDolibarr=Ordre godkjent -OrderDeliveredInDolibarr=Order %s classified delivered -OrderCanceledInDolibarr=Bestill %s kansellert -OrderBilledInDolibarr=Order %s classified billed -OrderApprovedInDolibarr=Bestill %s godkjent -OrderRefusedInDolibarr=Ordre %s nektet -OrderBackToDraftInDolibarr=Bestill %s gå tilbake til utkast status -OrderCanceledInDolibarr=Bestill %s kansellert -ProposalSentByEMail=Kommersielle forslag %s på e-post -OrderSentByEMail=Kundeordrer %s på e-post -InvoiceSentByEMail=Faktura %s på e-post -SupplierOrderSentByEMail=Leverandør bestill %s på e-post -SupplierInvoiceSentByEMail=Leverandørfaktura %s på e-post -ShippingSentByEMail=Forsendelse %s sendt på epost +OrderDeliveredInDolibarr=Ordre %s klassifisert som levert +OrderCanceledInDolibarr=Ordre %s kansellert +OrderBilledInDolibarr=Ordre %s klassifisert som fakturert +OrderApprovedInDolibarr=Ordre %s godkjent +OrderRefusedInDolibarr=Ordre %s avvist +OrderBackToDraftInDolibarr=Sett ordre %s tilbake til utkaststatus +OrderCanceledInDolibarr=Ordre %s kansellert +ProposalSentByEMail=Kommersielle tilbud %s sendt på epost +OrderSentByEMail=Kundeordrer %s sendt på epost +InvoiceSentByEMail=Faktura %s sendt på epost +SupplierOrderSentByEMail=Leverandørordre %s sendt på epost +SupplierInvoiceSentByEMail=Leverandørfaktura %s sendt på epost +ShippingSentByEMail=Forsendelsesdetaljer %s sendt på epost ShippingValidated= Forsendelse %s godkjent InterventionSentByEMail=Intervensjon %s sendt på epost NewCompanyToDolibarr= Tredjepart opprettet @@ -72,14 +72,14 @@ DateActionDoneEnd= Virkelig sluttdato DateActionStart= Startdato DateActionEnd= Sluttdato AgendaUrlOptions1=Du kan også bruke følgende parametere til å filtrere listen: -AgendaUrlOptions2=<b>login=%s</b> to restrict output to actions created by or assigned to user <b>%s</b>. -AgendaUrlOptions3=<b>logina=%s</b> for å begrense data til hendelser eiet av en bruker <b>%s</b>. -AgendaUrlOptions4=<b>logint=%s</b> for å begrense utvalg til handlinger relatert til bruker <b>%s</b>. -AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> for å begrense data til handlinger som er knyttet til prosjektet <b>PROJECT_ID</b>. +AgendaUrlOptions2=<b>login=%s</b> for å begrense resultat til hendelse som er opprettet av eller tildelt bruker<b>%s</b>. +AgendaUrlOptions3=<b>logina=%s</b> for å begrense resultat til hendelser eiet av en bruker <b>%s</b>. +AgendaUrlOptions4=<b>logint=%s</b> for å begrense resultat til handlinger relatert til bruker <b>%s</b>. +AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> for å begrense resultat til handlinger som er knyttet til prosjektet <b>PROJECT_ID</b>. AgendaShowBirthdayEvents=Vis fødselsdager AgendaHideBirthdayEvents=Skjul fødselsdager Busy=Opptatt -ExportDataset_event1=Liste over agenda hendelser +ExportDataset_event1=Liste over hendelser i agendaen DefaultWorkingDays=Standard arbeidsuke (f.eks 1-5, 1-6) DefaultWorkingHours=Standard arbeidstid (f.eks 9-18) # External Sites ical @@ -88,11 +88,11 @@ ExtSites=Importer eksterne kalendere ExtSitesEnableThisTool=Vis eksterne kalendere (definert i global setup) i agenda. Påvirker ikke eksterne kalendere definert av brukere. ExtSitesNbOfAgenda=Antall kalendere AgendaExtNb=Kalender nb %s -ExtSiteUrlAgenda=URL tilgang til. ICal-fil +ExtSiteUrlAgenda=URL til. ical-fil ExtSiteNoLabel=Ingen beskrivelse WorkingTimeRange=Arbeidstid WorkingDaysRange=Arbeidsuke AddEvent=Opprett hendelse MyAvailability=Min tilgjengelighet -ActionType=Event type -DateActionBegin=Start event date +ActionType=Hendelsestype +DateActionBegin=Startdato for hendelse diff --git a/htdocs/langs/nb_NO/bills.lang b/htdocs/langs/nb_NO/bills.lang index 033c9414bfd92d122b96156eaf705ac2e3200030..75101db467e76726216764c7bb5d30068ff38bde 100644 --- a/htdocs/langs/nb_NO/bills.lang +++ b/htdocs/langs/nb_NO/bills.lang @@ -191,13 +191,13 @@ AlreadyPaidBack=Allerede tilbakebetalt AlreadyPaidNoCreditNotesNoDeposits=Allerede betalt (uten kreditt notater og innskudd) Abandoned=Tapsført RemainderToPay=Restbeløp -RemainderToTake=Remaining amount to take +RemainderToTake=Restbeløp RemainderToPayBack=Resterende beløp å betale: Rest=Ventende AmountExpected=Beløp purret ExcessReceived=Overskytende EscompteOffered=Rabatt innrømmet (betalt før forfall) -SendBillRef=Submission of invoice %s +SendBillRef=Innsendelse av faktura %s SendReminderBillRef=Submission of invoice %s (reminder) StandingOrders=Utestående ordre StandingOrder=Utestående ordre @@ -248,7 +248,7 @@ AddGlobalDiscount=Legg til rabatt EditGlobalDiscounts=Rediger absolutte rabatter AddCreditNote=Lag kreditt notat ShowDiscount=Vis rebatt -ShowReduc=Show the deduction +ShowReduc=Vis fradraget RelativeDiscount=Relativ rabatt GlobalDiscount=Global rabatt CreditNote=Kreditnota @@ -298,6 +298,7 @@ RelatedCustomerInvoices=Related customer invoices RelatedSupplierInvoices=Related supplier invoices LatestRelatedBill=Siste tilknyttede faktura WarningBillExist=Warning, one or more invoice already exist +MergingPDFTool=Merging PDF tool # PaymentConditions PaymentConditionShortRECEP=Kontant @@ -392,7 +393,7 @@ DisabledBecausePayments=Ikke mulig siden det er noen betalinger CantRemovePaymentWithOneInvoicePaid=Kan ikke fjerne betalingen siden det er i alle fall på faktura klassifisert utbetales ExpectedToPay=Forventet utbetaling PayedByThisPayment=Betales av denne betalingen -ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. +ClosePaidInvoicesAutomatically=Klassifiser alle fakturaer (alle typer) som betalt ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. AllCompletelyPayedInvoiceWillBeClosed=Alle faktura uten gjenstår å betale vil bli automatisk stengt for status "betales". ToMakePayment=Betal diff --git a/htdocs/langs/nb_NO/boxes.lang b/htdocs/langs/nb_NO/boxes.lang index 0b64eab725aee0c3ba5092804cb173a85b2af1ee..8edbd718c56512c758a5a8c375b62eeffec76d9b 100644 --- a/htdocs/langs/nb_NO/boxes.lang +++ b/htdocs/langs/nb_NO/boxes.lang @@ -94,4 +94,4 @@ BoxProductDistributionFor=Fordeling av %s for %s ForCustomersInvoices=Kundens fakturaer ForCustomersOrders=Kundeordrer ForProposals=Tilbud -LastXMonthRolling=The last %s month rolling +LastXMonthRolling=Rullering av de siste %s måneder diff --git a/htdocs/langs/nb_NO/commercial.lang b/htdocs/langs/nb_NO/commercial.lang index 5ce686e3b3c949a12e350dc025e9e77805276e23..76681a752a45b9ff2279afdb7a037d2f65d7accc 100644 --- a/htdocs/langs/nb_NO/commercial.lang +++ b/htdocs/langs/nb_NO/commercial.lang @@ -9,26 +9,26 @@ Prospect=Prospekt Prospects=Prospekter DeleteAction=Slett handling/oppgave NewAction=Ny handling/oppgave -AddAction=Create event/task -AddAnAction=Create an event/task -AddActionRendezVous=Create a Rendez-vous event -Rendez-Vous=Rendezvous +AddAction=Opprett hendelse/oppgave +AddAnAction=Opprett en hendelse/oppgave +AddActionRendezVous=Opprett et møte +Rendez-Vous=Møte ConfirmDeleteAction=Er du sikker på at du vil slette denne oppgaven? CardAction=Handlingskort PercentDone=Prosent ferdig -ActionOnCompany=Oppgave ifm. firma -ActionOnContact=Oppgave ifg. kontaktperson +ActionOnCompany=Oppgave relatert til firma +ActionOnContact=Oppgave relatert til kontaktperson TaskRDV=Møter TaskRDVWith=Møte med %s ShowTask=Vis oppgave ShowAction=Vis handling ActionsReport=Handlingsrapport ThirdPartiesOfSaleRepresentative=Thirdparties med salgsrepresentant -SalesRepresentative=Salgsreprsentant +SalesRepresentative=Salgsrepresentant SalesRepresentatives=Salgsrepresentanter SalesRepresentativeFollowUp=Salgsrepresentant (oppfølging) SalesRepresentativeSignature=Salgsrepresentant (signatur) -CommercialInterlocutor=Commercial interlocutor +CommercialInterlocutor=Kommersiell samtalepartner ErrorWrongCode=Feil kode NoSalesRepresentativeAffected=Ingen spesiell salgsrepresentant tilknyttet ShowCustomer=Vis kunde @@ -38,14 +38,14 @@ ListOfCustomers=Oversikt over kunder LastDoneTasks=Siste %s utførte oppgaver LastRecordedTasks=Siste registrerte oppgaver LastActionsToDo=Siste %s eldste handlinger som ikke er fullført -DoneAndToDoActionsFor=Utførte og åpne oppgaver for %s -DoneAndToDoActions=Utførte og åpne oppgaver +DoneAndToDoActionsFor=Utførte og To do oppgaver for %s +DoneAndToDoActions=Utførte og To do oppgaver DoneActions=Utførte handlinger DoneActionsFor=Utførte handlinger for %s ToDoActions=Ikke fullførte handlinger ToDoActionsFor=Ikke fullførte handlinger for %s -SendPropalRef=Submission of commercial proposal %s -SendOrderRef=Submission of order %s +SendPropalRef=Innsending av kommersielle tilbud %s +SendOrderRef=Innsending av ordre %s StatusNotApplicable=Ikke aktuelt StatusActionToDo=To Do StatusActionDone=Utført @@ -61,25 +61,25 @@ LastProspectContactInProcess=Kontakt pågår LastProspectContactDone=Kontakt utført DateActionPlanned=Dato for planlagt handling DateActionDone=Dato for utført handling -ActionAskedBy=Handling ønsket av -ActionAffectedTo=Event assigned to +ActionAskedBy=Handling registrert av +ActionAffectedTo=Hendelse tildelt ActionDoneBy=Handling utført av ActionUserAsk=Registrert av ErrorStatusCantBeZeroIfStarted=Hvis feltet '<b>Dato utført</b>' er fylt ut er handlingen startet (eller utført), defor kan ikke feltet '<b>Status</b>' være 0%%. ActionAC_TEL=Telefonsamtale ActionAC_FAX=Send fax ActionAC_PROP=Send tilbud -ActionAC_EMAIL=Send e-post +ActionAC_EMAIL=Send epost ActionAC_RDV=Møter -ActionAC_INT=Intervention on site -ActionAC_FAC=Send faktura -ActionAC_REL=Send purring +ActionAC_INT=Intervensjon på sted +ActionAC_FAC=Send faktura med post +ActionAC_REL=Send purring med post (påminnelse) ActionAC_CLO=Lukk -ActionAC_EMAILING=Send e-postutsendelse (massemailing) +ActionAC_EMAILING=Send e-postutsendelse (masse-epost) ActionAC_COM=Send ordre i posten -ActionAC_SHIP=Send levering post -ActionAC_SUP_ORD=Send leverandør bestill ved mail -ActionAC_SUP_INV=Send leverandør faktura i posten +ActionAC_SHIP=Send levering i posten +ActionAC_SUP_ORD=Send leverandørordre i posten +ActionAC_SUP_INV=Send leverandørfaktura i posten ActionAC_OTH=Andre ActionAC_OTH_AUTO=Andre (automatisk satte hendelser) ActionAC_MANUAL=Manuelt satte hendelser @@ -91,6 +91,6 @@ MargeOrder=Marginer (validerte bestillinger) RecapAnnee=Oppsummering av året NoData=Det er ingen data StatusProsp=Prospect status -DraftPropals=Utkast kommersielle forslag -SearchPropal=Søk en kommersiell forslag +DraftPropals=Utkast kommersielle tilbud +SearchPropal=Søk etter kommersielt tilbud CommercialDashboard=Kommersiell oppsummering diff --git a/htdocs/langs/nb_NO/contracts.lang b/htdocs/langs/nb_NO/contracts.lang index e09b5e6c173d847df50839359a0b6e4d9e015977..e854391d7f14bbe56ffe97203470fa08edd9ea4e 100644 --- a/htdocs/langs/nb_NO/contracts.lang +++ b/htdocs/langs/nb_NO/contracts.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - contracts ContractsArea=Kontraktsområde ListOfContracts=Oversikt over kontrakter -LastModifiedContracts=Last %s modified contracts +LastModifiedContracts=Siste %s endrede kontrakter AllContracts=Alle kontrakter ContractCard=Kontraktskort ContractStatus=Kontraktstatus @@ -19,7 +19,7 @@ ServiceStatusLateShort=Utløpt ServiceStatusClosed=Lukket ServicesLegend=Tjeneste legend Contracts=Kontrakter -ContractsAndLine=Contracts and line of contracts +ContractsAndLine=Kontrakter og kontraktlinjer Contract=Kontrakt NoContracts=Ingen kontrakter MenuServices=Tjenester @@ -28,7 +28,7 @@ MenuRunningServices=Løpende tjenester MenuExpiredServices=Utløpte tjenester MenuClosedServices=Lukkede tjenester NewContract=Ny kontrakt -AddContract=Create contract +AddContract=Opprett kontrakt SearchAContract=Finn kontrakt DeleteAContract=Slett kontrakt CloseAContract=Lukk kontrakt @@ -54,7 +54,7 @@ ListOfRunningContractsLines=Oversikt over løpende kontraktslinjer ListOfRunningServices=Overikt over løpende tjenster NotActivatedServices=Ikke aktiverte tjenester (blant godkjente kontrakter) BoardNotActivatedServices=Tjenester til aktivering blant godkjente kontrakter -LastContracts=Last %s contracts +LastContracts=Siste %s kontrakter LastActivatedServices=Siste %s aktiverte tjenester LastModifiedServices=Siste %s endrede tjenester EditServiceLine=Rediger tjenestelinje @@ -92,7 +92,7 @@ ListOfServicesToExpire=Liste over utløpende tjenester NoteListOfYourExpiredServices=Denne listen inneholder kun tjenester av kontrakter for tredjeparter du er koblet til som salgsrepresentant. StandardContractsTemplate=Standard kontraktskjema ContactNameAndSignature=For %s, navn og signatur: -OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned. +OnlyLinesWithTypeServiceAreUsed=Kun linjer med type "Service" vi bli klonet. ##### Types de contacts ##### TypeContact_contrat_internal_SALESREPSIGN=Salgsrepresentant som signerer kontrakten diff --git a/htdocs/langs/nb_NO/cron.lang b/htdocs/langs/nb_NO/cron.lang index 848d170e2cc615b32864434ca539dd2de6046c8c..4cf688b277e676511f274fcb07d58d02786e5920 100644 --- a/htdocs/langs/nb_NO/cron.lang +++ b/htdocs/langs/nb_NO/cron.lang @@ -1,88 +1,88 @@ # Dolibarr language file - Source file is en_US - cron # About page About = Om -CronAbout = About Cron -CronAboutPage = Cron about page +CronAbout = Om Cron +CronAboutPage = Side om Cron # Right -Permission23101 = Read Scheduled task -Permission23102 = Create/update Scheduled task -Permission23103 = Delete Scheduled task -Permission23104 = Execute Scheduled task +Permission23101 = Les planlagt oppgave +Permission23102 = Opprett/endre planlagt oppgave +Permission23103 = Slett planlagt oppgave +Permission23104 = Utfør planlagt oppgave # Admin -CronSetup= Scheduled job management setup +CronSetup= Administrasjon av planlagte oppgaver URLToLaunchCronJobs=URL to check and launch cron jobs if required OrToLaunchASpecificJob=Or to check and launch a specific job -KeyForCronAccess=Security key for URL to launch cron jobs -FileToLaunchCronJobs=Command line to launch cron jobs +KeyForCronAccess=Sikkerhetsnøkkel for URL for å starte cronjobber +FileToLaunchCronJobs=Kommandolinje for å starte cronjobber CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes # Menu -CronJobs=Scheduled jobs -CronListActive=List of active/scheduled jobs -CronListInactive=List of disabled jobs +CronJobs=Planlagte jobber +CronListActive=Liste over aktive/planlagte jobber +CronListInactive=Liste over deaktiverte jobber # Page list -CronDateLastRun=Last run -CronLastOutput=Last run output -CronLastResult=Last result code -CronListOfCronJobs=List of scheduled jobs -CronCommand=Command -CronList=Scheduled job -CronDelete=Delete scheduled jobs -CronConfirmDelete=Are you sure you want to delete this scheduled jobs ? -CronExecute=Launch scheduled jobs -CronConfirmExecute=Are you sure to execute this scheduled jobs now ? +CronDateLastRun=Siste kjøring +CronLastOutput=Resultat av forrige kjøring +CronLastResult=Siste kjøring - kode +CronListOfCronJobs=Liste over planlagte oppgaver +CronCommand=Kommando +CronList=Planlagt jobb +CronDelete=Slett planlagte jobber +CronConfirmDelete=Er du sikker på at du vil slette denne planlagte jobben +CronExecute=Start planlagte jobber +CronConfirmExecute=Er du sikker på at du vil kjøre denne oppgaven nå? CronInfo=Scheduled job module allow to execute job that have been planned -CronWaitingJobs=Waiting jobs -CronTask=Job +CronWaitingJobs=Ventende jobber +CronTask=Jobb CronNone=Ingen CronDtStart=Startdato CronDtEnd=Sluttdato -CronDtNextLaunch=Next execution -CronDtLastLaunch=Last execution -CronFrequency=Frequancy -CronClass=Classe +CronDtNextLaunch=Neste kjøring +CronDtLastLaunch=Siste kjøring +CronFrequency=Frekvens +CronClass=Klasse CronMethod=Metode CronModule=Modul -CronAction=Action +CronAction=Handling CronStatus=Status CronStatusActive=Slått på CronStatusInactive=Slått av -CronNoJobs=No jobs registered +CronNoJobs=Ingen registrerte jobb CronPriority=Prioritet CronLabel=Beskrivelse -CronNbRun=Nb. launch -CronEach=Every -JobFinished=Job launched and finished +CronNbRun=NB! Start +CronEach=Alle +JobFinished=Jobb startet og fullført #Page card -CronAdd= Add jobs -CronHourStart= Start Hour and date of task -CronEvery= And execute task each -CronObject= Instance/Object to create +CronAdd= Legg til jobber +CronHourStart= Time og dato for oppgavestart +CronEvery= Og utfør oppgave hver +CronObject= Objekt å opprette CronArgs=Parametere -CronSaveSucess=Save succesfully +CronSaveSucess=Lagret CronNote=Kommentar -CronFieldMandatory=Fields %s is mandatory -CronErrEndDateStartDt=End date cannot be before start date -CronStatusActiveBtn=Enable +CronFieldMandatory=Feltene %s er obligatoriske +CronErrEndDateStartDt=Sluttdato kan ikke være før startdato +CronStatusActiveBtn=Aktiver CronStatusInactiveBtn=Slå av -CronTaskInactive=This job is disabled -CronDtLastResult=Last result date -CronId=Id -CronClassFile=Classes (filename.class.php) +CronTaskInactive=Denne jobben er deaktivert +CronDtLastResult=Dato for siste resultat +CronId=ID +CronClassFile=Klasser (filnavn.klasse.php) CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module). <BR> For exemple to fetch method of Dolibarr Product object /htdocs/<u>product</u>/class/product.class.php, the value of module is <i>product</i> CronClassFileHelp=The file name to load. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/<u>product.class.php</u>, the value of class file name is <i>product.class.php</i> CronObjectHelp=The object name to load. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is <i>Product</i> CronMethodHelp=The object method to launch. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is is <i>fecth</i> CronArgsHelp=The method arguments. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be <i>0, ProductRef</i> -CronCommandHelp=The system command line to execute. -CronCreateJob=Create new Scheduled Job +CronCommandHelp=System kommandolinje som skal kjøres +CronCreateJob=Opprett ny planlagt jobb # Info -CronInfoPage=Information +CronInfoPage=Informasjon # Common -CronType=Task type +CronType=Oppgavetype CronType_method=Call method of a Dolibarr Class -CronType_command=Shell command +CronType_command=Shell kommando CronMenu=Cron -CronCannotLoadClass=Cannot load class %s or object %s -UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. -TaskDisabled=Task disabled +CronCannotLoadClass=Kan ikke laste klasse %s eller objekt %s +UseMenuModuleToolsToAddCronJobs=Gå til meny "Hjem - Modulverktøy - Jobbliste" for å se på og endre planlagte jobber. +TaskDisabled=Oppgave deaktivert diff --git a/htdocs/langs/nb_NO/deliveries.lang b/htdocs/langs/nb_NO/deliveries.lang index 0f320b22168ba1121dce5959a725136e54c061d5..a0963eca83717edc39213f1420dd7a769dff2b44 100644 --- a/htdocs/langs/nb_NO/deliveries.lang +++ b/htdocs/langs/nb_NO/deliveries.lang @@ -24,3 +24,5 @@ Deliverer=Transportør : Sender=Avsender Recipient=Mottaker ErrorStockIsNotEnough=Ikke nok på lager +Shippable=Kan sendes +NonShippable=Kan ikke sendes diff --git a/htdocs/langs/nb_NO/errors.lang b/htdocs/langs/nb_NO/errors.lang index 304d4fa1b3ec499618b78c4dcc3490970bea57f4..8df21d9b0608f56b4dfca6e6522188cc9ae388db 100644 --- a/htdocs/langs/nb_NO/errors.lang +++ b/htdocs/langs/nb_NO/errors.lang @@ -1,11 +1,11 @@ # Dolibarr language file - Source file is en_US - errors # No errors -NoErrorCommitIsDone=No error, we commit +NoErrorCommitIsDone=Ingen feil funnet # Errors Error=Feil Errors=Feil -ErrorButCommitIsDone=Errors found but we validate despite this +ErrorButCommitIsDone=Valider selv om feil ble funnet ErrorBadEMail=E-post %s er feil ErrorBadUrl=Url %s er feil ErrorLoginAlreadyExists=brukernavnet %s eksisterer allerede. @@ -149,15 +149,15 @@ ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected) ErrorPriceExpression8=Unexpected operator '%s' ErrorPriceExpression9=An unexpected error occured ErrorPriceExpression10=Iperator '%s' lacks operand -ErrorPriceExpression11=Expecting '%s' -ErrorPriceExpression14=Division by zero -ErrorPriceExpression17=Undefined variable '%s' -ErrorPriceExpression19=Expression not found -ErrorPriceExpression20=Empty expression -ErrorPriceExpression21=Empty result '%s' -ErrorPriceExpression22=Negative result '%s' -ErrorPriceExpressionInternal=Internal error '%s' -ErrorPriceExpressionUnknown=Unknown error '%s' +ErrorPriceExpression11=Forventet '%s' +ErrorPriceExpression14=Delt på null +ErrorPriceExpression17=Udefinert variabel '%s' +ErrorPriceExpression19=Uttrykk ikke funnet +ErrorPriceExpression20=Tomt uttrykk +ErrorPriceExpression21=Tomt resultat '%s' +ErrorPriceExpression22=Negativt resultat '%s' +ErrorPriceExpressionInternal=Intern feil '%s' +ErrorPriceExpressionUnknown=Ukjent feil '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on a product requiring lot/serial information ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action diff --git a/htdocs/langs/nb_NO/install.lang b/htdocs/langs/nb_NO/install.lang index e087efd58967c8c7ea05e88d059d442fde7f6dbc..68733baa63f995439d486b3ea29618c962bf9034 100644 --- a/htdocs/langs/nb_NO/install.lang +++ b/htdocs/langs/nb_NO/install.lang @@ -156,7 +156,7 @@ LastStepDesc=<strong>Siste trinn:</strong> Definer her login og passord du har t ActivateModule=Aktiver modulen %s ShowEditTechnicalParameters=Klikk her for å vise/endre avanserte parametre (expert mode) WarningUpgrade=Advarsel!\nTok du en backup av databasen først?\nDette anbefales på det sterkeste! F.eks: Pga. feil/bugs i databasesystemer (f.eks. Mysql versjon 5.5.40), kan data eller tabeller gå tapt i denne prosessen. Det er sterkt anbefalt å ha en komplett kopi av databasen før du starter overføringen.\n\n\nKlikk OK for å starte overføringsprosessen... -ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) +ErrorDatabaseVersionForbiddenForMigration=Din databaseversjon er %s. Den har en kritisk feil som gjør at du mister data hvis du gjør strukturelle endringer i databasen, som vil skje ved migrasjonen. På grunn av dette vil du ikke kunne migrere før databasen er oppgradert til en høyere versjon. (liste over versjoner med bekreftede feil: %s) ######### # upgrade diff --git a/htdocs/langs/nb_NO/languages.lang b/htdocs/langs/nb_NO/languages.lang index 8a22ce69d821e890fab31d770e80478d988a802a..08258b18b0ba87cd9cdf664465c66b86d6c267e0 100644 --- a/htdocs/langs/nb_NO/languages.lang +++ b/htdocs/langs/nb_NO/languages.lang @@ -13,7 +13,7 @@ Language_de_AT=Tysk (Østerrike) Language_de_CH=Tysk (Sveits) Language_el_GR=Gresk Language_en_AU=English (Australia) -Language_en_CA=English (Canada) +Language_en_CA=Engelsk (Canada) Language_en_GB=English (United Kingdom) Language_en_IN=English (India) Language_en_NZ=Engelsk (New Zealand) diff --git a/htdocs/langs/nb_NO/mailmanspip.lang b/htdocs/langs/nb_NO/mailmanspip.lang index 4df2bf08bdec544402c982fa574935c5d9dd6eb4..7f877890be988a00f12fbaf3e77eb5c6620d2712 100644 --- a/htdocs/langs/nb_NO/mailmanspip.lang +++ b/htdocs/langs/nb_NO/mailmanspip.lang @@ -1,27 +1,27 @@ # Dolibarr language file - Source file is en_US - mailmanspip -# MailmanSpipSetup=Mailman and SPIP module Setup -# MailmanTitle=Mailman mailing list system -# TestSubscribe=To test subscription to Mailman lists -# TestUnSubscribe=To test unsubscribe from Mailman lists -# MailmanCreationSuccess=Subscription test was executed succesfully -# MailmanDeletionSuccess=Unsubscription test was executed succesfully -# SynchroMailManEnabled=A Mailman update will be performed -# SynchroSpipEnabled=A Spip update will be performed -# DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password -# DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions -# DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions -# DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) -# SPIPTitle=SPIP Content Management System -# DescADHERENT_SPIP_SERVEUR=SPIP Server -# DescADHERENT_SPIP_DB=SPIP database name -# DescADHERENT_SPIP_USER=SPIP database login -# DescADHERENT_SPIP_PASS=SPIP database password -# AddIntoSpip=Add into SPIP -# AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? -# AddIntoSpipError=Failed to add the user in SPIP -# DeleteIntoSpip=Remove from SPIP -# DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? -# DeleteIntoSpipError=Failed to suppress the user from SPIP -# SPIPConnectionFailed=Failed to connect to SPIP -# SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done -# SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done +MailmanSpipSetup=Mailman and SPIP module Setup +MailmanTitle=Mailman mailing list system +TestSubscribe=To test subscription to Mailman lists +TestUnSubscribe=To test unsubscribe from Mailman lists +MailmanCreationSuccess=Subscription test was executed succesfully +MailmanDeletionSuccess=Unsubscription test was executed succesfully +SynchroMailManEnabled=A Mailman update will be performed +SynchroSpipEnabled=A Spip update will be performed +DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password +DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions +DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions +DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) +SPIPTitle=SPIP Content Management System +DescADHERENT_SPIP_SERVEUR=SPIP server +DescADHERENT_SPIP_DB=SPIP databasenavn +DescADHERENT_SPIP_USER=SPIP database innlogging +DescADHERENT_SPIP_PASS=SPIP database passord +AddIntoSpip=Legg til i SPIP +AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? +AddIntoSpipError=Failed to add the user in SPIP +DeleteIntoSpip=Remove from SPIP +DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? +DeleteIntoSpipError=Failed to suppress the user from SPIP +SPIPConnectionFailed=Failed to connect to SPIP +SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done +SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done diff --git a/htdocs/langs/nb_NO/main.lang b/htdocs/langs/nb_NO/main.lang index 53e4bb76867b99a04ed214ea429bc27d37353bb6..f85c16137a9472db708f0595d86c994b57d1949f 100644 --- a/htdocs/langs/nb_NO/main.lang +++ b/htdocs/langs/nb_NO/main.lang @@ -14,7 +14,7 @@ FormatDateShortJava=dd.MM.yyyy FormatDateShortJavaInput=dd.MM.yyyy FormatDateShortJQuery=dd.mm.yy FormatDateShortJQueryInput=dd.mm.yy -FormatHourShortJQuery=HH:MI +FormatHourShortJQuery=HH:MM FormatHourShort=%H.%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d. %b %Y @@ -62,7 +62,7 @@ ErrorFailedToSaveFile=Feil: Klarte ikke å lagre filen. SetDate=Still dato SelectDate=Velg en dato SeeAlso=Se også %s -SeeHere=See here +SeeHere=Se her BackgroundColorByDefault=Standard bakgrunnsfarge FileNotUploaded=Filen ble ikke lastet opp FileUploaded=Opplastningen var vellykket @@ -141,7 +141,7 @@ Cancel=Avbryt Modify=Endre Edit=Rediger Validate=Godkjenn -ValidateAndApprove=Validate and Approve +ValidateAndApprove=Valider og godkjenn ToValidate=Å godkjenne Save=Lagre SaveAs=Lagre som @@ -159,7 +159,7 @@ Search=Søk SearchOf=Søk Valid=Gyldig Approve=Godkjenn -Disapprove=Disapprove +Disapprove=Underkjenn ReOpen=Gjenåpne Upload=Send fil ToLink=Link @@ -173,7 +173,7 @@ User=Bruker Users=Brukere Group=Gruppe Groups=Grupper -NoUserGroupDefined=No user group defined +NoUserGroupDefined=Ingen brukergrupper er definert Password=Passord PasswordRetype=Gjenta passord NoteSomeFeaturesAreDisabled=Merk at en masse funksjoner / moduler er deaktivert i denne demonstrasjonen. @@ -220,9 +220,9 @@ Next=Neste Cards=Kort Card=Kort Now=Nå -HourStart=Start hour +HourStart=Start time Date=Dato -DateAndHour=Date and hour +DateAndHour=Dato og tid DateStart=Startdato DateEnd=Sluttdato DateCreation=Opprettet den @@ -243,8 +243,8 @@ DatePlanShort=Planlagt dato DateRealShort=Virkelig dato DateBuild=Rapport bygge dato DatePayment=Dato for betaling -DateApprove=Approving date -DateApprove2=Approving date (second approval) +DateApprove=Godkjennelsesdato +DateApprove2=Godkjennelsesdato (2. godkjennelse) DurationYear=år DurationMonth=måned DurationWeek=uke @@ -267,7 +267,7 @@ days=dager Hours=Timer Minutes=Minutter Seconds=Sekunder -Weeks=Weeks +Weeks=Uker Today=I dag Yesterday=I går Tomorrow=I morgen @@ -301,7 +301,7 @@ UnitPriceHT=Enhetspris (netto) UnitPriceTTC=Enhetspris PriceU=Pris PriceUHT=Pris (netto) -AskPriceSupplierUHT=P.U. HT Requested +AskPriceSupplierUHT=Forespørsel om P.U. HT PriceUTTC=Pris Amount=Beløp AmountInvoice=Fakturabeløp @@ -355,7 +355,7 @@ Status=Status Favorite=Favoritt ShortInfo=Info. Ref=Nummer -ExternalRef=Ref. extern +ExternalRef=Ekstern ref. RefSupplier=Ref. leverandør RefPayment=Ref. betaling CommercialProposalsShort=Tilbud @@ -398,8 +398,8 @@ Available=Tilgjengelig NotYetAvailable=Ikke tilgjengelig ennå NotAvailable=Ikke tilgjengelig Popularity=Popularitet -Categories=Tags/categories -Category=Tag/category +Categories=Merker/kategorier +Category=Merke/Kategori By=Av From=Fra to=til @@ -411,8 +411,8 @@ OtherInformations=Annen informasjon Quantity=Antall Qty=Ant ChangedBy=Endret av -ApprovedBy=Approved by -ApprovedBy2=Approved by (second approval) +ApprovedBy=Godkjent av +ApprovedBy2=Godkjent av (2. godkjennelse) ReCalculate=Rekalkuler ResultOk=Success ResultKo=Feil @@ -531,7 +531,7 @@ DateFromTo=Fra %s til %s DateFrom=Fra %s DateUntil=Til og med %s Check=Sjekk -Uncheck=Uncheck +Uncheck=Fjern merking Internal=Intern External=Ekstern Internals=Intern @@ -698,11 +698,11 @@ XMoreLines=%s linje(r) skjult PublicUrl=Offentlig URL AddBox=Legg til boks SelectElementAndClickRefresh=Velg et element og klikk Oppfrisk -PrintFile=Print File %s -ShowTransaction=Show transaction -GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into Home - Setup - Display to hide. -Deny=Deny -Denied=Denied +PrintFile=Print fil %s +ShowTransaction=Vis transaksjon +GoIntoSetupToChangeLogo=Gå til Hjem - Oppsett - Firma for å skifte logo eller Hjem - Oppsett - Display for å skjule. +Deny=Avvis +Denied=Avvist # Week day Monday=Mandag Tuesday=Tirsdag diff --git a/htdocs/langs/nb_NO/opensurvey.lang b/htdocs/langs/nb_NO/opensurvey.lang index b6c393f99fa400ee17653d70a116819d3aaa65f3..d254a7accb18df0936e710970509d9c9245a7c80 100644 --- a/htdocs/langs/nb_NO/opensurvey.lang +++ b/htdocs/langs/nb_NO/opensurvey.lang @@ -1,14 +1,14 @@ # Dolibarr language file - Source file is en_US - opensurvey -Survey=Poll -Surveys=Polls -OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... -NewSurvey=New poll -NoSurveysInDatabase=%s poll(s) into database. -OpenSurveyArea=Polls area -AddACommentForPoll=You can add a comment into poll... -AddComment=Add comment -CreatePoll=Create poll -PollTitle=Poll title +Survey=Undersøkelse +Surveys=Undersøkelser +OrganizeYourMeetingEasily=Organiser møtene og undersøkelsene dine. Velg type undersøkelse +NewSurvey=Ny undersøkelse +NoSurveysInDatabase=%s undersøkelse(r) i databasen. +OpenSurveyArea=Område for undersøkelser +AddACommentForPoll=Legg til kommentar i undersøkelsen +AddComment=Legg til kommentar +CreatePoll=Opprett undersøkelse +PollTitle=Undersøkelse tittel ToReceiveEMailForEachVote=Receive an email for each vote TypeDate=Type date TypeClassic=Type standard diff --git a/htdocs/langs/nb_NO/orders.lang b/htdocs/langs/nb_NO/orders.lang index f09adadfcef9580f9d47f5abd0a2f98776649f76..ec0b971bccedc3cc67be7b093bbd05d97738374a 100644 --- a/htdocs/langs/nb_NO/orders.lang +++ b/htdocs/langs/nb_NO/orders.lang @@ -16,20 +16,20 @@ SupplierOrder=Leverandørordre SuppliersOrders=Leverandørordre SuppliersOrdersRunning=Aktuelle leverandørs ordrer CustomerOrder=Kundeordre -CustomersOrders=Customers orders +CustomersOrders=Kundeordre CustomersOrdersRunning=Aktuelle kundes ordrer CustomersOrdersAndOrdersLines=Kundeordrer og ordrelinjer -OrdersToValid=Customers orders to validate -OrdersToBill=Customers orders delivered -OrdersInProcess=Customers orders in process -OrdersToProcess=Customers orders to process +OrdersToValid=Kundeordre til godkjenning +OrdersToBill=Leverte kundeordre +OrdersInProcess=Pågående kundeordre +OrdersToProcess=Kundeordre til fullføring SuppliersOrdersToProcess=Leverandørens ordre til behandling StatusOrderCanceledShort=Kansellert StatusOrderDraftShort=Kladd StatusOrderValidatedShort=Godkjent StatusOrderSentShort=I prosessen StatusOrderSent=Under transport -StatusOrderOnProcessShort=Ordered +StatusOrderOnProcessShort=Bestilt StatusOrderProcessedShort=Behandlet StatusOrderToBillShort=Levert StatusOrderToBill2Short=Til fakturering @@ -41,8 +41,8 @@ StatusOrderReceivedAllShort=Fullt levert StatusOrderCanceled=Kansellert StatusOrderDraft=Kladd (trenger godkjenning) StatusOrderValidated=Godkjent -StatusOrderOnProcess=Ordered - Standby reception -StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation +StatusOrderOnProcess=Bestilt - Venter på varer +StatusOrderOnProcessWithValidation=Bestilt - Venter varer eller bekreftelse StatusOrderProcessed=Behandlet StatusOrderToBill=Levert StatusOrderToBill2=Til fakturering @@ -51,21 +51,21 @@ StatusOrderRefused=Avvist StatusOrderReceivedPartially=Dellevert StatusOrderReceivedAll=Fullt levert ShippingExist=En forsendelse eksisterer -ProductQtyInDraft=Product quantity into draft orders -ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +ProductQtyInDraft=Produktmengde i ordrekladder +ProductQtyInDraftOrWaitingApproved=Produktmengde i kladdede/godkjente ordrer som ikke er bestilt enda DraftOrWaitingApproved=Utkast eller godkjent ennå ikke bestilt DraftOrWaitingShipped=Utkast eller validert ennå ikke levert MenuOrdersToBill=Ordre levert MenuOrdersToBill2=Fakturerbare ordre SearchOrder=Søk i ordre SearchACustomerOrder=Søk etter kundeordre -SearchASupplierOrder=Search a supplier order +SearchASupplierOrder=Søk etter leverandørordre ShipProduct=Lever produkt Discount=Rabatt CreateOrder=Lag ordre RefuseOrder=Avvis ordre -ApproveOrder=Approve order -Approve2Order=Approve order (second level) +ApproveOrder=Godkjenn ordre +Approve2Order=Godkjenn ordre (2. nivå) ValidateOrder=Valider ordre UnvalidateOrder=Devalider ordre DeleteOrder=Slett ordre @@ -79,9 +79,9 @@ NoOpenedOrders=Ingen åpne ordre NoOtherOpenedOrders=Ingen andre åpne ordre NoDraftOrders=Ingen ordreutkast OtherOrders=Andre ordre -LastOrders=Last %s customer orders -LastCustomerOrders=Last %s customer orders -LastSupplierOrders=Last %s supplier orders +LastOrders=Siste %s kundeordre +LastCustomerOrders=Siste %s kundeordrer +LastSupplierOrders=Siste %s leverandørordrer LastModifiedOrders=Siste %s endrede ordre LastClosedOrders=Siste %s lukkede ordre AllOrders=Alle ordre @@ -105,8 +105,8 @@ ClassifyBilled=Klassifiser "Fakturert" ComptaCard=Regnskapskort DraftOrders=Ordrekladder RelatedOrders=Relaterte ordre -RelatedCustomerOrders=Related customer orders -RelatedSupplierOrders=Related supplier orders +RelatedCustomerOrders=Relaterte kundeordrer +RelatedSupplierOrders=Relaterte leverandørordrer OnProcessOrders=Ordre i behandling RefOrder=Ref. ordre RefCustomerOrder=Ref. kundeordre @@ -123,7 +123,7 @@ PaymentOrderRef=Betaling av ordre %s CloneOrder=Clone bestilling ConfirmCloneOrder=Er du sikker på at du vil klone denne bestillingen <b>%s?</b> DispatchSupplierOrder=Motta leverandør bestill %s -FirstApprovalAlreadyDone=First approval already done +FirstApprovalAlreadyDone=Første godkjenning allerede utført ##### Types de contacts ##### TypeContact_commande_internal_SALESREPFOLL=Representant oppfølging kundeordre TypeContact_commande_internal_SHIPPING=Representant oppfølging shipping diff --git a/htdocs/langs/nb_NO/productbatch.lang b/htdocs/langs/nb_NO/productbatch.lang index 85b1d27f3a611763b0bf7454a46c40772432354b..6914b40308b27fc59e26324ad538add79bc77438 100644 --- a/htdocs/langs/nb_NO/productbatch.lang +++ b/htdocs/langs/nb_NO/productbatch.lang @@ -1,16 +1,16 @@ # ProductBATCH language file - en_US - ProductBATCH -ManageLotSerial=Use lot/serial number -ProductStatusOnBatch=Yes (lot/serial required) -ProductStatusNotOnBatch=No (lot/serial not used) -ProductStatusOnBatchShort=Yes -ProductStatusNotOnBatchShort=No -Batch=Lot/Serial +ManageLotSerial=Bruk lot/serienummer +ProductStatusOnBatch=Ja (lot/serienummer påkrevd) +ProductStatusNotOnBatch=Nei (lot/serienummer ikke i bruk) +ProductStatusOnBatchShort=Ja +ProductStatusNotOnBatchShort=Nei +Batch=Lot/serienummer atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number -batch_number=Lot/Serial number +batch_number=Lot/serienummer BatchNumberShort=Lot/Serial l_eatby=Eat-by date l_sellby=Sell-by date -DetailBatchNumber=Lot/Serial details +DetailBatchNumber=Lot/serienummer detaljer DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Lot/Serial: %s printEatby=Eat-by: %s diff --git a/htdocs/langs/nb_NO/products.lang b/htdocs/langs/nb_NO/products.lang index 42894d7663eb83823f433b94036327e586c0579d..690d5e8bcfa87f71509d6043c4b21a239d16a21f 100644 --- a/htdocs/langs/nb_NO/products.lang +++ b/htdocs/langs/nb_NO/products.lang @@ -22,12 +22,12 @@ ProductAccountancySellCode=Revisjon kode (selge) ProductOrService=Vare eller tjeneste ProductsAndServices=Varer og tjenester ProductsOrServices=Varer eller tjenester -ProductsAndServicesOnSell=Products and Services for sale or for purchase -ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesOnSell=Produkter og tjenester for salg eller innkjøp +ProductsAndServicesNotOnSell=Produkter og tjenester ute av salg ProductsAndServicesStatistics=Statistikk over varer og tjenester ProductsStatistics=Varestatistikk -ProductsOnSell=Product for sale or for pruchase -ProductsNotOnSell=Product out of sale and out of purchase +ProductsOnSell=Produkt for salg eller innkjøp +ProductsNotOnSell=Produkt ute av salg og innkjøp ProductsOnSellAndOnBuy=Products for sale and for purchase ServicesOnSell=Services for sale or for purchase ServicesNotOnSell=Services out of sale diff --git a/htdocs/langs/nb_NO/propal.lang b/htdocs/langs/nb_NO/propal.lang index 6fa22ed096d1bd49fbfade8889896c42b73c4089..aa0d6278d4ed94119072bb8923fae4eeabd56efb 100644 --- a/htdocs/langs/nb_NO/propal.lang +++ b/htdocs/langs/nb_NO/propal.lang @@ -16,7 +16,7 @@ Prospect=Prospekt ProspectList=Prospektliste DeleteProp=Slett tilbud ValidateProp=Godkjenn tilbud -AddProp=Legg til tilbud +AddProp=Lag tilbud ConfirmDeleteProp=Er du sikker på at du vil slette dette tilbudet? ConfirmValidateProp=Er du sikker på at du vil godkjenne dette tilbudet? LastPropals=Siste %s tilbud @@ -55,8 +55,6 @@ NoOpenedPropals=Ingen åpne tilbud NoOtherOpenedPropals=Ingen andre åpne tilbud RefProposal=Tilbudsreferanser SendPropalByMail=Send tilbud med e-post -FileNotUploaded=Filen ble ikke lastet opp -FileUploaded=Filen ble lastet opp AssociatedDocuments=Dokumenter relatert til tilbudet: ErrorCantOpenDir=Kan ikke åpne mappen DatePropal=Dato for forslaget diff --git a/htdocs/langs/nb_NO/salaries.lang b/htdocs/langs/nb_NO/salaries.lang index 28c21adfad3bfeaeab79e52b5814048501b51708..acec7945e2ad8c05a5c6bd4717975e828e7e3d23 100644 --- a/htdocs/langs/nb_NO/salaries.lang +++ b/htdocs/langs/nb_NO/salaries.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - users -SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments -SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge -Salary=Salary -Salaries=Salaries -Employee=Employee -NewSalaryPayment=New salary payment -SalaryPayment=Salary payment -SalariesPayments=Salaries payments -ShowSalaryPayment=Show salary payment -THM=Average hourly price -TJM=Average daily price -CurrentSalary=Current salary +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Regnskapskode for lønnsutbetalinger +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Regnskapskode for finansiell belastning +Salary=Lønn +Salaries=Lønn +Employee=Ansatt +NewSalaryPayment=Ny lønnsutbetaling +SalaryPayment=Lønnsutbetaling +SalariesPayments=Lønnsutbetalinger +ShowSalaryPayment=Vis lønnsutbetaling +THM=Gjennomsnittlig timepris +TJM=Gjennomsnittlig dagskost +CurrentSalary=Nåværende lønn diff --git a/htdocs/langs/nb_NO/suppliers.lang b/htdocs/langs/nb_NO/suppliers.lang index 3c0b6c7b4c25f3f96c83785a8530bfab643fff96..8196c6d43a3eb38540335b8daeef171aaead9893 100644 --- a/htdocs/langs/nb_NO/suppliers.lang +++ b/htdocs/langs/nb_NO/suppliers.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Leverandører -AddSupplier=Create a supplier +AddSupplier=Opprett leverandør SupplierRemoved=Leverandør slettet SuppliersInvoice=Leverandørfaktura NewSupplier=Ny leverandør @@ -29,7 +29,7 @@ ExportDataset_fournisseur_2=Leverandørfakturaer og betalinger ExportDataset_fournisseur_3=Leverandør ordrer og ordrelinjer ApproveThisOrder=Godkjenn denne innkjøpsordren ConfirmApproveThisOrder=Er du sikker på at du vil godkjenne denne innkjøpsordren? -DenyingThisOrder=Deny this order +DenyingThisOrder=Avvis denne ordren ConfirmDenyingThisOrder=Er du sikker på at du vil avvise denne innkjøpsordren? ConfirmCancelThisOrder=Er du sikker på at du vil avbryte denne innkjøpsordren? AddCustomerOrder=Opprett kundeordre @@ -40,7 +40,7 @@ ListOfSupplierProductForSupplier=Oversikt over produkter og priser for leverand NoneOrBatchFileNeverRan=Ingen eller batch <b>%s</b> ikke løp nylig SentToSuppliers=Sendt til leverandører ListOfSupplierOrders=Liste over leverandørordre -MenuOrdersSupplierToBill=Supplier orders to invoice -NbDaysToDelivery=Delivery delay in days -DescNbDaysToDelivery=The biggest delay is display among order product list -UseDoubleApproval=Use double approval (the second approval can be done by any user with the dedicated permission) +MenuOrdersSupplierToBill=Leverandørordre til faktura +NbDaysToDelivery=Leveringsforsinkelse i dager +DescNbDaysToDelivery=Lengste forsinkelse er vist i ordre-produktliste +UseDoubleApproval=Bruk dobbel godkjenning ( den andre godkjennelsen kan gjøres av alle brukere med riktig adgang) diff --git a/htdocs/langs/nb_NO/trips.lang b/htdocs/langs/nb_NO/trips.lang index 8d455d35fc4c141be64aa5872c004d9dc682f5dc..488a49692a99d4723e6f86fcb750070c77656d86 100644 --- a/htdocs/langs/nb_NO/trips.lang +++ b/htdocs/langs/nb_NO/trips.lang @@ -1,102 +1,102 @@ # Dolibarr language file - Source file is en_US - trips -ExpenseReport=Expense report -ExpenseReports=Expense reports -Trip=Expense report -Trips=Expense reports -TripsAndExpenses=Expenses reports -TripsAndExpensesStatistics=Expense reports statistics -TripCard=Expense report card -AddTrip=Create expense report -ListOfTrips=List of expense report +ExpenseReport=Reiseregning +ExpenseReports=Reiseregninger +Trip=Reiseregning +Trips=Reiseregninger +TripsAndExpenses=Reiseregninger +TripsAndExpensesStatistics=Reiseregninger - statistikk +TripCard=Skjema for reiseregninger +AddTrip=Opprett reiseregning +ListOfTrips=Liste over reiseregninger ListOfFees=Oversikt over avgifter -NewTrip=New expense report +NewTrip=Ny reiseregning CompanyVisited=Firma/organiasjon besøkt Kilometers=Kilometer FeesKilometersOrAmout=Beløp eller kilometer -DeleteTrip=Delete expense report -ConfirmDeleteTrip=Are you sure you want to delete this expense report ? -ListTripsAndExpenses=List of expense reports -ListToApprove=Waiting for approval -ExpensesArea=Expense reports area -SearchATripAndExpense=Search an expense report -ClassifyRefunded=Classify 'Refunded' -ExpenseReportWaitingForApproval=A new expense report has been submitted for approval -ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s -TripId=Id expense report -AnyOtherInThisListCanValidate=Person to inform for validation. -TripSociete=Information company -TripSalarie=Informations user -TripNDF=Informations expense report -DeleteLine=Delete a ligne of the expense report -ConfirmDeleteLine=Are you sure you want to delete this line ? -PDFStandardExpenseReports=Standard template to generate a PDF document for expense report -ExpenseReportLine=Expense report line +DeleteTrip=Slett reiseregning +ConfirmDeleteTrip=Er du sikker på at du vil slette denne reiseregningen? +ListTripsAndExpenses=Liste over reiseregninger +ListToApprove=Venter på godkjenning +ExpensesArea=Område for reiseregninger +SearchATripAndExpense=Søk etter reiseregning +ClassifyRefunded=Klassifisert 'refundert' +ExpenseReportWaitingForApproval=En ny reiseregning er sendt inn for godkjenning +ExpenseReportWaitingForApprovalMessage=En ny reiseregning er sendt inn og venter på godkjenning.\n- Bruker: %s\n- Periode: %s\nKlikk her for å godkjenne: %s +TripId=Reiseregnings - ID +AnyOtherInThisListCanValidate=Person som skal informeres for godkjenning +TripSociete=Firmainformasjon +TripSalarie=Brukerinformasjon +TripNDF=Informasjon om reiseregning +DeleteLine=Slett en linje i reiseregningen +ConfirmDeleteLine=Er du sikker på at du vil slette denne linjen? +PDFStandardExpenseReports=Standardmal for å generere PDF av reiseregning +ExpenseReportLine=Linje i reiseregningen TF_OTHER=Annet -TF_TRANSPORTATION=Transportation +TF_TRANSPORTATION=Transport TF_LUNCH=Lunsj -TF_METRO=Metro -TF_TRAIN=Train -TF_BUS=Bus -TF_CAR=Car +TF_METRO=Trikk/bybane +TF_TRAIN=Tog +TF_BUS=Buss +TF_CAR=Bil TF_PEAGE=Toll -TF_ESSENCE=Fuel -TF_HOTEL=Hostel +TF_ESSENCE=Drivstoff +TF_HOTEL=Overnatting TF_TAXI=Taxi -ErrorDoubleDeclaration=You have declared another expense report into a similar date range. -ListTripsAndExpenses=List of expense reports -AucuneNDF=No expense reports found for this criteria -AucuneLigne=There is no expense report declared yet -AddLine=Add a line -AddLineMini=Add +ErrorDoubleDeclaration=Du har opprettet en annen reiseregning i overlappende tidsperiode +ListTripsAndExpenses=Liste over reiseregninger +AucuneNDF=Ingen reiseregning funnet etter disse kriteriene +AucuneLigne=Ingen reiseregning er opprettet enda +AddLine=Legg til linje +AddLineMini=Legg til -Date_DEBUT=Period date start -Date_FIN=Period date end -ModePaiement=Payment mode -Note=Note -Project=Project +Date_DEBUT=Dato for periodestart +Date_FIN=Dato for periodeslutt +ModePaiement=Betalingsmåte +Note=Notat +Project=Prosjekt -VALIDATOR=User to inform for approbation -VALIDOR=Approved by -AUTHOR=Recorded by -AUTHORPAIEMENT=Paied by -REFUSEUR=Denied by -CANCEL_USER=Canceled by +VALIDATOR=Bruker som skal informeres for godkjenning +VALIDOR=Godkjent av +AUTHOR=Registrert av +AUTHORPAIEMENT=Betalt av +REFUSEUR=Avvist av +CANCEL_USER=Kansellert av -MOTIF_REFUS=Reason -MOTIF_CANCEL=Reason +MOTIF_REFUS=Grunn +MOTIF_CANCEL=Grunn -DATE_REFUS=Deny date -DATE_SAVE=Validation date -DATE_VALIDE=Validation date -DATE_CANCEL=Cancelation date -DATE_PAIEMENT=Payment date +DATE_REFUS=Avvist dato +DATE_SAVE=Godkjennelsesdato +DATE_VALIDE=Godkjennelsesdato +DATE_CANCEL=Kansellert dato +DATE_PAIEMENT=Betalt dato -TO_PAID=Pay -BROUILLONNER=Reopen -SendToValid=Sent to approve -ModifyInfoGen=Edit -ValidateAndSubmit=Validate and submit for approval +TO_PAID=Betal +BROUILLONNER=Gjenåpne +SendToValid=Sendt for godkjenning +ModifyInfoGen=Endre +ValidateAndSubmit=Valider og send til godkjenning -NOT_VALIDATOR=You are not allowed to approve this expense report -NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. +NOT_VALIDATOR=Du har ikke tillatelse til å godkjenne denne reiseregningen +NOT_AUTHOR=Reiseregningener ikke opprettet av deg. Operasjonen avbrutt. -RefuseTrip=Deny an expense report -ConfirmRefuseTrip=Are you sure you want to deny this expense report ? +RefuseTrip=Avvis en reiseregning +ConfirmRefuseTrip=Er du sikker på at du vil avvise denne reiseregningen -ValideTrip=Approve expense report -ConfirmValideTrip=Are you sure you want to approve this expense report ? +ValideTrip=Godkjenn reiseregning +ConfirmValideTrip=Er du sikker på at du vil godkjenne denne reiseregningen -PaidTrip=Pay an expense report -ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? +PaidTrip=Betal en reiseregning +ConfirmPaidTrip=Er du sikker på at du vil endre status til "betalt" for denne reiseregningen? -CancelTrip=Cancel an expense report -ConfirmCancelTrip=Are you sure you want to cancel this expense report ? +CancelTrip=Kanseller en reiseregning +ConfirmCancelTrip=Er du sikker på at du vil kansellere denne reiseregningen? -BrouillonnerTrip=Move back expense report to status "Draft"n -ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? +BrouillonnerTrip=Endre status på reiseregning til "Kladd" +ConfirmBrouillonnerTrip=Er du sikker på at du vil endre status til "Kladd" for denne reiseregningen? -SaveTrip=Validate expense report -ConfirmSaveTrip=Are you sure you want to validate this expense report ? +SaveTrip=Godkjenn reiseregning +ConfirmSaveTrip=Er du sikker på at du vil validere denne reiseregningen? -NoTripsToExportCSV=No expense report to export for this period. +NoTripsToExportCSV=Ingen reiseregning å eksportere for denne perioden diff --git a/htdocs/langs/pt_BR/productbatch.lang b/htdocs/langs/pt_BR/productbatch.lang new file mode 100644 index 0000000000000000000000000000000000000000..26ed02b1907051ec26978464b0c00ddfc11c8102 --- /dev/null +++ b/htdocs/langs/pt_BR/productbatch.lang @@ -0,0 +1,8 @@ +# Dolibarr language file - Source file is en_US - productbatch +ManageLotSerial=Use lot/serial number +ProductStatusOnBatch=Yes (lot/serial required) +ProductStatusNotOnBatch=No (lot/serial not used) +Batch=Lot/Serial +batch_number=Lot/Serial number +DetailBatchNumber=Lot/Serial details +printBatch=Lot/Serial: %s diff --git a/htdocs/langs/pt_PT/productbatch.lang b/htdocs/langs/pt_PT/productbatch.lang index c86b0a42606dbb104fc9aa92332811b8cb38f488..119b7ae7f4d3d73f57aa12b6e87182bd328d25f8 100644 --- a/htdocs/langs/pt_PT/productbatch.lang +++ b/htdocs/langs/pt_PT/productbatch.lang @@ -1,18 +1,18 @@ # ProductBATCH language file - en_US - ProductBATCH -ManageLotSerial=Use lot/serial number -ProductStatusOnBatch=Yes (lot/serial required) -ProductStatusNotOnBatch=No (lot/serial not used) +ManageLotSerial=Utilizar lote/número de série +ProductStatusOnBatch=Sim (necessário lote/número de série) +ProductStatusNotOnBatch=Não (não é necessário lote/número de série) ProductStatusOnBatchShort=Sim ProductStatusNotOnBatchShort=Não -Batch=Lot/Serial +Batch=Lote/Nr. de Série atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number -batch_number=Lot/Serial number +batch_number=Lote/Número de série BatchNumberShort=Lot/Serial l_eatby=Eat-by date l_sellby=Sell-by date -DetailBatchNumber=Lot/Serial details +DetailBatchNumber=Detalhes de Lote/Nr. de Série DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) -printBatch=Lot/Serial: %s +printBatch=Lote/Nr. de Série: %s printEatby=Eat-by: %s printSellby=Sell-by: %s printQty=Qt.: %d diff --git a/htdocs/langs/tr_TR/bills.lang b/htdocs/langs/tr_TR/bills.lang index 038fc8c0b092cdc249600da99044b0c7a234a081..d639e2bd563c4767664e5431046021018251ac75 100644 --- a/htdocs/langs/tr_TR/bills.lang +++ b/htdocs/langs/tr_TR/bills.lang @@ -368,7 +368,7 @@ LawApplicationPart1=12/05/80 tarihli 80.335 yasasının uygulanması ile LawApplicationPart2=mallar şunun mülkiyetinde kalır LawApplicationPart3=satıcı ödemesini tamamlayıncaya kadar LawApplicationPart4=fiyatları. -LimitedLiabilityCompanyCapital=SARL (Ltd) firma sermayesi +LimitedLiabilityCompanyCapital=SARL nin sermayesi UseLine=Uygula UseDiscount=İndirim kullan UseCredit=Kredi kullan diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php index fb087e7180066558dc0a6c728e50167e4a3e5da0..7ea9920d65b2ac4225faf0f48c463f40f90f9a1e 100644 --- a/htdocs/livraison/card.php +++ b/htdocs/livraison/card.php @@ -788,10 +788,14 @@ else $shipment = new Expedition($db); $shipment->fetch($object->origin_id); - $somethingshown=$shipment->showLinkedObjectBlock(); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($shipment); + + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($shipment); + //if ($linktoelem) print '<br>'.$linktoelem; } - if ($genallowed && ! $somethingshown) $somethingshown=1; print '</td><td valign="top" width="50%">'; diff --git a/htdocs/livraison/class/livraison.class.php b/htdocs/livraison/class/livraison.class.php index 52db876fbf02b5055f007801ce67d3ab9dcc1900..3a1704f8d8d58f44cb3aba943a2abc3e310266ad 100644 --- a/htdocs/livraison/class/livraison.class.php +++ b/htdocs/livraison/class/livraison.class.php @@ -52,6 +52,11 @@ class Livraison extends CommonObject var $ref_customer; var $statut; + /** + * @deprecated + * @see note_public, note_private + */ + var $note; var $note_public; var $note_private; @@ -1014,10 +1019,8 @@ class Livraison extends CommonObject /** * Classe de gestion des lignes de bons de livraison */ -class LivraisonLigne +class LivraisonLigne extends CommonObjectLine { - var $db; - // From llx_expeditiondet var $qty; var $qty_asked; @@ -1027,7 +1030,19 @@ class LivraisonLigne var $origin_id; var $label; // Label produit var $description; // Description produit + /** + * @deprecated + * @see product_ref + */ var $ref; + /** + * @deprecated + * @see product_label; + */ + var $libelle; + + public $product_ref; + public $product_label; /** * Constructor diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index 51961e37e6ec3aef863d51ad2887071c18768cb0..35ce4cbaaa08e7d797400482733baccd6b8de5eb 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -52,6 +52,12 @@ class PaymentLoan extends CommonObject var $fk_user_creat; var $fk_user_modif; + /** + * @deprecated + * @see amount, amounts + */ + var $total; + /** * Constructor * diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 6df0f77f50067732817b9b5766457ddd4b169fe0..03f776ce6d5e9da50397378a25c6da9496197090 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -4,7 +4,7 @@ * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> - * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2011-2014 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2008 Matteli * Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es> @@ -34,10 +34,10 @@ //@ini_set('memory_limit', '64M'); // This may be useless if memory is hard limited by your PHP -// For optional tuning. Enabled if environment variable DOL_TUNING is defined. +// For optional tuning. Enabled if environment variable MAIN_SHOW_TUNING_INFO is defined. // A call first. Is the equivalent function dol_microtime_float not yet loaded. $micro_start_time=0; -if (! empty($_SERVER['DOL_TUNING'])) +if (! empty($_SERVER['MAIN_SHOW_TUNING_INFO'])) { list($usec, $sec) = explode(" ", microtime()); $micro_start_time=((float) $usec + (float) $sec); @@ -110,7 +110,7 @@ function test_sql_and_script_inject($val, $type) } /** - * Security: Return true if OK, false otherwise. + * Return true if security check on parameters are OK, false otherwise. * * @param string $var Variable name * @param string $type 1=GET, 0=POST, 2=PHP_SELF @@ -539,7 +539,7 @@ if (! defined('NOLOGIN')) { // We are already into an authenticated session $login=$_SESSION["dol_login"]; - dol_syslog("This is an already logged session. _SESSION['dol_login']=".$login); + dol_syslog("This is an already logged session. _SESSION['dol_login']=".$login, LOG_DEBUG); $resultFetchUser=$user->fetch('',$login); if ($resultFetchUser <= 0) @@ -1436,8 +1436,16 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a // Add login user link $toprightmenu.='<div class="login_block_user">'; - //$toprightmenu.=$form->textwithtooltip('',$loginhtmltext,2,1,$logintext,'login_block_elem2',2); // This include div class="login" - $toprightmenu.= $user->getNomurl(0, '', true, 0, 11); + + // User photo + $toprightmenu.='<div class="inline-block nowrap"><div class="inline-block login_block_elem" style="padding: 0px;">'; + $toprightmenu.=$user->getPhotoUrl(16,16,'loginphoto'); + $toprightmenu.='</div></div>'; + + $toprightmenu.='<div class="inline-block nowrap"><div class="inline-block login_block_elem" style="padding: 0px;">'; + $toprightmenu.=$user->getNomurl(0, '', true, 0, 11); + $toprightmenu.='</div></div>'; + $toprightmenu.='</div>'; $toprightmenu.='<div class="login_block_other">'; @@ -1451,9 +1459,6 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a } else $toprightmenu.=$result; // For backward compatibility - // Logout link - $toprightmenu.=$form->textwithtooltip('',$logouthtmltext,2,1,$logouttext,'login_block_elem',2); - // Link to print main content area if (empty($conf->global->MAIN_PRINT_DISABLELINK) && empty($conf->browser->phone)) { @@ -1464,7 +1469,11 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a $text.='</a>'; $toprightmenu.=$form->textwithtooltip('',$langs->trans("PrintContentArea"),2,1,$text,'login_block_elem',2); } - $toprightmenu.='</div>'; + + // Logout link + $toprightmenu.=$form->textwithtooltip('',$logouthtmltext,2,1,$logouttext,'login_block_elem',2); + + $toprightmenu.='</div>'; print $toprightmenu; @@ -1794,7 +1803,7 @@ function printSearchForm($urlaction,$urlobject,$title,$htmlmodesearch,$htmlinput { global $conf,$langs; - if (!$htmlinputid) { + if (empty($htmlinputid)) { $htmlinputid = $htmlinputname; } @@ -1868,9 +1877,9 @@ if (! function_exists("llxFooter")) if ($comment) print '<!-- '.$comment.' -->'."\n"; printCommonFooter($zone); + //var_dump($langs); // Uncommment to see the property _tab_loaded to see which language file were loaded if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile) && empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '</div> <!-- End div id-container -->'."\n"; // End div container - print "</body>\n"; print "</html>\n"; } diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php index b4c8570dec88744b5b1206db6f9f13b1279c7d92..1ab2352395de884668abd80410c77c3fcf0098b6 100644 --- a/htdocs/opensurvey/class/opensurveysondage.class.php +++ b/htdocs/opensurvey/class/opensurveysondage.class.php @@ -43,7 +43,12 @@ class Opensurveysondage extends CommonObject var $id; var $id_sondage; + /** + * @deprecated + * @see description + */ var $commentaires; + public $description; var $mail_admin; var $nom_admin; diff --git a/htdocs/opensurvey/wizard/index.php b/htdocs/opensurvey/wizard/index.php index 9566231353ff87ea29b6592b07f8890dcf3c797f..1f324a52a58e52f97d783df2935bc780958be5ec 100644 --- a/htdocs/opensurvey/wizard/index.php +++ b/htdocs/opensurvey/wizard/index.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net> - * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com> + * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,10 +23,10 @@ //if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -require_once('../../main.inc.php'); -require_once(DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"); -require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"); -require_once(DOL_DOCUMENT_ROOT."/opensurvey/fonctions.php"); +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/opensurvey/fonctions.php'; // Security check if (!$user->rights->opensurvey->write) accessforbidden(); @@ -39,7 +39,7 @@ $langs->load("opensurvey"); $arrayofjs=array(); $arrayofcss=array('/opensurvey/css/style.css'); -llxHeader('', $langs->trans("OpenSurvey"), '', "", 0, 0, $arrayofjs, $arrayofcss); +llxHeader('', $langs->trans("Survey"), '', "", 0, 0, $arrayofjs, $arrayofcss); print_fiche_titre($langs->trans("CreatePoll")); diff --git a/htdocs/product/admin/product_tools.php b/htdocs/product/admin/product_tools.php index 26ad4dba807347b96c3c60545394a2051b010352..ec5f575a552435f976dd1fb6c299e784dc4a2821 100644 --- a/htdocs/product/admin/product_tools.php +++ b/htdocs/product/admin/product_tools.php @@ -292,7 +292,7 @@ else print '<tr '.$bc[$var].'>'."\n"; print '<td>'.$langs->trans("PriceBaseTypeToChange").'</td>'."\n"; print '<td width="60" align="right">'."\n"; - print $form->load_PriceBaseType($price_base_type); + print $form->selectPriceBaseType($price_base_type); print '</td>'."\n"; print '</tr>'."\n"; */ diff --git a/htdocs/product/canvas/product/actions_card_product.class.php b/htdocs/product/canvas/product/actions_card_product.class.php index 260c8996fc435fb841ba7b9e1753759d9f04a16f..aba6325d234a96f608a3863bf0773de1673404c1 100644 --- a/htdocs/product/canvas/product/actions_card_product.class.php +++ b/htdocs/product/canvas/product/actions_card_product.class.php @@ -116,7 +116,7 @@ class ActionsCardProduct // Price $this->tpl['price'] = $this->price; $this->tpl['price_min'] = $this->price_min; - $this->tpl['price_base_type'] = $form->load_PriceBaseType($this->price_base_type, "price_base_type"); + $this->tpl['price_base_type'] = $form->selectPriceBaseType($this->price_base_type, "price_base_type"); // VAT $this->tpl['tva_tx'] = $form->load_tva("tva_tx",-1,$mysoc,''); diff --git a/htdocs/product/canvas/product/tpl/card_create.tpl.php b/htdocs/product/canvas/product/tpl/card_create.tpl.php index b700764484d3528386579eb90f46ce05fef1a6cf..3f5ebdcbc0b0091a0f4b4a12c1a95cf13e8adc8d 100644 --- a/htdocs/product/canvas/product/tpl/card_create.tpl.php +++ b/htdocs/product/canvas/product/tpl/card_create.tpl.php @@ -42,7 +42,7 @@ $statutarray=array('1' => $langs->trans("OnSell"), '0' => $langs->trans("NotOnSe <tr> <td class="fieldrequired" width="20%"><?php echo $langs->trans("Ref"); ?></td> <td><input name="ref" size="40" maxlength="32" value="<?php echo $object->ref; ?>"> -<?php if ($_error == 1) echo $langs->trans("RefAlreadyExists"); ?> +<?php if ($refalreadyexists == 1) echo $langs->trans("RefAlreadyExists"); ?> </td></tr> <tr> diff --git a/htdocs/product/canvas/service/actions_card_service.class.php b/htdocs/product/canvas/service/actions_card_service.class.php index f7de783cd99428931cebafe2aec6d6f8d10e2266..7bc04ecb42a5d312d08837d86b4e0d27fc297603 100644 --- a/htdocs/product/canvas/service/actions_card_service.class.php +++ b/htdocs/product/canvas/service/actions_card_service.class.php @@ -115,7 +115,7 @@ class ActionsCardService // Price $this->tpl['price'] = $this->price; $this->tpl['price_min'] = $this->price_min; - $this->tpl['price_base_type'] = $form->load_PriceBaseType($this->price_base_type, "price_base_type"); + $this->tpl['price_base_type'] = $form->selectPriceBaseType($this->price_base_type, "price_base_type"); // VAT $this->tpl['tva_tx'] = $form->load_tva("tva_tx",-1,$mysoc,''); diff --git a/htdocs/product/canvas/service/tpl/card_create.tpl.php b/htdocs/product/canvas/service/tpl/card_create.tpl.php index 148b9164ac15f3f8b33ccfd9627ec99d6c618f09..c9bb423d0a2e9e32ebc98f843cb5ba93b34a6adb 100644 --- a/htdocs/product/canvas/service/tpl/card_create.tpl.php +++ b/htdocs/product/canvas/service/tpl/card_create.tpl.php @@ -40,7 +40,7 @@ $statutarray=array('1' => $langs->trans("OnSell"), '0' => $langs->trans("NotOnSe <tr> <td class="fieldrequired" width="20%"><?php echo $langs->trans("Ref"); ?></td> <td><input name="ref" size="40" maxlength="32" value="<?php echo $object->ref; ?>"> -<?php if ($_error == 1) echo $langs->trans("RefAlreadyExists"); ?> +<?php if ($refalreadyexists == 1) echo $langs->trans("RefAlreadyExists"); ?> </td></tr> <tr> diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 7780bb560a5c4984d5077f97f2b6ebe5f32d4e45..08c391c11c4e00051ab4f97168ed211dab8cbecb 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -2,7 +2,7 @@ /* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com> - * Copyright (C) 2005-2014 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2006 Auguria SARL <info@auguria.org> * Copyright (C) 2010-2014 Juanjo Menent <jmenent@2byte.es> @@ -10,7 +10,7 @@ * Copyright (C) 2012-2013 Cédric Salvador <csalvador@gpcsolutions.fr> * Copyright (C) 2011-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2014 Cédric Gross <c.gross@kreiz-it.fr> - * Copyright (C) 2014 Ferran Marcet <fmarcet@2byte.es> + * Copyright (C) 2014-2015 Ferran Marcet <fmarcet@2byte.es> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * @@ -53,7 +53,9 @@ if (! empty($conf->stock->enabled)) $langs->load("stocks"); if (! empty($conf->facture->enabled)) $langs->load("bills"); if (! empty($conf->productbatch->enabled)) $langs->load("productbatch"); -$mesg=''; $error=0; $errors=array(); $_error=0; +$mesg=''; $error=0; $errors=array(); + +$refalreadyexists=0; $id=GETPOST('id', 'int'); $ref=GETPOST('ref', 'alpha'); @@ -468,7 +470,7 @@ if (empty($reshook)) { $db->rollback(); - $_error++; + $refalreadyexists++; $action = ""; $mesg=$langs->trans("ErrorProductAlreadyExists",$object->ref); @@ -477,7 +479,7 @@ if (empty($reshook)) $object->fetch($id); } else - { + { $db->rollback(); if (count($object->errors)) { @@ -788,8 +790,13 @@ else if (! empty($conf->barcode->enabled) && ! empty($conf->global->BARCODE_PRODUCT_ADDON_NUM)) { $module=strtolower($conf->global->BARCODE_PRODUCT_ADDON_NUM); - $result=dol_include_once('/core/modules/barcode/'.$module.'.php'); - if ($result > 0) + $dirbarcode=array_merge(array('/core/modules/barcode/'),$conf->modules_parts['barcode']); + foreach ($dirbarcode as $dirroot) + { + $res=dol_include_once($dirroot.$module.'.php'); + if ($res) break; + } + if ($res > 0) { $modBarCodeProduct =new $module(); } @@ -816,7 +823,7 @@ else $tmpcode=''; if (! empty($modCodeProduct->code_auto)) $tmpcode=$modCodeProduct->getNextValue($object,$type); print '<td class="fieldrequired" width="20%">'.$langs->trans("Ref").'</td><td colspan="3"><input name="ref" size="32" maxlength="128" value="'.dol_escape_htmltag(GETPOST('ref')?GETPOST('ref'):$tmpcode).'">'; - if ($_error) + if ($refalreadyexists) { print $langs->trans("RefAlreadyExists"); } @@ -1004,7 +1011,7 @@ else // PRIX print '<tr><td>'.$langs->trans("SellingPrice").'</td>'; print '<td><input name="price" size="10" value="'.$object->price.'">'; - print $form->select_PriceBaseType($object->price_base_type, "price_base_type"); + print $form->selectPriceBaseType($object->price_base_type, "price_base_type"); print '</td></tr>'; // MIN PRICE @@ -1385,7 +1392,7 @@ else print '<table width="100%" class="nobordernopadding"><tr><td class="nowrap">'; print $langs->trans("BarcodeType"); print '<td>'; - if (($action != 'editbarcodetype') && $user->rights->barcode->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbarcodetype&id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>'; + if (($action != 'editbarcodetype') && ! empty($user->rights->barcode->creer)) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbarcodetype&id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>'; print '</tr></table>'; print '</td><td colspan="2">'; if ($action == 'editbarcodetype') @@ -1406,7 +1413,7 @@ else print '<table width="100%" class="nobordernopadding"><tr><td class="nowrap">'; print $langs->trans("BarcodeValue"); print '<td>'; - if (($action != 'editbarcode') && $user->rights->barcode->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbarcode&id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>'; + if (($action != 'editbarcode') && ! empty($user->rights->barcode->creer)) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbarcode&id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>'; print '</tr></table>'; print '</td><td colspan="2">'; if ($action == 'editbarcode') @@ -1461,7 +1468,7 @@ else print '</td></tr>'; // Batch number management (to batch) - if ($conf->productbatch->enabled) { + if (! empty($conf->productbatch->enabled)) { print '<tr><td>'.$langs->trans("ManageLotSerial").'</td><td colspan="2">'; if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { print ajax_object_onoff($object, 'status_batch', 'tobatch', 'ProductStatusOnBatch', 'ProductStatusNotOnBatch'); @@ -1552,7 +1559,7 @@ else } // Unit - if($conf->global->PRODUCT_USE_UNITS) + if (! empty($conf->global->PRODUCT_USE_UNITS)) { $unit = $object->getLabelOfUnit(); diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index d2c3deeb2e4f08cf71dbb28700bb3d7f137831a9..079c0772d8b4042fc3869b59b678b3019625ebaa 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -59,10 +59,15 @@ class Product extends CommonObject var $id ; //! Ref var $ref; - /** - * Product label - * @var string - */ + /* + * @deprecated + * @see label + */ + var $libelle; + /** + * Product label + * @var string + */ var $label; /** * Product descripion @@ -183,6 +188,20 @@ class Product extends CommonObject var $fk_price_expression; + /** + * @deprecated + * @see fourn_pu + */ + var $buyprice; + public $fourn_pu; + + /** + * @deprecated + * @see ref_supplier + */ + var $ref_fourn; + public $ref_supplier; + /** * Unit code ('km', 'm', 'l', 'p', ...) * @var string @@ -817,6 +836,11 @@ class Product extends CommonObject */ function delete($id=0) { + // Deprecation warning + if (0 == $id) { + dol_syslog(__METHOD__ . " with parameter is deprecated", LOG_WARNING); + } + global $conf,$user,$langs; require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; @@ -1252,7 +1276,7 @@ class Product extends CommonObject $obj->price = $price_result; } } - $this->buyprice = $obj->price; // \deprecated + $this->buyprice = $obj->price; // deprecated $this->fourn_pu = $obj->price / $obj->quantity; // Prix unitaire du produit pour le fournisseur $fourn_id $this->ref_fourn = $obj->ref_fourn; // Ref supplier $this->vatrate_supplier = $obj->tva_tx; // Vat ref supplier @@ -3915,9 +3939,9 @@ class Product extends CommonObject /** * Function used to replace a thirdparty id with another one. * - * @param DoliDB $db Database handler - * @param int $origin_id Old thirdparty id - * @param int $dest_id New thirdparty id + * @param DoliDB $db Database handler + * @param int $origin_id Old thirdparty id + * @param int $dest_id New thirdparty id * @return bool */ public static function replaceThirdparty(DoliDB $db, $origin_id, $dest_id) diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 750158d4e8d292eab7cde5f4c4ecdf7d426ac0f7..fe715801f1137bc01a8cca55c99c75527dd81299 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -450,7 +450,7 @@ if ($id || $ref) print '<tr><td class="fieldrequired">'.$langs->trans("PriceQtyMin").'</td>'; print '<td><input class="flat" name="price" size="8" value="'.(GETPOST('price')?price(GETPOST('price')):(isset($product->fourn_price)?price($product->fourn_price):'')).'">'; print ' '; - print $form->select_PriceBaseType((GETPOST('price_base_type')?GETPOST('price_base_type'):$product->price_base_type), "price_base_type"); + print $form->selectPriceBaseType((GETPOST('price_base_type')?GETPOST('price_base_type'):$product->price_base_type), "price_base_type"); print '</td></tr>'; // Discount qty min @@ -502,10 +502,15 @@ if ($id || $ref) if ($action != 'add_price' && $action != 'updateprice') { - if ($user->rights->produit->creer || $user->rights->service->creer) + $parameters=array(); + $reshook=$hookmanager->executeHooks('addMoreActionsButtons',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + if (empty($reshook)) { - print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/fournisseurs.php?id='.$product->id.'&action=add_price">'; - print $langs->trans("AddSupplierPrice").'</a>'; + if ($user->rights->produit->creer || $user->rights->service->creer) + { + print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/fournisseurs.php?id='.$product->id.'&action=add_price">'; + print $langs->trans("AddSupplierPrice").'</a>'; + } } } diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 83e15cb104e222398fa89f00a976cab1d3fdc65a..3c68f2617329fe201919fc255e2a3bcbc6930c1c 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -50,8 +50,8 @@ $sall=GETPOST("sall"); $type=GETPOST("type","int"); $search_sale = GETPOST("search_sale"); $search_categ = GETPOST("search_categ",'int'); -$tosell = GETPOST("tosell"); -$tobuy = GETPOST("tobuy"); +$tosell = GETPOST("tosell", 'int'); +$tobuy = GETPOST("tobuy", 'int'); $fourn_id = GETPOST("fourn_id",'int'); $catid = GETPOST('catid','int'); @@ -182,7 +182,7 @@ else if (dol_strlen($canvas) > 0) $sql.= " AND p.canvas = '".$db->escape($canvas)."'"; if ($catid > 0) $sql.= " AND cp.fk_categorie = ".$catid; if ($catid == -2) $sql.= " AND cp.fk_categorie IS NULL"; - if ($search_categ > 0) $sql.= " AND cp.fk_categorie = ".$search_categ; + if ($search_categ > 0) $sql.= " AND cp.fk_categorie = ".$db->escape($search_categ); if ($search_categ == -2) $sql.= " AND cp.fk_categorie IS NULL"; if ($fourn_id > 0) $sql.= " AND pfp.fk_soc = ".$fourn_id; $sql.= " GROUP BY p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,"; @@ -322,16 +322,16 @@ else // Lignes des champs de filtre print '<tr class="liste_titre">'; print '<td class="liste_titre" align="left">'; - print '<input class="flat" type="text" name="sref" size="8" value="'.$sref.'">'; + print '<input class="flat" type="text" name="sref" size="8" value="'.dol_escape_htmltag($sref).'">'; print '</td>'; print '<td class="liste_titre" align="left">'; - print '<input class="flat" type="text" name="snom" size="12" value="'.$snom.'">'; + print '<input class="flat" type="text" name="snom" size="12" value="'.dol_escape_htmltag($snom).'">'; print '</td>'; // Barcode if (! empty($conf->barcode->enabled)) { print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="sbarcode" size="6" value="'.$sbarcode.'">'; + print '<input class="flat" type="text" name="sbarcode" size="6" value="'.dol_escape_htmltag($sbarcode).'">'; print '</td>'; } // Date modification @@ -541,10 +541,10 @@ else $i++; } - $param="&sref=".$sref.($sbarcode?"&sbarcode=".$sbarcode:"")."&snom=".$snom."&sall=".$sall."&tosell=".$tosell."&tobuy=".$tobuy; - $param.=($fourn_id?"&fourn_id=".$fourn_id:""); - $param.=($search_categ?"&search_categ=".$search_categ:""); - $param.=isset($type)?"&type=".$type:""; + $param="&sref=".$sref.($sbarcode?"&sbarcode=".$sbarcode:"")."&snom=".$snom."&sall=".$sall."&tosell=".$tosell."&tobuy=".$tobuy; + $param.=($fourn_id?"&fourn_id=".$fourn_id:""); + $param.=($search_categ?"&search_categ=".$search_categ:""); + $param.=isset($type)?"&type=".$type:""; print_barre_liste('', $page, "list.php", $param, $sortfield, $sortorder,'',$num,$nbtotalofrecords); $db->free($resql); diff --git a/htdocs/product/price.php b/htdocs/product/price.php index ce8ad104a1f014a30aed4ac8597046db9c559d8b..1e454ca724b38629d5df88e08e7ca85925ef8382 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -2,7 +2,7 @@ /* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com> - * Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> @@ -43,9 +43,12 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { $langs->load("products"); $langs->load("bills"); +$mesg=''; $error=0; $errors=array(); + $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'alpha'); +$cancel = GETPOST('cancel', 'alpha'); $eid = GETPOST('eid', 'int'); // Security check @@ -54,303 +57,302 @@ $fieldtype = (! empty($ref) ? 'ref' : 'rowid'); if ($user->societe_id) $socid = $user->societe_id; $result = restrictedArea($user, 'produit|service', $fieldvalue, 'product&product', '', '', $fieldtype); -$object = new Product($db); +if ($id > 0 || ! empty($ref)) +{ + $object = new Product($db); + $object->fetch($id, $ref); +} // Clean param if (! empty($conf->global->PRODUIT_MULTIPRICES) && empty($conf->global->PRODUIT_MULTIPRICES_LIMIT)) $conf->global->PRODUIT_MULTIPRICES_LIMIT = 5; -$error=0; +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('productpricecard','globalcard')); /* * Actions */ -if (GETPOST("cancel")) $action=''; +if ($cancel) $action=''; -if ($action == 'update_price' && ! GETPOST("cancel") && ($user->rights->produit->creer || $user->rights->service->creer)) -{ - $result = $object->fetch($id); +$parameters=array('id'=>$id, 'ref'=>$ref); +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - $error=0; - $maxpricesupplier = $object->min_recommended_price(); - $object->fk_price_expression = empty($eid) ? 0 : $eid; //0 discards expression - - // MultiPrix - if (! empty($conf->global->PRODUIT_MULTIPRICES)) +if (empty($reshook)) +{ + if ($action == 'update_price' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer)) { - $newprice = ''; - $newprice_min = ''; - $newpricebase = ''; - $newvat = ''; + $maxpricesupplier = $object->min_recommended_price(); + $object->fk_price_expression = empty($eid) ? 0 : $eid; //0 discards expression - for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i ++) + // MultiPrix + if (! empty($conf->global->PRODUIT_MULTIPRICES)) { - if (isset($_POST ["price_" . $i])) + $newprice = ''; + $newprice_min = ''; + $newpricebase = ''; + $newvat = ''; + + for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i ++) { - $level = $i; - $newprice = price2num($_POST ["price_" . $i], 'MU'); - $newprice_min = price2num($_POST ["price_min_" . $i], 'MU'); - $newpricebase = $_POST ["multiprices_base_type_" . $i]; - $newnpr = (preg_match('/\*/', $_POST ["tva_tx_" . $i]) ? 1 : 0); - $newvat = str_replace('*', '', $_POST ["tva_tx_" . $i]); - $newpsq = GETPOST('psqflag'); - $newpsq = empty($newpsq) ? 0 : $newpsq; - break; // We found submited price + if (isset($_POST ["price_" . $i])) + { + $level = $i; + $newprice = price2num($_POST ["price_" . $i], 'MU'); + $newprice_min = price2num($_POST ["price_min_" . $i], 'MU'); + $newpricebase = $_POST ["multiprices_base_type_" . $i]; + $newnpr = (preg_match('/\*/', $_POST ["tva_tx_" . $i]) ? 1 : 0); + $newvat = str_replace('*', '', $_POST ["tva_tx_" . $i]); + $newpsq = GETPOST('psqflag'); + $newpsq = empty($newpsq) ? 0 : $newpsq; + break; // We found submited price + } } + } else { + $level = 0; + $newprice = price2num($_POST ["price"], 'MU'); + $newprice_min = price2num($_POST ["price_min"], 'MU'); + $newpricebase = $_POST ["price_base_type"]; + $newnpr = (preg_match('/\*/', $_POST ["tva_tx"]) ? 1 : 0); + $newvat = str_replace('*', '', $_POST ["tva_tx"]); + $newpsq = GETPOST('psqflag'); + $newpsq = empty($newpsq) ? 0 : $newpsq; } - } else { - $level = 0; - $newprice = price2num($_POST ["price"], 'MU'); - $newprice_min = price2num($_POST ["price_min"], 'MU'); - $newpricebase = $_POST ["price_base_type"]; - $newnpr = (preg_match('/\*/', $_POST ["tva_tx"]) ? 1 : 0); - $newvat = str_replace('*', '', $_POST ["tva_tx"]); - $newpsq = GETPOST('psqflag'); - $newpsq = empty($newpsq) ? 0 : $newpsq; - } - if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $newprice_min < $maxpricesupplier) - { - setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); - $error++; - $action='edit_price'; - } - - if ($newprice < $newprice_min && ! empty($object->fk_price_expression)) { - $newprice = $newprice_min; //Set price same as min, the user will not see the - } + if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $newprice_min < $maxpricesupplier) + { + setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); + $error++; + $action='edit_price'; + } - if ($object->updatePrice($newprice, $newpricebase, $user, $newvat, $newprice_min, $level, $newnpr, $newpsq) > 0) - { - if ($object->fk_price_expression != 0) { - //Check the expression validity by parsing it - $priceparser = new PriceParser($db); - $price_result = $priceparser->parseProduct($object); - if ($price_result < 0) { //Expression is not valid - $error++; - $action='edit_price'; - setEventMessage($priceparser->translatedError(), 'errors'); - } + if ($newprice < $newprice_min && ! empty($object->fk_price_expression)) { + $newprice = $newprice_min; //Set price same as min, the user will not see the } - if (empty($error) && ! empty($conf->dynamicprices->enabled)) + + if ($object->updatePrice($newprice, $newpricebase, $user, $newvat, $newprice_min, $level, $newnpr, $newpsq) > 0) { - $ret=$object->setPriceExpression($object->fk_price_expression); - if ($ret < 0) + if ($object->fk_price_expression != 0) { + //Check the expression validity by parsing it + $priceparser = new PriceParser($db); + $price_result = $priceparser->parseProduct($object); + if ($price_result < 0) { //Expression is not valid + $error++; + $action='edit_price'; + setEventMessage($priceparser->translatedError(), 'errors'); + } + } + if (empty($error) && ! empty($conf->dynamicprices->enabled)) + { + $ret=$object->setPriceExpression($object->fk_price_expression); + if ($ret < 0) + { + $error++; + $action='edit_price'; + setEventMessage($object->error, 'errors'); + } + } + if (empty($error)) { - $error++; - $action='edit_price'; - setEventMessage($object->error, 'errors'); + $action = ''; + setEventMessage($langs->trans("RecordSaved")); } + } else { + $action = 'edit_price'; + setEventMessage($object->error, 'errors'); } - if (empty($error)) - { - $action = ''; - setEventMessage($langs->trans("RecordSaved")); - } - } else { - $action = 'edit_price'; - setEventMessage($object->error, 'errors'); } -} -if ($action == 'delete' && $user->rights->produit->supprimer) -{ - $result = $object->log_price_delete($user, $_GET ["lineid"]); - if ($result < 0) { - setEventMessage($object->error, 'errors'); + if ($action == 'delete' && $user->rights->produit->supprimer) + { + $result = $object->log_price_delete($user, $_GET ["lineid"]); + if ($result < 0) { + setEventMessage($object->error, 'errors'); + } } -} - -/** - * *************************************************** - * Price by quantity - * *************************************************** - */ -$error = 0; -if ($action == 'activate_price_by_qty') { // Activating product price by quantity add a new price, specified as by quantity - $result = $object->fetch($id); - $level = GETPOST('level'); - $object->updatePrice(0, $object->price_base_type, $user, $object->tva_tx, 0, $level, $object->tva_npr, 1); -} + /** + * *************************************************** + * Price by quantity + * *************************************************** + */ + if ($action == 'activate_price_by_qty') { // Activating product price by quantity add a new price, specified as by quantity -if ($action == 'edit_price_by_qty') { // Edition d'un prix par quantité - $rowid = GETPOST('rowid'); -} + $level = GETPOST('level'); -if ($action == 'update_price_by_qty') { // Ajout / Mise à jour d'un prix par quantité - $result = $object->fetch($id); - - // Récupération des variables - $rowid = GETPOST('rowid'); - $priceid = GETPOST('priceid'); - $newprice = price2num(GETPOST("price"), 'MU'); - // $newminprice=price2num(GETPOST("price_min"),'MU'); // TODO : Add min price management - $quantity = GETPOST('quantity'); - $remise_percent = price2num(GETPOST('remise_percent')); - $remise = 0; // TODO : allow discount by amount when available on documents - - if (empty($quantity)) { - $error ++; - setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("Qty")), 'errors'); + $object->updatePrice(0, $object->price_base_type, $user, $object->tva_tx, 0, $level, $object->tva_npr, 1); } - if (empty($newprice)) { - $error ++; - setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("Price")), 'errors'); + + if ($action == 'edit_price_by_qty') { // Edition d'un prix par quantité + $rowid = GETPOST('rowid'); } - if (! $error) { - // Calcul du prix HT et du prix unitaire - if ($object->price_base_type == 'TTC') { - $price = price2num($newprice) / (1 + ($object->tva_tx / 100)); + + if ($action == 'update_price_by_qty') { // Ajout / Mise à jour d'un prix par quantité + + // Récupération des variables + $rowid = GETPOST('rowid'); + $priceid = GETPOST('priceid'); + $newprice = price2num(GETPOST("price"), 'MU'); + // $newminprice=price2num(GETPOST("price_min"),'MU'); // TODO : Add min price management + $quantity = GETPOST('quantity'); + $remise_percent = price2num(GETPOST('remise_percent')); + $remise = 0; // TODO : allow discount by amount when available on documents + + if (empty($quantity)) { + $error ++; + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("Qty")), 'errors'); + } + if (empty($newprice)) { + $error ++; + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("Price")), 'errors'); } + if (! $error) { + // Calcul du prix HT et du prix unitaire + if ($object->price_base_type == 'TTC') { + $price = price2num($newprice) / (1 + ($object->tva_tx / 100)); + } - $price = price2num($newprice, 'MU'); - $unitPrice = price2num($price / $quantity, 'MU'); + $price = price2num($newprice, 'MU'); + $unitPrice = price2num($price / $quantity, 'MU'); - // Ajout / mise à jour - if ($rowid > 0) { - $sql = "UPDATE " . MAIN_DB_PREFIX . "product_price_by_qty SET"; - $sql .= " price='" . $price . "',"; - $sql .= " unitprice=" . $unitPrice . ","; - $sql .= " quantity=" . $quantity . ","; - $sql .= " remise_percent=" . $remise_percent . ","; - $sql .= " remise=" . $remise; - $sql .= " WHERE rowid = " . GETPOST('rowid'); + // Ajout / mise à jour + if ($rowid > 0) { + $sql = "UPDATE " . MAIN_DB_PREFIX . "product_price_by_qty SET"; + $sql .= " price='" . $price . "',"; + $sql .= " unitprice=" . $unitPrice . ","; + $sql .= " quantity=" . $quantity . ","; + $sql .= " remise_percent=" . $remise_percent . ","; + $sql .= " remise=" . $remise; + $sql .= " WHERE rowid = " . GETPOST('rowid'); - $result = $db->query($sql); - } else { - $sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_price_by_qty (fk_product_price,price,unitprice,quantity,remise_percent,remise) values ("; - $sql .= $priceid . ',' . $price . ',' . $unitPrice . ',' . $quantity . ',' . $remise_percent . ',' . $remise . ')'; + $result = $db->query($sql); + } else { + $sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_price_by_qty (fk_product_price,price,unitprice,quantity,remise_percent,remise) values ("; + $sql .= $priceid . ',' . $price . ',' . $unitPrice . ',' . $quantity . ',' . $remise_percent . ',' . $remise . ')'; - $result = $db->query($sql); + $result = $db->query($sql); + } } } -} -if ($action == 'delete_price_by_qty') { - $rowid = GETPOST('rowid'); + if ($action == 'delete_price_by_qty') { + $rowid = GETPOST('rowid'); - $sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty"; - $sql .= " WHERE rowid = " . GETPOST('rowid'); + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty"; + $sql .= " WHERE rowid = " . GETPOST('rowid'); - $result = $db->query($sql); -} + $result = $db->query($sql); + } -if ($action == 'delete_all_price_by_qty') { - $priceid = GETPOST('priceid'); + if ($action == 'delete_all_price_by_qty') { + $priceid = GETPOST('priceid'); - $sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty"; - $sql .= " WHERE fk_product_price = " . $priceid; + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty"; + $sql .= " WHERE fk_product_price = " . $priceid; - $result = $db->query($sql); -} + $result = $db->query($sql); + } -/** - * *************************************************** - * Price by customer - * **************************************************** - */ -if ($action == 'add_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) { + /** + * *************************************************** + * Price by customer + * **************************************************** + */ + if ($action == 'add_customer_price_confirm' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer)) { - $error=0; - $maxpricesupplier = $object->min_recommended_price(); + $maxpricesupplier = $object->min_recommended_price(); + + $update_child_soc = GETPOST('updatechildprice'); - $update_child_soc = GETPOST('updatechildprice'); + // add price by customer + $prodcustprice->fk_soc = GETPOST('socid', 'int'); + $prodcustprice->fk_product = $object->id; + $prodcustprice->price = price2num(GETPOST("price"), 'MU'); + $prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU'); + $prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha'); + $prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx")); + $prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0); - $result = $object->fetch($id); + if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $prodcustprice->price_min<$maxpricesupplier) + { + setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); + $error++; + $action='add_customer_price'; + } - // add price by customer - $prodcustprice->fk_soc = GETPOST('socid', 'int'); - $prodcustprice->fk_product = $object->id; - $prodcustprice->price = price2num(GETPOST("price"), 'MU'); - $prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU'); - $prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha'); - $prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx")); - $prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0); + if (! $error) + { + $result = $prodcustprice->create($user, 0, $update_child_soc); - if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $prodcustprice->price_min<$maxpricesupplier) - { - setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); - $error++; - $action='add_customer_price'; + if ($result < 0) { + setEventMessage($prodcustprice->error, 'errors'); + } else { + setEventMessage($langs->trans('Save'), 'mesgs'); + } + + $action = ''; + } } - if (! $error) - { - $result = $prodcustprice->create($user, 0, $update_child_soc); + if ($action == 'delete_customer_price' && ($user->rights->produit->supprimer || $user->rights->service->supprimer)) { + // Delete price by customer + $prodcustprice->id = GETPOST('lineid'); + $result = $prodcustprice->delete($user); if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); + setEventMessage($prodcustprice->error, 'mesgs'); } else { - setEventMessage($langs->trans('Save'), 'mesgs'); + setEventMessage($langs->trans('Delete'), 'errors'); } - $action = ''; } -} - -if ($action == 'delete_customer_price' && ($user->rights->produit->supprimer || $user->rights->service->supprimer)) { - // Delete price by customer - $prodcustprice->id = GETPOST('lineid'); - $result = $prodcustprice->delete($user); - if ($result < 0) { - setEventMessage($prodcustprice->error, 'mesgs'); - } else { - setEventMessage($langs->trans('Delete'), 'errors'); - } - $action = ''; -} + if ($action == 'update_customer_price_confirm' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer)) { -if ($action == 'update_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) { - - $result = $object->fetch($id); + $maxpricesupplier = $object->min_recommended_price(); - $error=0; - $maxpricesupplier = $object->min_recommended_price(); + $update_child_soc = GETPOST('updatechildprice'); - $update_child_soc = GETPOST('updatechildprice'); + $prodcustprice->fetch(GETPOST('lineid', 'int')); - $prodcustprice->fetch(GETPOST('lineid', 'int')); + // update price by customer + $prodcustprice->price = price2num(GETPOST("price"), 'MU'); + $prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU'); + $prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha'); + $prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx")); + $prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0); - // update price by customer - $prodcustprice->price = price2num(GETPOST("price"), 'MU'); - $prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU'); - $prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha'); - $prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx")); - $prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0); + if ($prodcustprice->price_min<$maxpricesupplier && !empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE)) + { + setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); + $error++; + $action='update_customer_price'; + } - if ($prodcustprice->price_min<$maxpricesupplier && !empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE)) - { - setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); - $error++; - $action='update_customer_price'; - } + if ( ! $error) + { + $result = $prodcustprice->update($user, 0, $update_child_soc); - if ( ! $error) - { - $result = $prodcustprice->update($user, 0, $update_child_soc); + if ($result < 0) { + setEventMessage($prodcustprice->error, 'errors'); + } else { + setEventMessage($langs->trans('Save'), 'mesgs'); + } - if ($result < 0) { - setEventMessage($prodcustprice->error, 'errors'); - } else { - setEventMessage($langs->trans('Save'), 'mesgs'); + $action = ''; } - - $action = ''; } } + /* * View */ $form = new Form($db); -if (! empty($id) || ! empty($ref)) - $result = $object->fetch($id, $ref); - llxHeader("", "", $langs->trans("CardProduct" . $object->type)); $head = product_prepare_head($object); @@ -687,7 +689,7 @@ if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights-> print $langs->trans('PriceBase'); print '</td>'; print '<td>'; - print $form->select_PriceBaseType($object->price_base_type, "price_base_type"); + print $form->selectPriceBaseType($object->price_base_type, "price_base_type"); print '</td>'; print '</tr>'; @@ -793,7 +795,7 @@ if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights-> } else { print '<input name="price_' . $i . '" size="10" value="' . price($object->multiprices ["$i"]) . '">'; } - print $form->select_PriceBaseType($object->multiprices_base_type ["$i"], "multiprices_base_type_" . $i); + print $form->selectPriceBaseType($object->multiprices_base_type ["$i"], "multiprices_base_type_" . $i); print '</td></tr>'; // Min price @@ -828,9 +830,8 @@ $sql .= " " . MAIN_DB_PREFIX . "user as u"; $sql .= " WHERE fk_product = " . $object->id; $sql .= " AND p.entity IN (" . getEntity('productprice', 1) . ")"; $sql .= " AND p.fk_user_author = u.rowid"; -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"; +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, p.rowid DESC"; // $sql .= $db->plimit(); $result = $db->query($sql); @@ -1010,7 +1011,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) print $langs->trans('PriceBase'); print '</td>'; print '<td>'; - print $form->select_PriceBaseType($object->price_base_type, "price_base_type"); + print $form->selectPriceBaseType($object->price_base_type, "price_base_type"); print '</td>'; print '</tr>'; @@ -1094,7 +1095,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) print $langs->trans('PriceBase'); print '</td>'; print '<td>'; - print $form->select_PriceBaseType($prodcustprice->price_base_type, "price_base_type"); + print $form->selectPriceBaseType($prodcustprice->price_base_type, "price_base_type"); print '</td>'; print '</tr>'; diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index ce2e7363feb87703f651530cbf05e210b7cefa54..a839f25a99ab6263aa15fd48590e237c808625ea 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -188,7 +188,7 @@ if ($resql) $texte.=' ('.$langs->trans("Stocks").')'; - llxHeader("",$title,$helpurl,$texte); + llxHeader("",$texte,$helpurl); if ($sref || $snom || $sall || GETPOST('search')) { diff --git a/htdocs/product/stock/massstockmove.php b/htdocs/product/stock/massstockmove.php index da1053245d22967da6d1fa5a41f3f171d75bb814..1749eb2d8c8d6ced2d93398ed3aeab7089bdd0a3 100644 --- a/htdocs/product/stock/massstockmove.php +++ b/htdocs/product/stock/massstockmove.php @@ -407,8 +407,7 @@ foreach($listofdata as $key => $val) print '<tr '.$bc[$var].'>'; print '<td>'; - print $productstatic->getNomUrl(1); - print ' - '.$productstatic->label; + print $productstatic->getNomUrl(1).' - '.$productstatic->label; print '</td>'; if ($conf->productbatch->enabled) { diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 188eb8d8e1a0b38acdb4bee451103a8add36cd99..f80050287e9674aa2833b18ff601576ae43fd5ba 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -482,7 +482,7 @@ if ($id > 0 || $ref) print '</td></tr>'; } - // Stock + // Stock alert threshold print '<tr><td>'.$form->editfieldkey("StockLimit",'stocklimit',$product->seuil_stock_alerte,$product,$user->rights->produit->creer).'</td><td colspan="2">'; print $form->editfieldval("StockLimit",'stocklimit',$product->seuil_stock_alerte,$product,$user->rights->produit->creer); print '</td></tr>'; @@ -502,7 +502,7 @@ if ($id > 0 || $ref) $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER)?$langs->trans("ReStockOnValidateOrder").'<br>':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)?$langs->trans("ReStockOnDispatchOrder").'<br>':''); print '<tr><td>'; - print $form->textwithtooltip($langs->trans("PhysicalStock"),$text_stock_options,2,1,img_picto('', 'info'),'',0); + print $form->textwithtooltip($langs->trans("PhysicalStock"), $text_stock_options, 2, 1, img_picto('', 'info'), '', 2); print '</td>'; print '<td>'.$product->stock_reel; if ($product->seuil_stock_alerte && ($product->stock_reel < $product->seuil_stock_alerte)) print ' '.img_warning($langs->trans("StockLowerThanLimit")); diff --git a/htdocs/projet/activity/index.php b/htdocs/projet/activity/index.php index 845e99e54a05fc6703a0d32613b55b60f56dc8ab..75fd12e9d9592c8f934f9d38cb69e5028262a7e2 100644 --- a/htdocs/projet/activity/index.php +++ b/htdocs/projet/activity/index.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2006-2010 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2006-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2010 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -103,7 +103,8 @@ if ( $resql ) print '<td>'; $projectstatic->id=$row->rowid; $projectstatic->ref=$row->ref; - print $projectstatic->getNomUrl(1); + $projectstatic->title=$row->title; + print $projectstatic->getNomUrl(1, '', 1); print '</td>'; print '<td align="right">'.convertSecondToTime($row->nb).'</td>'; print "</tr>\n"; @@ -158,7 +159,8 @@ if ( $resql ) print '<td>'; $projectstatic->id=$row->rowid; $projectstatic->ref=$row->ref; - print $projectstatic->getNomUrl(1); + $projectstatic->title=$row->title; + print $projectstatic->getNomUrl(1, '', 1); print '</td>'; print '<td align="right">'.convertSecondToTime($row->nb).'</td>'; print "</tr>\n"; @@ -219,7 +221,8 @@ if ( $resql ) print '<td>'; $projectstatic->id=$row->rowid; $projectstatic->ref=$row->ref; - print $projectstatic->getNomUrl(1); + $projectstatic->title=$row->title; + print $projectstatic->getNomUrl(1, '', 1); print '</td>'; print '<td align="right">'.convertSecondToTime($row->nb).'</td>'; print "</tr>\n"; @@ -270,7 +273,8 @@ if ( $resql ) print '<td>'; $projectstatic->id=$row->rowid; $projectstatic->ref=$row->ref; - print $projectstatic->getNomUrl(1); + $projectstatic->title=$row->title; + print $projectstatic->getNomUrl(1, '', 1); print '</td>'; print '<td align="right">'.convertSecondToTime($row->nb).'</td>'; print "</tr>\n"; @@ -317,7 +321,8 @@ if ( $resql ) print '<td>'; $projectstatic->id=$row->rowid; $projectstatic->ref=$row->ref; - print $projectstatic->getNomUrl(1); + $projectstatic->title=$row->title; + print $projectstatic->getNomUrl(1, '', 1); print '</td>'; print '<td align="right">'.convertSecondToTime($row->nb).'</td>'; print "</tr>\n"; diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index f8f9daf8de9d9b189b80899e6234c368b2045373..ee50358bdc513d8d5a800169bfee3ddc0eb046fe 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -30,12 +30,15 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; $langs->load('projects'); $action=GETPOST('action'); $mode=GETPOST("mode"); $id=GETPOST('id','int'); +$taskid=GETPOST('taskid'); $mine=0; if ($mode == 'mine') $mine=1; @@ -63,6 +66,8 @@ $week=GETPOST("week","int")?GETPOST("week","int"):date("W"); $daytoparse = $now; if ($year && $month && $day) $daytoparse=dol_mktime(0, 0, 0, $month, $day, $year); +$object=new Task($db); + /* * Actions @@ -75,10 +80,48 @@ if (GETPOST('submitdateselect')) $action = ''; } -if ($action == 'addtime' && $user->rights->projet->creer) + +if ($action == 'assign') { - $task = new Task($db); + if ($taskid > 0) + { + $result = $object->fetch($taskid, $ref); + if ($result < 0) $error++; + } + else + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Task")), '', 'errors'); + $error++; + } + if (! GETPOST('type')) + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), '', 'errors'); + $error++; + } + if (! $error) + { + $idfortaskuser=$user->id; + $result = $object->add_contact($idfortaskuser, GETPOST("type"), 'internal'); + } + + if ($result < 0) + { + if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + $langs->load("errors"); + setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'warnings'); + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + } + } + + $action=''; +} +if ($action == 'addtime' && $user->rights->projet->creer) +{ $timespent_duration=array(); foreach($_POST as $key => $time) @@ -105,24 +148,24 @@ if ($action == 'addtime' && $user->rights->projet->creer) { foreach($timespent_duration as $key => $val) { - $task->fetch($key); - $task->progress = GETPOST($key . 'progress', 'int'); - $task->timespent_duration = $val; - $task->timespent_fk_user = $user->id; + $object->fetch($key); + $object->progress = GETPOST($key . 'progress', 'int'); + $object->timespent_duration = $val; + $object->timespent_fk_user = $user->id; if (GETPOST($key."hour") != '' && GETPOST($key."hour") >= 0) // If hour was entered { - $task->timespent_date = dol_mktime(GETPOST($key."hour"),GETPOST($key."min"),0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); - $task->timespent_withhour = 1; + $object->timespent_date = dol_mktime(GETPOST($key."hour"),GETPOST($key."min"),0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); + $object->timespent_withhour = 1; } else { - $task->timespent_date = dol_mktime(12,0,0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); + $object->timespent_date = dol_mktime(12,0,0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); } - $result=$task->addTimeSpent($user); + $result=$object->addTimeSpent($user); if ($result < 0) { - setEventMessages($task->error, $task->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $error++; break; } @@ -151,6 +194,8 @@ if ($action == 'addtime' && $user->rights->projet->creer) $form=new Form($db); $formother = new FormOther($db); +$formcompany=new FormCompany($db); +$formproject=new FormProjets($db); $projectstatic=new Project($db); $project = new Project($db); $taskstatic = new Task($db); @@ -218,7 +263,14 @@ else if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'<br>'; } -print $langs->trans("AllTaskVisibleButEditIfYouAreAssigned").'<br>'; +if ($mine) +{ + print $langs->trans("OnlyYourTaskAreVisible").'<br>'; +} +else +{ + print $langs->trans("AllTaskVisibleButEditIfYouAreAssigned").'<br>'; +} print '<br>'; print "\n"; @@ -261,12 +313,12 @@ print '<td align="center" colspan="2">'.$langs->trans("Duration").'</td>'; print "</tr>\n"; // By default, we can edit only tasks we are assigned to -$restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS)?1:0); +$restrictviewformytask=(empty($conf->global->PROJECT_TIME_SHOW_TASK_NOT_ASSIGNED)?1:0); if (count($tasksarray) > 0) { $j=0; - projectLinesPerDay($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $daytoparse); + projectLinesPerDay($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restrictviewformytask, $daytoparse); } else { @@ -290,6 +342,21 @@ print "});"; print '</script>'; +// Add a new project/task +print '<br>'; +print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; +print '<input type="hidden" name="action" value="assign">'; +print '<input type="hidden" name="mode" value="'.$mode.'">'; +print '<input type="hidden" name="year" value="'.$year.'">'; +print '<input type="hidden" name="month" value="'.$month.'">'; +print '<input type="hidden" name="day" value="'.$day.'">'; +print $langs->trans("AssignTaskToMe").'<br>'; +$formproject->select_task($socid?$socid:-1, $taskid, 'taskid'); +print $formcompany->selectTypeContact($object, '', 'type','internal','rowid', 1); +print '<input type="submit" class="button" name="submit" value="'.$langs->trans("AssignTask").'">'; +print '</form>'; + + llxFooter(); $db->close(); diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index 063045f8577f9dddc6b9b7880f910f973ef87cd0..85874af86b9ccf6255bfdf7362dd00eabfe8432f 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -30,12 +30,16 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; $langs->load('projects'); $action=GETPOST('action'); $mode=GETPOST("mode"); $id=GETPOST('id','int'); +$taskid=GETPOST('taskid'); + $mine=0; if ($mode == 'mine') $mine=1; @@ -81,6 +85,8 @@ $lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); $usertoprocess=$user; +$object=new Task($db); + /* * Actions @@ -93,10 +99,47 @@ if (GETPOST('submitdateselect')) $action = ''; } -if ($action == 'addtime' && $user->rights->projet->creer) +if ($action == 'assign') { - $task = new Task($db); + if ($taskid > 0) + { + $result = $object->fetch($taskid, $ref); + if ($result < 0) $error++; + } + else + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Task")), '', 'errors'); + $error++; + } + if (! GETPOST('type')) + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), '', 'errors'); + $error++; + } + if (! $error) + { + $idfortaskuser=$user->id; + $result = $object->add_contact($idfortaskuser, GETPOST("type"), 'internal'); + } + if ($result < 0) + { + if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + $langs->load("errors"); + setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'warnings'); + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + } + } + + $action=''; +} + +if ($action == 'addtime' && $user->rights->projet->creer) +{ $timetoadd=$_POST['task']; if (empty($timetoadd)) { @@ -119,16 +162,16 @@ if ($action == 'addtime' && $user->rights->projet->creer) if ($newduration > 0) { - $task->fetch($taskid); - $task->progress = GETPOST($taskid . 'progress', 'int'); - $task->timespent_duration = $newduration; - $task->timespent_fk_user = $usertoprocess->id; - $task->timespent_date = dol_time_plus_duree($firstdaytoshow, $key, 'd'); + $object->fetch($taskid); + $object->progress = GETPOST($taskid . 'progress', 'int'); + $object->timespent_duration = $newduration; + $object->timespent_fk_user = $usertoprocess->id; + $object->timespent_date = dol_time_plus_duree($firstdaytoshow, $key, 'd'); - $result=$task->addTimeSpent($user); + $result=$object->addTimeSpent($user); if ($result < 0) { - setEventMessages($task->error, $task->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $error++; break; } @@ -156,6 +199,8 @@ if ($action == 'addtime' && $user->rights->projet->creer) $form=new Form($db); $formother=new FormOther($db); +$formcompany=new FormCompany($db); +$formproject=new FormProjets($db); $projectstatic=new Project($db); $project = new Project($db); $taskstatic = new Task($db); @@ -214,7 +259,14 @@ else if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'<br>'; else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'<br>'; } -print $langs->trans("AllTaskVisibleButEditIfYouAreAssigned").'<br>'; +if ($mine) +{ + print $langs->trans("OnlyYourTaskAreVisible").'<br>'; +} +else +{ + print $langs->trans("AllTaskVisibleButEditIfYouAreAssigned").'<br>'; +} print '<br>'; print "\n"; @@ -264,12 +316,12 @@ print '<td class="liste_total"></td>'; print "</tr>\n"; // By default, we can edit only tasks we are assigned to -$restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS)?1:0); +$restrictviewformytask=(empty($conf->global->PROJECT_TIME_SHOW_TASK_NOT_ASSIGNED)?1:0); if (count($tasksarray) > 0) { $j=0; - projectLinesPerWeek($j, $firstdaytoshow, $usertoprocess, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); + projectLinesPerWeek($j, $firstdaytoshow, $usertoprocess, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restrictviewformytask); print '<tr class="liste_total"> <td class="liste_total" colspan="7" align="right">'.$langs->trans("Total").'</td> @@ -300,7 +352,6 @@ print '</div>'; print '</form>'."\n\n"; - $modeinput='hours'; print '<script type="text/javascript">'; @@ -316,6 +367,22 @@ print "});"; print '</script>'; +// Add a new project/task +print '<br>'; +print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; +print '<input type="hidden" name="action" value="assign">'; +print '<input type="hidden" name="mode" value="'.$mode.'">'; +print '<input type="hidden" name="year" value="'.$year.'">'; +print '<input type="hidden" name="month" value="'.$month.'">'; +print '<input type="hidden" name="day" value="'.$day.'">'; +print $langs->trans("AssignTaskToMe").'<br>'; +$formproject->select_task($socid?$socid:-1, $taskid, 'taskid'); +print $formcompany->selectTypeContact($object, '', 'type','internal','rowid', 1); +print '<input type="submit" class="button" name="submit" value="'.$langs->trans("AssignTask").'">'; +print '</form>'; + + + llxFooter(); $db->close(); diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 60384a29da0511aa759341bb92f0edef1e2585ef..860475c55963637cb44bbd74cb844cdb5c5cc68d 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -39,6 +39,7 @@ $ref=GETPOST('ref','alpha'); $action=GETPOST('action','alpha'); $backtopage=GETPOST('backtopage','alpha'); $cancel=GETPOST('cancel','alpha'); +$status=GETPOST('status','int'); if ($id == '' && $ref == '' && ($action != "create" && $action != "add" && $action != "update" && ! $_POST["cancel"])) accessforbidden(); @@ -139,6 +140,7 @@ if (empty($reshook)) $object->datec=dol_now(); $object->date_start=$date_start; $object->date_end=$date_end; + $object->statuts = $status; // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); @@ -167,8 +169,16 @@ if (empty($reshook)) { $db->commit(); - header("Location:card.php?id=".$object->id); - exit; + if ($backtopage) + { + header("Location: ".$backtopage.'&projectid='.$object->id); + exit; + } + else + { + header("Location:card.php?id=".$object->id); + exit; + } } else { @@ -301,7 +311,7 @@ if (empty($reshook)) $result = $object->setValid($user); if ($result <= 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -310,7 +320,7 @@ if (empty($reshook)) $result = $object->setClose($user); if ($result <= 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -319,7 +329,7 @@ if (empty($reshook)) $result = $object->setValid($user); if ($result <= 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -329,14 +339,14 @@ if (empty($reshook)) $result=$object->delete($user); if ($result > 0) { - header("Location: index.php"); + setEventMessage($langs->trans("RecordDeleted"), 'info'); + header("Location: index.php"); exit; } else { dol_syslog($object->error,LOG_DEBUG); - setEventMessage($object->error,'errors'); - setEventMessage($object->errors,'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -444,6 +454,15 @@ if ($action == 'create' && $user->rights->projet->creer) else print $text; print '</td></tr>'; + // Status + if ($status != '') + { + print '<tr><td>'.$langs->trans("Status").'</td><td>'; + print '<input type="hidden" name="status" value="'.$status.'">'; + print $object->LibStatut($status, 4); + print '</td></tr>'; + } + // Public print '<tr><td>'.$langs->trans("Visibility").'</td><td>'; $array=array(0 => $langs->trans("PrivateProject"),1 => $langs->trans("SharedProject")); @@ -582,7 +601,7 @@ else if (! empty($conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST)) $filteronlist=$conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST; $text=$form->select_thirdparty_list($object->thirdparty->id,'socid',$filteronlist,1,1); $texthelp=$langs->trans("IfNeedToUseOhterObjectKeepEmpty"); - print $form->textwithtooltip($text.' '.img_help(),$texthelp,1); + print $form->textwithtooltip($text.' '.img_help(), $texthelp, 1, 0, '', '', 2); print '</td></tr>'; // Visibility @@ -698,7 +717,7 @@ else if ($action == 'edit' && $userWrite > 0) { print '<div align="center">'; - print '<input name="update" class="button" type="submit" value="'.$langs->trans("Modify").'"> '; + print '<input name="update" class="button" type="submit" value="'.$langs->trans("Modify").'"> '; print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; print '</div>'; } @@ -718,11 +737,11 @@ else { if ($userWrite > 0) { - print '<a class="butAction" href="card.php?id='.$object->id.'&action=edit">'.$langs->trans("Modify").'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&action=edit">'.$langs->trans("Modify").'</a></div>'; } else { - print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Modify').'</a>'; + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Modify').'</a></div>'; } } @@ -731,11 +750,11 @@ else { if ($userWrite > 0) { - print '<a class="butAction" href="card.php?id='.$object->id.'&action=validate">'.$langs->trans("Validate").'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&action=validate">'.$langs->trans("Validate").'</a></div>'; } else { - print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Validate').'</a>'; + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Validate').'</a></div>'; } } @@ -744,11 +763,11 @@ else { if ($userWrite > 0) { - print '<a class="butAction" href="card.php?id='.$object->id.'&action=close">'.$langs->trans("Close").'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&action=close">'.$langs->trans("Close").'</a></div>'; } else { - print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Close').'</a>'; + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Close').'</a></div>'; } } @@ -757,11 +776,11 @@ else { if ($userWrite > 0) { - print '<a class="butAction" href="card.php?id='.$object->id.'&action=reopen">'.$langs->trans("ReOpen").'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&action=reopen">'.$langs->trans("ReOpen").'</a></div>'; } else { - print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ReOpen').'</a>'; + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ReOpen').'</a></div>'; } } @@ -770,11 +789,11 @@ else { if ($userWrite > 0) { - print '<a class="butAction" href="card.php?id='.$object->id.'&action=clone">'.$langs->trans('ToClone').'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&action=clone">'.$langs->trans('ToClone').'</a></div>'; } else { - print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ToClone').'</a>'; + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ToClone').'</a></div>'; } } @@ -783,11 +802,11 @@ else { if ($userDelete > 0) { - print '<a class="butActionDelete" href="card.php?id='.$object->id.'&action=delete">'.$langs->trans("Delete").'</a>'; + print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&action=delete">'.$langs->trans("Delete").'</a></div>'; } else { - print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Delete').'</a>'; + print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Delete').'</a></div>'; } } } diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 8d3e9f39a085ca621c47ad0dd0ceb5172f8d020f..4e505eb09100fce5569d9c6fb3c003833a6f3d1e 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -46,6 +46,12 @@ class Project extends CommonObject var $id; var $ref; var $description; + /** + * @var string + * @deprecated + * @see title + */ + public $titre; var $title; var $date_start; var $date_end; @@ -66,6 +72,27 @@ class Project extends CommonObject var $weekWorkLoad; // Used to store workload details of a projet var $weekWorkLoadPerTask; // Used to store workload details of tasks of a projet + /** + * @var int Creation date + * @deprecated + * @see date_c + */ + public $datec; + /** + * @var int Creation date + */ + public $date_c; + /** + * @var int Modification date + * @deprecated + * @see date_m + */ + public $datem; + /** + * @var int Modification date + */ + public $date_m; + /** * Constructor @@ -125,12 +152,12 @@ class Project extends CommonObject $sql.= ", '" . $this->db->escape($this->description) . "'"; $sql.= ", " . ($this->socid > 0 ? $this->socid : "null"); $sql.= ", " . $user->id; - $sql.= ", 0"; + $sql.= ", ".(is_numeric($this->statuts) ? $this->statuts : '0'); $sql.= ", " . ($this->public ? 1 : 0); $sql.= ", '".$this->db->idate($now)."'"; $sql.= ", " . ($this->date_start != '' ? "'".$this->db->idate($this->date_start)."'" : 'null'); $sql.= ", " . ($this->date_end != '' ? "'".$this->db->idate($this->date_end)."'" : 'null'); - $sql.= ", " . ($this->budget_amount != ''?price2num($this->budget_amount):'null'); + $sql.= ", " . ($this->budget_amount != '' ? price2num($this->budget_amount) : 'null'); $sql.= ", ".$conf->entity; $sql.= ")"; @@ -406,31 +433,40 @@ class Project extends CommonObject } /** - * Return list of elements for type linked to project + * Return list of elements for type, linked to project * - * @param string $type 'propal','order','invoice','order_supplier','invoice_supplier' + * @param string $type 'propal','order','invoice','order_supplier','invoice_supplier',... * @param string $tablename name of table associated of the type - * @param string $datefieldname name of table associated of the type - * @param string $dates Start date (at 00:00:00) - * @param string $datee End date (at 23:00:00) + * @param string $datefieldname name of date field for filter + * @param string $dates Start date (ex 00:00:00) + * @param string $datee End date (ex 23:59:59) * @return mixed Array list of object ids linked to project, < 0 or string if error */ function get_element_list($type, $tablename, $datefieldname='', $dates='', $datee='') { $elements = array(); - if ($type == 'agenda') + if ($type == 'agenda') { $sql = "SELECT id as rowid FROM " . MAIN_DB_PREFIX . "actioncomm WHERE fk_project=" . $this->id; } - else + elseif ($type == 'expensereport') { - $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . $tablename." WHERE fk_projet=" . $this->id; + $sql = "SELECT ed.rowid FROM " . MAIN_DB_PREFIX . "expensereport as e, " . MAIN_DB_PREFIX . "expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND ed.fk_projet=" . $this->id; } - if ($type == 'expensereport') + elseif ($type == 'project_task') { - $sql = "SELECT ed.rowid FROM " . MAIN_DB_PREFIX . "expensereport as e, " . MAIN_DB_PREFIX . "expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND ed.fk_projet=" . $this->id; + $sql = "SELECT DISTINCT pt.rowid FROM " . MAIN_DB_PREFIX . "projet_task as pt, " . MAIN_DB_PREFIX . "projet_task_time as ptt WHERE pt.rowid = ptt.fk_task AND pt.fk_projet=" . $this->id; + } + elseif ($type == 'project_task_time') // Case we want to duplicate line foreach user + { + $sql = "SELECT DISTINCT pt.rowid, ptt.fk_user FROM " . MAIN_DB_PREFIX . "projet_task as pt, " . MAIN_DB_PREFIX . "projet_task_time as ptt WHERE pt.rowid = ptt.fk_task AND pt.fk_projet=" . $this->id; } + else + { + $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . $tablename." WHERE fk_projet=" . $this->id; + } + if ($dates > 0) { if (empty($datefieldname) && ! empty($this->table_element_date)) $datefieldname=$this->table_element_date; @@ -458,7 +494,7 @@ class Project extends CommonObject { $obj = $this->db->fetch_object($result); - $elements[$i] = $obj->rowid; + $elements[$i] = $obj->rowid.(empty($obj->fk_user)?'':'_'.$obj->fk_user); $i++; } @@ -506,7 +542,7 @@ class Project extends CommonObject // Set fk_projet into elements to null $listoftables=array( 'facture'=>'fk_projet','propal'=>'fk_projet','commande'=>'fk_projet','facture_fourn'=>'fk_projet','commande_fournisseur'=>'fk_projet', - 'expensereport_det'=>'fk_projet','contrat'=>'fk_projet','fichinter'=>'fk_projet','don'=>'fk_project' + 'expensereport_det'=>'fk_projet','contrat'=>'fk_projet','fichinter'=>'fk_projet','don'=>'fk_projet' ); foreach($listoftables as $key => $value) { @@ -818,9 +854,10 @@ class Project extends CommonObject * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Variant ('', 'nolink') * @param int $addlabel 0=Default, 1=Add label into string, >1=Add first chars into string + * @param string $moreinpopup Text to add into popu * @return string Chaine avec URL */ - function getNomUrl($withpicto=0, $option='', $addlabel=0) + function getNomUrl($withpicto=0, $option='', $addlabel=0, $moreinpopup='') { global $langs; @@ -831,7 +868,8 @@ class Project extends CommonObject if (! empty($this->ref)) $label .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref; if (! empty($this->title)) - $label .= '<br><b>' . $langs->trans('Name') . ':</b> ' . $this->title; + $label .= '<br><b>' . $langs->trans('Label') . ':</b> ' . $this->title; + if ($moreinpopup) $label.='<br>'.$moreinpopup; $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; if ($option != 'nolink') { diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 43e0a5a1114480e6ed42ee903e772a27c82c6f16..3b2caf30ad7b4a3e0f1da87b003b9a03c1b9f080 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -509,7 +509,7 @@ class Task extends CommonObject $label = '<u>' . $langs->trans("ShowTask") . '</u>'; if (! empty($this->ref)) $label .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref; - if (! empty($this->title)) + if (! empty($this->label)) $label .= '<br><b>' . $langs->trans('LabelTask') . ':</b> ' . $this->label; if ($this->date_start || $this->date_end) { @@ -913,6 +913,59 @@ class Task extends CommonObject } } + /** + * Calculate vamue of time consumed using the thm (hourly amount value of work for user entering time) + * + * @param User $fuser Filter on a dedicated user + * @param string $dates Start date (ex 00:00:00) + * @param string $datee End date (ex 23:59:59) + * @return array Array of info for task array('amount') + */ + function getSumOfAmount($fuser='', $dates='', $datee='') + { + global $langs; + + if (empty($id)) $id=$this->id; + + $result=array(); + + $sql = "SELECT"; + $sql.= " SUM(t.task_duration / 3600 * thm) as amount"; + $sql.= " FROM ".MAIN_DB_PREFIX."projet_task_time as t"; + $sql.= " WHERE t.fk_task = ".$id; + if (is_object($fuser) && $fuser->id > 0) + { + $sql.=" AND fk_user = ".$fuser->id; + } + if ($dates > 0) + { + $datefieldname="task_datehour"; + $sql.=" AND (".$datefieldname." >= '".$this->db->idate($dates)."' OR ".$datefieldname." IS NULL)"; + } + if ($datee > 0) + { + $datefieldname="task_datehour"; + $sql.=" AND (".$datefieldname." <= '".$this->db->idate($datee)."' OR ".$datefieldname." IS NULL)"; + } + + dol_syslog(get_class($this)."::getSumOfAmount", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $obj = $this->db->fetch_object($resql); + + $result['amount'] = $obj->amount; + + $this->db->free($resql); + return $result; + } + else + { + dol_print_error($this->db); + return $result; + } + } + /** * Load object in memory from database * diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index c5f561b2c1c970d905f4950f2cc4f2239a7431cb..a9089673ae6b4a07492514ac5b38d812f7669311 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -28,6 +28,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; +require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; @@ -257,9 +258,18 @@ $listofreferent=array( 'class'=>'Don', 'margin'=>'add', 'table'=>'don', - 'datefieldname'=>'date', + 'datefieldname'=>'datedon', 'disableamount'=>0, 'test'=>$conf->don->enabled && $user->rights->don->lire), +'project_task'=>array( + 'name'=>"TaskTimeValorised", + 'title'=>"ListTaskTimeUserProject", + 'class'=>'Task', + 'margin'=>'minus', + 'table'=>'projet_task', + 'datefieldname'=>'task_date', + 'disableamount'=>0, + 'test'=>$conf->projet->enabled && $user->rights->projet->lire && $conf->salaries->enabled), ); if ($action=="addelement") @@ -281,6 +291,8 @@ if ($action=="addelement") } } +$elementuser = new User($db); + $showdatefilter=0; foreach ($listofreferent as $key => $value) { @@ -292,15 +304,19 @@ foreach ($listofreferent as $key => $value) if ($qualified) { + // If we want the project task array to have details of users + //if ($key == 'project_task') $key = 'project_task_time'; + + $element = new $classname($db); + // Show the filter on date on top of element list if (! $showdatefilter) { print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$projectid.'" method="post">'; print '<input type="hidden" name="tablename" value="'.$tablename.'">'; print '<input type="hidden" name="action" value="view">'; print '<table><tr>'; - //print '<td>'.$langs->trans("Filter").':</td>'; print '<td>'.$langs->trans("From").' '; print $form->select_date($dates,'dates',0,0,1); print '</td>'; @@ -325,7 +341,7 @@ foreach ($listofreferent as $key => $value) { setEventMessages($formproject->error,$formproject->errors,'errors'); } - else + elseif($selectList) { print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$projectid.'" method="post">'; print '<input type="hidden" name="tablename" value="'.$tablename.'">'; @@ -341,20 +357,34 @@ foreach ($listofreferent as $key => $value) print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; + // Remove link print '<td style="width: 24px"></td>'; + // Ref print '<td style="width: 200px">'.$langs->trans("Ref").'</td>'; - print '<td width="100" align="center">'.$langs->trans("Date").'</td>'; + // Date + print '<td width="100" align="center">'; + if (! in_array($tablename, array('projet_task'))) print $langs->trans("Date"); + print '</td>'; // Thirdparty or user print '<td>'; - if ($tablename == 'expensereport_det' || 'don') print $langs->trans("User"); + if (in_array($tablename, array('projet_task')) && $key == 'project_task') print ''; // if $key == 'project_task', we don't want details per user + elseif (in_array($tablename, array('expensereport_det','don','projet_task'))) print $langs->trans("User"); else print $langs->trans("ThirdParty"); print '</td>'; + // Amount HT + //if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print '<td align="right" width="120">'.$langs->trans("AmountHT").'</td>'; + //elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print '<td align="right" width="120">'.$langs->trans("Amount").'</td>'; if (empty($value['disableamount'])) print '<td align="right" width="120">'.$langs->trans("AmountHT").'</td>'; else print '<td width="120"></td>'; + // Amount TTC + //if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print '<td align="right" width="120">'.$langs->trans("AmountTTC").'</td>'; if (empty($value['disableamount'])) print '<td align="right" width="120">'.$langs->trans("AmountTTC").'</td>'; else print '<td width="120"></td>'; - print '<td align="right" width="200">'.$langs->trans("Status").'</td>'; + // Status + if (in_array($tablename, array('projet_task'))) print '<td align="right" width="200">'.$langs->trans("ProgressDeclared").'</td>'; + else print '<td align="right" width="200">'.$langs->trans("Status").'</td>'; print '</tr>'; + $elementarray = $object->get_element_list($key, $tablename, $datefieldname, $dates, $datee); if (is_array($elementarray) && count($elementarray)>0) { @@ -368,15 +398,21 @@ foreach ($listofreferent as $key => $value) $saved_third_id = 0; $breakline = ''; - if (canApplySubtotalOn($tablename)) { - // Appel du mon code de tri : + if (canApplySubtotalOn($tablename)) + { + // Sort $elementarray = sortElementsByClientName($elementarray); } $num=count($elementarray); for ($i = 0; $i < $num; $i++) { - $element->fetch($elementarray[$i]); + $tmp=explode('_',$elementarray[$i]); + $idofelement=$tmp[0]; + $idofelementuser=$tmp[1]; + + $element->fetch($idofelement); + if ($idofelementuser) $elementuser->fetch($idofelementuser); if ($tablename != 'expensereport_det') { @@ -411,8 +447,12 @@ foreach ($listofreferent as $key => $value) $var=!$var; print "<tr ".$bc[$var].">"; + // Remove link print '<td style="width: 24px">'; - print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $projectid . '&action=unlink&tablename=' . $tablename . '&elementselect=' . $element->id . '">' . img_picto($langs->trans('Unlink'), 'editdelete') . '</a>'; + if ($tablename != 'projet_task') + { + print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $projectid . '&action=unlink&tablename=' . $tablename . '&elementselect=' . $element->id . '">' . img_picto($langs->trans('Unlink'), 'editdelete') . '</a>'; + } print "</td>\n"; // Ref print '<td align="left">'; @@ -421,8 +461,10 @@ foreach ($listofreferent as $key => $value) { print $expensereport->getNomUrl(1); } - else { - print $element->getNomUrl(1); + else + { + if ($element instanceof Task) print $element->getNomUrl(1,'withproject','time'); + else print $element->getNomUrl(1); $element_doc = $element->element; $filename=dol_sanitizeFileName($element->ref); @@ -439,13 +481,13 @@ foreach ($listofreferent as $key => $value) } print $formfile->getDocumentsLink($element_doc, $filename, $filedir); - } print "</td>\n"; // Date if ($tablename == 'commande_fournisseur' || $tablename == 'supplier_order') $date=$element->date_commande; + elseif ($tablename == 'projet_task') $date=''; // We show no date. Showing date of beginning of task make user think it is date of time consumed else { $date=$element->date; @@ -466,9 +508,16 @@ foreach ($listofreferent as $key => $value) } else if ($tablename == 'don') { - $tmpuser2=new User($db); - $tmpuser2->fetch($don->fk_user_author); - print $tmpuser2->getNomUrl(1,'',48); + if ($element->fk_user_author > 0) + { + $tmpuser2=new User($db); + $tmpuser2->fetch($element->fk_user_author); + print $tmpuser2->getNomUrl(1,'',48); + } + } + else if ($tablename == 'projet_task' && $key == 'project_task_time') // if $key == 'project_task', we don't want details per user + { + print $elementuser->getNomUrl(1); } print '</td>'; @@ -476,6 +525,11 @@ foreach ($listofreferent as $key => $value) if (empty($value['disableamount'])) { if ($tablename == 'don') $total_ht_by_line=$element->amount; + elseif ($tablename == 'projet_task') + { + $tmp = $element->getSumOfAmount($elementuser, $dates, $datee); + $total_ht_by_line = price2num($tmp['amount'],'MT'); + } else { $total_ht_by_line=$element->total_ht; @@ -492,6 +546,11 @@ foreach ($listofreferent as $key => $value) if (empty($value['disableamount'])) { if ($tablename == 'don') $total_ttc_by_line=$element->amount; + elseif ($tablename == 'projet_task') + { + $defaultvat = get_default_tva($mysoc, $mysoc); + $total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)),'MT'); + } else { $total_ttc_by_line=$element->total_ttc; @@ -506,10 +565,20 @@ foreach ($listofreferent as $key => $value) // Status print '<td align="right">'; - if ($element instanceof CommonInvoice) { + if ($element instanceof CommonInvoice) + { //This applies for Facture and FactureFournisseur print $element->getLibStatut(5, $element->getSommePaiement()); - } else { + } + else if ($element instanceof Task) + { + if ($element->progress != '') + { + print $element->progress.' %'; + } + } + else + { print $element->getLibStatut(5); } print '</td>'; @@ -548,8 +617,12 @@ foreach ($listofreferent as $key => $value) if ($breakline) print $breakline; print '<tr class="liste_total"><td colspan="4">'.$langs->trans("Number").': '.$i.'</td>'; + //if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print '<td align="right" width="100">'.$langs->trans("TotalHT").' : '.price($total_ht).'</td>'; + //elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print '<td align="right" width="100">'.$langs->trans("Total").' : '.price($total_ht).'</td>'; if (empty($value['disableamount'])) print '<td align="right" width="100">'.$langs->trans("TotalHT").' : '.price($total_ht).'</td>'; else print '<td></td>'; + //if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print '<td align="right" width="100">'.$langs->trans("TotalTTC").' : '.price($total_ttc).'</td>'; + //elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print '<td align="right" width="100"></td>'; if (empty($value['disableamount'])) print '<td align="right" width="100">'.$langs->trans("TotalTTC").' : '.price($total_ttc).'</td>'; else print '<td></td>'; print '<td> </td>'; @@ -609,7 +682,10 @@ $langs->load("bills"); $langs->load("orders"); $langs->load("proposals"); $langs->load("margins"); -print_fiche_titre($langs->trans("Profit"),'','title_accountancy'); + +//print load_fiche_titre($langs->trans("Profit"),'','title_accountancy'); +print '<br><div class="center">'.img_picto("", "title_accountancy").' '.$langs->trans("Profit").'</div><br>'; + print '<table class="noborder">'; print '<tr class="liste_titre">'; print '<td align="left" width="200">'.$langs->trans("Element").'</td>'; @@ -624,30 +700,56 @@ foreach ($listofreferent as $key => $value) $title=$value['title']; $classname=$value['class']; $tablename=$value['table']; + $datefieldname=$value['datefieldname']; $qualified=$value['test']; $margin = $value['margin']; if ($qualified && isset($margin)) // If this element must be included into profit calculation ($margin is 'minus' or 'plus') { $element = new $classname($db); - $elementarray = $object->get_element_list($key, $tablename); + $elementarray = $object->get_element_list($key, $tablename, $datefieldname, $dates, $datee); if (count($elementarray)>0 && is_array($elementarray)) { $var=true; $total_ht = 0; $total_ttc = 0; + $num=count($elementarray); for ($i = 0; $i < $num; $i++) { - $element->fetch($elementarray[$i]); + $tmp=explode('_',$elementarray[$i]); + $idofelement=$tmp[0]; + $idofelementuser=$tmp[1]; + + $element->fetch($idofelement); + if ($idofelementuser) $elementuser->fetch($idofelementuser); + if ($tablename != 'expensereport_det') $element->fetch_thirdparty(); if ($tablename == 'don') $total_ht_by_line=$element->amount; + elseif ($tablename == 'projet_task') + { + if ($idofelementuser) + { + $tmp = $element->getSumOfAmount($elementuser, $dates, $datee); + $total_ht_by_line = price2num($tmp['amount'],'MT'); + } + else + { + $tmp = $element->getSumOfAmount('', $dates, $datee); + $total_ht_by_line = price2num($tmp['amount'],'MT'); + } + } else $total_ht_by_line=$element->total_ht; $total_ht = $total_ht + $total_ht_by_line; if ($tablename == 'don') $total_ttc_by_line=$element->amount; + elseif ($tablename == 'projet_task') + { + $defaultvat = get_default_tva($mysoc, $mysoc); + $total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)),'MT'); + } else $total_ttc_by_line=$element->total_ttc; $total_ttc = $total_ttc + $total_ttc_by_line; @@ -695,10 +797,14 @@ foreach ($listofreferent as $key => $value) $newclassname = $classname; } - print '<tr >'; + print '<tr>'; + // Module print '<td align="left">'.$langs->trans($newclassname).'</td>'; + // Nb print '<td align="right">'.$i.'</td>'; + // Amount HT print '<td align="right">'.price($total_ht).'</td>'; + // Amount TTC print '<td align="right">'.price($total_ttc).'</td>'; print '</tr>'; } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index ef80873d03e108f230553d1115a11e73b7943e89..4464c9cb8efd7bab86d86461c4538841cc71934c 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -258,7 +258,7 @@ if ($resql) print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"p.datee","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],'p.fk_statut',"",$param,'align="right"',$sortfield,$sortorder); - print '<td class="liste_titre"> </td>'; + print_liste_field_titre(''); print "</tr>\n"; print '<tr class="liste_titre">'; diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php index e6dd2792118d1f94eedafbf08fe76116a254a306..9a8aa5c56084c34c1906bbded21a8adaebb03b03 100644 --- a/htdocs/projet/tasks/contact.php +++ b/htdocs/projet/tasks/contact.php @@ -298,12 +298,13 @@ if ($id > 0 || ! empty($ref)) if ($res) break; } */ - print '<table class="noborder" width="100%">'; /* * Add a new contact line * Non affiche en mode modification de ligne */ + print '<table class="noborder" width="100%">'; + if ($action != 'editline' && $user->rights->projet->creer) { print '<tr class="liste_titre">'; @@ -336,8 +337,9 @@ if ($id > 0 || ! empty($ref)) print '<td colspan="1">'; // On recupere les id des users deja selectionnes - $contactsofproject=$projectstatic->getListContactId('internal'); - print $form->select_dolusers((GETPOST('contactid')?GETPOST('contactid'):$user->id), 'contactid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 1); + if ($object->project->public) $contactsofproject=''; // Everybody + else $contactsofproject=$projectstatic->getListContactId('internal'); + print $form->select_dolusers((GETPOST('contactid')?GETPOST('contactid'):$user->id), 'contactid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 1, $langs->trans("ResourceNotAssignedToProject")); print '</td>'; print '<td>'; $formcompany->selectTypeContact($object, '', 'type','internal','rowid'); diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index 5d8085efcddba1b772bc4883f5ccb1a0fea47995..93dcc7226a29e6d960f031ac2aea5d84f2eebb8d 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -37,7 +37,7 @@ $langs->load("projects"); $langs->load("companies"); $id=GETPOST('id','int'); -$ref=GETPOST('ref','alpha'); +$ref=GETPOST("ref",'alpha',1); $action=GETPOST('action','alpha'); $confirm=GETPOST('confirm','alpha'); $withproject=GETPOST('withproject','int'); @@ -81,6 +81,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->projet->creer) $task_parent=$tmparray[1]; if (empty($task_parent)) $task_parent = 0; // If task_parent is '' + $object->ref = GETPOST("ref",'alpha',2); $object->label = $_POST["label"]; $object->description = $_POST['description']; $object->fk_task_parent = $task_parent; @@ -308,7 +309,7 @@ if ($id > 0 || ! empty($ref)) // Ref print '<tr><td width="30%">'.$langs->trans("Ref").'</td>'; - print '<td>'.$object->ref.'</td></tr>'; + print '<td><input size="12" name="ref" value="'.$object->ref.'"></td></tr>'; // Label print '<tr><td>'.$langs->trans("Label").'</td>'; diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 02e1dd0edbb094312d8f93b7e429555257178b4f..238b3c588ff59c00ed9bd3d183e047a051efca40 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2006-2014 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2006-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * @@ -369,7 +369,7 @@ if ($id > 0 || ! empty($ref)) print '<input type="hidden" name="id" value="'.$object->id.'">'; print '<input type="hidden" name="withproject" value="'.$withproject.'">'; - print '<table class="noborder" width="100%">'; + print '<table class="noborder nohover" width="100%">'; print '<tr class="liste_titre">'; print '<td width="100">'.$langs->trans("Date").'</td>'; @@ -392,12 +392,12 @@ if ($id > 0 || ! empty($ref)) print '<td class="nowrap">'; print img_object('','user','class="hideonsmartphone"'); $contactsoftask=$object->getListContactId('internal'); - if (count($contactsoftask)>0) + if (count($contactsoftask)>0) { $userid=$contactsoftask[0]; - print $form->select_dolusers((GETPOST('userid')?GETPOST('userid'):$userid),'userid',0,'',0,'',$contactsoftask); + print $form->select_dolusers((GETPOST('userid')?GETPOST('userid'):$userid), 'userid', 0, '', 0, '', $contactsoftask, 0, 0, 0, '', 0, $langs->trans("ResourceNotAssignedToTask")); } - else + else { print img_error($langs->trans('FirstAddRessourceToAllocateTime')).$langs->trans('FirstAddRessourceToAllocateTime'); } diff --git a/htdocs/public/api/index.php b/htdocs/public/api/index.php index d5065e45a323d7e92bc81585e6545804935ae44e..17b691675c5f77b2312369cf4798752bdc0b348f 100644 --- a/htdocs/public/api/index.php +++ b/htdocs/public/api/index.php @@ -28,7 +28,7 @@ if (! defined("NOLOGIN")) define("NOLOGIN",'1'); $res=0; -if (! $res && file_exists("../../main.inc.php")) $res=@include '../../main.inc.php'; +if (! $res && file_exists("../../main.inc.php")) $res=@include '../../main.inc.php'; if (! $res && file_exists("../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../dolibarr/htdocs/main.inc.php'; // For custom directory if (! $res) die("Include of main fails"); @@ -47,7 +47,7 @@ if (empty($conf->global->MAIN_MODULE_API)) exit; } -use Luracast\Restler\Defaults; +use \Luracast\Restler\Defaults; Defaults::setProperty('authenticationMethod','_isAllowed'); $api = new DolibarrApi($db); @@ -64,7 +64,7 @@ foreach ($modulesdir as $dir) * Search available module */ dol_syslog("Scan directory ".$dir." for API modules"); - + $handle=@opendir(dol_osencode($dir)); if (is_resource($handle)) { @@ -81,7 +81,7 @@ foreach ($modulesdir as $dir) if ($module == 'societe') { $obj = 'thirdparty'; } - if ($module == 'categorie') { + if ($module == 'categorie') { $part = 'categories'; $obj = 'category'; } @@ -90,7 +90,7 @@ foreach ($modulesdir as $dir) $obj = 'facture'; } if (empty($conf->$module->enabled)) $enabled=false; - + if ($enabled) { /* @@ -102,7 +102,7 @@ foreach ($modulesdir as $dir) * @todo : use getElementProperties() function ? */ $dir_part = DOL_DOCUMENT_ROOT.'/'.$part.'/class/'; - + $handle_part=@opendir(dol_osencode($dir_part)); if (is_resource($handle_part)) { @@ -125,4 +125,4 @@ foreach ($modulesdir as $dir) } } -$api->r->handle(); //serve the response \ No newline at end of file +$api->r->handle(); //serve the response diff --git a/htdocs/public/demo/index.php b/htdocs/public/demo/index.php index 956bcac8b75c9eb974bbe824bcb0e2132508f555..4b0c052617473608d5053f70356e8b3d2638d026 100644 --- a/htdocs/public/demo/index.php +++ b/htdocs/public/demo/index.php @@ -41,7 +41,7 @@ $conf->dol_use_jmobile=GETPOST('dol_use_jmobile','int'); // Security check global $dolibarr_main_demo; -if (empty($dolibarr_main_demo)) accessforbidden('Parameter dolibarr_main_demo must be defined in conf file with value "default login,default pass" to enable the demo entry page',1,1,1); +if (empty($dolibarr_main_demo)) accessforbidden('Parameter dolibarr_main_demo must be defined in conf file with value "default login,default pass" to enable the demo entry page',0,0,1); // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $res=$hookmanager->initHooks(array('demo')); diff --git a/htdocs/public/donations/therm.php b/htdocs/public/donations/therm.php deleted file mode 100644 index 7c24253dd71fa28eea1715f03147d1c7e5cc3f82..0000000000000000000000000000000000000000 --- a/htdocs/public/donations/therm.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/* Copyright (C) 2002 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2008 Laurent Destailleur <eldy@users.sourceforge.net> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * \file htdocs/public/donations/therm.php - * \ingroup donation - * \brief Screen with thermometer - */ - -define("NOLOGIN",1); // This means this output page does not require to be logged. -define("NOCSRFCHECK",1); // We accept to go on this page from external web site. - -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; - -// Security check -if (empty($conf->don->enabled)) accessforbidden('',1,1,1); - - - -/* - * View (output an image) - */ - -$dontherm = new Don($db); - -$intentValue = $dontherm->sum_donations(1); -$pendingValue = $dontherm->sum_donations(2); -$actualValue = $dontherm->sum_donations(3); - -$db->close(); - - -/* - * Graph thermometer - */ -print moneyMeter($actualValue, $pendingValue, $intentValue); - diff --git a/htdocs/public/members/public_card.php b/htdocs/public/members/public_card.php index fd745e523c9efd66e930ffafde4c2ff5d56f66b7..fc96ffed01cc5a52e05b768c9f26127f43cae076 100644 --- a/htdocs/public/members/public_card.php +++ b/htdocs/public/members/public_card.php @@ -65,7 +65,11 @@ $extrafields = new ExtraFields($db); * View */ -llxHeaderVierge($langs->trans("MemberCard")); +$morehead=''; +if (! empty($conf->global->MEMBER_PUBLIC_CSS)) $morehead='<link rel="stylesheet" type="text/css" href="'.$conf->global->MEMBER_PUBLIC_CSS.'">'; +else $morehead='<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/theme/eldy/style.css.php'.'">'; + +llxHeaderVierge($langs->trans("MemberCard"), $morehead); // fetch optionals attributes and labels $extralabels=$extrafields->fetch_name_optionals_label('adherent'); @@ -75,7 +79,7 @@ if ($id > 0) if ($res < 0) { dol_print_error($db,$object->error); exit; } $res=$object->fetch_optionals($object->id,$extralabels); - print_titre($langs->trans("MemberCard")); + print_fiche_titre($langs->trans("MemberCard"), '', ''); if (empty($object->public)) { @@ -83,7 +87,7 @@ if ($id > 0) } else { - print '<table class="border" cellspacing="0" width="100%" cellpadding="3">'; + print '<table class="public_border" cellspacing="0" width="100%" cellpadding="3">'; print '<tr><td width="15%">'.$langs->trans("Type").'</td><td class="valeur">'.$object->type."</td></tr>\n"; print '<tr><td>'.$langs->trans("Person").'</td><td class="valeur">'.$object->morphy.'</td></tr>'; @@ -138,7 +142,7 @@ function llxHeaderVierge($title, $head = "") print "<title>".$title."</title>\n"; if ($head) print $head."\n"; print "</head>\n"; - print "<body>\n"; + print '<body class="public_body">'."\n"; } /** diff --git a/htdocs/public/members/public_list.php b/htdocs/public/members/public_list.php index e672a6d59d367a454095147ce935da4da0bcf0d3..9064dd528794f293ced962b2992309f505be0fc2 100644 --- a/htdocs/public/members/public_list.php +++ b/htdocs/public/members/public_list.php @@ -62,7 +62,7 @@ function llxHeaderVierge($title, $head = "") print "<title>".$title."</title>\n"; if ($head) print $head."\n"; print "</head>\n"; - print "<body>\n"; + print '<body class="public_body">'."\n"; } /** @@ -98,7 +98,13 @@ if (! $sortfield) { $sortfield="lastname"; } * View */ -llxHeaderVierge($langs->trans("ListOfValidatedPublicMembers")); +$form = new Form($db); + +$morehead=''; +if (! empty($conf->global->MEMBER_PUBLIC_CSS)) $morehead='<link rel="stylesheet" type="text/css" href="'.$conf->global->MEMBER_PUBLIC_CSS.'">'; +else $morehead='<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/theme/eldy/style.css.php'.'">'; + +llxHeaderVierge($langs->trans("ListOfValidatedPublicMembers"), $morehead); $sql = "SELECT rowid, firstname, lastname, societe, zip, town, email, birth, photo"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent"; @@ -120,17 +126,16 @@ if ($result) $param="&statut=$statut&sortorder=$sortorder&sortfield=$sortfield"; print_barre_liste($langs->trans("ListOfValidatedPublicMembers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, 0, ''); - print '<table class="noborder" width="100%">'; + print '<table class="public_border" width="100%">'; - print '<tr class="liste_titre">'; - print '<td><a href="'.$_SERVER["PHP_SELF"].'?page='.$page.'&sortorder=ASC&sortfield=firstname">'.$langs->trans("Firstname").'</a>'; - print ' <a href="'.$_SERVER['PHP_SELF'].'?page='.$page.'&sortorder=ASC&sortfield=lastname">'.$langs->trans("Lastname").'</a>'; - print ' / <a href="'.$_SERVER["PHP_SELF"].'?page='.$page.'&sortorder=ASC&sortfield=societe">'.$langs->trans("Company").'</a></td>'."\n"; + print '<tr class="public_liste_titre">'; + print '<td><a href="'.$_SERVER["PHP_SELF"].'?page='.$page.'&sortorder=ASC&sortfield=firstname">'.dolGetFirstLastname($langs->trans("Firstname"),$langs->trans("Lastname")).'</a></td>'; + print '<td><a href="'.$_SERVER["PHP_SELF"].'?page='.$page.'&sortorder=ASC&sortfield=societe">'.$langs->trans("Company").'</a></td>'."\n"; //print_liste_field_titre($langs->trans("DateToBirth"), $_SERVER["PHP_SELF"],"birth",'',$param,$sortfield,$sortorder); // est-ce nécessaire ?? - print_liste_field_titre($langs->trans("EMail"), $_SERVER["PHP_SELF"],"email",'',$param,$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Zip"), $_SERVER["PHP_SELF"],"zip","",$param,$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Town"), $_SERVER["PHP_SELF"],"town","",$param,$sortfield,$sortorder); - print "<td>".$langs->trans("Photo")."</td>\n"; + print_liste_field_titre($langs->trans("EMail"), $_SERVER["PHP_SELF"],"email",'',$param,'',$sortfield,$sortorder,'public_'); + print_liste_field_titre($langs->trans("Zip"), $_SERVER["PHP_SELF"],"zip","",$param,'',$sortfield,$sortorder,'public_'); + print_liste_field_titre($langs->trans("Town"), $_SERVER["PHP_SELF"],"town","",$param,'',$sortfield,$sortorder,'public_'); + print_liste_field_titre($langs->trans("Photo"), $_SERVER["PHP_SELF"],"","",$param,'',$sortfield,$sortorder,'public_'); print "</tr>\n"; $var=True; @@ -139,13 +144,13 @@ if ($result) $objp = $db->fetch_object($result); $var=!$var; print "<tr ".$bc[$var].">"; - print '<td><a href="public_card.php?id='.$objp->rowid.'">'.dolGetFirstLastname($obj->firstname, $obj->lastname).($objp->societe?' / '.$objp->societe:'').'</a></td>'."\n"; + print '<td><a href="public_card.php?id='.$objp->rowid.'">'.dolGetFirstLastname($objp->firstname, $objp->lastname).'</a></td>'."\n"; + print '<td>'.$objp->societe.'</td>'."\n"; print '<td>'.$objp->email.'</td>'."\n"; print '<td>'.$objp->zip.'</td>'."\n"; print '<td>'.$objp->town.'</td>'."\n"; if (isset($objp->photo) && $objp->photo != '') { - $form = new Form($db); print '<td>'; print $form->showphoto('memberphoto', $objp, 64); print '</td>'."\n"; @@ -165,6 +170,6 @@ else } -$db->close(); - llxFooterVierge(); + +$db->close(); diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index 9f0cec70e6219426926d841c74d339e99c9edd31..698046cf708fd7b2a1092cbac9fb4fdfe5b1100f 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -148,6 +148,39 @@ print_barre_liste('Title of my list', 3, $_SERVER["PHP_SELF"], '', '', '', 'Text ?> <table class="liste noborder tagtable centpercent" id="tablelines3"> +<?php +$moreforfilter.='<div class="divsearchfield">'; +$moreforfilter.=$langs->trans('This is a select list for a filter A'). ': '; +$cate_arbo = array('field1'=>'value1a into the select list A','field2'=>'value2a'); +$moreforfilter.=$form->selectarray('search_aaa', $cate_arbo, '', 1); // List without js combo +$moreforfilter.='</div>'; + +$moreforfilter.='<div class="divsearchfield">'; +$moreforfilter.=$langs->trans('This is a select list for a filter B'). ': '; +$cate_arbo = array('field1'=>'value1b into the select list B','field2'=>'value2b'); +$moreforfilter.=$form->selectarray('search_bbb', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, 0, '', 1); // List with js combo +$moreforfilter.='</div>'; + +$moreforfilter.='<div class="divsearchfield">'; +$moreforfilter.=$langs->trans('This is a select list for a filter C'). ': '; +$cate_arbo = array('field1'=>'value1c into the select list C','field2'=>'value2c'); +$moreforfilter.=$form->selectarray('search_ccc', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, 0, '', 1); // List with js combo +$moreforfilter.='</div>'; + +$moreforfilter.='<div class="divsearchfield">'; +$moreforfilter.=$langs->trans('This is a select list for a filter D'). ': '; +$cate_arbo = array('field1'=>'value1d into the select list D','field2'=>'value2d'); +$moreforfilter.=$form->selectarray('search_ddd', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, 0, '', 1); // List with js combo +$moreforfilter.='</div>'; + +if (! empty($moreforfilter)) +{ + print '<tr class="liste_titre">'; + print '<td class="liste_titre" colspan="10">'; + print $moreforfilter; + print '</td></tr>'; +} +?> <tr class="liste_titre"> <?php print getTitleFieldOfList($langs->trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?> <?php print getTitleFieldOfList($langs->trans('title2'),0,$_SERVER["PHP_SELF"],'bbb','','','align="right"',$sortfield,$sortorder); ?> diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php index f14652f6dc069018dc26928fd12f841cf3c0fcd8..a6a361620e99b6c7ed6da0e2b531858c16eeed82 100644 --- a/htdocs/public/test/test_forms.php +++ b/htdocs/public/test/test_forms.php @@ -17,8 +17,8 @@ llxHeader(); <h1> This page is a sample of page using Dolibarr HTML widget methods. It is designed to make test with<br> - css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br> -- jmobile (add parameter dol_use_jmobile=1&dol_optimize_smallscreen=1 to enable view with jmobile)<br> -- no javascript / usage for bind people (add parameter nojs=1 to force disable javascript)<br> +- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> to enable view with jmobile)<br> +- no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br> </h1> <br> @@ -75,7 +75,7 @@ print '<br><br>'."\n"; // Test4d: form->select_thirdparty print "Test 4d: Select thirdparty<br>\n"; -print $form->select_thirdparty(0,'thirdpartytest'); +print $form->select_company(0,'thirdpartytest'); print '<br><br>'."\n"; diff --git a/htdocs/public/theme/common/index.php b/htdocs/public/theme/common/index.php new file mode 100644 index 0000000000000000000000000000000000000000..0d25c726b339fb45002e055e30ab03b5b86f9d08 --- /dev/null +++ b/htdocs/public/theme/common/index.php @@ -0,0 +1,29 @@ +<?php +/* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * \file htdocs/public/theme/common/index.php + * \ingroup core + * \brief A redirect page to an error + * \author Laurent Destailleur + */ + +require '../../../master.inc.php'; + +header("Location: ".DOL_URL_ROOT.'/public/error-404.php'); + diff --git a/htdocs/theme/common/nophoto.jpg b/htdocs/public/theme/common/nophoto.jpg similarity index 100% rename from htdocs/theme/common/nophoto.jpg rename to htdocs/public/theme/common/nophoto.jpg diff --git a/htdocs/public/theme/common/user_anonymous.png b/htdocs/public/theme/common/user_anonymous.png new file mode 100644 index 0000000000000000000000000000000000000000..12c1007048bd87f7014e8c6aab788843a9695558 Binary files /dev/null and b/htdocs/public/theme/common/user_anonymous.png differ diff --git a/htdocs/public/theme/common/user_man.png b/htdocs/public/theme/common/user_man.png new file mode 100644 index 0000000000000000000000000000000000000000..762e83d4a3650070d0461065bf04d2eba388867d Binary files /dev/null and b/htdocs/public/theme/common/user_man.png differ diff --git a/htdocs/public/theme/common/user_woman.png b/htdocs/public/theme/common/user_woman.png new file mode 100644 index 0000000000000000000000000000000000000000..d9fee3c3d6400eefcb0dc59dd83ff531021a8a57 Binary files /dev/null and b/htdocs/public/theme/common/user_woman.png differ diff --git a/htdocs/public/theme/index.php b/htdocs/public/theme/index.php new file mode 100644 index 0000000000000000000000000000000000000000..1d8c522741dcd8b58a6f9981f9f2d90a37a27616 --- /dev/null +++ b/htdocs/public/theme/index.php @@ -0,0 +1,29 @@ +<?php +/* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * \file htdocs/public/theme/index.php + * \ingroup core + * \brief A redirect page to an error + * \author Laurent Destailleur + */ + +require '../../master.inc.php'; + +header("Location: ".DOL_URL_ROOT.'/public/error-404.php'); + diff --git a/htdocs/resource/add.php b/htdocs/resource/add.php index b13e60bd0bc857c97b3e4204e6c4711323e980c5..d142ad91e47d660c1f23e0ba705244afc578f782 100644 --- a/htdocs/resource/add.php +++ b/htdocs/resource/add.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/resource/class/html.formresource.class.php'; $langs->load("resource"); $langs->load("companies"); $langs->load("other"); -$langs->load("resource@resource"); +$langs->load("resource"); // Get parameters $id = GETPOST('id','int'); @@ -65,25 +65,25 @@ if ($action == 'confirm_add_resource') if (! $cancel) { $error=''; - + $ref=GETPOST('ref','alpha'); $description=GETPOST('description','alpha'); $fk_code_type_resource=GETPOST('fk_code_type_resource','alpha'); - + if (empty($ref)) { $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Ref")); setEventMessage($mesg, 'errors'); $error++; } - + if (! $error) { $object=new Resource($db); $object->ref=$ref; $object->description=$description; $object->fk_code_type_resource=$fk_code_type_resource; - + $result=$object->create($user); if ($result > 0) { @@ -119,11 +119,11 @@ if ($action == 'confirm_add_resource') $form=new Form($db); $formresource = new FormResource($db); -if (! $action) +if (! $action) { $pagetitle=$langs->trans('AddResource'); llxHeader('',$pagetitle,''); - print_fiche_titre($pagetitle,'','resource.png@resource'); + print_fiche_titre($pagetitle,'','title_generic'); print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" name="add_resource">'; print '<input type="hidden" name="action" value="confirm_add_resource" />'; @@ -135,15 +135,14 @@ if (! $action) // Ref / label $field = 'ref'; print '<tr>'; - print '<td>'; - print '<label for="'.$field.'" class="fieldrequired">'; + print '<td class="fieldrequired">'; print $langs->trans('ResourceFormLabel_'.$field); print '</td>'; print '<td>'; print '<input type="text" name="'.$field.'" value="'.$$field.'" />'; print '</td>'; print '</tr>'; - + // Type print '<tr><td width="20%">'.$langs->trans("ResourceType").'</td>'; print '<td>'; @@ -153,10 +152,8 @@ if (! $action) // Description $field = 'description'; print '<tr>'; - print '<td>'; - print '<label for="'.$field.'">'; + print '<td class="tdtop">'; print $langs->trans('ResourceFormLabel_'.$field); - print '</label>'; print '</td>'; print '<td>'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php index 0863cad9c52c74aa5c6c7f42ba48f437d22c8e57..abb07820fa0850f5ccb67ee6580905a1c7c69f80 100644 --- a/htdocs/resource/card.php +++ b/htdocs/resource/card.php @@ -68,7 +68,7 @@ if (empty($reshook)) * ACTIONS ********************************************************************/ - if ($action == 'update' && ! $_POST["cancel"] && $user->rights->resource->write ) + if ($action == 'update' && ! $_POST["cancel"] && $user->rights->resource->write) { $error=0; @@ -113,6 +113,7 @@ if (empty($reshook)) } } + /*************************************************** * VIEW * @@ -127,12 +128,10 @@ $formresource = new FormResource($db); if ( $object->fetch($id) > 0 ) { $head=resourcePrepareHead($object); - dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource@resource'); if ($action == 'edit' ) { - if ( ! $user->rights->resource->write ) accessforbidden('',0); @@ -144,10 +143,12 @@ if ( $object->fetch($id) > 0 ) print '<input type="hidden" name="action" value="update">'; print '<input type="hidden" name="id" value="'.$object->id.'">'; + dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource@resource'); + print '<table class="border" width="100%">'; // Ref - print '<tr><td width="20%">'.$langs->trans("ResourceFormLabel_ref").'</td>'; + print '<tr><td width="20%" class="fieldrequired">'.$langs->trans("ResourceFormLabel_ref").'</td>'; print '<td><input size="12" name="ref" value="'.(GETPOST('ref') ? GETPOST('ref') : $object->ref).'"></td></tr>'; // Type @@ -162,20 +163,28 @@ if ( $object->fetch($id) > 0 ) print '<textarea name="description" cols="80" rows="'.ROWS_3.'">'.($_POST['description'] ? GETPOST('description','alpha') : $object->description).'</textarea>'; print '</td></tr>'; - print '<tr><td align="center" colspan="2">'; + print '</table>'; + + dol_fiche_end(); + + print '<div class="center">'; print '<input name="update" class="button" type="submit" value="'.$langs->trans("Modify").'"> '; print '<input type="submit" class="button" name="cancel" Value="'.$langs->trans("Cancel").'"></td></tr>'; - print '</table>'; + print '</div>'; + print '</form>'; } else { - // Confirm deleting resource line + dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource@resource'); + + // Confirm deleting resource line if ($action == 'delete') { print $form->formconfirm("card.php?&id=".$id,$langs->trans("DeleteResource"),$langs->trans("ConfirmDeleteResource"),"confirm_delete_resource",'','',1); } + /*--------------------------------------- * View object */ @@ -210,7 +219,7 @@ if ( $object->fetch($id) > 0 ) /* * Boutons actions - */ + */ print '<div class="tabsAction">'; $parameters = array(); $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php index 33df80fc0956646c277a185c585fc08ff9500977..cac917fa85b33936d78fb91a64493f715271d2bc 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/resource.class.php @@ -606,9 +606,9 @@ class Resource extends CommonObject * Fetch all resources available, declared by modules * Load available resource in array $this->available_resources * - * note : deprecated, remplaced by hook getElementResources - * * @return int number of available resources declared by modules + * @deprecated, remplaced by hook getElementResources + * @see getElementResources() */ function fetch_all_available() { global $conf; diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 6b6b5553d72261d3818686f45ece0c9457beddc6..123673654c94510a4016694ed4f374f0dfd7e4fd 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -72,6 +72,11 @@ $mandatory = GETPOST('mandatory','int'); $cancel = GETPOST('cancel','alpha'); $confirm = GETPOST('confirm','alpha'); + +/* + * Actions + */ + if($action == 'add_element_resource' && ! $cancel) { $objstat = fetchObjectByElement($element_id,$element); @@ -147,18 +152,16 @@ $reshook=$hookmanager->executeHooks('getElementResources',$parameters,$object,$a if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -/*************************************************** - * VIEW -* -* Put here all code to build page -****************************************************/ - -$pagetitle=$langs->trans('ResourceElementPage'); -llxHeader('',$pagetitle,''); +/* + * View + */ $form=new Form($db); +$pagetitle=$langs->trans('ResourceElementPage'); +llxHeader('',$pagetitle,''); + // Load available resource, declared by modules $ret = count($object->available_resources); @@ -212,16 +215,17 @@ else print '<tr><td>'.$langs->trans("Title").'</td><td colspan="3">'.$act->label.'</td></tr>'; print '</table>'; - print '</div>'; + dol_fiche_end(); } } + /* * Specific to thirdparty module */ - if($element_id && $element == 'societe') + if ($element_id && $element == 'societe') { $socstatic = fetchObjectByElement($element_id,$element); - if(is_object($socstatic)) { + if (is_object($socstatic)) { require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; $head = societe_prepare_head($socstatic); @@ -240,13 +244,13 @@ else print '</tr>'; print '</table>'; - print '</div>'; + dol_fiche_end(); } } - print_fiche_titre($langs->trans('ResourcesLinkedToElement'),'','resource.png@resource'); + //print_fiche_titre($langs->trans('ResourcesLinkedToElement'),'',''); @@ -257,7 +261,8 @@ else { $element_prop = getElementProperties($resource_obj); - print_titre($langs->trans(ucfirst($element_prop['element']).'Singular')); + + //print '/'.$modresources.'/class/'.$resource_obj.'.class.php<br />'; @@ -267,21 +272,21 @@ else $linked_resources = $object->getElementResources($element,$element_id,$resource_obj); - if ( $mode == 'add' && $resource_obj == $resource_type) + + // If we have a specific template we use it + if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_add.tpl.php'))) { - // If we have a specific template we use it - if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_'.$mode.'.tpl.php'))) - { - $res=include dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_'.$mode.'.tpl.php'); - } - else - { - $res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_add.tpl.php'; - } + $res=include dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_add.tpl.php'); } else { - //print '/'.$element_prop['module'].'/core/tpl/resource_'.$element_prop['element'].'_view.tpl.php'; + $res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_add.tpl.php'; + } + + + if ($mode != 'add' || $resource_obj != $resource_type) + { + //print_titre($langs->trans(ucfirst($element_prop['element']).'Singular')); // If we have a specific template we use it if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_view.tpl.php'))) @@ -294,15 +299,6 @@ else $res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_view.tpl.php'; } } - - if($resource_obj!=$resource_type ) - { - print '<div class="tabsAction">'; - print '<div class="inline-block divButAction">'; - print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?mode=add&resource_type='.$resource_obj.'&element='.$element.'&element_id='.$element_id.'">'.$langs->trans('AddResource').'</a>'; - print '</div>'; - print '</div>'; - } } } } diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index ab70bc9a3385daf1b88368c9dc62c76fae4d28d1..fbe8df807c0a37bbb1c5d5aa898cad9ac137a84a 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -89,7 +89,7 @@ llxHeader('',$pagetitle,''); $form=new Form($db); -print_fiche_titre($pagetitle,'','resource.png@resource'); +print_fiche_titre($pagetitle,'','title_generic'); // Confirmation suppression resource line if ($action == 'delete_resource') @@ -108,7 +108,7 @@ if(!$ret) { } else { - $var=false; + $var=true; print '<table class="noborder" width="100%">'."\n"; print '<tr class="liste_titre">'; @@ -139,7 +139,7 @@ else print '</td>'; print '<td align="center">'; - print '<a href="./card.php?action=update&id='.$resource->id.'">'; + print '<a href="./card.php?action=edit&id='.$resource->id.'">'; print img_edit(); print '</a>'; print ' '; diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index f1472dcb2d7e48005c352447ec387f852f5e45b3..383ed9e8ff82dd07ed9e6ffca54e135f9b047e63 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -52,6 +52,8 @@ abstract class ActionsCardCommon */ private function getInstanceDao() { + dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING); + if (! is_object($this->object)) { $modelclassfile = dol_buildpath('/'.$this->dirmodule.'/canvas/'.$this->canvas.'/dao_'.$this->targetmodule.'_'.$this->canvas.'.class.php'); diff --git a/htdocs/societe/class/client.class.php b/htdocs/societe/class/client.class.php index 2bff90f2f3fa8747894e9c190303138199ca8011..f3e7a8dcce981069bdba38e83849771a2de2ea37 100644 --- a/htdocs/societe/class/client.class.php +++ b/htdocs/societe/class/client.class.php @@ -108,7 +108,7 @@ class Client extends Societe while ($i < $num) { $obj=$this->db->fetch_object($resql); - $this->cacheprospectstatus[$obj->id]=array('id'=>$obj->id, 'code'=>$obj->code, 'label'=> $langs->trans("aaa")?$obj->label:''); + $this->cacheprospectstatus[$obj->id]=array('id'=>$obj->id, 'code'=>$obj->code, 'label'=> ($langs->trans("ST_".strtoupper($obj->code))=="ST_".strtoupper($obj->code))?$obj->label:$langs->trans("ST_".strtoupper($obj->code))); $i++; } return 1; diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index 3a57ce7a3d4d5a4fa41aa33cbd4e7bf15398a92c..8904d2573ed69b02e3af975751f47d3ecc407a08 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -48,6 +48,7 @@ class CompanyBankAccount extends Account var $proprio; var $owner_address; var $default_rib; + var $frstrecur; var $datec; var $datem; @@ -117,44 +118,34 @@ class CompanyBankAccount extends Account */ function update($user='') { -// $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe_rib"; -// $sql .= " WHERE rowid = ".$this->id; -// -// $result = $this->db->query($sql); -// if ($result) -// { -// if ($this->db->num_rows($result) == 0) -// { -// $this->create(); -// } -// } -// else -// { -// dol_print_error($this->db); -// return 0; -// } - - if (! $this->id) { + global $conf; + + if (! $this->id) + { $this->create(); } - $sql = "UPDATE ".MAIN_DB_PREFIX."societe_rib SET "; - $sql .= " bank = '" .$this->db->escape($this->bank)."'"; - $sql .= ",code_banque='".$this->code_banque."'"; - $sql .= ",code_guichet='".$this->code_guichet."'"; - $sql .= ",number='".$this->number."'"; - $sql .= ",cle_rib='".$this->cle_rib."'"; - $sql .= ",bic='".$this->bic."'"; - $sql .= ",iban_prefix = '".$this->iban."'"; - $sql .= ",domiciliation='".$this->db->escape($this->domiciliation)."'"; - $sql .= ",proprio = '".$this->db->escape($this->proprio)."'"; - $sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'"; - $sql .= ",default_rib = ".$this->default_rib; - if (trim($this->label) != '') - $sql .= ",label = '".$this->db->escape($this->label)."'"; + $sql = "UPDATE ".MAIN_DB_PREFIX."societe_rib SET"; + $sql.= " bank = '" .$this->db->escape($this->bank)."'"; + $sql.= ",code_banque='".$this->code_banque."'"; + $sql.= ",code_guichet='".$this->code_guichet."'"; + $sql.= ",number='".$this->number."'"; + $sql.= ",cle_rib='".$this->cle_rib."'"; + $sql.= ",bic='".$this->bic."'"; + $sql.= ",iban_prefix = '".$this->iban."'"; + $sql.= ",domiciliation='".$this->db->escape($this->domiciliation)."'"; + $sql.= ",proprio = '".$this->db->escape($this->proprio)."'"; + $sql.= ",owner_address = '".$this->db->escape($this->owner_address)."'"; + $sql.= ",default_rib = ".$this->default_rib; + if ($conf->prelevement->enabled) + { + $sql.= ",frstrecur = '".$this->db->escape($this->frstrecur)."'"; + } + if (trim($this->label) != '') + $sql.= ",label = '".$this->db->escape($this->label)."'"; else - $sql .= ",label = NULL"; - $sql .= " WHERE rowid = ".$this->id; + $sql.= ",label = NULL"; + $sql.= " WHERE rowid = ".$this->id; $result = $this->db->query($sql); if ($result) @@ -179,7 +170,8 @@ class CompanyBankAccount extends Account { if (empty($id) && empty($socid)) return -1; - $sql = "SELECT rowid, fk_soc, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban, domiciliation, proprio, owner_address, default_rib, label, datec, tms as datem"; + $sql = "SELECT rowid, fk_soc, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban, domiciliation, proprio,"; + $sql.= " owner_address, default_rib, label, datec, tms as datem, frstrecur"; $sql.= " FROM ".MAIN_DB_PREFIX."societe_rib"; if ($id) $sql.= " WHERE rowid = ".$id; if ($socid) $sql.= " WHERE fk_soc = ".$socid." AND default_rib = 1"; @@ -207,6 +199,7 @@ class CompanyBankAccount extends Account $this->default_rib = $obj->default_rib; $this->datec = $this->db->jdate($obj->datec); $this->datem = $this->db->jdate($obj->datem); + $this->frstrecur = $obj->frstrecur; } $this->db->free($resql); diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 18bfea5fb0c9cef4db82949c4a30bee76ea483bf..4d55732b801b9462ee83b2432025f5dddf61ddfb 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -59,6 +59,7 @@ class Societe extends CommonObject * Thirdparty name * @var string * @deprecated Use $name instead + * @see name */ public $nom; @@ -83,23 +84,26 @@ class Societe extends CommonObject var $state_id; var $state_code; var $state; - + /** - * State code + * State code * @var string * @deprecated Use state_code instead + * @see state_code */ var $departement_code; - + /** * @var string * @deprecated Use state instead + * @see state */ var $departement; /** * @var string * @deprecated Use country instead + * @see country */ var $pays; var $country_id; @@ -298,6 +302,7 @@ class Societe extends CommonObject /** * @var string * @deprecated Note is split in public and private notes + * @see note_public, note_private */ var $note; @@ -312,6 +317,7 @@ class Societe extends CommonObject * @var string */ var $note_public; + //! code statut prospect var $stcomm_id; var $statut_commercial; @@ -1039,7 +1045,7 @@ class Societe extends CommonObject $num=$this->db->num_rows($resql); if ($num > 1) { - $this->error='Fetch several records found for ref='.$ref; + $this->error='Fetch several records found request'; dol_syslog($this->error, LOG_ERR); $result = -2; } @@ -1296,13 +1302,15 @@ class Societe extends CommonObject * Delete a third party from database and all its dependencies (contacts, rib...) * * @param int $id Id of third party to delete - * @param User $user User who ask to delete thirparty + * @param User $fuser User who ask to delete thirparty * @param int $call_trigger 0=No, 1=yes - * @return int <0 if KO, 0 if nothing done, >0 if OK + * @return int <0 if KO, 0 if nothing done, >0 if OK */ - function delete($id, $user='', $call_trigger=1) + function delete($id, User $fuser=null, $call_trigger=1) { - global $langs, $conf; + global $langs, $conf, $user; + + if (empty($fuser)) $fuser=$user; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; @@ -1318,10 +1326,10 @@ class Societe extends CommonObject $this->db->begin(); // User is mandatory for trigger call - if ($user && $call_trigger) + if ($call_trigger) { // Call trigger - $result=$this->call_trigger('COMPANY_DELETE',$user); + $result=$this->call_trigger('COMPANY_DELETE',$fuser); if ($result < 0) $error++; // End call triggers } @@ -1446,7 +1454,8 @@ class Societe extends CommonObject return 1; } else - { + { + dol_syslog($this->error, LOG_ERR); $this->db->rollback(); return -1; } @@ -1762,7 +1771,8 @@ class Societe extends CommonObject if (! empty($conf->dol_no_mouse_hover)) $notooltip=1; - if ($conf->global->SOCIETE_ADD_REF_IN_LIST && (!empty($withpicto))) { + if ($conf->global->SOCIETE_ADD_REF_IN_LIST && (!empty($withpicto))) + { if (($this->client) && (! empty ( $this->code_client ))) { $code = $this->code_client . ' - '; } @@ -1834,7 +1844,7 @@ class Societe extends CommonObject if ($withpicto) $result.=($link.img_object(($notooltip?'':$label), 'company', ($notooltip?'':'class="classfortooltip"')).$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$link.($maxlen?dol_trunc($name,$maxlen):$name).$linkend; + if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($name,$maxlen):$name).$linkend; return $result; } @@ -2803,7 +2813,7 @@ class Societe extends CommonObject if (empty($name)) $name=$member->getFullName($langs); // Positionne parametres - $this->nom=$name; // TODO obsolete + $this->nom=$name; // TODO deprecated $this->name=$name; $this->address=$member->address; $this->zip=$member->zip; diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index 0932144a86059f2c2c7aa3095be054b90fd57ba3..500612d48ed137780e867e530ee6f321c77241ca 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -254,7 +254,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print $langs->trans('PriceBase'); print '</td>'; print '<td>'; - print $form->select_PriceBaseType($object->price_base_type, "price_base_type"); + print $form->selectPriceBaseType($object->price_base_type, "price_base_type"); print '</td>'; print '</tr>'; @@ -332,7 +332,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print $langs->trans('PriceBase'); print '</td>'; print '<td>'; - print $form->select_PriceBaseType($prodcustprice->price_base_type, "price_base_type"); + print $form->selectPriceBaseType($prodcustprice->price_base_type, "price_base_type"); print '</td>'; print '</tr>'; diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php index 5bb3710c7b54de7a9f4d4655a9765f19407f482a..d9b7df8153f0a325179d7fbdacba780766603e1e 100644 --- a/htdocs/societe/rib.php +++ b/htdocs/societe/rib.php @@ -77,6 +77,7 @@ if ($action == 'update' && ! $_POST["cancel"]) $account->domiciliation = $_POST["domiciliation"]; $account->proprio = $_POST["proprio"]; $account->owner_address = $_POST["owner_address"]; + $account->frstrecur = GETPOST('frstrecur'); $result = $account->update($user); if (! $result) @@ -135,11 +136,12 @@ if ($action == 'add' && ! $_POST["cancel"]) $account->domiciliation = $_POST["domiciliation"]; $account->proprio = $_POST["proprio"]; $account->owner_address = $_POST["owner_address"]; - + $account->frstrecur = GETPOST('frstrecur'); + $result = $account->update($user); // TODO Use create and include update into create method if (! $result) { - setEventMessage($account->error, 'errors'); + setEventMessages($account->error, $account->errors, 'errors'); $_GET["action"]='create'; // Force chargement page création } else @@ -155,7 +157,8 @@ if ($action == 'setasdefault') { $account = new CompanyBankAccount($db); $res = $account->setAsDefault(GETPOST('ribid','int')); - if ($res) { + if ($res) + { $url=DOL_URL_ROOT.'/societe/rib.php?socid='.$soc->id; header('Location: '.$url); exit; @@ -199,7 +202,6 @@ llxHeader(); $head=societe_prepare_head2($soc); -dol_fiche_head($head, 'rib', $langs->trans("ThirdParty"),0,'company'); $account = new CompanyBankAccount($db); if (! $id) @@ -209,16 +211,27 @@ else if (empty($account->socid)) $account->socid=$soc->id; +if ($socid && $action == 'edit' && $user->rights->societe->creer) +{ + print '<form action="rib.php?socid='.$soc->id.'" method="post">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="update">'; + print '<input type="hidden" name="id" value="'.$_GET["id"].'">'; +} +if ($socid && $action == 'create' && $user->rights->societe->creer) +{ + print '<form action="rib.php?socid='.$soc->id.'" method="post">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="add">'; +} -/* ************************************************************************** */ -/* */ -/* Visu et edition */ -/* */ -/* ************************************************************************** */ +// View if ($socid && $action != 'edit' && $action != "create") { - // Confirm delete third party + dol_fiche_head($head, 'rib', $langs->trans("ThirdParty"),0,'company'); + + // Confirm delete third party if ($action == 'delete') { print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$soc->id."&ribid=".($ribid?$ribid:$id), $langs->trans("DeleteARib"), $langs->trans("ConfirmDeleteRib", $account->getRibLabel()), "confirm_delete", '', 0, 1); @@ -228,10 +241,10 @@ if ($socid && $action != 'edit' && $action != "create") print '<table class="border" width="100%">'; - print '<tr><td>'.$langs->trans("LabelRIB").'</td>'; + print '<tr><td width="35%">'.$langs->trans("LabelRIB").'</td>'; print '<td colspan="4">'.$account->label.'</td></tr>'; - print '<tr><td valign="top" width="35%">'.$langs->trans("BankName").'</td>'; + print '<tr><td valign="top">'.$langs->trans("BankName").'</td>'; print '<td colspan="4">'.$account->bank.'</td></tr>'; // Show fields of bank account @@ -361,6 +374,7 @@ if ($socid && $action != 'edit' && $action != "create") if (! empty($conf->prelevement->enabled)) { print '<td>RUM</td>'; + print '<td>'.$langs->trans("WithdrawMode").'</td>'; } print_liste_field_titre($langs->trans("DefaultRIB"), '', '', '', '', 'align="center"'); print '<td width="40"></td>'; @@ -383,6 +397,8 @@ if ($socid && $action != 'edit' && $action != "create") if (! empty($conf->prelevement->enabled)) { print '<td>'.$prelevement->buildRumNumber($soc->code_client, $rib->datec, $rib->id).'</td>'; + + print '<td>'.$rib->frstrecur.'</td>'; } // Default @@ -410,16 +426,14 @@ if ($socid && $action != 'edit' && $action != "create") print img_picto($langs->trans("Delete"),'delete'); print '</a>'; } - - print '</td>'; - print '</tr>'; - $var = !$var; + print '</td>'; + print '</tr>'; } - + if (count($rib_list) == 0) { $colspan=7; - if (! empty($conf->prelevement->enabled)) $colspan++; + if (! empty($conf->prelevement->enabled)) $colspan+=2; print '<tr '.$bc[0].'><td colspan="'.$colspan.'" align="center">'.$langs->trans("NoBANRecord").'</td></tr>'; } @@ -427,22 +441,16 @@ if ($socid && $action != 'edit' && $action != "create") } else { dol_print_error($db); } + + dol_fiche_end(); } -/* ************************************************************************** */ -/* */ -/* Edition */ -/* */ -/* ************************************************************************** */ - +// Edit if ($socid && $action == 'edit' && $user->rights->societe->creer) { - print '<form action="rib.php?socid='.$soc->id.'" method="post">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="action" value="update">'; - print '<input type="hidden" name="id" value="'.$_GET["id"].'">'; - - print '<table class="border" width="100%">'; + dol_fiche_head($head, 'rib', $langs->trans("ThirdParty"),0,'company'); + + print '<table class="border" width="100%">'; print '<tr><td valign="top" width="35%" class="fieldrequired">'.$langs->trans("LabelRIB").'</td>'; print '<td colspan="4"><input size="30" type="text" name="label" value="'.$account->label.'"></td></tr>'; @@ -533,30 +541,39 @@ if ($socid && $action == 'edit' && $user->rights->societe->creer) print $account->owner_address; print "</textarea></td></tr>"; - print '</table><br>'; + print '</table>'; - print '<div align="center">'; + if ($conf->prelevement->enabled) + { + print '<br>'; + + print '<table class="border" width="100%">'; + + print '<tr><td width="35%">'.$langs->trans("RUM").'</td>'; + print '<td colspan="4">'.$account->rum.'</td></tr>'; + + print '<tr><td width="35%">'.$langs->trans("WithdrawMode").'</td>'; + print '<td colspan="4"><input size="30" type="text" name="frstrecur" value="'.(GETPOST('frstrecur')?GETPOST('frstrecur'):$account->frstrecur).'"></td></tr>'; + + print '</table>'; + } + + dol_fiche_end(); + + print '<div align="center">'; print '<input class="button" value="'.$langs->trans("Modify").'" type="submit">'; print ' '; print '<input class="button" name="cancel" value="'.$langs->trans("Cancel").'" type="submit">'; print '</div>'; - - print '</form>'; } -/* ************************************************************************** */ -/* */ -/* Création */ -/* */ -/* ************************************************************************** */ - +// Create if ($socid && $action == 'create' && $user->rights->societe->creer) { - print '<form action="rib.php?socid='.$soc->id.'" method="post">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="action" value="add">'; - print '<table class="border" width="100%">'; + dol_fiche_head($head, 'rib', $langs->trans("ThirdParty"),0,'company'); + + print '<table class="border" width="100%">'; print '<tr><td valign="top" width="35%" class="fieldrequired">'.$langs->trans("LabelRIB").'</td>'; @@ -615,19 +632,41 @@ if ($socid && $action == 'create' && $user->rights->societe->creer) print GETPOST('owner_address'); print "</textarea></td></tr>"; - print '</table><br>'; - - print '<div align="center">'; + print '</table>'; + + if ($conf->prelevement->enabled) + { + print '<br>'; + + print '<table class="border" width="100%">'; + + print '<tr><td width="35%">'.$langs->trans("RUM").'</td>'; + print '<td colspan="4">'.$langs->trans("RUMWillBeGenerated").'</td></tr>'; + + print '<tr><td width="35%">'.$langs->trans("WithdrawMode").'</td>'; + print '<td colspan="4"><input size="30" type="text" name="frstrecur" value="'.(isset($_POST['frstrecur'])?GETPOST('frstrecur'):'FRST').'"></td></tr>'; + + print '</table>'; + } + + dol_fiche_end(); + + print '<div align="center">'; print '<input class="button" value="'.$langs->trans("Add").'" type="submit">'; print ' '; print '<input name="cancel" class="button" value="'.$langs->trans("Cancel").'" type="submit">'; print '</div>'; - - print '</form>'; } +if ($socid && $action == 'edit' && $user->rights->societe->creer) +{ + print '</form>'; +} +if ($socid && $action == 'create' && $user->rights->societe->creer) +{ + print '</form>'; +} -dol_fiche_end(); if ($socid && $action != 'edit' && $action != 'create') diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index b26e6766a4e7c64f9192ff0f41a86e7e3acf36ec..e4098332e64b179c4dc4fc4c638ecf0bdb8db6c6 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -1,13 +1,13 @@ <?php /* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2003 Brian Fraval <brian@fraval.org> - * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2008 Patrick Raguin <patrick.raguin@auguria.net> * Copyright (C) 2010-2014 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011-2013 Alexandre Spangaro <alexandre.spangaro@gmail.com> - * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> + * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * * This program is free software; you can redistribute it and/or modify @@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; +require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; if (! empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; $langs->load("companies"); @@ -97,22 +98,29 @@ if (empty($reshook)) { if ($action == 'confirm_merge' && $confirm == 'yes') { + $object->fetch($socid); + $errors = 0; $soc_origin_id = GETPOST('soc_origin', 'int'); $soc_origin = new Societe($db); - if ($soc_origin_id < 1) { + if ($soc_origin_id < 1) + { $langs->load('errors'); $langs->load('companies'); setEventMessage($langs->trans('ErrorProdIdIsMandatory', $langs->trans('MergeOriginThirdparty')), 'errors'); - } else { + } + else + { - if (!$errors && $soc_origin->fetch($soc_origin_id) < 1) { + if (!$errors && $soc_origin->fetch($soc_origin_id) < 1) + { setEventMessage($langs->trans('ErrorRecordNotFound'), 'errors'); $errors++; } - if (!$errors) { + if (!$errors) + { $db->begin(); $objects = array( @@ -140,13 +148,13 @@ if (empty($reshook)) ); //First, all core objects must update their tables - foreach ($objects as $object_name => $object_file) { - + foreach ($objects as $object_name => $object_file) + { require_once DOL_DOCUMENT_ROOT.$object_file; - if (!$errors && !$object_name::replaceThirdparty($db, $soc_origin->id, $object->id)) { + if (!$errors && !$object_name::replaceThirdparty($db, $soc_origin->id, $object->id)) + { $errors++; - $db->rollback(); } } @@ -155,32 +163,37 @@ if (empty($reshook)) 'mergethirds' )); - if (!$errors) { + if (!$errors) + { $reshook = $hookmanager->executeHooks('replaceThirdparty', array( 'soc_origin' => $soc_origin->id, 'soc_dest' => $object->id ), $soc_dest, $action); - if ($reshook < 0) { + if ($reshook < 0) + { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); $errors++; } } - if (!$errors) { + if (!$errors) + { //We finally remove the old thirdparty - if ($soc_origin->delete($soc_origin->id, $user) < 1) { - $db->rollback(); + if ($soc_origin->delete($soc_origin->id, $user) < 1) + { $errors++; } } - } - if (!$errors) { - setEventMessage($langs->trans('ThirdpartiesMergeSuccess')); - $db->commit(); - } else { - setEventMessage($langs->trans('ErrorsThirdpartyMerge'), 'errors'); + if (!$errors) + { + setEventMessage($langs->trans('ThirdpartiesMergeSuccess')); + $db->commit(); + } else { + setEventMessage($langs->trans('ErrorsThirdpartyMerge'), 'errors'); + $db->rollback(); + } } } } @@ -229,15 +242,15 @@ if (empty($reshook)) { $object->particulier = GETPOST("private"); - $object->name = dolGetFirstLastname(GETPOST('firstname','alpha'),GETPOST('nom','alpha')?GETPOST('nom','alpha'):GETPOST('name','alpha')); - $object->civility_id = GETPOST('civility_id', 'int'); + $object->name = dolGetFirstLastname(GETPOST('firstname','alpha'),GETPOST('name','alpha')); + $object->civility_id = GETPOST('civility_id'); // Note: cibility id is a code, not an int // Add non official properties - $object->name_bis = GETPOST('name','alpha')?GETPOST('name','alpha'):GETPOST('nom','alpha'); + $object->name_bis = GETPOST('name','alpha'); $object->firstname = GETPOST('firstname','alpha'); } else { - $object->name = GETPOST('name', 'alpha')?GETPOST('name', 'alpha'):GETPOST('nom', 'alpha'); + $object->name = GETPOST('name', 'alpha'); } $object->address = GETPOST('address', 'alpha'); $object->zip = GETPOST('zipcode', 'alpha'); @@ -294,7 +307,11 @@ if (empty($reshook)) } // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); - if ($ret < 0) $error++; + if ($ret < 0) + { + $error++; + $action = ($action=='add'?'create':'edit'); + } if (GETPOST('deletephoto')) $object->logo = ''; else if (! empty($_FILES['photo']['name'])) $object->logo = dol_sanitizeFileName($_FILES['photo']['name']); @@ -396,6 +413,16 @@ if (empty($reshook)) } } + // Categories association + $custcats = GETPOST( 'custcats', 'array' ); + if (!empty( $custcats )) { + $cat = new Categorie( $db ); + foreach ($custcats as $id_category) { + $cat->fetch( $id_category ); + $cat->add_type( $object, 'customer' ); + } + } + // Logo/Photo save $dir = $conf->societe->multidir_output[$conf->entity]."/".$object->id."/logos/"; $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); @@ -500,6 +527,22 @@ if (empty($reshook)) $error = $object->error; $errors = $object->errors; } + // Categories association + // First we delete all categories association + $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . 'categorie_societe'; + $sql .= ' WHERE fk_soc = ' . $object->id; + $db->query( $sql ); + + // Then we add the associated categories + $categories = GETPOST( 'custcats', 'array' ); + if (!empty( $categories )) { + $cat = new Categorie( $db ); + foreach ($categories as $id_category) { + $cat->fetch( $id_category ); + $cat->add_type( $object, 'customer' ); + } + } + // Logo/Photo save $dir = $conf->societe->multidir_output[$object->entity]."/".$object->id."/logos"; $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']); @@ -765,7 +808,7 @@ else if (GETPOST("type")=='p') { $object->client=2; } if (! empty($conf->fournisseur->enabled) && (GETPOST("type")=='f' || (GETPOST("type")=='' && empty($conf->global->THIRDPARTY_NOTSUPPLIER_BY_DEFAULT)))) { $object->fournisseur=1; } - $object->name = GETPOST('nom', 'alpha'); + $object->name = GETPOST('name', 'alpha'); $object->firstname = GETPOST('firstname', 'alpha'); $object->particulier = $private; $object->prefix_comm = GETPOST('prefix_comm'); @@ -932,14 +975,14 @@ else print '<tr><td>'; if ($object->particulier || $private) { - print '<span id="TypeName" class="fieldrequired"><label for="name">'.$langs->trans('LastName').'</label></span>'; + print '<span id="TypeName" class="fieldrequired">'.$langs->trans('LastName','name').'</span>'; } else { - print '<span span id="TypeName" class="fieldrequired"><label for="name">'.$langs->trans('ThirdPartyName').'</label></span>'; + print '<span span id="TypeName" class="fieldrequired">'.fieldLabel('ThirdPartyName','name').'</span>'; } print '</td><td'.(empty($conf->global->SOCIETE_USEPREFIX)?' colspan="3"':'').'>'; - print '<input type="text" size="60" maxlength="128" name="nom" id="name" value="'.$object->name.'" autofocus="autofocus"></td>'; + print '<input type="text" size="60" maxlength="128" name="name" id="name" value="'.$object->name.'" autofocus="autofocus"></td>'; if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field { print '<td>'.$langs->trans('Prefix').'</td><td><input type="text" size="5" maxlength="5" name="prefix_comm" value="'.$object->prefix_comm.'"></td>'; @@ -949,16 +992,16 @@ else // If javascript on, we show option individual if ($conf->use_javascript_ajax) { - print '<tr class="individualline"><td><label for="firstname">'.$langs->trans('FirstName').'</label></td>'; + print '<tr class="individualline"><td>'.fieldLabel('FirstName','firstname').'</td>'; print '<td><input type="text" size="60" name="firstname" id="firstname" value="'.$object->firstname.'"></td>'; print '<td colspan=2> </td></tr>'; - print '<tr class="individualline"><td><label for="civility_id">'.$langs->trans("UserTitle").'</label></td><td>'; + print '<tr class="individualline"><td>'.fieldLabel('UserTitle','cibility_id').'</td><td>'; print $formcompany->select_civility($object->civility_id).'</td>'; print '<td colspan=2> </td></tr>'; } // Prospect/Customer - print '<tr><td width="25%"><span class="fieldrequired"><label for="customerprospect">'.$langs->trans('ProspectCustomer').'</label></span></td>'; + print '<tr><td width="25%">'.fieldLabel('ProspectCustomer','customerprospect',1).'</td>'; print '<td width="25%" class="maxwidthonsmartphone"><select class="flat" name="client" id="customerprospect">'; $selected=isset($_POST['client'])?GETPOST('client'):$object->client; if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) print '<option value="2"'.($selected==2?' selected':'').'>'.$langs->trans('Prospect').'</option>'; @@ -967,7 +1010,7 @@ else print '<option value="0"'.($selected==0?' selected':'').'>'.$langs->trans('NorProspectNorCustomer').'</option>'; print '</select></td>'; - print '<td width="25%"><label for="customer_code">'.$langs->trans('CustomerCode').'</label></td><td width="25%">'; + print '<td width="25%">'.fieldLabel('CustomerCode','customer_code').'</td><td width="25%">'; print '<table class="nobordernopadding"><tr><td>'; $tmpcode=$object->code_client; if (empty($tmpcode) && ! empty($modCodeClient->code_auto)) $tmpcode=$modCodeClient->getNextValue($object,0); @@ -982,10 +1025,10 @@ else { // Supplier print '<tr>'; - print '<td><span class="fieldrequired"><label for="fournisseur">'.$langs->trans('Supplier').'</label></span></td><td>'; + print '<td>'.fieldLabel('Supplier','fournisseur',1).'</td><td>'; print $form->selectyesno("fournisseur",(isset($_POST['fournisseur'])?GETPOST('fournisseur'):$object->fournisseur),1); print '</td>'; - print '<td><label for="supplier_code">'.$langs->trans('SupplierCode').'</label></td><td>'; + print '<td>'.fieldLabel('SupplierCode','supplier_code').'</td><td>'; print '<table class="nobordernopadding"><tr><td>'; $tmpcode=$object->code_fournisseur; if (empty($tmpcode) && ! empty($modCodeFournisseur->code_auto)) $tmpcode=$modCodeFournisseur->getNextValue($object,1); @@ -998,33 +1041,33 @@ else } // Status - print '<tr><td><label for="status">'.$langs->trans('Status').'</label></td><td colspan="3">'; + print '<tr><td>'.fieldLabel('Status','status').'</td><td colspan="3">'; print $form->selectarray('status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),1); print '</td></tr>'; // Barcode if (! empty($conf->barcode->enabled)) { - print '<tr><td><label for="barcode">'.$langs->trans('Gencod').'</label></td>'; + print '<tr><td>'.fieldLabel('Gencod','barcode').'</td>'; print '<td colspan="3"><input type="text" name="barcode" id="barcode" value="'.$object->barcode.'">'; print '</td></tr>'; } // Address - print '<tr><td valign="top"><label for="address">'.$langs->trans('Address').'</label></td>'; + print '<tr><td class="tdtop">'.fieldLabel('Address','address').'</td>'; print '<td colspan="3"><textarea name="address" id="address" cols="80" rows="'._ROWS_2.'" wrap="soft">'; print $object->address; print '</textarea></td></tr>'; // Zip / Town - print '<tr><td><label for="zipcode">'.$langs->trans('Zip').'</label></td><td>'; + print '<tr><td>'.fieldLabel('Zip','zipcode').'</td><td>'; print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'),6); - print '</td><td><label for="town">'.$langs->trans('Town').'</label></td><td>'; + print '</td><td>'.fieldLabel('Town','town').'</td><td>'; print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id')); print '</td></tr>'; // Country - print '<tr><td width="25%"><label for="selectcountry_id">'.$langs->trans('Country').'</label></td><td colspan="3" class="maxwidthonsmartphone">'; + print '<tr><td width="25%">'.fieldLabel('Country','selectcountry_id').'</td><td colspan="3" class="maxwidthonsmartphone">'; print $form->select_country((GETPOST('country_id')!=''?GETPOST('country_id'):$object->country_id)); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '</td></tr>'; @@ -1032,29 +1075,29 @@ else // State if (empty($conf->global->SOCIETE_DISABLE_STATE)) { - print '<tr><td><label for="state_id">'.$langs->trans('State').'</label></td><td colspan="3" class="maxwidthonsmartphone">'; + print '<tr><td>'.fieldLabel('State','state_id').'</td><td colspan="3" class="maxwidthonsmartphone">'; if ($object->country_id) print $formcompany->select_state($object->state_id,$object->country_code); else print $countrynotdefined; print '</td></tr>'; } // Email web - print '<tr><td><label for="email">'.$langs->trans('EMail').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').'</label></td>'; + print '<tr><td>'.fieldLabel('EMail','email').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').'</td>'; print '<td colspan="3"><input type="text" name="email" id="email" size="32" value="'.$object->email.'"></td></tr>'; - print '<tr><td><label for="url">'.$langs->trans('Web').'</label></td>'; + print '<tr><td>'.fieldLabel('Web','url').'</td>'; print '<td colspan="3"><input type="text" name="url" id="url" size="32" value="'.$object->url.'"></td></tr>'; // Skype if (! empty($conf->skype->enabled)) { - print '<tr><td><label for="skype">'.$langs->trans('Skype').'</label></td>'; + print '<tr><td>'.fieldLabel('Skype','skype').'</td>'; print '<td colspan="3"><input type="text" name="skype" id="skype" size="32" value="'.$object->skype.'"></td></tr>'; } // Phone / Fax - print '<tr><td><label for="phone">'.$langs->trans('Phone').'</label></td>'; + print '<tr><td>'.fieldLabel('Phone','phone').'</td>'; print '<td><input type="text" name="phone" id="phone" value="'.$object->phone.'"></td>'; - print '<td><label for="fax">'.$langs->trans('Fax').'</label></td>'; + print '<td>'.fieldLabel('Fax','fax').'</td>'; print '<td><input type="text" name="fax" id="fax" value="'.$object->fax.'"></td></tr>'; // Prof ids @@ -1070,9 +1113,9 @@ else $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY'; if(empty($conf->global->$idprof_mandatory)) - print '<td><label for="'.$key.'">'.$idprof.'</label></td><td>'; + print '<td>'.fieldLabel($idprof,$key).'</td><td>'; else - print '<td><span class="fieldrequired"><label for="'.$key.'">'.$idprof.'</label></td><td>'; + print '<td>'.fieldLabel($idprof,$key,1).'</td><td>'; print $formcompany->get_input_id_prof($i,$key,$object->$key,$object->country_code); print '</td>'; @@ -1084,11 +1127,11 @@ else if ($j % 2 == 1) print '<td colspan="2"></td></tr>'; // Assujeti TVA - print '<tr><td><label for="assujtva_value">'.$langs->trans('VATIsUsed').'</label></td>'; + print '<tr><td>'.fieldLabel('VATIsUsed','assujtva_value').'</td>'; print '<td>'; print $form->selectyesno('assujtva_value',1,1); // Assujeti par defaut en creation print '</td>'; - print '<td class="nowrap"><label for="intra_vat">'.$langs->trans('VATIntra').'</label></td>'; + print '<td class="nowrap">'.fieldLabel('VATIntra','inra_vat').'</td>'; print '<td class="nowrap">'; $s = '<input type="text" class="flat" name="tva_intra" id="intra_vat" size="12" maxlength="20" value="'.$object->tva_intra.'">'; @@ -1118,21 +1161,21 @@ else print '</tr>'; // Type - Size - print '<tr><td><label for="typent_id">'.$langs->trans("ThirdPartyType").'</label></td><td>'."\n"; + print '<tr><td>'.fieldLabel('ThirdPartyType','typent_id').'</td><td>'."\n"; print $form->selectarray("typent_id", $formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT)); - if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); + if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '</td>'; - print '<td><label for="effectif_id">'.$langs->trans("Staff").'</label></td><td>'; + print '<td>'.fieldLabel('Staff','effectif_id').'</td><td>'; print $form->selectarray("effectif_id", $formcompany->effectif_array(0), $object->effectif_id); - if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); + if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '</td></tr>'; // Legal Form - print '<tr><td><label for="legal_form">'.$langs->trans('JuridicalStatus').'</label></td>'; + print '<tr><td>'.fieldLabel('JuridicalStatus','legal_form').'</td>'; print '<td colspan="3" class="maxwidthonsmartphone">'; if ($object->country_id) { - print $formcompany->select_juridicalstatus($object->forme_juridique_code,$object->country_code); + print $formcompany->select_juridicalstatus($object->forme_juridique_code, $object->country_code, '', 'legal_form'); } else { @@ -1141,7 +1184,7 @@ else print '</td></tr>'; // Capital - print '<tr><td><label for="capital">'.$langs->trans('Capital').'</label></td>'; + print '<tr><td>'.fieldLabel('Capital','capital').'</td>'; print '<td colspan="3"><input type="text" name="capital" id="capital" size="10" value="'.$object->capital.'"> '; print '<span class="hideonsmartphone">'.$langs->trans("Currency".$conf->currency).'</span></td></tr>'; @@ -1171,7 +1214,7 @@ else if (! empty($conf->global->MAIN_MULTILANGS)) { - print '<tr><td><label for="default_lang">'.$langs->trans("DefaultLang").'</label></td><td colspan="3" class="maxwidthonsmartphone">'."\n"; + print '<tr><td>'.fieldLabel('DefaultLang','default_lang').'</td><td colspan="3" class="maxwidthonsmartphone">'."\n"; print $formadmin->select_language(($object->default_lang?$object->default_lang:$conf->global->MAIN_LANG_DEFAULT),'default_lang',0,0,1); print '</td>'; print '</tr>'; @@ -1181,7 +1224,7 @@ else { // Assign a Name print '<tr>'; - print '<td><label for="commercial_id">'.$langs->trans("AllocateCommercial").'</label></td>'; + print '<td>'.fieldLabel('AllocateCommercial','commercial_id').'</td>'; print '<td colspan="3" class="maxwidthonsmartphone">'; $form->select_users((! empty($object->commercial_id)?$object->commercial_id:$user->id),'commercial_id',1); // Add current user by default print '</td></tr>'; @@ -1191,12 +1234,21 @@ else if (!empty($conf->incoterm->enabled)) { print '<tr>'; - print '<td><label for="incoterm_id">'.$langs->trans("IncotermLabel").'</label></td>'; + print '<td>'.fieldLabel('IncotermLabel','incoterm_id').'</td>'; print '<td colspan="3" class="maxwidthonsmartphone">'; print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); print '</td></tr>'; } + // Categories + if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) + { + print '<tr><td class="toptd">'.fieldLabel('Categories','custcats').'</td><td colspan="3">'; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, 'parent', null, null, 1); + print $form->multiselectarray('custcats', $cate_arbo, GETPOST('custcats', 'array'), null, null, null, null, "90%"); + print "</td></tr>"; + } + // Other attributes $parameters=array('colspan' => ' colspan="3"', 'colspanvalue' => '3'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -1207,7 +1259,7 @@ else // Ajout du logo print '<tr class="hideonsmartphone">'; - print '<td><label for="photoinput">'.$langs->trans("Logo").'</label></td>'; + print '<td>'.fieldLabel('Logo','photoinput').'</td>'; print '<td colspan="3">'; print '<input class="flat" type="file" name="photo" id="photoinput" />'; print '</td>'; @@ -1279,10 +1331,10 @@ else $object->oldcopy=dol_clone($object); - if (GETPOST('nom')) + if (GETPOST('name')) { // We overwrite with values if posted - $object->name = GETPOST('nom', 'alpha'); + $object->name = GETPOST('name', 'alpha'); $object->prefix_comm = GETPOST('prefix_comm', 'alpha'); $object->client = GETPOST('client', 'int'); $object->code_client = GETPOST('code_client', 'alpha'); @@ -1412,13 +1464,13 @@ else print '<table class="border" width="100%">'; // Name - print '<tr><td><label for="name"><span class="fieldrequired">'.$langs->trans('ThirdPartyName').'</span></label></td>'; - print '<td colspan="3"><input type="text" size="60" maxlength="128" name="nom" id="name" value="'.dol_escape_htmltag($object->name).'" autofocus="autofocus"></td></tr>'; + print '<tr><td>'.fieldLabel('ThirdPartyName','name',1).'</td>'; + print '<td colspan="3"><input type="text" size="60" maxlength="128" name="name" id="name" value="'.dol_escape_htmltag($object->name).'" autofocus="autofocus"></td></tr>'; // Prefix if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field { - print '<tr><td><label for="prefix">'.$langs->trans("Prefix").'</label></td><td colspan="3">'; + print '<tr><td>'.fieldLabel('Prefix','prefix').'</td><td colspan="3">'; // It does not change the prefix mode using the auto numbering prefix if (($prefixCustomerIsUsed || $prefixSupplierIsUsed) && $object->prefix_comm) { @@ -1433,14 +1485,14 @@ else } // Prospect/Customer - print '<tr><td width="25%"><span class="fieldrequired"><label for="customerprospect">'.$langs->trans('ProspectCustomer').'</label></span></td>'; + print '<tr><td width="25%">'.fieldLabel('ProspectCustomer','customerprospect',1).'</td>'; print '<td width="25%"><select class="flat" name="client" id="customerprospect">'; if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) print '<option value="2"'.($object->client==2?' selected':'').'>'.$langs->trans('Prospect').'</option>'; if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print '<option value="3"'.($object->client==3?' selected':'').'>'.$langs->trans('ProspectCustomer').'</option>'; if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print '<option value="1"'.($object->client==1?' selected':'').'>'.$langs->trans('Customer').'</option>'; print '<option value="0"'.($object->client==0?' selected':'').'>'.$langs->trans('NorProspectNorCustomer').'</option>'; print '</select></td>'; - print '<td width="25%"><label for="customer_code">'.$langs->trans('CustomerCode').'</label></td><td width="25%">'; + print '<td width="25%">'.fieldLabel('CustomerCode','customer_code').'</td><td width="25%">'; print '<table class="nobordernopadding"><tr><td>'; if ((!$object->code_client || $object->code_client == -1) && $modCodeClient->code_auto) @@ -1470,10 +1522,10 @@ else if (! empty($conf->fournisseur->enabled) && ! empty($user->rights->fournisseur->lire)) { print '<tr>'; - print '<td><span class="fieldrequired"><label for="fournisseur">'.$langs->trans('Supplier').'</label></span></td><td>'; + print '<td>'.fieldLabel('Supplier','fournisseur',1).'</td><td>'; print $form->selectyesno("fournisseur",$object->fournisseur,1); print '</td>'; - print '<td><label for="supplier_code">'.$langs->trans('SupplierCode').'</label></td><td>'; + print '<td>'.fieldLabel('SupplierCode','supplier_code').'</td><td>'; print '<table class="nobordernopadding"><tr><td>'; if ((!$object->code_fournisseur || $object->code_fournisseur == -1) && $modCodeFournisseur->code_auto) @@ -1503,31 +1555,31 @@ else // Barcode if (! empty($conf->barcode->enabled)) { - print '<tr><td valign="top"><label for="barcode">'.$langs->trans('Gencod').'</label></td>'; + print '<tr><td class="tdtop">'.fieldLabel('Gencod','barcode').'</td>'; print '<td colspan="3"><input type="text" name="barcode" id="barcode" value="'.$object->barcode.'">'; print '</td></tr>'; } // Status - print '<tr><td><label for="status">'.$langs->trans("Status").'</label></td><td colspan="3">'; + print '<tr><td>'.fieldLabel('Status','status').'</td><td colspan="3">'; print $form->selectarray('status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$object->status); print '</td></tr>'; // Address - print '<tr><td valign="top"><label for="address">'.$langs->trans('Address').'</label></td>'; - print '<td colspan="3"><textarea name="address" id="address" cols="40" rows="3" wrap="soft">'; + print '<tr><td class="tdtop">'.fieldLabel('Address','address').'</td>'; + print '<td colspan="3"><textarea name="address" id="address" cols="80" rows="3" wrap="soft">'; print $object->address; print '</textarea></td></tr>'; // Zip / Town - print '<tr><td><label for="zipcode">'.$langs->trans('Zip').'</label></td><td>'; + print '<tr><td>'.fieldLabel('Zip','zipcode').'</td><td>'; print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'),6); - print '</td><td><label for="town">'.$langs->trans('Town').'</label></td><td>'; + print '</td><td>'.fieldLabel('Town','town').'</td><td>'; print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id')); print '</td></tr>'; // Country - print '<tr><td><label for="selectcountry_id">'.$langs->trans('Country').'</label></td><td colspan="3">'; + print '<tr><td>'.fieldLabel('Country','selectcounty_id').'</td><td colspan="3">'; print $form->select_country((GETPOST('country_id')!=''?GETPOST('country_id'):$object->country_id),'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '</td></tr>'; @@ -1535,28 +1587,28 @@ else // State if (empty($conf->global->SOCIETE_DISABLE_STATE)) { - print '<tr><td><label for="state_id">'.$langs->trans('State').'</label></td><td colspan="3">'; + print '<tr><td>'.fieldLabel('State','state_id').'</td><td colspan="3">'; print $formcompany->select_state($object->state_id,$object->country_code); print '</td></tr>'; } // EMail / Web - print '<tr><td><label for="email">'.$langs->trans('EMail').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').'</label></td>'; + print '<tr><td>'.fieldLabel('EMail','email',(! empty($conf->global->SOCIETE_MAIL_REQUIRED))).'</td>'; print '<td colspan="3"><input type="text" name="email" id="email" size="32" value="'.$object->email.'"></td></tr>'; - print '<tr><td><label for="url">'.$langs->trans('Web').'</label></td>'; + print '<tr><td>'.fieldLabel('Web','url').'</td>'; print '<td colspan="3"><input type="text" name="url" id="url" size="32" value="'.$object->url.'"></td></tr>'; // Skype if (! empty($conf->skype->enabled)) { - print '<tr><td><label for="skype">'.$langs->trans('Skype').'</label></td>'; + print '<tr><td>'.fieldLabel('Skype','skype').'</td>'; print '<td colspan="3"><input type="text" name="skype" id="skype" size="32" value="'.$object->skype.'"></td></tr>'; } // Phone / Fax - print '<tr><td><label for="phone">'.$langs->trans('Phone').'</label></td>'; + print '<tr><td>'.fieldLabel('Phone','phone').'</td>'; print '<td><input type="text" name="phone" id="phone" value="'.$object->phone.'"></td>'; - print '<td><label for="fax">'.$langs->trans('Fax').'</label></td>'; + print '<td>'.fieldLabel('Fax','fax').'</td>'; print '<td><input type="text" name="fax" id="fax" value="'.$object->fax.'"></td></tr>'; // Prof ids @@ -1572,9 +1624,9 @@ else $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY'; if(empty($conf->global->$idprof_mandatory)) - print '<td><label for="'.$key.'">'.$idprof.'</label></td><td>'; + print '<td>'.fieldLabel($idprof,$key).'</td><td>'; else - print '<td><span class="fieldrequired"><label for="'.$key.'">'.$idprof.'</label></td><td>'; + print '<td><span class="fieldrequired">'.fieldLabel($idprof,$key).'</td><td>'; print $formcompany->get_input_id_prof($i,$key,$object->$key,$object->country_code); print '</td>'; @@ -1586,12 +1638,12 @@ else if ($j % 2 == 1) print '<td colspan="2"></td></tr>'; // VAT payers - print '<tr><td><label for="assjtva_value">'.$langs->trans('VATIsUsed').'</label></td><td>'; + print '<tr><td>'.fieldLabel('VATIsUsed','assujtva_value').'</td><td>'; print $form->selectyesno('assujtva_value',$object->tva_assuj,1); print '</td>'; // VAT Code - print '<td><label for="intra_vat">'.$langs->trans('VATIntra').'</label></td>'; + print '<td>'.fieldLabel('VATIntra','intra_vat').'</td>'; print '<td>'; $s ='<input type="text" class="flat" name="tva_intra" id="intra_vat" size="12" maxlength="20" value="'.$object->tva_intra.'">'; @@ -1624,7 +1676,7 @@ else //TODO: Place into a function to control showing by country or study better option if($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj=="1") { - print '<tr><td><label for="localtax1assuj_value">'.$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code).'</label></td><td>'; + print '<tr><td>'.fieldLabel($langs->transcountry("LocalTax1IsUsed",$mysoc->country_code),'localtax1assuj_value').'</td><td>'; print $form->selectyesno('localtax1assuj_value',$object->localtax1_assuj,1); if(! isOnlyOneLocalTax(1)) { @@ -1633,7 +1685,7 @@ else print '</span>'; } - print '</td><td><label for="localtax2assuj_value">'.$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code).'</label></td><td>'; + print '</td><td>'.fieldLabel($langs->transcountry("LocalTax2IsUsed",$mysoc->country_code),'localtax2assuj_value').'</td><td>'; print $form->selectyesno('localtax2assuj_value',$object->localtax2_assuj,1); if (! isOnlyOneLocalTax(2)) { @@ -1646,7 +1698,7 @@ else } elseif($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj!="1") { - print '<tr><td><label for="localtax1assuj_value">'.$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code).'</label></td><td colspan="3">'; + print '<tr><td>'.fieldLabel($langs->transcountry("LocalTax1IsUsed",$mysoc->country_code),'localtax1assuj_value').'</td><td colspan="3">'; print $form->selectyesno('localtax1assuj_value',$object->localtax1_assuj,1); if(! isOnlyOneLocalTax(1)) { @@ -1659,7 +1711,7 @@ else } elseif($mysoc->localtax2_assuj=="1" && $mysoc->localtax1_assuj!="1") { - print '<tr><td><label for="localtax2assuj_value">'.$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code).'</label></td><td colspan="3">'; + print '<tr><td>'.fieldLabel($langs->transcountry("LocalTax2IsUsed",$mysoc->country_code),'localtax2assuj_value').'</td><td colspan="3">'; print $form->selectyesno('localtax2assuj_value',$object->localtax2_assuj,1); if(! isOnlyOneLocalTax(2)) { @@ -1671,33 +1723,48 @@ else } // Type - Size - print '<tr><td><label for="typent_id">'.$langs->trans("ThirdPartyType").'</label></td><td>'; + print '<tr><td>'.fieldLabel('ThirdPartyType','typent_id').'</td><td>'; print $form->selectarray("typent_id",$formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT)); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '</td>'; - print '<td><label for="effectif_id">'.$langs->trans("Staff").'</label></td><td>'; + print '<td>'.fieldLabel('Staff','effectif_id').'</td><td>'; print $form->selectarray("effectif_id",$formcompany->effectif_array(0), $object->effectif_id); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '</td></tr>'; // Juridical type - print '<tr><td><label for="legal_form">'.$langs->trans('JuridicalStatus').'</label></td><td colspan="3">'; - print $formcompany->select_juridicalstatus($object->forme_juridique_code,$object->country_code,'',0); + print '<tr><td>'.fieldLabel('JuridicalStatus','legal_form').'</td><td colspan="3">'; + print $formcompany->select_juridicalstatus($object->forme_juridique_code, $object->country_code, '', 'legal_form'); print '</td></tr>'; // Capital - print '<tr><td><label for="capital">'.$langs->trans("Capital").'</label></td>'; + print '<tr><td>'.fieldLabel('Capital','capital').'</td>'; print '<td colspan="3"><input type="text" name="capital" id="capital" size="10" value="'.$object->capital.'"><font class="hideonsmartphone">'.$langs->trans("Currency".$conf->currency).'</font></td></tr>'; // Default language if (! empty($conf->global->MAIN_MULTILANGS)) { - print '<tr><td><label for="default_lang">'.$langs->trans("DefaultLang").'</label></td><td colspan="3">'."\n"; + print '<tr><td>'.fieldLabel('DefaultLang','default_lang').'</td><td colspan="3">'."\n"; print $formadmin->select_language($object->default_lang,'default_lang',0,0,1); print '</td>'; print '</tr>'; } + // Categories + if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) + { + print '<tr><td>'.fieldLabel('Categories', 'custcats').'</td>'; + print '<td colspan="3">'; + $cate_arbo = $form->select_all_categories( Categorie::TYPE_CUSTOMER, null, null, null, null, 1); + $c = new Categorie( $db ); + $cats = $c->containing( $object->id, Categorie::TYPE_CUSTOMER ); + foreach ($cats as $cat) { + $arrayselected[] = $cat->id; + } + print $form->multiselectarray( 'custcats', $cate_arbo, $arrayselected, '', 0, '', 0, '90%'); + print "</td></tr>"; + } + // Other attributes $parameters=array('colspan' => ' colspan="3"', 'colspanvalue' => '3'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -1708,9 +1775,9 @@ else // Webservices url/key if (!empty($conf->syncsupplierwebservices->enabled)) { - print '<tr><td><label for="webservices_url">'.$langs->trans('WebServiceURL').'</label></td>'; + print '<tr><td>'.fieldLabel('WebServiceURL','webservices_url').'</td>'; print '<td><input type="text" name="webservices_url" id="webservices_url" size="32" value="'.$object->webservices_url.'"></td>'; - print '<td><label for="webservices_key">'.$langs->trans('WebServiceKey').'</label></td>'; + print '<td>'.fieldLabel('WebServiceKey','webservices_key').'</td>'; print '<td><input type="text" name="webservices_key" id="webservices_key" size="32" value="'.$object->webservices_key.'"></td></tr>'; } @@ -1718,7 +1785,7 @@ else if (!empty($conf->incoterm->enabled)) { print '<tr>'; - print '<td><label for="incoterm_id">'.$langs->trans("IncotermLabel").'</label></td>'; + print '<td>'.fieldLabel('IncotermLabel','incoterm_id').'</td>'; print '<td colspan="3" class="maxwidthonsmartphone">'; print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); print '</td></tr>'; @@ -1726,7 +1793,7 @@ else // Logo print '<tr class="hideonsmartphone">'; - print '<td><label for="photoinput">'.$langs->trans("Logo").'</label></td>'; + print '<td>'.fieldLabel('Logo','photoinput').'</td>'; print '<td colspan="3">'; if ($object->logo) print $form->showphoto('societe',$object); $caneditfield=1; @@ -1734,7 +1801,7 @@ else { if ($object->logo) print "<br>\n"; print '<table class="nobordernopadding">'; - if ($object->logo) print '<tr><td><input type="checkbox" class="flat" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>'; + if ($object->logo) print '<tr><td><input type="checkbox" class="flat" name="deletephoto photodelete" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>'; //print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>'; print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>'; print '</table>'; @@ -1772,21 +1839,21 @@ else // Confirm delete third party if ($action == 'delete' || ($conf->use_javascript_ajax && empty($conf->dol_use_jmobile))) { - print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$object->id,$langs->trans("DeleteACompany"),$langs->trans("ConfirmDeleteCompany"),"confirm_delete",'',0,"action-delete"); + print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$object->id, $langs->trans("DeleteACompany"), $langs->trans("ConfirmDeleteCompany"), "confirm_delete", '', 0, "action-delete"); } - if ($action == 'merge') { - $form = new Form($db); - - $options = array( + if ($action == 'merge') + { + $formquestion = array( array( - 'label' => $langs->trans('MergeOriginThirdparty'), + 'name' => 'soc_origin', + 'label' => $langs->trans('MergeOriginThirdparty'), 'type' => 'other', - 'value' => $form->select_company('', 'soc_origin', 's.rowid != '.$object->id, 1) + 'value' => $form->select_company('', 'soc_origin', 's.rowid != '.$object->id) ) ); - print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$object->id,$langs->trans("MergeThirdparties"),$langs->trans("ConfirmMergeThirdparties"),"confirm_merge",$options,'',1); + print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$object->id, $langs->trans("MergeThirdparties"), $langs->trans("ConfirmMergeThirdparties"), "confirm_merge", $formquestion, 'no', 1); } dol_htmloutput_errors($error,$errors); @@ -1799,7 +1866,7 @@ else // Ref /* - print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>'; + print '<tr><td width="25%">'.$langs->trans("Ref").'</td>'; print '<td colspan="2">'; print $fuser->id; print '</td>'; @@ -1885,14 +1952,14 @@ else print '</tr>'; // Address - print "<tr><td valign=\"top\">".$langs->trans('Address').'</td><td colspan="'.(2+(($showlogo || $showbarcode)?0:1)).'">'; + print '<tr><td class="tdtop">'.$langs->trans('Address').'</td><td colspan="'.(2+(($showlogo || $showbarcode)?0:1)).'">'; dol_print_address($object->address,'gmap','thirdparty',$object->id); - print "</td></tr>"; + print '</td></tr>'; // Zip / Town print '<tr><td width="25%">'.$langs->trans('Zip').' / '.$langs->trans("Town").'</td><td colspan="'.(2+(($showlogo || $showbarcode)?0:1)).'">'; print $object->zip.($object->zip && $object->town?" / ":"").$object->town; - print "</td>"; + print '</td>'; print '</tr>'; // Country @@ -2124,6 +2191,15 @@ else print '</td></tr>'; } + // Categories + if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) + { + print '<tr><td>' . $langs->trans( "Categories" ) . '</td>'; + print '<td colspan="3">'; + print $form->showCategories( $object->id, 'customer', 1 ); + print "</td></tr>"; + } + // Incoterms if (!empty($conf->incoterm->enabled)) { @@ -2202,7 +2278,7 @@ else if (! empty($conf->adherent->enabled)) { $langs->load("members"); - print '<tr><td width="25%" valign="top">'.$langs->trans("LinkedToDolibarrMember").'</td>'; + print '<tr><td width="25%" class="tdtop">'.$langs->trans("LinkedToDolibarrMember").'</td>'; print '<td colspan="3">'; $adh=new Adherent($db); $result=$adh->fetch('','',$object->id); diff --git a/htdocs/societe/societe.php b/htdocs/societe/societe.php index 8a5a77cbb0b83086cb0720a92942e1ca0fc9f701..9ab7e921faa6f75fffd9f7bfa3ee30fb26a59a97 100644 --- a/htdocs/societe/societe.php +++ b/htdocs/societe/societe.php @@ -210,12 +210,12 @@ if (! $user->rights->fournisseur->lire) $sql.=" AND (s.fournisseur <> 1 OR s.cli // Insert sale filter if ($search_sale) { - $sql .= " AND sc.fk_user = ".$search_sale; + $sql .= " AND sc.fk_user = ".$db->escape($search_sale); } // Insert categ filter if ($search_categ) { - $sql .= " AND cs.fk_categorie = ".$search_categ; + $sql .= " AND cs.fk_categorie = ".$db->escape($search_categ); } if ($search_nom_only) { @@ -272,12 +272,12 @@ if ($resql) $num = $db->num_rows($resql); $i = 0; - $params = "&socname=".$socname."&search_nom=".$search_nom."&search_town=".$search_town; - $params.= ($sbarcode?"&sbarcode=".$sbarcode:""); - $params.= '&search_idprof1='.$search_idprof1; - $params.= '&search_idprof2='.$search_idprof2; - $params.= '&search_idprof3='.$search_idprof3; - $params.= '&search_idprof4='.$search_idprof4; + $params = "&socname=".htmlspecialchars($socname)."&search_nom=".htmlspecialchars($search_nom)."&search_town=".htmlspecialchars($search_town); + $params.= ($sbarcode?"&sbarcode=".htmlspecialchars($sbarcode):""); + $params.= '&search_idprof1='.htmlspecialchars($search_idprof1); + $params.= '&search_idprof2='.htmlspecialchars($search_idprof2); + $params.= '&search_idprof3='.htmlspecialchars($search_idprof3); + $params.= '&search_idprof4='.htmlspecialchars($search_idprof4); print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$params,$sortfield,$sortorder,'',$num,$nbtotalofrecords); @@ -338,7 +338,7 @@ if ($resql) print_liste_field_titre($form->textwithpicto($langs->trans("ProfId2Short"),$textprofid[2],1,0),$_SERVER["PHP_SELF"],"s.siret","",$params,'class="nowrap"',$sortfield,$sortorder); print_liste_field_titre($form->textwithpicto($langs->trans("ProfId3Short"),$textprofid[3],1,0),$_SERVER["PHP_SELF"],"s.ape","",$params,'class="nowrap"',$sortfield,$sortorder); print_liste_field_titre($form->textwithpicto($langs->trans("ProfId4Short"),$textprofid[4],1,0),$_SERVER["PHP_SELF"],"s.idprof4","",$params,'class="nowrap"',$sortfield,$sortorder); - print '<td></td>'; + print_liste_field_titre(''); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$params,'align="right"',$sortfield,$sortorder); print "</tr>\n"; @@ -348,34 +348,34 @@ if ($resql) print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; if (! empty($search_nom_only) && empty($search_nom)) $search_nom=$search_nom_only; - print '<input class="flat" type="text" name="search_nom" value="'.$search_nom.'">'; + print '<input class="flat" type="text" name="search_nom" value="'.htmlspecialchars($search_nom).'">'; print '</td>'; // Barcode if (! empty($conf->barcode->enabled)) { - print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="sbarcode" size="6" value="'.$sbarcode.'">'; - print '</td>'; + print '<td class="liste_titre">'; + print '<input class="flat" type="text" name="sbarcode" size="6" value="'.htmlspecialchars($sbarcode).'">'; + print '</td>'; } // Town print '<td class="liste_titre">'; - print '<input class="flat" size="10" type="text" name="search_town" value="'.$search_town.'">'; + print '<input class="flat" size="10" type="text" name="search_town" value="'.htmlspecialchars($search_town).'">'; print '</td>'; // IdProf1 print '<td class="liste_titre">'; - print '<input class="flat" size="4" type="text" name="search_idprof1" value="'.$search_idprof1.'">'; + print '<input class="flat" size="4" type="text" name="search_idprof1" value="'.htmlspecialchars($search_idprof1).'">'; print '</td>'; // IdProf2 print '<td class="liste_titre">'; - print '<input class="flat" size="4" type="text" name="search_idprof2" value="'.$search_idprof2.'">'; + print '<input class="flat" size="4" type="text" name="search_idprof2" value="'.htmlspecialchars($search_idprof2).'">'; print '</td>'; // IdProf3 print '<td class="liste_titre">'; - print '<input class="flat" size="4" type="text" name="search_idprof3" value="'.$search_idprof3.'">'; + print '<input class="flat" size="4" type="text" name="search_idprof3" value="'.htmlspecialchars($search_idprof3).'">'; print '</td>'; // IdProf4 print '<td class="liste_titre">'; - print '<input class="flat" size="4" type="text" name="search_idprof4" value="'.$search_idprof4.'">'; + print '<input class="flat" size="4" type="text" name="search_idprof4" value="'.htmlspecialchars($search_idprof4).'">'; print '</td>'; // Type (customer/prospect/supplier) print '<td class="liste_titre" align="middle">'; diff --git a/htdocs/theme/amarok/img/object_gravatar.png b/htdocs/theme/amarok/img/object_gravatar.png new file mode 100644 index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7 Binary files /dev/null and b/htdocs/theme/amarok/img/object_gravatar.png differ diff --git a/htdocs/theme/amarok/img/title_accountancy.png b/htdocs/theme/amarok/img/title_accountancy.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7c2a412c60a614c7ebd91e0e06df4ebfb46191 Binary files /dev/null and b/htdocs/theme/amarok/img/title_accountancy.png differ diff --git a/htdocs/theme/amarok/img/title_bank.png b/htdocs/theme/amarok/img/title_bank.png new file mode 100644 index 0000000000000000000000000000000000000000..034a8d0c5e4a4264c8d3dc0b9185eff071087d54 Binary files /dev/null and b/htdocs/theme/amarok/img/title_bank.png differ diff --git a/htdocs/theme/amarok/img/title_commercial.png b/htdocs/theme/amarok/img/title_commercial.png new file mode 100644 index 0000000000000000000000000000000000000000..46394177698fb286ee15fd47544bf6d0de642807 Binary files /dev/null and b/htdocs/theme/amarok/img/title_commercial.png differ diff --git a/htdocs/theme/amarok/img/title_companies.png b/htdocs/theme/amarok/img/title_companies.png new file mode 100644 index 0000000000000000000000000000000000000000..b2539dba849a6f4a1ff231d2004df2b39607f582 Binary files /dev/null and b/htdocs/theme/amarok/img/title_companies.png differ diff --git a/htdocs/theme/amarok/img/title_generic.png b/htdocs/theme/amarok/img/title_generic.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2243275490d5769ba220fd3ee00bd9c3175a3d Binary files /dev/null and b/htdocs/theme/amarok/img/title_generic.png differ diff --git a/htdocs/theme/amarok/img/title_home.png b/htdocs/theme/amarok/img/title_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e9273e727f59a5eefc3516fac772d8326f64804a Binary files /dev/null and b/htdocs/theme/amarok/img/title_home.png differ diff --git a/htdocs/theme/amarok/img/title_products.png b/htdocs/theme/amarok/img/title_products.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a Binary files /dev/null and b/htdocs/theme/amarok/img/title_products.png differ diff --git a/htdocs/theme/amarok/img/title_project.png b/htdocs/theme/amarok/img/title_project.png new file mode 100644 index 0000000000000000000000000000000000000000..05d8ea630b88abf9e2bc09ed311fb223e818231c Binary files /dev/null and b/htdocs/theme/amarok/img/title_project.png differ diff --git a/htdocs/theme/amarok/img/title_setup.png b/htdocs/theme/amarok/img/title_setup.png new file mode 100644 index 0000000000000000000000000000000000000000..d7548d28709860acebe173ed2ca4954678f950f6 Binary files /dev/null and b/htdocs/theme/amarok/img/title_setup.png differ diff --git a/htdocs/theme/auguria/img/object_gravatar.png b/htdocs/theme/auguria/img/object_gravatar.png new file mode 100644 index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7 Binary files /dev/null and b/htdocs/theme/auguria/img/object_gravatar.png differ diff --git a/htdocs/theme/auguria/img/title_accountancy.png b/htdocs/theme/auguria/img/title_accountancy.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7c2a412c60a614c7ebd91e0e06df4ebfb46191 Binary files /dev/null and b/htdocs/theme/auguria/img/title_accountancy.png differ diff --git a/htdocs/theme/auguria/img/title_bank.png b/htdocs/theme/auguria/img/title_bank.png new file mode 100644 index 0000000000000000000000000000000000000000..034a8d0c5e4a4264c8d3dc0b9185eff071087d54 Binary files /dev/null and b/htdocs/theme/auguria/img/title_bank.png differ diff --git a/htdocs/theme/auguria/img/title_commercial.png b/htdocs/theme/auguria/img/title_commercial.png new file mode 100644 index 0000000000000000000000000000000000000000..46394177698fb286ee15fd47544bf6d0de642807 Binary files /dev/null and b/htdocs/theme/auguria/img/title_commercial.png differ diff --git a/htdocs/theme/auguria/img/title_companies.png b/htdocs/theme/auguria/img/title_companies.png new file mode 100644 index 0000000000000000000000000000000000000000..b2539dba849a6f4a1ff231d2004df2b39607f582 Binary files /dev/null and b/htdocs/theme/auguria/img/title_companies.png differ diff --git a/htdocs/theme/auguria/img/title_generic.png b/htdocs/theme/auguria/img/title_generic.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2243275490d5769ba220fd3ee00bd9c3175a3d Binary files /dev/null and b/htdocs/theme/auguria/img/title_generic.png differ diff --git a/htdocs/theme/auguria/img/title_home.png b/htdocs/theme/auguria/img/title_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e9273e727f59a5eefc3516fac772d8326f64804a Binary files /dev/null and b/htdocs/theme/auguria/img/title_home.png differ diff --git a/htdocs/theme/auguria/img/title_products.png b/htdocs/theme/auguria/img/title_products.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a Binary files /dev/null and b/htdocs/theme/auguria/img/title_products.png differ diff --git a/htdocs/theme/auguria/img/title_project.png b/htdocs/theme/auguria/img/title_project.png new file mode 100644 index 0000000000000000000000000000000000000000..05d8ea630b88abf9e2bc09ed311fb223e818231c Binary files /dev/null and b/htdocs/theme/auguria/img/title_project.png differ diff --git a/htdocs/theme/auguria/img/title_setup.png b/htdocs/theme/auguria/img/title_setup.png new file mode 100644 index 0000000000000000000000000000000000000000..d7548d28709860acebe173ed2ca4954678f950f6 Binary files /dev/null and b/htdocs/theme/auguria/img/title_setup.png differ diff --git a/htdocs/theme/bureau2crea/img/object_gravatar.png b/htdocs/theme/bureau2crea/img/object_gravatar.png new file mode 100644 index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7 Binary files /dev/null and b/htdocs/theme/bureau2crea/img/object_gravatar.png differ diff --git a/htdocs/theme/bureau2crea/img/title_accountancy.png b/htdocs/theme/bureau2crea/img/title_accountancy.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7c2a412c60a614c7ebd91e0e06df4ebfb46191 Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_accountancy.png differ diff --git a/htdocs/theme/bureau2crea/img/title_bank.png b/htdocs/theme/bureau2crea/img/title_bank.png new file mode 100644 index 0000000000000000000000000000000000000000..034a8d0c5e4a4264c8d3dc0b9185eff071087d54 Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_bank.png differ diff --git a/htdocs/theme/bureau2crea/img/title_commercial.png b/htdocs/theme/bureau2crea/img/title_commercial.png new file mode 100644 index 0000000000000000000000000000000000000000..46394177698fb286ee15fd47544bf6d0de642807 Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_commercial.png differ diff --git a/htdocs/theme/bureau2crea/img/title_companies.png b/htdocs/theme/bureau2crea/img/title_companies.png new file mode 100644 index 0000000000000000000000000000000000000000..b2539dba849a6f4a1ff231d2004df2b39607f582 Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_companies.png differ diff --git a/htdocs/theme/bureau2crea/img/title_generic.png b/htdocs/theme/bureau2crea/img/title_generic.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2243275490d5769ba220fd3ee00bd9c3175a3d Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_generic.png differ diff --git a/htdocs/theme/bureau2crea/img/title_home.png b/htdocs/theme/bureau2crea/img/title_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e9273e727f59a5eefc3516fac772d8326f64804a Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_home.png differ diff --git a/htdocs/theme/bureau2crea/img/title_products.png b/htdocs/theme/bureau2crea/img/title_products.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_products.png differ diff --git a/htdocs/theme/bureau2crea/img/title_project.png b/htdocs/theme/bureau2crea/img/title_project.png new file mode 100644 index 0000000000000000000000000000000000000000..05d8ea630b88abf9e2bc09ed311fb223e818231c Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_project.png differ diff --git a/htdocs/theme/bureau2crea/img/title_setup.png b/htdocs/theme/bureau2crea/img/title_setup.png new file mode 100644 index 0000000000000000000000000000000000000000..d7548d28709860acebe173ed2ca4954678f950f6 Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_setup.png differ diff --git a/htdocs/theme/cameleo/img/object_gravatar.png b/htdocs/theme/cameleo/img/object_gravatar.png new file mode 100644 index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7 Binary files /dev/null and b/htdocs/theme/cameleo/img/object_gravatar.png differ diff --git a/htdocs/theme/cameleo/img/title_accountancy.png b/htdocs/theme/cameleo/img/title_accountancy.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7c2a412c60a614c7ebd91e0e06df4ebfb46191 Binary files /dev/null and b/htdocs/theme/cameleo/img/title_accountancy.png differ diff --git a/htdocs/theme/cameleo/img/title_bank.png b/htdocs/theme/cameleo/img/title_bank.png new file mode 100644 index 0000000000000000000000000000000000000000..034a8d0c5e4a4264c8d3dc0b9185eff071087d54 Binary files /dev/null and b/htdocs/theme/cameleo/img/title_bank.png differ diff --git a/htdocs/theme/cameleo/img/title_commercial.png b/htdocs/theme/cameleo/img/title_commercial.png new file mode 100644 index 0000000000000000000000000000000000000000..46394177698fb286ee15fd47544bf6d0de642807 Binary files /dev/null and b/htdocs/theme/cameleo/img/title_commercial.png differ diff --git a/htdocs/theme/cameleo/img/title_companies.png b/htdocs/theme/cameleo/img/title_companies.png new file mode 100644 index 0000000000000000000000000000000000000000..b2539dba849a6f4a1ff231d2004df2b39607f582 Binary files /dev/null and b/htdocs/theme/cameleo/img/title_companies.png differ diff --git a/htdocs/theme/cameleo/img/title_generic.png b/htdocs/theme/cameleo/img/title_generic.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2243275490d5769ba220fd3ee00bd9c3175a3d Binary files /dev/null and b/htdocs/theme/cameleo/img/title_generic.png differ diff --git a/htdocs/theme/cameleo/img/title_home.png b/htdocs/theme/cameleo/img/title_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e9273e727f59a5eefc3516fac772d8326f64804a Binary files /dev/null and b/htdocs/theme/cameleo/img/title_home.png differ diff --git a/htdocs/theme/cameleo/img/title_products.png b/htdocs/theme/cameleo/img/title_products.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a Binary files /dev/null and b/htdocs/theme/cameleo/img/title_products.png differ diff --git a/htdocs/theme/cameleo/img/title_project.png b/htdocs/theme/cameleo/img/title_project.png new file mode 100644 index 0000000000000000000000000000000000000000..05d8ea630b88abf9e2bc09ed311fb223e818231c Binary files /dev/null and b/htdocs/theme/cameleo/img/title_project.png differ diff --git a/htdocs/theme/cameleo/img/title_setup.png b/htdocs/theme/cameleo/img/title_setup.png new file mode 100644 index 0000000000000000000000000000000000000000..d7548d28709860acebe173ed2ca4954678f950f6 Binary files /dev/null and b/htdocs/theme/cameleo/img/title_setup.png differ diff --git a/htdocs/theme/common/ical.gif b/htdocs/theme/common/ical.gif old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/logo_cerfa.png b/htdocs/theme/common/logo_cerfa.png new file mode 100644 index 0000000000000000000000000000000000000000..0db57c205ab11248aafeebd6fba99ec991b02cf4 Binary files /dev/null and b/htdocs/theme/common/logo_cerfa.png differ diff --git a/htdocs/theme/common/rss.gif b/htdocs/theme/common/rss.gif old mode 100755 new mode 100644 diff --git a/htdocs/theme/common/vcal.gif b/htdocs/theme/common/vcal.gif old mode 100755 new mode 100644 diff --git a/htdocs/theme/eldy/img/delete.png b/htdocs/theme/eldy/img/delete.png index 2482989b0cc5112cf6608b337b1480f45f866081..aff2c5f11994ed4a24c87bf0a5f0b69af1a2a1b3 100644 Binary files a/htdocs/theme/eldy/img/delete.png and b/htdocs/theme/eldy/img/delete.png differ diff --git a/htdocs/theme/eldy/img/help.png b/htdocs/theme/eldy/img/help.png index 12e6cd655d6630345cd24c74b5e85bec38524c1a..2c56e645a01cb767febeb54c59743603f8c21d88 100644 Binary files a/htdocs/theme/eldy/img/help.png and b/htdocs/theme/eldy/img/help.png differ diff --git a/htdocs/theme/eldy/img/info.png b/htdocs/theme/eldy/img/info.png index 12e6cd655d6630345cd24c74b5e85bec38524c1a..78650eb53645eb397f4174b7262c2e581db1671d 100644 Binary files a/htdocs/theme/eldy/img/info.png and b/htdocs/theme/eldy/img/info.png differ diff --git a/htdocs/theme/eldy/img/info_black.png b/htdocs/theme/eldy/img/info_black.png new file mode 100644 index 0000000000000000000000000000000000000000..741dabd5e193196549a2a1296760643eb9b11c00 Binary files /dev/null and b/htdocs/theme/eldy/img/info_black.png differ diff --git a/htdocs/theme/eldy/img/object_gravatar.png b/htdocs/theme/eldy/img/object_gravatar.png new file mode 100644 index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7 Binary files /dev/null and b/htdocs/theme/eldy/img/object_gravatar.png differ diff --git a/htdocs/theme/eldy/img/object_printer.png b/htdocs/theme/eldy/img/object_printer.png new file mode 100644 index 0000000000000000000000000000000000000000..8722632547c5b7179d68c6e3e670131c72c80bd3 Binary files /dev/null and b/htdocs/theme/eldy/img/object_printer.png differ diff --git a/htdocs/theme/eldy/img/printer.png b/htdocs/theme/eldy/img/printer.png index 6e8bcbf98a57f1c6e80aa31b21e15677e3796778..a81e2fa0df60af0e3719f655335833d9d8172810 100644 Binary files a/htdocs/theme/eldy/img/printer.png and b/htdocs/theme/eldy/img/printer.png differ diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index f8ead18d96d01f4d40d55ecd6acce4acc8133e20..71b6bab0a2c65f4b96c84060410dc56c8b01681b 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2007-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com> @@ -105,32 +105,33 @@ $colorbacklineimpairhover=(230+round(($isred+$isgreen+$isblue)/9)).','.(230+roun $colorbacklinepair1=(244+round($isred/3)).','.(244+round($isgreen/3)).','.(244+round($isblue/3)); // line pair $colorbacklinepair2=(250+round($isred/3)).','.(250+round($isgreen/3)).','.(250+round($isblue/3)); // line pair $colorbacklinepairhover=(230+round(($isred+$isgreen+$isblue)/9)).','.(230+round(($isred+$isgreen+$isblue)/9)).','.(230+round(($isred+$isgreen+$isblue)/9)); // line pair -$colorbackbody='#f3f3f3'; +$colorbackbody='243,243,243'; $colortext='40,40,40'; $fontsize='12'; $fontsizesmaller='11'; +$usegradient=1; // Eldy colors if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) { - $conf->global->THEME_ELDY_TOPMENU_BACK1='140,160,185'; // topmenu + $conf->global->THEME_ELDY_TOPMENU_BACK1='140,150,180'; // topmenu (140,160,185) $conf->global->THEME_ELDY_TOPMENU_BACK2='236,236,236'; $conf->global->THEME_ELDY_VERMENU_BACK1='255,255,255'; // vmenu $conf->global->THEME_ELDY_VERMENU_BACK2='255,255,255'; - $conf->global->THEME_ELDY_BACKTITLE1='140,160,185'; // title of arrays TO MATCH ELDY - //$conf->global->THEME_ELDY_BACKTITLE1='240,240,240'; // title of arrays TO MATCH BOOTSTRAP + $conf->global->THEME_ELDY_BACKTITLE1='140,150,180'; // title of arrays TO MATCH ELDY (140,160,185) + //$conf->global->THEME_ELDY_BACKTITLE1='230,230,230'; // title of arrays TO MATCH BOOTSTRAP $conf->global->THEME_ELDY_BACKTITLE2='230,230,230'; $conf->global->THEME_ELDY_BACKTABCARD1='255,255,255'; $conf->global->THEME_ELDY_BACKTABCARD2='210,210,210'; // card $conf->global->THEME_ELDY_BACKTABACTIVE='234,234,234'; - $conf->global->THEME_ELDY_BACKBODY='#f3f3f3;'; + $conf->global->THEME_ELDY_BACKBODY='243,243,243;'; $conf->global->THEME_ELDY_LINEIMPAIR1='255,255,255'; $conf->global->THEME_ELDY_LINEIMPAIR2='255,255,255'; $conf->global->THEME_ELDY_LINEIMPAIRHOVER='238,246,252'; $conf->global->THEME_ELDY_LINEPAIR1='242,242,242'; $conf->global->THEME_ELDY_LINEPAIR2='248,248,248'; $conf->global->THEME_ELDY_LINEPAIRHOVER='238,246,252'; - $conf->global->THEME_ELDY_TEXT='50,50,130'; + $conf->global->THEME_ELDY_TEXT='50,50,130'; // color for links $conf->global->THEME_ELDY_FONT_SIZE1='12'; $conf->global->THEME_ELDY_FONT_SIZE2='11'; } @@ -154,15 +155,20 @@ $colorbackbody =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty( $colortext =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXT) ?$colortext:$conf->global->THEME_ELDY_TEXT) :(empty($user->conf->THEME_ELDY_TEXT)?$colortext:$user->conf->THEME_ELDY_TEXT); $fontsize =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_FONT_SIZE1) ?$fontsize:$conf->global->THEME_ELDY_FONT_SIZE1) :(empty($user->conf->THEME_ELDY_FONT_SIZE1)?$fontsize:$user->conf->THEME_ELDY_FONT_SIZE1); $fontsizesmaller =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_FONT_SIZE2) ?$fontsize:$conf->global->THEME_ELDY_FONT_SIZE2) :(empty($user->conf->THEME_ELDY_FONT_SIZE2)?$fontsize:$user->conf->THEME_ELDY_FONT_SIZE2); -// No hover by default, we keep only if we set var THEME_ELDY_USE_HOVER -if ((! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && empty($user->conf->THEME_ELDY_USE_HOVER)) - || (empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && empty($conf->global->THEME_ELDY_USE_HOVER))) +// Hover can be disabled with THEME_ELDY_USE_HOVER=0 +if ((! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && (isset($user->conf->THEME_ELDY_USE_HOVER) && $user->conf->THEME_ELDY_USE_HOVER == '0')) + || (empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && (isset($conf->global->THEME_ELDY_USE_HOVER) && $conf->global->THEME_ELDY_USE_HOVER == '0'))) { $colorbacklineimpairhover=''; $colorbacklinepairhover=''; } // Format color value to match expected format (may be 'FFFFFF' or '255,255,255') +$colorbackbody=join(',',colorStringToArray($colorbackbody)); +$colorbackhmenu1=join(',',colorStringToArray($colorbackhmenu1)); +$colorbackhmenu2=join(',',colorStringToArray($colorbackhmenu2)); +$colorbackvmenu1=join(',',colorStringToArray($colorbackvmenu1)); +$colorbackvmenu2=join(',',colorStringToArray($colorbackvmenu2)); $colorbacktabcard1=join(',',colorStringToArray($colorbacktabcard1)); $colorbacktabcard2=join(',',colorStringToArray($colorbacktabcard2)); @@ -184,10 +190,13 @@ $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppa if ($tmpval <= 340) { $colortextbacktab='FFF'; } else { $colortextbacktab='111'; } - print '/*'."\n"; print 'colred='.$colred.' colgreen='.$colgreen.' colblue='.$colblue."\n"; print 'isred='.$isred.' isgreen='.$isgreen.' isblue='.$isblue."\n"; +print 'colorbackbody='.$colorbackbody."\n"; +print 'colorbackvmenu1='.$colorbackvmenu1."\n"; +print 'colorbackhmenu1='.$colorbackhmenu1."\n"; +print 'colorbacktitle1='.$colorbacktitle1."\n"; print 'colorbacklineimpair1='.$colorbacklineimpair1."\n"; print 'colorbacklineimpair2='.$colorbacklineimpair2."\n"; print 'colorbacklineimpairhover='.$colorbacklineimpairhover."\n"; @@ -215,7 +224,7 @@ body { <?php if (GETPOST("optioncss") == 'print') { ?> background-color: #FFFFFF; <?php } else { ?> - background: <?php print $colorbackbody; ?>; + background: rgb(<?php print $colorbackbody; ?>); <?php } ?> color: #101010; font-size: <?php print $fontsize ?>px; @@ -281,6 +290,7 @@ input.liste_titre { input.removedfile { padding: 0px !important; border: 0px !important; + vertical-align: text-bottom; } textarea:disabled { background:#ddd; @@ -447,7 +457,26 @@ textarea.centpercent { #formuserfile_link { margin-left: 1px; } +.listofinvoicetype { + height: 28px; + vertical-align: middle; +} +div.divsearchfield { + float: <?php print $left; ?>; + margin-<?php print $right; ?>: 12px; +} +/* Style to move picto into left of button */ +/* +.buttonactionview { + padding-left: 15px; +} +.pictoactionview { + padding-left: 10px; + margin-right: -24px; + z-index: 999999; +} +*/ /* ============================================================================== */ /* Styles to hide objects */ @@ -543,8 +572,8 @@ div.ficheaddleft { else print "margin-top: 10px;\n"; ?> } .containercenter { -display : table; -margin : 0px auto; + display : table; + margin : 0px auto; } #pictotitle { @@ -555,6 +584,15 @@ margin : 0px auto; padding-left: 2px; padding-right: 2px; } +.pictowarning { + padding-left: 3px; +} +.colorthumb { + padding-left: 1px !important; + padding-right: 1px; + padding-top: 1px; + padding-bottom: 1px; +} /* ============================================================================== */ @@ -570,13 +608,14 @@ $heightmenu2=48; /* height of top menu, part with login */ div#id-top { height: <?php print ($heightmenu2); ?>px; background: rgb(<?php echo $colorbackhmenu1 ?>); - + <?php if ($usegradient) { ?> background-image: linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -o-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -ms-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.3)), color-stop(1, rgba(0,0,0,.3)) ); + <?php } ?> } div#tmenu_tooltip { @@ -641,17 +680,17 @@ ul.tmenu { /* t r b l */ padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; list-style: none; - /* box-shadow: 0 0 6px rgba(0, 0, 0, .4) !important; */ } ul.tmenu li { background: rgb(<?php echo $colorbackhmenu1 ?>); - + <?php if ($usegradient) { ?> background-image: linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -o-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -ms-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.3)), color-stop(1, rgba(0,0,0,.3)) ); + <?php } ?> } li.tmenu, li.tmenusel { <?php print $minwidthtmenu?'min-width: '.$minwidthtmenu.'px;':''; ?> @@ -934,7 +973,7 @@ div.login_block { <?php } ?> } div.login_block a { - color: #fff; + color: #<?php echo $colortextbackvmenu; ?>; } div.login_block table { display: inline; @@ -974,7 +1013,9 @@ img.login, img.printer, img.entity { color: white; font-weight: bold; } - +img.loginphoto { + border-radius: 2px; +} .span-icon-user { background: url(<?php echo dol_buildpath($path.'/theme/'.$theme.'/img/object_user.png',1); ?>) no-repeat scroll 7px 7px; } @@ -1013,11 +1054,11 @@ div.vmenu, td.vmenu { #menu_contenu_logo { padding-right: 4px; } a.vmenu:link, a.vmenu:visited, a.vmenu:hover, a.vmenu:active { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: bold; } -font.vmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: bold; color: #93a5aa; } +font.vmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: bold; color: #aaa; } a.vmenu:link, a.vmenu:visited { color: #<?php echo $colortextbackvmenu; ?>; } a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active, span.vsmenu { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #202020; margin: 1px 1px 1px 8px; } -font.vsmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #93a5aa; } +font.vsmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #aaa; } a.vsmenu:link, a.vsmenu:visited { color: #<?php echo $colortextbackvmenu; ?>; } font.vsmenudisabledmargin { margin: 1px 1px 1px 8px; } @@ -1373,7 +1414,12 @@ div.tabs { clear:both; height:100%; } -div.tabsElem { margin-top: 1px; } /* To avoid overlap of tabs when not browser */ +div.tabsElem { + margin-top: 1px; + <?php if (! empty($conf->dol_use_jmobile)) { ?>; + margin-bottom: -1px; + <?php } ?> +} /* To avoid overlap of tabs when not browser */ div.tabBar { color: #<?php echo $colortextbacktab; ?>; @@ -1787,7 +1833,7 @@ tr.nocellnopadd td.nobordernopadding, tr.nocellnopadd td.nocellnopadd table.border, table.dataTable, .table-border, .table-border-col, .table-key-border-col, .table-val-border-col, div.border { - border: 1px solid #D0D0D0; + border: 1px solid #E0E0E0; border-collapse: collapse; padding: 1px 2px 1px 3px; /* t r b l */ } @@ -1796,19 +1842,20 @@ table.border, table.dataTable, .table-border, .table-border-col, .table-key-bord height: 20px; } div.tabBar table.border tr, div.tabBar table.border tr td, div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar div.border .table-val-border-col { - height: 24px; + height: 20px; } div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar .table-val-border-col { vertical-align: middle; } -div.tabBar .tdtop { +div .tdtop { vertical-align: top; - padding-top: 6px; + padding-top: 5px; + padding-bottom: 0px; } table.border td, div.border div div.tagtd { padding: 2px 2px 2px 2px; - border: 1px solid #D0D0D0; + border: 1px solid #E0E0E0; border-collapse: collapse; } @@ -1941,6 +1988,16 @@ table.liste td { /* Pagination */ +div.refidpadding { + padding-top: <?php print empty($conf->dol_use_jmobile)?'8':'12'; ?>px; +} +div.refid { + padding-top: <?php print empty($conf->dol_use_jmobile)?'5':'12'; ?>px; + font-weight: bold; + color: #766; + font-size: 120%; +} + div.pagination { float: right; } @@ -1959,8 +2016,10 @@ div.pagination li { display: inline-block; padding-left: 0px; padding-right: 0px; +<?php if (empty($conf->dol_use_jmobile)) { ?> padding-top: 6px; - padding-bottom: 6px; + padding-bottom: 5px; +<?php } ?> } .pagination { display: inline-block; @@ -1969,7 +2028,9 @@ div.pagination li { } div.pagination li.pagination a, div.pagination li.pagination span { +<?php if (empty($conf->dol_use_jmobile)) { ?> padding: 6px 12px; +<?php } ?> margin-left: -1px; line-height: 1.42857143; color: #000; @@ -1978,10 +2039,26 @@ div.pagination li.pagination span { div.pagination li.pagination span.inactive { cursor: default; } +div.pagination li.litext a { +border: none; + padding-right: 10px; + padding-left: 4px; + font-weight: bold; +} +<?php if (! empty($conf->dol_use_jmobile)) { ?> +div.pagination li.litext { + padding-top: 13px; + vertical-align: top; +} +<?php } ?> <?php if (empty($conf->dol_use_jmobile)) { ?> +div.pagination li.noborder a:hover { + border: none; + background-color: transparent; +} div.pagination li a, div.pagination li span { - background-color: #fff; + background-color: #fff; border: 1px solid #ddd; } div.pagination li:first-child a, @@ -2064,23 +2141,24 @@ div.pagination li.paginationafterarrows { /* Set the color for hover lines */ .odd:hover, .impair:hover, .even:hover, .pair:hover, .even:hover, .pair:hover, table.dataTable tr.even:hover, table.dataTable tr.odd:hover { -<?php if ($colorbacklinepairhover) { if ($colorbacklinepairhover > 0) { ?> +<?php if ($colorbacklinepairhover) { ?> background: rgb(<?php echo $colorbacklinepairhover; ?>) !important; <?php } else { ?> background: rgba(0, 0, 0, 0.05) !important; -<?php } } ?> +<?php } ?> } -.odd, .impair, .nohover .odd:hover, .nohover .impair:hover, tr.odd td.nohover, tr.impair td.nohover { +.odd, .impair, .nohover .odd:hover, .nohover .impair:hover, tr.odd td.nohover, tr.impair td.nohover +{ font-family: <?php print $fontlist ?>; margin-bottom: 1px; color: #202020; min-height: 18px; /* seems to not be used */ - background: #ffffff; + background: #<?php echo colorArrayToHex(colorStringToArray($colorbacklineimpair1)); ?>; } #GanttChartDIV { - background: #ffffff; + background: #<?php echo colorArrayToHex(colorStringToArray($colorbacklineimpair1)); ?>; } .even, .pair, .nohover .even:hover, .nohover .pair:hover, tr.even td.nohover, tr.pair td.nohover { @@ -2088,16 +2166,16 @@ div.pagination li.paginationafterarrows { margin-bottom: 1px; color: #202020; - background-color: #f9f9f9; + background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklinepair1)); ?>; } table.dataTable tr.odd { - background-color: #f9f9f9 !important; + background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklinepair1)); ?> !important; } /* For no hover style */ table.nohover tr.impair, table.nohover tr.pair, table.nohover tr.impair td, table.nohover tr.pair td { - background-color: #ffffff !important; + background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklineimpair1)); ?> !important; } table.dataTable td { @@ -2147,12 +2225,13 @@ div.liste_titre, tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.list /* TO MATCH ELDY */ background: rgb(<?php echo $colorbacktitle1; ?>); + <?php if ($usegradient) { ?> background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); background-image: linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - + <?php } ?> font-weight: bold; color: #<?php echo $colortexttitle; ?>; @@ -2168,7 +2247,6 @@ tr.liste_titre th, th.liste_titre, tr.liste_titre td, td.liste_titre, form.liste { font-family: <?php print $fontlist ?>; font-weight: bold; - /* text-shadow: 1px 0px 1px #<?php echo $colorshadowtitle; ?>; */ vertical-align: middle; } tr.liste_titre th a, th.liste_titre a, tr.liste_titre td a, td.liste_titre a, form.liste_titre div a, div.liste_titre a { @@ -2184,7 +2262,6 @@ tr.liste_titre_sel th, th.liste_titre_sel, tr.liste_titre_sel td, td.liste_titre font-weight: normal; border-bottom: 1px solid #FDFFFF; text-decoration: underline; - /* text-shadow: 1px 0px 1px #<?php echo $colorshadowtitle; ?>; */ } input.liste_titre { background: transparent; @@ -2204,7 +2281,6 @@ input.liste_titre { .tableforservicepart1 .impair, .tableforservicepart1 .pair, .tableforservicepart2 .impair, .tableforservicepart2 .pair { - //background: none; background: #FFF; } .tableforservicepart1 tbody tr td, .tableforservicepart2 tbody tr td { @@ -2245,6 +2321,9 @@ div.tabBar .noborder { text-align: center; border-radius: 4px; } +.boxstats:hover { + background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklinepair1)); ?>; +} .boxtable { -moz-box-shadow: 3px 3px 4px #DDD; @@ -2269,14 +2348,15 @@ tr.box_titre { /* TO MATCH ELDY */ background: rgb(<?php echo $colorbacktitle1; ?>); + <?php if ($usegradient) { ?> background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); background-image: linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + <?php } ?> color: #<?php echo $colortexttitle; ?>; - // text-shadow: 1px 0px 1px #<?php echo $colorshadowtitle; ?>; font-family: <?php print $fontlist ?>, sans-serif; font-weight: bold; border-bottom: 1px solid #FDFFFF; @@ -2410,12 +2490,18 @@ div.dolgraph div.legend table tbody tr { height: auto; } margin-bottom: 2px; margin-top: 2px; } -.photointooltip { - -webkit-box-shadow: -1px -1px 5px #777; - -moz-box-shadow: -1px -1px 5px #777; - box-shadow: -1px -1px 5px #777; +.photowithmargin { + -webkit-box-shadow: 0px 0px 3px #777; + -moz-box-shadow: 0px 0px 3px #777; + box-shadow: 0px 0px 3px #777; +} +.photointoolitp { margin-top: 6px; float: left; + /*text-align: center; */ +} +.photodelete { + margin-top: 6px !important; } .logo_setup @@ -3218,10 +3304,23 @@ table.dataTable tr.odd td.sorting_1, table.dataTable tr.even td.sorting_1 { background-image: none; } +div.dataTables_length { + float: right !important; + padding-left: 8px; +} +div.dataTables_length select { + background: #fff; +} + + /* ============================================================================== */ /* Select2 */ /* ============================================================================== */ +.selectoptiondisabledwhite { + background: #FFFFFF !important; +} + .select2-choice, .select2-drop.select2-drop-above.select2-drop-active, .select2-container-active .select2-choice, @@ -3247,6 +3346,8 @@ a span.select2-chosen } .select2-container .select2-choice { background-image: none; + height: 24px; + line-height: 24px; } .select2-choices .select2-search-choice { border: 1px solid #aaa !important; @@ -3265,6 +3366,7 @@ a span.select2-chosen margin-bottom: 2px; } + /* ============================================================================== */ /* JMobile */ /* ============================================================================== */ @@ -3418,6 +3520,14 @@ ul.ulmenu { color: #<?php echo $colorshadowtitle; ?> !important; text-shadow: none !important; } +/* +.ui-btn-up-c { + background: transparent; +} +*/ +div.tabsElem a.tab { + background: transparent; +} .ui-controlgroup-horizontal .ui-btn.ui-first-child { -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; @@ -3448,6 +3558,18 @@ border-top-right-radius: 6px; } + +/* The theme for public pages */ +.public_body { + margin: 20px; +} +.public_border { + border: 1px solid #888; +} +.public_liste_titre { + + + /* CSS style used for small screen */ .imgopensurveywizard @@ -3459,5 +3581,7 @@ border-top-right-radius: 6px; .imgopensurveywizard { width:95%; height: auto; } } + + <?php if (is_object($db)) $db->close(); diff --git a/htdocs/theme/md_exp/img/object_gravatar.png b/htdocs/theme/md_exp/img/object_gravatar.png new file mode 100644 index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7 Binary files /dev/null and b/htdocs/theme/md_exp/img/object_gravatar.png differ diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php index e46647f3b6944bf667e3cd97c9f0b2afdbaefb44..6699e30023b8566e6ddf241666480bf5ae54a433 100644 --- a/htdocs/user/agenda_extsites.php +++ b/htdocs/user/agenda_extsites.php @@ -33,8 +33,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php'; require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; -if (!$user->admin) accessforbidden(); - $langs->load("agenda"); $langs->load("admin"); $langs->load("other"); @@ -54,6 +52,21 @@ $id = GETPOST('id','int'); $fuser = new User($db); $fuser->fetch($id); +// Security check +$socid=0; +if ($user->societe_id > 0) $socid = $user->societe_id; +$feature2 = (($socid && $user->rights->user->self->creer)?'':'user'); +if ($user->id == $id) // A user can always read its own card +{ + $feature2=''; +} +$result = restrictedArea($user, 'user', $id, 'user&user', $feature2); + +// If user is not user that read and no permission to read other users, we stop +if (($fuser->id != $user->id) && (! $user->rights->user->user->lire)) + accessforbidden(); + + /* * Actions diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 79e0e228be774a1fd35e6b1e0224089ffb3de384..7b6d57f81a955f339684d52ab6087be983c146b4 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -185,11 +185,13 @@ if ($action == 'add' && $canadduser) } } - if (!$error) { + if (!$error) + { $object->lastname = GETPOST("lastname",'alpha'); $object->firstname = GETPOST("firstname",'alpha'); $object->login = GETPOST("login",'alpha'); $object->api_key = GETPOST("api_key",'alpha'); + $object->gender = GETPOST("gender",'alpha'); $object->admin = GETPOST("admin",'alpha'); $object->office_phone = GETPOST("office_phone",'alpha'); $object->office_fax = GETPOST("office_fax",'alpha'); @@ -341,6 +343,7 @@ if ($action == 'update' && ! $_POST["cancel"]) $object->lastname = GETPOST("lastname",'alpha'); $object->firstname = GETPOST("firstname",'alpha'); $object->login = GETPOST("login",'alpha'); + $object->gender = GETPOST("gender",'alpha'); $object->pass = GETPOST("password"); $object->api_key = GETPOST("api_key"); $object->admin = empty($user->admin)?0:GETPOST("admin"); // A user can only be set admin by an admin @@ -473,6 +476,12 @@ if ($action == 'update' && ! $_POST["cancel"]) $imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality); } } + else + { + $error++; + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFailedToCreateDir", $dir), $mesgs, 'errors'); + } } } @@ -759,6 +768,13 @@ if (($action == 'create') || ($action == 'adduserldap')) print '<input size="30" type="text" name="job" value="'.GETPOST('job').'">'; print '</td></tr>'; + // Gender + print '<tr><td>'.$langs->trans("Gender").'</td>'; + print '<td>'; + $arraygender=array('man'=>$langs->trans("Genderman"),'woman'=>$langs->trans("Genderwoman")); + print $form->selectarray('gender', $arraygender, GETPOST('gender'), 1); + print '</td></tr>'; + // Login print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").'</span></td>'; print '<td>'; @@ -866,7 +882,7 @@ if (($action == 'create') || ($action == 'adduserldap')) // Type print '<tr><td>'.$langs->trans("Type").'</td>'; print '<td>'; - print $form->textwithpicto($langs->trans("Internal"),$langs->trans("InternalExternalDesc")); + print $form->textwithpicto($langs->trans("Internal"),$langs->trans("InternalExternalDesc"), 1, 'help', '', 0, 2); print '</td></tr>'; // Tel @@ -1044,7 +1060,11 @@ if (($action == 'create') || ($action == 'adduserldap')) dol_fiche_end(); - print '<div align="center"><input class="button" value="'.$langs->trans("CreateUser").'" name="create" type="submit"></div>'; + print '<div align="center">'; + print '<input class="button" value="'.$langs->trans("CreateUser").'" name="create" type="submit">'; + //print ' '; + //print '<input value="'.$langs->trans("Cancel").'" class="button" type="submit" name="cancel">'; + print '</div>'; print "</form>"; } @@ -1197,6 +1217,12 @@ else print '<td colspan="2">'.$object->job.'</td>'; print '</tr>'."\n"; + // Gender + print '<tr><td>'.$langs->trans("Gender").'</td>'; + print '<td>'; + if ($object->gender) print $langs->trans("Gender".$object->gender); + print '</td></tr>'; + // Login print '<tr><td>'.$langs->trans("Login").'</td>'; if (! empty($object->ldap_sid) && $object->statut==0) @@ -1269,10 +1295,12 @@ else print '</td></tr>'."\n"; // Type - print '<tr><td>'.$langs->trans("Type").'</td><td colspan="2">'; + print '<tr><td>'; + $text=$langs->trans("Type"); + print $form->textwithpicto($text, $langs->trans("InternalExternalDesc")); + print '</td><td colspan="2">'; $type=$langs->trans("Internal"); if ($object->societe_id) $type=$langs->trans("External"); - print $form->textwithpicto($type,$langs->trans("InternalExternalDesc")); if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')'; print '</td></tr>'."\n"; @@ -1334,14 +1362,20 @@ else $langs->load("salaries"); // THM - print '<tr><td>'.$langs->trans("THM").'</td>'; + print '<tr><td>'; + $text=$langs->trans("THM"); + print $form->textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm'); + print '</td>'; print '<td colspan="2">'; print ($object->thm!=''?price($object->thm,'',$langs,1,-1,-1,$conf->currency):''); print '</td>'; print "</tr>\n"; // TJM - print '<tr><td>'.$langs->trans("TJM").'</td>'; + print '<tr><td>'; + $text=$langs->trans("TJM"); + print $form->textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classtjm'); + print '</td>'; print '<td colspan="2">'; print ($object->tjm!=''?price($object->tjm,'',$langs,1,-1,-1,$conf->currency):''); print '</td>'; @@ -1374,7 +1408,7 @@ else { print '<tr><td>'.$langs->trans("ColorUser").'</td>'; print '<td colspan="2">'; - if ($object->color) print '<input type="text" disabled style="padding: 0; margin-top: 0; margin-bottom: 0; width: 36px; background-color: #'.$object->color.'" value="'.$object->color.'">'; + if ($object->color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 36px; background-color: #'.$object->color.'" value="'.$object->color.'">'; print '</td>'; print "</tr>\n"; } @@ -1704,7 +1738,7 @@ else dol_fiche_head($head, 'user', $title, 0, 'user'); - $rowspan=16; + $rowspan=17; if (isset($conf->file->main_authentication) && preg_match('/openid/',$conf->file->main_authentication) && ! empty($conf->global->MAIN_OPENIDURL_PERUSER)) $rowspan++; if (! empty($conf->societe->enabled)) $rowspan++; if (! empty($conf->adherent->enabled)) $rowspan++; @@ -1734,18 +1768,10 @@ else print $object->lastname; } print '</td>'; + // Photo print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">'; - print $form->showphoto('userphoto',$object); - if ($caneditfield) - { - if ($object->photo) print "<br>\n"; - print '<table class="nobordernopadding hideonsmartphone">'; - if ($object->photo) print '<tr><td align="center"><input type="checkbox" class="flat" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>'; - print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>'; - print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>'; - print '</table>'; - } + print $form->showphoto('userphoto',$object,100,0,$caneditfield); print '</td>'; print '</tr>'; @@ -1778,6 +1804,13 @@ else } print '</td></tr>'; + // Gender + print '<tr><td>'.$langs->trans("Gender").'</td>'; + print '<td>'; + $arraygender=array('man'=>$langs->trans("Genderman"),'woman'=>$langs->trans("Genderwoman")); + print $form->selectarray('gender', $arraygender, GETPOST('gender')?GETPOST('gender'):$object->gender, 1); + print '</td></tr>'; + // Login print "<tr>".'<td><span class="fieldrequired">'.$langs->trans("Login").'</span></td>'; print '<td>'; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index b3303867e9f810a8a89b73b240249bff889293a9..f7b5473967267f53257f66f990451ff07e17d856 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -4,7 +4,7 @@ * Copyright (c) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> - * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005 Lionel Cousteix <etm_ltd@tiscali.co.uk> * Copyright (C) 2011 Herve Prot <herve.prot@symeos.com> * Copyright (C) 2013-2014 Philippe Grand <philippe.grand@atoo-net.com> @@ -50,6 +50,7 @@ class User extends CommonObject var $search_sid; var $lastname; var $firstname; + var $gender; var $note; var $email; var $skype; @@ -74,8 +75,16 @@ class User extends CommonObject var $datem; //! If this is defined, it is an external user - var $societe_id; // deprecated - var $contact_id; // deprecated + /** + * @deprecated + * @see socid + */ + var $societe_id; + /** + * @deprecated + * @see contactid + */ + var $contact_id; var $socid; var $contactid; @@ -152,7 +161,7 @@ class User extends CommonObject $login=trim($login); // Get user - $sql = "SELECT u.rowid, u.lastname, u.firstname, u.email, u.job, u.skype, u.signature, u.office_phone, u.office_fax, u.user_mobile,"; + $sql = "SELECT u.rowid, u.lastname, u.firstname, u.gender, u.email, u.job, u.skype, u.signature, u.office_phone, u.office_fax, u.user_mobile,"; $sql.= " u.admin, u.login, u.note,"; $sql.= " u.pass, u.pass_crypted, u.pass_temp, u.api_key,"; $sql.= " u.fk_soc, u.fk_socpeople, u.fk_member, u.fk_user, u.ldap_sid,"; @@ -213,6 +222,7 @@ class User extends CommonObject $this->firstname = $obj->firstname; $this->login = $obj->login; + $this->gender = $obj->gender; $this->pass_indatabase = $obj->pass; $this->pass_indatabase_crypted = $obj->pass_crypted; $this->pass = $obj->pass; @@ -938,6 +948,7 @@ class User extends CommonObject $this->admin = 0; $this->lastname = $contact->lastname; $this->firstname = $contact->firstname; + $this->gender = $contact->gender; $this->email = $contact->email; $this->skype = $contact->skype; $this->office_phone = $contact->phone_pro; @@ -1009,6 +1020,7 @@ class User extends CommonObject $this->admin = 0; $this->lastname = $member->lastname; $this->firstname = $member->firstname; + $this->gender = $member->gender; $this->email = $member->email; $this->fk_member = $member->id; $this->pass = $member->pass; @@ -1131,6 +1143,7 @@ class User extends CommonObject $this->lastname = trim($this->lastname); $this->firstname = trim($this->firstname); $this->login = trim($this->login); + $this->gender = trim($this->gender); $this->pass = trim($this->pass); $this->api_key = trim($this->api_key); $this->office_phone = trim($this->office_phone); @@ -1159,12 +1172,13 @@ class User extends CommonObject $this->db->begin(); - // Mise a jour autres infos + // Update datas $sql = "UPDATE ".MAIN_DB_PREFIX."user SET"; $sql.= " lastname = '".$this->db->escape($this->lastname)."'"; $sql.= ", firstname = '".$this->db->escape($this->firstname)."'"; $sql.= ", login = '".$this->db->escape($this->login)."'"; $sql.= ", api_key = '".$this->db->escape($this->api_key)."'"; + $sql.= ", gender = ".($this->gender != -1 ? "'".$this->db->escape($this->gender)."'" : "null"); // 'man' or 'woman' $sql.= ", admin = ".$this->admin; $sql.= ", address = '".$this->db->escape($this->address)."'"; $sql.= ", zip = '".$this->db->escape($this->zip)."'"; @@ -1239,6 +1253,7 @@ class User extends CommonObject $adh->firstname=$this->firstname; $adh->lastname=$this->lastname; $adh->login=$this->login; + $adh->gender=$this->gender; $adh->pass=$this->pass; $adh->societe=(empty($adh->societe) && $this->societe_id ? $this->societe_id : $adh->societe); @@ -1776,6 +1791,27 @@ class User extends CommonObject } } + + /** + * Return a link with photo + * Use this->id,this->photo + * + * @param int $width Width of image + * @param int $height Height of image + * @param string $cssclass Force a css class + * @return string String with URL link + */ + function getPhotoUrl($width, $height, $cssclass='') + { + $result=''; + + $result.='<a href="'.DOL_URL_ROOT.'/user/card.php?id='.$this->id.'">'; + $result.=Form::showphoto('userphoto', $this, $width, $height, 0, $cssclass); + $result.='</a>'; + + return $result; + } + /** * Return a link to the user card (with optionaly the picto) * Use this->id,this->lastname, this->firstname @@ -1791,6 +1827,7 @@ class User extends CommonObject { global $langs, $conf, $db; global $dolibarr_main_authentication, $dolibarr_main_demo; + global $menumanager; $result = ''; @@ -1801,14 +1838,14 @@ class User extends CommonObject $label.= '<b>' . $langs->trans('Name') . ':</b> ' . $this->getFullName($langs,'',''); if (! empty($this->login)) $label.= '<br><b>' . $langs->trans('Login') . ':</b> ' . $this->login; - if (! empty($this->email)) $label.= '<br><b>' . $langs->trans("EMail").':</b> '.$this->email; if (! empty($this->admin)) $label.= '<br><b>' . $langs->trans("Administrator").'</b>: '.yn($this->admin); - if (! empty($this->societe_id)) { + if (! empty($this->societe_id)) // Add thirdparty for external users + { $thirdpartystatic = new Societe($db); $thirdpartystatic->fetch($this->societe_id); - $companylink = ' ('.$thirdpartystatic->getNomUrl('','').')'; + $companylink = ' '.$thirdpartystatic->getNomUrl(2); // picto only of company $company=' ('.$langs->trans("Company").': '.$thirdpartystatic->name.')'; } $type=($this->societe_id?$langs->trans("External").$company:$langs->trans("Internal")); @@ -1851,7 +1888,7 @@ class User extends CommonObject $result.=($link.img_object(($notooltip?'':$label), 'user', ($notooltip?'':'class="classfortooltip"')).$linkend); if ($withpicto != 2) $result.=' '; } - $result.= $link . $this->getFullName($langs,'',-1,$maxlen) . $companylink . $linkend; + $result.= $link . $this->getFullName($langs,'',-1,$maxlen) . $linkend . $companylink; return $result; } @@ -2051,6 +2088,7 @@ class User extends CommonObject $this->lastname='DOLIBARR'; $this->firstname='SPECIMEN'; + $this->gender='man'; $this->note='This is a note'; $this->email='email@specimen.com'; $this->skype='tom.hanson'; diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php index 35663f05978cd5a84042a911003c0fb8e5717d08..687c2077760c3d0ad58fbd89931d389645796b8d 100644 --- a/htdocs/user/class/usergroup.class.php +++ b/htdocs/user/class/usergroup.class.php @@ -40,8 +40,12 @@ class UserGroup extends CommonObject var $id; // Group id var $entity; // Entity of group + /** + * @deprecated + * @see name + */ var $nom; // Name of group - var $name; // Name of group // deprecated + var $name; // Name of group var $globalgroup; // Global group var $note; // Note on group var $datec; // Creation date of group diff --git a/htdocs/user/hierarchy.php b/htdocs/user/hierarchy.php index a1118242a66648bc21d589719f7f01025d889805..132a03a9ed13db0142ff30a6ad76ce111fb68f9d 100644 --- a/htdocs/user/hierarchy.php +++ b/htdocs/user/hierarchy.php @@ -108,7 +108,7 @@ foreach($fulltree as $key => $val) } -print '<table class="liste" width="100%">'; +print '<table class="liste nohover" width="100%">'; print '<tr class="liste_titre"><td>'.$langs->trans("HierarchicView").'</td><td></td><td align="right"><div id="iddivjstreecontrol"><a href="#">'.img_picto('','object_category').' '.$langs->trans("UndoExpandAll").'</a>'; print ' | <a href="#">'.img_picto('','object_category-expanded').' '.$langs->trans("ExpandAll").'</a></div></td></tr>'; diff --git a/htdocs/user/home.php b/htdocs/user/home.php index b7b60ef2c7a39add95442be7e58db1346a9f993d..cb700b9701ed8e105a2cf9e28480d14494479e96 100644 --- a/htdocs/user/home.php +++ b/htdocs/user/home.php @@ -65,7 +65,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; $var=false; print '<form method="post" action="'.DOL_URL_ROOT.'/user/index.php">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; -print '<table class="noborder" width="100%">'; +print '<table class="noborder nohover" width="100%">'; print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("SearchAUser").'</td></tr>'; print '<tr '.$bc[$var].'><td>'; print $langs->trans("Ref").':</td><td><input class="flat" type="text" name="search_user" size="18"></td><td rowspan="2"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td></tr>'; @@ -79,7 +79,7 @@ if ($canreadperms) $var=false; print '<form method="post" action="'.DOL_URL_ROOT.'/user/group/index.php">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<table class="noborder" width="100%">'; + print '<table class="noborder nohover" width="100%">'; print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("SearchAGroup").'</td></tr>'; print '<tr '.$bc[$var].'><td>'; print $langs->trans("Ref").':</td><td><input class="flat" type="text" name="search_group" size="18"></td><td rowspan="2"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td></tr>'; diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 97b6feac5087922db35fe55a979623cd627fdd85..d0715101b09866e549629bb53b01dc06dca5ffa8 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -2,6 +2,7 @@ /* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -62,6 +63,15 @@ $userstatic=new User($db); $companystatic = new Societe($db); $form = new Form($db); +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers +{ + $search_user=""; + $search_login=""; + $search_lastname=""; + $search_firstname=""; + $search_statut=""; + $search_thirdparty=""; +} /* * View @@ -144,9 +154,9 @@ if ($result) print $form->selectarray('search_statut', array('-1'=>'','0'=>$langs->trans('Disabled'),'1'=>$langs->trans('Enabled')),$search_statut); print '</td>'; - print '<td class="liste_titre" align="right">'; - print '<input class="liste_titre" type="image" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; - print '</td>'; + print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; + print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; + print '</td>'; print "</tr>\n"; diff --git a/htdocs/user/info.php b/htdocs/user/info.php index 454ac080cbcf289dc2147cf8ead9be11dac7169c..646754668bd4abfb9791469db13908fa4a36cfbe 100644 --- a/htdocs/user/info.php +++ b/htdocs/user/info.php @@ -44,7 +44,7 @@ if ($user->id == $id) // A user can always read its own card } $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); -// If user is not user read and no permission to read other users, we stop +// If user is not user that read and no permission to read other users, we stop if (($fuser->id != $user->id) && (! $user->rights->user->user->lire)) accessforbidden(); diff --git a/htdocs/user/note.php b/htdocs/user/note.php index 7fb4ae06ed6b55b07007e064d0ff66058a6e1cf8..af96d8149e87748e073283b90d5318766e969a4f 100644 --- a/htdocs/user/note.php +++ b/htdocs/user/note.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -112,8 +112,8 @@ if ($id) print '<tr><td>'.$langs->trans("Login").'</td><td class="valeur" colspan="3">'.$fuser->login.' </td></tr>'; // Note - print '<tr><td valign="top">'.$langs->trans("Note").'</td>'; - print '<td valign="top" colspan="3">'; + print '<tr><td class="tdtop">'.$langs->trans("Note").'</td>'; + print '<td colspan="3">'; if ($action == 'edit' && $user->rights->user->user->creer) { print "<input type=\"hidden\" name=\"action\" value=\"update\">"; @@ -131,22 +131,22 @@ if ($id) print "</table>"; + dol_fiche_end(); + if ($action == 'edit') { - print '<br><div class="center">'; + print '<div class="center">'; print '<input type="submit" class="button" name="update" value="'.$langs->trans("Save").'">'; print ' '; print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; print '</div>'; } - print "</form>\n"; + /* + * Actions + */ - /* - * Actions - */ - print '</div>'; print '<div class="tabsAction">'; if ($user->rights->user->user->creer && $action != 'edit') @@ -156,9 +156,9 @@ if ($id) print "</div>"; - + print "</form>\n"; } -$db->close(); - llxFooter(); + +$db->close(); diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index e749f2891fba76d17ec08f8402f20688702fd74a..53b98b5be98a122157c8b5d577e2b3b0261cf0ac 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2005-2014 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2005-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro.com> * @@ -131,19 +131,19 @@ dol_fiche_head($head, 'guisetup', $title, 0, 'user'); print '<table class="border" width="100%">'; // Ref -print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>'; +print '<tr><td width="25%">'.$langs->trans("Ref").'</td>'; print '<td colspan="2">'; print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin); print '</td>'; print '</tr>'; // LastName -print '<tr><td width="25%" valign="top">'.$langs->trans("LastName").'</td>'; +print '<tr><td width="25%">'.$langs->trans("LastName").'</td>'; print '<td colspan="2">'.$fuser->lastname.'</td>'; print "</tr>\n"; // FirstName -print '<tr><td width="25%" valign="top">'.$langs->trans("FirstName").'</td>'; +print '<tr><td width="25%">'.$langs->trans("FirstName").'</td>'; print '<td colspan="2">'.$fuser->firstname.'</td>'; print "</tr>\n"; diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index a1c7fbff5ea9f4159c93a4cc259ed1a707453d6c..2a5a842223193d7238e21250a46bd66705d5d6c7 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -1,24 +1,24 @@ <?php /* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2002-2003 Jean-Louis Bergamo <jlb@j1b.org> -* Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> -* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> -* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> -* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es> -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> + * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> + * Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ /** * \file htdocs/user/perms.php @@ -256,19 +256,19 @@ else print '<table class="border" width="100%">'; // Ref -print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>'; +print '<tr><td width="25%">'.$langs->trans("Ref").'</td>'; print '<td>'; print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin); print '</td>'; print '</tr>'."\n"; // Lastname -print '<tr><td width="25%" valign="top">'.$langs->trans("Lastname").'</td>'; +print '<tr><td width="25%">'.$langs->trans("Lastname").'</td>'; print '<td>'.$fuser->lastname.'</td>'; print '</tr>'."\n"; // Firstname -print '<tr><td width="25%" valign="top">'.$langs->trans("Firstname").'</td>'; +print '<tr><td width="25%">'.$langs->trans("Firstname").'</td>'; print '<td>'.$fuser->firstname.'</td>'; print '</tr>'."\n"; diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index 9e22bb94cc2df0cccf4e450bd763c04861937eff..f9f2b54b2929c525ee46df956bb8d9b42635f90b 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -173,7 +173,7 @@ else // Open and return file // This test is to avoid error images when image is not available (for example thumbs). if (! dol_is_file($original_file)) { - $original_file=DOL_DOCUMENT_ROOT.'/theme/common/nophoto.jpg'; + $original_file=DOL_DOCUMENT_ROOT.'/public/theme/common/nophoto.jpg'; /*$error='Error: File '.$_GET["file"].' does not exists or filesystems permissions are not allowed'; dol_print_error(0,$error); print $error; diff --git a/htdocs/webservices/server_contact.php b/htdocs/webservices/server_contact.php index 066c9f38b6c208af06cb2b2a2d1b5be3e18a0dbf..f439e791cb44f1b6675d8f1727cf431fccb5eb49 100644 --- a/htdocs/webservices/server_contact.php +++ b/htdocs/webservices/server_contact.php @@ -272,7 +272,7 @@ function getContact($authentication,$id,$ref_ext) ){ $contact_result_fields =array( 'id' => $contact->id, - 'ref_ext' => $contact->ref_ext, + 'ref_ext' => $contact->ref_ext, 'lastname' => $contact->lastname, 'firstname' => $contact->firstname, 'address' => $contact->address, @@ -334,7 +334,7 @@ function getContact($authentication,$id,$ref_ext) else { $error++; - $errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; + $errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id.' nor ref_ext='.$ref_ext; } } @@ -615,9 +615,15 @@ function updateContact($authentication,$contact) $error=0; $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel); // Check parameters - if (empty($contact['id'])) { - $error++; $errorcode='KO'; $errorlabel="Contact id is mandatory."; + if (empty($contact['id']) && empty($contact['ref_ext'])) { + $error++; $errorcode='KO'; $errorlabel="Contact id or ref_ext is mandatory."; } + // Check parameters + if (! $error && ($id && $ref_ext)) + { + $error++; + $errorcode='BAD_PARAMETERS'; $errorlabel="Parameter id and ref_ext can't be all provided. You must choose one of them."; + } if (! $error) { @@ -626,7 +632,7 @@ function updateContact($authentication,$contact) include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; $object=new Contact($db); - $result=$object->fetch($contact['id']); + $result=$object->fetch($contact['id'],0,$contact['ref_ext']); if (!empty($object->id)) { diff --git a/htdocs/webservices/server_invoice.php b/htdocs/webservices/server_invoice.php index 3c1a122fa6f7e3c3c60e076d702f3f4fec33595f..4a495607a2939962950bde93780b341125d403b1 100644 --- a/htdocs/webservices/server_invoice.php +++ b/htdocs/webservices/server_invoice.php @@ -102,7 +102,6 @@ $server->wsdl->addComplexType( 'total' => array('name'=>'total','type'=>'xsd:double'), 'date_start' => array('name'=>'date_start','type'=>'xsd:date'), 'date_end' => array('name'=>'date_end','type'=>'xsd:date'), - 'payment_mode_id' => array('name'=>'payment_mode_id','type'=>'xsd:string'), // From product 'product_id' => array('name'=>'product_id','type'=>'xsd:int'), 'product_ref' => array('name'=>'product_ref','type'=>'xsd:string'), @@ -160,6 +159,7 @@ $server->wsdl->addComplexType( 'date_creation' => array('name'=>'date_creation','type'=>'xsd:dateTime'), 'date_validation' => array('name'=>'date_validation','type'=>'xsd:dateTime'), 'date_modification' => array('name'=>'date_modification','type'=>'xsd:dateTime'), + 'payment_mode_id' => array('name'=>'payment_mode_id','type'=>'xsd:string'), 'type' => array('name'=>'type','type'=>'xsd:int'), 'total_net' => array('name'=>'type','type'=>'xsd:double'), 'total_vat' => array('name'=>'type','type'=>'xsd:double'), @@ -243,13 +243,37 @@ $server->register( // Entry values array('authentication'=>'tns:authentication','invoice'=>'tns:invoice'), // Exit values - array('result'=>'tns:result','id'=>'xsd:string','ref'=>'xsd:string'), + array('result'=>'tns:result','id'=>'xsd:string','ref'=>'xsd:string','ref_ext'=>'xsd:string'), $ns, $ns.'#createInvoice', $styledoc, $styleuse, 'WS to create an invoice' ); +$server->register( + 'createInvoiceFromOrder', + // Entry values + array('authentication'=>'tns:authentication','invoice'=>'tns:invoice'), + // Exit values + array('result'=>'tns:result','invoice'=>'tns:invoice'), + $ns, + $ns.'#createInvoiceFromOrder', + $styledoc, + $styleuse, + 'WS to create an invoice from an order' +); +$server->register( + 'updateInvoice', + // Entry values + array('authentication'=>'tns:authentication','invoice'=>'tns:invoice'), + // Exit values + array('result'=>'tns:result','id'=>'xsd:string','ref'=>'xsd:string','ref_ext'=>'xsd:string'), + $ns, + $ns.'#updateInvoice', + $styledoc, + $styleuse, + 'WS to update an invoice' +); /** @@ -299,15 +323,19 @@ function getInvoice($authentication,$id='',$ref='',$ref_ext='') $linesresp[]=array( 'id'=>$line->rowid, 'type'=>$line->product_type, - 'desc'=>dol_htmlcleanlastbr($line->desc), - 'total_net'=>$line->total_ht, - 'total_vat'=>$line->total_tva, - 'total'=>$line->total_ttc, - 'vat_rate'=>$line->tva_tx, - 'qty'=>$line->qty, - 'product_ref'=>$line->product_ref, - 'product_label'=>$line->product_label, - 'product_desc'=>$line->product_desc, + 'desc'=>dol_htmlcleanlastbr($line->desc), + 'total_net'=>$line->total_ht, + 'total_vat'=>$line->total_tva, + 'total'=>$line->total_ttc, + 'vat_rate'=>$line->tva_tx, + 'qty'=>$line->qty, + 'unitprice'=> $line->subprice, + 'date_start'=> $line->date_start?dol_print_date($line->date_start,'dayrfc'):'', + 'date_end'=> $line->date_end?dol_print_date($line->date_end,'dayrfc'):'', + 'product_id'=>$line->fk_product, + 'product_ref'=>$line->product_ref, + 'product_label'=>$line->product_label, + 'product_desc'=>$line->product_desc, ); $i++; } @@ -319,9 +347,11 @@ function getInvoice($authentication,$id='',$ref='',$ref_ext='') 'id' => $invoice->id, 'ref' => $invoice->ref, 'ref_ext' => $invoice->ref_ext?$invoice->ref_ext:'', // If not defined, field is not added into soap + 'thirdparty_id' => $invoice->socid, 'fk_user_author' => $invoice->user_author?$invoice->user_author:'', 'fk_user_valid' => $invoice->user_valid?$invoice->user_valid:'', 'date' => $invoice->date?dol_print_date($invoice->date,'dayrfc'):'', + 'date_due' => $invoice->date_lim_reglement?dol_print_date($invoice->date_lim_reglement,'dayrfc'):'', 'date_creation' => $invoice->date_creation?dol_print_date($invoice->date_creation,'dayhourrfc'):'', 'date_validation' => $invoice->date_validation?dol_print_date($invoice->date_creation,'dayhourrfc'):'', 'date_modification' => $invoice->datem?dol_print_date($invoice->datem,'dayhourrfc'):'', @@ -331,7 +361,8 @@ function getInvoice($authentication,$id='',$ref='',$ref_ext='') 'total' => $invoice->total_ttc, 'note_private' => $invoice->note_private?$invoice->note_private:'', 'note_public' => $invoice->note_public?$invoice->note_public:'', - 'status'=> $invoice->statut, + 'status' => $invoice->statut, + 'project_id' => $invoic->fk_project, 'close_code' => $invoice->close_code?$invoice->close_code:'', 'close_note' => $invoice->close_note?$invoice->close_note:'', 'payment_mode_id' => $invoice->mode_reglement_id?$invoice->mode_reglement_id:'', @@ -387,7 +418,7 @@ function getInvoicesForThirdParty($authentication,$idthirdparty) if (! $error && empty($idthirdparty)) { $error++; - $errorcode='BAD_PARAMETERS'; $errorlabel='Parameter id is not provided'; + $errorcode='BAD_PARAMETERS'; $errorlabel='Parameter idthirdparty is not provided'; } if (! $error) @@ -433,6 +464,10 @@ function getInvoicesForThirdParty($authentication,$idthirdparty) 'total'=>$line->total_ttc, 'vat_rate'=>$line->tva_tx, 'qty'=>$line->qty, + 'unitprice'=> $line->subprice, + 'date_start'=> $line->date_start?dol_print_date($line->date_start,'dayrfc'):'', + 'date_end'=> $line->date_end?dol_print_date($line->date_end,'dayrfc'):'', + 'product_id'=>$line->fk_product, 'product_ref'=>$line->product_ref, 'product_label'=>$line->product_label, 'product_desc'=>$line->product_desc, @@ -448,7 +483,7 @@ function getInvoicesForThirdParty($authentication,$idthirdparty) 'fk_user_valid' => $invoice->user_valid?$invoice->user_valid:'', 'date' => $invoice->date?dol_print_date($invoice->date,'dayrfc'):'', 'date_due' => $invoice->date_lim_reglement?dol_print_date($invoice->date_lim_reglement,'dayrfc'):'', - 'date_creation' => $invoice->date_creation?dol_print_date($invoice->date_creation,'dayhourrfc'):'', + 'date_creation' => $invoice->date_creation?dol_print_date($invoice->date_creation,'dayhourrfc'):'', 'date_validation' => $invoice->date_validation?dol_print_date($invoice->date_creation,'dayhourrfc'):'', 'date_modification' => $invoice->datem?dol_print_date($invoice->datem,'dayhourrfc'):'', 'type' => $invoice->type, @@ -458,9 +493,10 @@ function getInvoicesForThirdParty($authentication,$idthirdparty) 'note_private' => $invoice->note_private?$invoice->note_private:'', 'note_public' => $invoice->note_public?$invoice->note_public:'', 'status'=> $invoice->statut, + 'project_id' => $invoic->fk_project, 'close_code' => $invoice->close_code?$invoice->close_code:'', 'close_note' => $invoice->close_note?$invoice->close_note:'', - 'payment_mode_id' => $invoice->mode_reglement_id?$invoice->mode_reglement_id:'', + 'payment_mode_id' => $invoice->mode_reglement_id?$invoice->mode_reglement_id:'', 'lines' => $linesresp ); } @@ -503,7 +539,8 @@ function createInvoice($authentication,$invoice) $now=dol_now(); - dol_syslog("Function: createInvoiceForThirdParty login=".$authentication['login']); + dol_syslog("Function: createInvoice login=".$authentication['login']." id=".$invoice->id. + ", ref=".$invoice->ref.", ref_ext=".$invoice->ref_ext); if ($authentication['entity']) $conf->entity=$authentication['entity']; @@ -513,27 +550,32 @@ function createInvoice($authentication,$invoice) $error=0; $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel); + // Check parameters + if (empty($invoice['id']) && empty($invoice['ref']) && empty($invoice['ref_ext'])) { + $error++; $errorcode='KO'; $errorlabel="Invoice id or ref or ref_ext is mandatory."; + } + if (! $error) { - $newobject=new Facture($db); - $newobject->socid=$invoice['thirdparty_id']; - $newobject->type=$invoice['type']; - $newobject->ref_ext=$invoice['ref_ext']; - $newobject->date=dol_stringtotime($invoice['date'],'dayrfc'); - $newobject->note_private=$invoice['note_private']; - $newobject->note_public=$invoice['note_public']; - $newobject->statut= Facture::STATUS_DRAFT; // We start with status draft - $newobject->fk_project=$invoice['project_id']; - $newobject->date_creation=$now; + $new_invoice=new Facture($db); + $new_invoice->socid=$invoice['thirdparty_id']; + $new_invoice->type=$invoice['type']; + $new_invoice->ref_ext=$invoice['ref_ext']; + $new_invoice->date=dol_stringtotime($invoice['date'],'dayrfc'); + $new_invoice->note_private=$invoice['note_private']; + $new_invoice->note_public=$invoice['note_public']; + $new_invoice->statut= Facture::STATUS_DRAFT; // We start with status draft + $new_invoice->fk_project=$invoice['project_id']; + $new_invoice->date_creation=$now; //take mode_reglement and cond_reglement from thirdparty $soc = new Societe($db); - $res=$soc->fetch($newobject->socid); + $res=$soc->fetch($new_invoice->socid); if ($res > 0) { - $newobject->mode_reglement_id = ! empty($invoice['payment_mode_id'])?$invoice['payment_mode_id']:$soc->mode_reglement_id; - $newobject->cond_reglement_id = $soc->cond_reglement_id; + $new_invoice->mode_reglement_id = ! empty($invoice['payment_mode_id'])?$invoice['payment_mode_id']:$soc->mode_reglement_id; + $new_invoice->cond_reglement_id = $soc->cond_reglement_id; } - else $newobject->mode_reglement_id = $invoice['payment_mode_id']; + else $new_invoice->mode_reglement_id = $invoice['payment_mode_id']; // Trick because nusoap does not store data with same structure if there is one or several lines $arrayoflines=array(); @@ -556,22 +598,22 @@ function createInvoice($authentication,$invoice) $newline->date_start=dol_stringtotime($line['date_start']); $newline->date_end=dol_stringtotime($line['date_end']); $newline->fk_product=$line['product_id']; - $newobject->lines[]=$newline; + $new_invoice->lines[]=$newline; } //var_dump($newobject->date_lim_reglement); exit; //var_dump($invoice['lines'][0]['type']); $db->begin(); - $result=$newobject->create($fuser,0,dol_stringtotime($invoice['date_due'],'dayrfc')); + $result=$new_invoice->create($fuser,0,dol_stringtotime($invoice['date_due'],'dayrfc')); if ($result < 0) { $error++; } - if ($invoice['status'] == 1) // We want invoice to have status validated + if (!$error && $invoice['status'] == Facture::STATUS_VALIDATED) // We want invoice to have status validated { - $result=$newobject->validate($fuser); + $result=$new_invoice->validate($fuser); if ($result < 0) { $error++; @@ -581,14 +623,16 @@ function createInvoice($authentication,$invoice) if (! $error) { $db->commit(); - $objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>''),'id'=>$newobject->id,'ref'=>$newobject->ref); + $objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>''),'id'=>$new_invoice->id, + 'ref'=>$new_invoice->ref,'ref_ext'=>$new_invoice->ref_ext); } else { $db->rollback(); $error++; $errorcode='KO'; - $errorlabel=$newobject->error; + $errorlabel=$new_invoice->error; + dol_syslog("Function: createInvoice error while creating".$errorlabel); } } @@ -601,5 +645,197 @@ function createInvoice($authentication,$invoice) return $objectresp; } +/** + * Create an invoice from an order + * + * @param array $authentication Array of authentication information + * @param string $id_order id of order to copy invoice from + * @param string $ref_order ref of order to copy invoice from + * @param string $ref_ext_order ref_ext of order to copy invoice from + * @param string $id_invoice invoice id + * @param string $ref_invoice invoice ref + * @param string $ref_ext_invoice invoice ref_ext + * @return array Array result + */ +function createInvoiceFromOrder($authentication,$id_order='', $ref_order='', $ref_ext_order='', + $id_invoice='', $ref_invoice='', $ref_ext_invoice='') +{ + global $db,$conf,$langs; + + $now=dol_now(); + + dol_syslog("Function: createInvoiceFromOrder login=".$authentication['login']." id=".$id_order. + ", ref=".$ref_order.", ref_ext=".$ref_ext_order); + + if ($authentication['entity']) $conf->entity=$authentication['entity']; + + // Init and check authentication + $objectresp=array(); + $errorcode='';$errorlabel=''; + $error=0; + $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel); + + // Check parameters + if (empty($id_order) && empty($ref_order) && empty($ref_ext_order)) { + $error++; $errorcode='KO'; $errorlabel="order id or ref or ref_ext is mandatory."; + } else if (empty($id_invoice) && empty($ref_invoice) && empty($ref_ext_invoice)) { + $error++; $errorcode='KO'; $errorlabel="invoice id or ref or ref_ext is mandatory."; + } + + ////////////////////// + if (! $error) + { + $fuser->getrights(); + + if ($fuser->rights->commande->lire) + { + $order=new Commande($db); + $result=$order->fetch($id,$ref,$ref_ext); + if ($result > 0) + { + // Security for external user + if( $socid && ( $socid != $order->socid) ) + { + $error++; + $errorcode='PERMISSION_DENIED'; $errorlabel=$order->socid.'User does not have permission for this request'; + } + + if(!$error) + { + + $newobject=new Facture($db); + $result = $newobject->createFromOrder($order); + + if ($result < 0) + { + $error++; + dol_syslog("Webservice server_invoice:: invoice creation from order failed", LOG_ERR); + } + + } + } + else + { + $error++; + $errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id_order.' nor ref='.$ref_order.' nor ref_ext='.$ref_ext_order; + } + } + else + { + $error++; + $errorcode='PERMISSION_DENIED'; $errorlabel='User does not have permission for this request'; + } + } + + if ($error) + { + $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); + } + else + { + $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''),'invoice'=>$newobject); + + } + + return $objectresp; +} + +/** + * Uddate an invoice, only change the state of an invoice + * + * @param array $authentication Array of authentication information + * @param Facture $invoice Invoice + * @return array Array result + */ +function updateInvoice($authentication,$invoice) +{ + global $db,$conf,$langs; + + dol_syslog("Function: updateInvoice login=".$authentication['login']." id=".$invoice['id']. + ", ref=".$invoice['ref'].", ref_ext=".$invoice['ref_ext']); + + if ($authentication['entity']) $conf->entity=$authentication['entity']; + + // Init and check authentication + $objectresp=array(); + $errorcode='';$errorlabel=''; + $error=0; + $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel); + + // Check parameters + if (empty($invoice['id']) && empty($invoice['ref']) && empty($invoice['ref_ext'])) { + $error++; $errorcode='KO'; $errorlabel="Invoice id or ref or ref_ext is mandatory."; + } + + if (! $error) + { + $objectfound=false; + + $object=new Facture($db); + $result=$object->fetch($invoice['id'],$invoice['ref'],$invoice['ref_ext'], ''); + + if (!empty($object->id)) { + + $objectfound=true; + + $db->begin(); + + if (isset($invoice['status'])) + { + if ($invoice['status'] == Facture::STATUS_DRAFT) + { + $result = $object->set_draft($fuser); + } + if ($invoice['status'] == Facture::STATUS_VALIDATED) + { + $result = $object->validate($fuser); + + if ($result >= 0) + { + // Define output language + $outputlangs = $langs; + $order->generateDocument($invoice->modelpdf, $outputlangs); + } + } + if ($invoice['status'] == Facture::STATUS_CLOSED) + { + $result = $object->set_paid($fuser,$invoice->close_code,$invoice->close_note); + } + if ($invoice['status'] == Facture::STATUS_ABANDONED) + $result = $object->set_canceled($fuser,$invoice->close_code,$invoice->close_note); + } + } + + if ((! $error) && ($objectfound)) + { + $db->commit(); + $objectresp=array( + 'result'=>array('result_code'=>'OK', 'result_label'=>''), + 'id'=>$object->id, + 'ref'=>$object->ref, + 'ref_ext'=>$object->ref_ext + ); + } + elseif ($objectfound) + { + $db->rollback(); + $error++; + $errorcode='KO'; + $errorlabel=$object->error; + } else { + $error++; + $errorcode='NOT_FOUND'; + $errorlabel='Invoice id='.$invoice['id'].' ref='.$invoice['ref'].' ref_ext='.$invoice['ref_ext'].' cannot be found'; + } + } + + if ($error) + { + $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); + } + + return $objectresp; +} + // Return the results. $server->service(file_get_contents("php://input")); diff --git a/htdocs/webservices/server_order.php b/htdocs/webservices/server_order.php index 2f5955d8ec16246c9c97c1a9487012f1db202718..28518d24763da0496da8360625b504d5e04b976e 100644 --- a/htdocs/webservices/server_order.php +++ b/htdocs/webservices/server_order.php @@ -917,7 +917,17 @@ function updateOrder($authentication,$order) if (isset($order['status'])) { if ($order['status'] == -1) $result=$object->cancel($fuser); - if ($order['status'] == 1) $result=$object->valid($fuser); + if ($order['status'] == 1) + { + $result=$object->valid($fuser); + if ($result >= 0) + { + // Define output language + $outputlangs = $langs; + $order->generateDocument($order->modelpdf, $outputlangs); + + } + } if ($order['status'] == 0) $result=$object->set_reopen($fuser); if ($order['status'] == 3) $result=$object->cloture($fuser); } @@ -951,7 +961,9 @@ function updateOrder($authentication,$order) $db->commit(); $objectresp=array( 'result'=>array('result_code'=>'OK', 'result_label'=>''), - 'id'=>$object->id + 'id'=>$object->id, + 'ref'=>$object->ref, + 'ref_ext'=>$object->ref_ext ); } elseif ($objectfound) diff --git a/htdocs/webservices/server_thirdparty.php b/htdocs/webservices/server_thirdparty.php index c7ca5911d6207da22ed0341edf073016fbaf6b03..542e2980c45b0f56f331f188715c278a8c37739e 100644 --- a/htdocs/webservices/server_thirdparty.php +++ b/htdocs/webservices/server_thirdparty.php @@ -258,8 +258,31 @@ $server->register( 'WS to get list of thirdparties id and ref' ); +// Register WSDL +$server->register( + 'deleteThirdParty', + // Entry values + array('authentication'=>'tns:authentication','id'=>'xsd:string','ref'=>'xsd:string','ref_ext'=>'xsd:string'), + // Exit values + array('result'=>'tns:result','id'=>'xsd:string'), + $ns, + $ns.'#deleteThirdParty', + $styledoc, + $styleuse, + 'WS to delete a thirdparty from its id, ref or ref_ext' +); + // Full methods code +/** + * Get a thirdparty + * + * @param array $authentication Array of authentication information + * @param string $id internal id + * @param string $ref internal reference + * @param string $ref_ext external reference + * @return array Array result + */ function getThirdParty($authentication,$id='',$ref='',$ref_ext='') { global $db,$conf,$langs; @@ -728,5 +751,88 @@ function getListOfThirdParties($authentication,$filterthirdparty) return $objectresp; } +/** + * Delete a thirdparty + * + * @param array $authentication Array of authentication information + * @param string $id internal id + * @param string $ref internal reference + * @param string $ref_ext external reference + * @return array Array result + */ +function deleteThirdParty($authentication,$id='',$ref='',$ref_ext='') +{ + global $db,$conf,$langs; + + dol_syslog("Function: deleteThirdParty login=".$authentication['login']." id=".$id." ref=".$ref." ref_ext=".$ref_ext); + + if ($authentication['entity']) $conf->entity=$authentication['entity']; + + // Init and check authentication + $objectresp=array(); + $errorcode='';$errorlabel=''; + $error=0; + $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel); + // Check parameters + if (! $error && (($id && $ref) || ($id && $ref_ext) || ($ref && $ref_ext))) + { + dol_syslog("Function: deleteThirdParty checkparam"); + $error++; + $errorcode='BAD_PARAMETERS'; $errorlabel="Parameter id, ref and ref_ext can't be both provided. You must choose one or other but not both."; + } + dol_syslog("Function: deleteThirdParty 1"); + + if (! $error) + { + $fuser->getrights(); + + if ($fuser->rights->societe->lire && $fuser->rights->societe->supprimer) + { + $thirdparty=new Societe($db); + $result=$thirdparty->fetch($id,$ref,$ref_ext); + + if ($result > 0) + { + $db->begin(); + + $result=$thirdparty->delete($thirdparty->id, $fuser); + + if ($result > 0) + { + $db->commit(); + + $objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>'')); + } + else + { + $db->rollback(); + $error++; + $errorcode='KO'; + $errorlabel=$thirdparty->error; + dol_syslog("Function: deleteThirdParty cant delete"); + } + } + else + { + $error++; + $errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext; + + } + } + else + { + $error++; + $errorcode='PERMISSION_DENIED'; $errorlabel='User does not have permission for this request'; + } + } + + if ($error) + { + $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); + } + + return $objectresp; +} + // Return the results. $server->service(file_get_contents("php://input")); diff --git a/scripts/product/migrate_picture_path.php b/scripts/product/migrate_picture_path.php new file mode 100755 index 0000000000000000000000000000000000000000..a03e254900693f2be95f8dfab3a5f17fcc72556b --- /dev/null +++ b/scripts/product/migrate_picture_path.php @@ -0,0 +1,148 @@ +#!/usr/bin/php +<?php +/* Copyright (C) 2007-2013 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2015 Jean Heimburger <http://tiaris.eu> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * \file scripts/product/migrate_picture_path.php + * \ingroup scripts + * \brief Migrate pictures from old system prior to 3.7 to new path for 3.7+ + * + */ + +$sapi_type = php_sapi_name(); +$script_file = basename(__FILE__); +$path=dirname(__FILE__).'/'; + +// Test if batch mode +if (substr($sapi_type, 0, 3) == 'cgi') { + echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; + exit(-1); +} + +@set_time_limit(0); // No timeout for this script +define('EVEN_IF_ONLY_LOGIN_ALLOWED',1); // Set this define to 0 if you want to lock your script when dolibarr setup is "locked to admin user only". + +// Include and load Dolibarr environment variables +require_once($path."../../htdocs/master.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php"); +require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"); +// After this $db, $mysoc, $langs, $conf and $hookmanager are defined (Opened $db handler to database will be closed at end of file). +// $user is created but empty. + +//$langs->setDefaultLang('en_US'); // To change default language of $langs +$langs->load("main"); // To load language file for default language + + +// Global variables +$version=DOL_VERSION; +$error=0; +$forcecommit=0; + + +print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; +dol_syslog($script_file." launched with arg ".join(',',$argv)); + +if (! isset($argv[1]) || $argv[1] != 'product') { + print "Usage: $script_file product\n"; + exit(-1); +} + +print '--- start'."\n"; + +// Case to migrate products path +if ($argv[1] == 'product') +{ + $product = new Product($db); + + $sql = "SELECT rowid as pid from ".MAIN_DB_PREFIX."product"; // Get list of all products + $resql = $db->query($sql); + if ($resql) + { + while ($obj = $db->fetch_object($resql)) + { + $product->fetch($obj->pid); + print " migrating product id=".$product->id." ref=".$product->ref."\n"; + migrate_product_photospath($product); + } + } + else + { + print "\n sql error ".$sql; + exit; + } +} + + +$db->close(); // Close $db database opened handler + +exit($error); + + + +/** + * Migrate file from old path to new one for product $product + * + * @param Product $product Object product + * @return void + */ +function migrate_product_photospath($product) +{ + global $conf; + + $dir = $conf->product->multidir_output[$product->entity]; + $origin = $dir .'/'. get_exdir($product->id,2) . $product->id ."/photos"; + $destin = $dir.'/'.dol_sanitizeFileName($product->ref); + + $error = 0; + + $origin_osencoded=dol_osencode($origin); + $destin_osencoded=dol_osencode($destin); + dol_mkdir($destin); + + if (dol_is_dir($origin)) + { + $handle=opendir($origin_osencoded); + if (is_resource($handle)) + { + while (($file = readdir($handle)) != false) + { + if ($file != '.' && $file != '..' && is_dir($origin_osencoded.'/'.$file)) + { + $thumbs = opendir($origin_osencoded.'/'.$file); + if (is_resource($thumbs)) + { + dol_mkdir($destin.'/'.$file); + while (($thumb = readdir($thumbs)) != false) + { + dol_move($origin.'/'.$file.'/'.$thumb, $destin.'/'.$file.'/'.$thumb); + } +// dol_delete_dir($origin.'/'.$file); + } + } + else + { + if (dol_is_file($origin.'/'.$file) ) + { + dol_move($origin.'/'.$file, $destin.'/'.$file); + } + + } + } + } + } +} diff --git a/test/phpunit/FilesLibTest.php b/test/phpunit/FilesLibTest.php index 4477784ae7d69922da42beabed53e06f0d03ef01..e9fb713b857c8de025e1f95a06bc99f2db77273a 100644 --- a/test/phpunit/FilesLibTest.php +++ b/test/phpunit/FilesLibTest.php @@ -339,10 +339,15 @@ class FilesLibTest extends PHPUnit_Framework_TestCase print __METHOD__." result=".$result."\n"; $this->assertTrue($result,'delete file'); - // Again to test no error when deleteing a non existing file - $result=dol_delete_file($conf->admin->dir_temp.'/file2.csv'); + // Again to test there is error when deleting a non existing file with option disableglob + $result=dol_delete_file($conf->admin->dir_temp.'/file2.csv',1,1); + print __METHOD__." result=".$result."\n"; + $this->assertFalse($result,'delete file that does not exists with disableglo must return ko'); + + // Again to test there is no error when deleting a non existing file without option disableglob + $result=dol_delete_file($conf->admin->dir_temp.'/file2.csv',0,1); print __METHOD__." result=".$result."\n"; - $this->assertTrue($result,'delete file that does not exists'); + $this->assertTrue($result,'delete file that does not exists without disabling glob must return ok'); // Test copy with special char / delete with blob $result=dol_copy($file, $conf->admin->dir_temp.'/file with [x] and é.csv',0,1); diff --git a/test/phpunit/WebservicesInvoicesTest.php b/test/phpunit/WebservicesInvoicesTest.php index 202f260bc8478c5e10bdc9439a142e80e9d865e1..bbfde0a66e532e22fb60eeccbffa96a48e9ad754 100755 --- a/test/phpunit/WebservicesInvoicesTest.php +++ b/test/phpunit/WebservicesInvoicesTest.php @@ -18,9 +18,9 @@ /** * \file test/phpunit/WebservicesInvoicesTest.php - * \ingroup test + * \ingroup test * \brief PHPUnit test - * \remarks To run this script as CLI: phpunit filename.php + * \remarks To run this script as CLI: phpunit filename.php */ global $conf,$user,$langs,$db; @@ -31,10 +31,11 @@ require_once dirname(__FILE__).'/../../htdocs/core/lib/date.lib.php'; require_once(NUSOAP_PATH.'/nusoap.php'); // Include SOAP -if (empty($user->id)) { - print "Load permissions for admin user nb 1\n"; - $user->fetch(1); - $user->getrights(); +if (empty($user->id)) +{ + print "Load permissions for admin user nb 1\n"; + $user->fetch(1); + $user->getrights(); } $conf->global->MAIN_DISABLE_ALL_MAILS=1; @@ -44,138 +45,369 @@ $conf->global->MAIN_DISABLE_ALL_MAILS=1; * * @backupGlobals disabled * @backupStaticAttributes enabled - * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased. + * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased. */ class WebservicesInvoicesTest extends PHPUnit_Framework_TestCase { - protected $savconf; - protected $savuser; - protected $savlangs; - protected $savdb; + protected $savconf; + protected $savuser; + protected $savlangs; + protected $savdb; + protected $soapclient; + protected $socid; + + protected $ns = 'http://www.dolibarr.org/ns/'; + + /** + * Constructor + * We save global variables into local variables + * + * @return DateLibTest + */ + function __construct() + { + //$this->sharedFixture + global $conf,$user,$langs,$db; + $this->savconf=$conf; + $this->savuser=$user; + $this->savlangs=$langs; + $this->savdb=$db; + $WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_invoice.php'; + + + // Set the WebService URL + print __METHOD__." create nusoap_client for URL=".$WS_DOL_URL."\n"; + $this->soapclient = new nusoap_client($WS_DOL_URL); + if ($this->soapclient) + { + $this->soapclient->soap_defencoding='UTF-8'; + $this->soapclient->decodeUTF8(false); + } + + // create a third_party, needed to create an invoice + $societe=new Societe($db); + $societe->ref=''; + $societe->name='name'; + $societe->ref_ext='209'; + $societe->status=1; + $societe->client=1; + $societe->fournisseur=0; + $societe->date_creation=$now; + $societe->tva_assuj=0; + $societe->particulier=0; + + $societe->create($user); + + $this->socid = $societe->id; + + print __METHOD__." societe created id=".$societe->id."\n"; - /** - * Constructor - * We save global variables into local variables - * - * @return DateLibTest - */ - function __construct() - { - //$this->sharedFixture - global $conf,$user,$langs,$db; - $this->savconf=$conf; - $this->savuser=$user; - $this->savlangs=$langs; - $this->savdb=$db; - - print __METHOD__." db->type=".$db->type." user->id=".$user->id; - //print " - db ".$db->db; - print "\n"; - } + print __METHOD__." db->type=".$db->type." user->id=".$user->id; + //print " - db ".$db->db; + print "\n"; + } - // Static methods - public static function setUpBeforeClass() + // Static methods + public static function setUpBeforeClass() { - global $conf,$user,$langs,$db; - $db->begin(); // This is to have all actions inside a transaction even if test launched without suite. + global $conf,$user,$langs,$db; + $db->begin(); // This is to have all actions inside a transaction even if test launched without suite. - print __METHOD__."\n"; + print __METHOD__."\n"; } - - // tear down after class public static function tearDownAfterClass() { - global $conf,$user,$langs,$db; - $db->rollback(); + global $conf,$user,$langs,$db; + $db->rollback(); - print __METHOD__."\n"; + print __METHOD__."\n"; } - /** - * Init phpunit tests - * - * @return void - */ + /** + * Init phpunit tests + * + * @return void + */ protected function setUp() { - global $conf,$user,$langs,$db; - $conf=$this->savconf; - $user=$this->savuser; - $langs=$this->savlangs; - $db=$this->savdb; + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + print __METHOD__."\n"; + + } - print __METHOD__."\n"; + /** + * End phpunit tests + * + * @return void + */ + protected function tearDown() + { + print __METHOD__."\n"; } + /** - * End phpunit tests + * testWSInvoicesCreateInvoice * - * @return void + * @return int invoice created */ - protected function tearDown() + public function testWSInvoicesCreateInvoice() { - print __METHOD__."\n"; + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $WS_METHOD = 'createInvoice'; + + // load societe first + $societe=new Societe($db); + $societe->fetch('', '', '209'); + print __METHOD__." societe loaded id=".$societe->id."\n"; + + + $body = array ( + "id" => NULL, + "ref" => NULL, + "ref_ext" => "165", + "thirdparty_id" => $societe->id, + "fk_user_author" => NULL, + "fk_user_valid" => NULL, + "date" => "2015-04-19 20:16:53", + "date_due" => "", + "date_creation" => "", + "date_validation" => "", + "date_modification" => "", + "type" => "", + "total_net" => "36.30", + "total_vat" => "6.00", + "total" => "42.30", + "payment_mode_id" => 50, + "note_private" => "Synchronised from Prestashop", + "note_public" => "", + "status" => "1", + "close_code" => NULL , + "close_note" => NULL, + "project_id" => NULL, + "lines" => array( + array("id" => NULL, + "type" => 0, + "desc" => "Horloge Vinyle Serge", + "vat_rate" => 20, + "qty" => 1, + "unitprice" => "30.000000", + "total_net" => "30.000000", + "total_vat" => "6.00", + "total" => "36.000000", + "date_start" => "", + "date_end" => "", + "payment_mode_id" => "", + "product_id" => "", + "product_ref" => "", + "product_label" => "", + "product_desc" => "" )) + ); + + // Call the WebService method and store its result in $result. + $authentication=array( + 'dolibarrkey'=>$conf->global->WEBSERVICES_KEY, + 'sourceapplication'=>'DEMO', + 'login'=>'admin', + 'password'=>'admin', + 'entity'=>''); + + // Test URL + $result=''; + $parameters = array('authentication'=>$authentication,'invoice'=>$body); + print __METHOD__." call method ".$WS_METHOD."\n"; + try { + $result = $this->soapclient->call($WS_METHOD,$parameters,$this->ns,''); + } + catch(SoapFault $exception) + { + echo $exception; + $result=0; + } + if (! $result || ! empty($result['faultstring'])) + { + //var_dump($soapclient); + print $this->soapclient->error_str; + print "\n<br>\n"; + print $this->soapclient->request; + print "\n<br>\n"; + print $this->soapclient->response; + print "\n"; + } + + print __METHOD__." result=".$result['result']['result_code']."\n"; + $this->assertEquals('OK',$result['result']['result_code']); + $this->assertEquals('165', $result['ref_ext']); + + + return $result; } + + /** + * testWSInvoicesGetInvoiceByRefExt + * + * Retrieve an invoice using ref_ext + * @depends testWSInvoicesCreateInvoice + * + * @param array $result Invoice created by create method + * @return array Invoice + */ + public function testWSInvoicesGetInvoiceByRefExt($result) + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $WS_METHOD = 'getInvoice'; + + // Call the WebService method and store its result in $result. + $authentication=array( + 'dolibarrkey'=>$conf->global->WEBSERVICES_KEY, + 'sourceapplication'=>'DEMO', + 'login'=>'admin', + 'password'=>'admin', + 'entity'=>''); + + // Test URL + $result=''; + $parameters = array('authentication'=>$authentication,'id'=>NULL,'ref'=>NULL,'ref_ext'=>165); + print __METHOD__." call method ".$WS_METHOD."\n"; + try { + $result = $this->soapclient->call($WS_METHOD,$parameters,$this->ns,''); + } + catch(SoapFault $exception) + { + echo $exception; + $result=0; + } + if (! $result || ! empty($result['faultstring'])) + { + print $this->soapclient->error_str; + print "\n<br>\n"; + print $this->soapclient->request; + print "\n<br>\n"; + print $this->soapclient->response; + print "\n"; + } + print __METHOD__." result=".$result['result']['result_code']."\n"; + $this->assertEquals('OK',$result['result']['result_code']); + $this->assertEquals('165', $result['invoice']['ref_ext']); + return $result; + } + /** - * testWSInvoicesXxx - * - * @return int + * testWSInvoicesUpdateInvoiceByRefExt + * + * Update an invoice using ref_ext + * @depends testWSInvoicesCreateInvoice + * + * @param array $result invoice created by create method + * @return array Invoice */ - public function testWSInvoicesXxx() + public function testWSInvoicesUpdateInvoiceByRefExt($result) { - global $conf,$user,$langs,$db; - $conf=$this->savconf; - $user=$this->savuser; - $langs=$this->savlangs; - $db=$this->savdb; - - $WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_invoice.php'; - $WS_METHOD = 'getInvoice'; - $ns='http://www.dolibarr.org/ns/'; - - // Set the WebService URL - print __METHOD__." create nusoap_client for URL=".$WS_DOL_URL."\n"; - $soapclient = new nusoap_client($WS_DOL_URL); - if ($soapclient) { - $soapclient->soap_defencoding='UTF-8'; - $soapclient->decodeUTF8(false); - } - - // Call the WebService method and store its result in $result. - $authentication=array( - 'dolibarrkey'=>$conf->global->WEBSERVICES_KEY, - 'sourceapplication'=>'DEMO', - 'login'=>'admin', - 'password'=>'admin', - 'entity'=>'' - ); - - // Test URL - $result=''; - $parameters = array('authentication'=>$authentication,'id'=>1); - print __METHOD__." call method ".$WS_METHOD."\n"; - try { - $result = $soapclient->call($WS_METHOD,$parameters,$ns,''); - } catch(SoapFault $exception) { - echo $exception; - $result=0; - } - if (! $result || ! empty($result['faultstring'])) { - //var_dump($soapclient); - print $soapclient->error_str; - print "\n<br>\n"; - print $soapclient->request; - print "\n<br>\n"; - print $soapclient->response; - print "\n"; - } - - print __METHOD__." result=".$result."\n"; - $this->assertEquals('OK',$result['result']['result_code']); - - return $result; + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $WS_METHOD = 'updateInvoice'; + + // update status to 2 + $body = array ( + "id" => NULL, + "ref" => NULL, + "ref_ext" => "165", + "thirdparty_id" => "209", + "fk_user_author" => NULL, + "fk_user_valid" => NULL, + "date" => "2015-04-19 20:16:53", + "date_due" => "", + "date_creation" => "", + "date_validation" => "", + "date_modification" => "", + "type" => "", + "total_net" => "36.30", + "total_vat" => "6.00", + "total" => "42.30", + "payment_mode_id" => 50, + "note_private" => "Synchronised from Prestashop", + "note_public" => "", + "status" => "2", + "close_code" => NULL , + "close_note" => NULL, + "project_id" => NULL, + "lines" => array( + array( + "id" => NULL, + "type" => 0, + "desc" => "Horloge Vinyle Serge", + "vat_rate" => 20, + "qty" => "1", + "unitprice" => "30.000000", + "total_net" => "30.000000", + "total_vat" => "6.00", + "total" => "36.000000", + "date_start" => "", + "date_end" => "", + "payment_mode_id" => "", + "product_id" => "", + "product_ref" => "", + "product_label" => "", + "product_desc" => "" )) + ); + + // Call the WebService method and store its result in $result. + $authentication=array( + 'dolibarrkey'=>$conf->global->WEBSERVICES_KEY, + 'sourceapplication'=>'DEMO', + 'login'=>'admin', + 'password'=>'admin', + 'entity'=>''); + + // Test URL + $result=''; + $parameters = array('authentication'=>$authentication,'invoice'=>$body); + print __METHOD__." call method ".$WS_METHOD."\n"; + try { + $result = $this->soapclient->call($WS_METHOD,$parameters,$this->ns,''); + } + catch(SoapFault $exception) + { + echo $exception; + $result=0; + } + if (! $result || ! empty($result['faultstring'])) + { + print $this->soapclient->error_str; + print "\n<br>\n"; + print $this->soapclient->request; + print "\n<br>\n"; + print $this->soapclient->response; + print "\n"; + } + + print __METHOD__." result=".$result['result']['result_code'].$result['result']['result_label']."\n"; + $this->assertEquals('OK',$result['result']['result_code']); + $this->assertEquals('165', $result['ref_ext']); + + + return $result; } } diff --git a/test/phpunit/WebservicesThirdpartyTest.php b/test/phpunit/WebservicesThirdpartyTest.php index 0c99d7d362ae24b0c8be6c833ffd111612afa324..2888c432e7325603052f816b97515eeb302167e6 100755 --- a/test/phpunit/WebservicesThirdpartyTest.php +++ b/test/phpunit/WebservicesThirdpartyTest.php @@ -52,6 +52,13 @@ class WebservicesThirdpartyTest extends PHPUnit_Framework_TestCase protected $savuser; protected $savlangs; protected $savdb; + protected $soapclient; + + private $_WS_DOL_URL; + private $_ns='http://www.dolibarr.org/ns/'; + + + /** * Constructor @@ -67,6 +74,16 @@ class WebservicesThirdpartyTest extends PHPUnit_Framework_TestCase $this->savuser=$user; $this->savlangs=$langs; $this->savdb=$db; + + $this->_WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_thirdparty.php'; + + // Set the WebService URL + print __METHOD__." create nusoap_client for URL=".$this->_WS_DOL_URL."\n"; + $this->soapclient = new nusoap_client($this->_WS_DOL_URL); + if ($this->soapclient) { + $this->soapclient->soap_defencoding='UTF-8'; + $this->soapclient->decodeUTF8(false); + } print __METHOD__." db->type=".$db->type." user->id=".$user->id; //print " - db ".$db->db; @@ -117,31 +134,114 @@ class WebservicesThirdpartyTest extends PHPUnit_Framework_TestCase print __METHOD__."\n"; } - /** - * testWSThirdpartygetThirdParty + * testWSThirdpartycreateThirdParty * - * @return int + * @return array thirdparty created */ - public function testWSThirdpartygetThirdParty() + public function testWSThirdpartycreateThirdParty() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $WS_METHOD = 'createThirdParty'; + + + // Call the WebService method and store its result in $result. + $authentication=array( + 'dolibarrkey'=>$conf->global->WEBSERVICES_KEY, + 'sourceapplication'=>'DEMO', + 'login'=>'admin', + 'password'=>'admin', + 'entity'=>''); + + $body = array ( + "id" => NULL, + "ref" => "name", + "ref_ext" => "12", + "fk_user_author" => NULL, + "status" => NULL, + "client" => 1, + "supplier" => 0, + "customer_code" => "", + "supplier_code" => "", + "customer_code_accountancy" => "", + "supplier_code_accountancy" => "", + "date_creation" => "", // dateTime + "date_modification" => "", // dateTime + "note_private" => "", + "note_public" => "", + "address" => "", + "zip" => "", + "town" => "", + "province_id" => "", + "country_id" => "", + "country_code" => "", + "country" => "", + "phone" => "", + "fax" => "", + "email" => "", + "url" => "", + "profid1" => "", + "profid2" => "", + "profid3" => "", + "profid4" => "", + "profid5" => "", + "profid6" => "", + "capital" => "", + "vat_used" => "", + "vat_number" => "" + ); + + // Test URL + $result=''; + $parameters = array('authentication'=>$authentication, 'thirdparty'=>$body); + print __METHOD__." call method ".$WS_METHOD."\n"; + try { + $result = $this->soapclient->call($WS_METHOD,$parameters,$thid->ns,''); + } catch(SoapFault $exception) { + echo $exception; + $result=0; + } + if (! $result || ! empty($result['faultstring'])) { + //var_dump($soapclient); + print $this->soapclient->error_str; + print "\n<br>\n"; + print $this->soapclient->request; + print "\n<br>\n"; + print $this->soapclient->response; + print "\n"; + } + + print __METHOD__." result=".$result['result']['result_code']."\n"; + $this->assertEquals('OK',$result['result']['result_code']); + $this->assertEquals('name',$result['ref']); + + return $result; + } + + /** + * testWSThirdpartygetThirdPartyById + * + * Use id to retrieve thirdparty + * @depends testWSThirdpartycreateThirdParty + * + * @param array $result thirdparty created by create method + * @return array thirpdarty updated + */ + public function testWSThirdpartygetThirdPartyById($result) { global $conf,$user,$langs,$db; $conf=$this->savconf; $user=$this->savuser; $langs=$this->savlangs; $db=$this->savdb; + $id = $result['id']; - $WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_thirdparty.php'; $WS_METHOD = 'getThirdParty'; - $ns='http://www.dolibarr.org/ns/'; - - // Set the WebService URL - print __METHOD__." create nusoap_client for URL=".$WS_DOL_URL."\n"; - $soapclient = new nusoap_client($WS_DOL_URL); - if ($soapclient) { - $soapclient->soap_defencoding='UTF-8'; - $soapclient->decodeUTF8(false); - } // Call the WebService method and store its result in $result. $authentication=array( @@ -151,30 +251,150 @@ class WebservicesThirdpartyTest extends PHPUnit_Framework_TestCase 'password'=>'admin', 'entity'=>''); - // Test URL $result=''; - $parameters = array('authentication'=>$authentication, 'id'=>1); + $parameters = array('authentication'=>$authentication, 'id'=>$id); print __METHOD__." call method ".$WS_METHOD."\n"; try { - $result = $soapclient->call($WS_METHOD,$parameters,$ns,''); + $result = $this->soapclient->call($WS_METHOD,$parameters,$this->_ns,''); } catch(SoapFault $exception) { echo $exception; $result=0; } if (! $result || ! empty($result['faultstring'])) { //var_dump($soapclient); - print $soapclient->error_str; + print $this->soapclient->error_str; print "\n<br>\n"; - print $soapclient->request; + print $this->soapclient->request; print "\n<br>\n"; - print $soapclient->response; + print $this->soapclient->response; print "\n"; } - print __METHOD__." result=".$result."\n"; + print __METHOD__." result=".$result['result']['result_code']."\n"; $this->assertEquals('OK',$result['result']['result_code']); - + $this->assertEquals($id, $result['thirdparty']['id']); + $this->assertEquals('name', $result['thirdparty']['ref']); + $this->assertEquals('12', $result['thirdparty']['ref_ext']); + $this->assertEquals('0', $result['thirdparty']['status']); + $this->assertEquals('1', $result['thirdparty']['client']); + $this->assertEquals('0', $result['thirdparty']['supplier']); + + return $result; } + + /** + * testWSThirdpartygetThirdPartyByRefExt + * + * Use ref_ext to retrieve thirdparty + * + * @depends testWSThirdpartycreateThirdParty + * + * @param array $result thirdparty created by create method + * @return array thirdparty + */ + public function testWSThirdpartygetThirdPartyByRefExt($result) + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + $id = $result['id']; + + $WS_METHOD = 'getThirdParty'; + + // Call the WebService method and store its result in $result. + $authentication=array( + 'dolibarrkey'=>$conf->global->WEBSERVICES_KEY, + 'sourceapplication'=>'DEMO', + 'login'=>'admin', + 'password'=>'admin', + 'entity'=>''); + + // Test URL + $result=''; + $parameters = array('authentication'=>$authentication, 'id'=>'', 'ref'=>'', 'ref_ext'=>'12'); + print __METHOD__." call method ".$WS_METHOD."\n"; + try { + $result = $this->soapclient->call($WS_METHOD,$parameters,$this->_ns,''); + } catch(SoapFault $exception) { + echo $exception; + $result=0; + } + print $this->soapclient->response; + if (! $result || ! empty($result['faultstring'])) { + //var_dump($soapclient); + print $this->soapclient->error_str; + print "\n<br>\n"; + print $this->soapclient->request; + print "\n<br>\n"; + print $this->soapclient->response; + print "\n"; + } + + print __METHOD__." result=".$result['result']['result_code']."\n"; + $this->assertEquals('OK',$result['result']['result_code']); + $this->assertEquals($id, $result['thirdparty']['id']); + $this->assertEquals('name', $result['thirdparty']['ref']); + $this->assertEquals('12', $result['thirdparty']['ref_ext']); + $this->assertEquals('0', $result['thirdparty']['status']); + $this->assertEquals('1', $result['thirdparty']['client']); + $this->assertEquals('0', $result['thirdparty']['supplier']); + + + return $result; + } + + /** + * testWSThirdpartydeleteThirdParty + * + * @depends testWSThirdpartycreateThirdParty + * + * @param array $result thirdparty created by create method + * @return array thirdparty + */ + public function testWSThirdpartydeleteThirdPartyById($result) + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + $id = $result['id']; + + $WS_METHOD = 'deleteThirdParty'; + + // Call the WebService method and store its result in $result. + $authentication=array( + 'dolibarrkey'=>$conf->global->WEBSERVICES_KEY, + 'sourceapplication'=>'DEMO', + 'login'=>'admin', + 'password'=>'admin', + 'entity'=>''); + + $result=''; + $parameters = array('authentication'=>$authentication, 'id'=>$id, 'ref'=>'', 'ref_ext'=>''); + print __METHOD__." call method ".$WS_METHOD."\n"; + try { + $result = $this->soapclient->call($WS_METHOD,$parameters,$this->_ns,''); + } catch(SoapFault $exception) { + echo $exception; + $result=0; + } + if (! $result || ! empty($result['faultstring'])) { + print $this->soapclient->error_str; + print "\n<br>\n"; + print $this->soapclient->request; + print "\n<br>\n"; + print $this->soapclient->response; + print "\n"; + } + + print __METHOD__." result=".$result['result']['result_code']."\n"; + $this->assertEquals('OK',$result['result']['result_code']); + + return $result; + } }