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

This commit is contained in:
Laurent Destailleur 2014-11-30 15:43:04 +01:00
commit ef4bdcdb2a
23 changed files with 149 additions and 109 deletions

View File

@ -1,21 +0,0 @@
#!/bin/sh
# Helps find duplicate translation keys in language files
#
# Copyright (C) 2014 Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
for file in `find . -type f`
do
dupes=$(
sed "s/^\s*//" "$file" | # Remove any leading whitespace
sed "s/\s*\=/=/" | # Remove any whitespace before =
grep -Po "(^.*?)=" | # Non greedeely match everything before =
sed "s/\=//" | # Remove trailing = so we get the key
sort | uniq -d # Find duplicates
)
if [ -n "$dupes" ]
then
echo "Duplicates found in $file"
echo "$dupes"
fi
done

View File

@ -1,6 +1,6 @@
#!/bin/sh
#------------------------------------------------------
# Script to find files that are not Unix encoded
# Detect files that does not contains any tab inside
#
# Laurent Destailleur - eldy@users.sourceforge.net
#------------------------------------------------------

38
dev/fixduplicatelangkey.sh Executable file
View File

@ -0,0 +1,38 @@
#!/bin/sh
# Helps find duplicate translation keys in language files
#
# Copyright (C) 2014 Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
# Syntax
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
then
echo "Usage: detectduplicatelangkey.sh (list|fix)"
fi
if [ "x$1" = "xlist" ]
then
for file in `find htdocs/langs/en_US -name *.lang -type f`
do
dupes=$(
sed "s/^\s*//" "$file" | # Remove any leading whitespace
sed "s/\s*\=/=/" | # Remove any whitespace before =
grep -Po "(^.*?)=" | # Non greedeely match everything before =
sed "s/\=//" | # Remove trailing = so we get the key
sort | uniq -d # Find duplicates
)
if [ -n "$dupes" ]
then
echo "Duplicates found in $file"
echo "$dupes"
fi
done
fi
# To convert
if [ "x$1" = "xfix" ]
then
echo Feature not implemented. Please fix files manually.
fi

View File

@ -10,6 +10,7 @@ INPLACE='0'
max_input_size=0
max_output_size=0
usage()
{
cat <<EO
@ -37,7 +38,8 @@ optimize_image()
max_input_size=$(expr $max_input_size + $input_file_size)
if [ "${1##*.}" = "png" ]; then
optipng -o1 -clobber -quiet $1 -out $2.firstpass
#optipng -o1 -clobber -quiet $1 -out $2.firstpass
optipng -o1 -quiet $1 -out $2.firstpass
pngcrush -q -rem alla -reduce $2.firstpass $2 >/dev/null
rm -fr $2.firstpass
fi
@ -67,6 +69,25 @@ get_max_file_length()
main()
{
test=`type pngcrush >/dev/null 2>&1`
result=$?
if [ "x$result" == "x1" ]; then
echo "Tool pngcrush not found" && exit
fi
test=`type optipng >/dev/null 2>&1`
result=$?
if [ "x$result" == "x1" ]; then
echo "Tool optipng not found" && exit
fi
test=`type jpegtran >/dev/null 2>&1`
result=$?
if [ "x$result" == "x1" ]; then
echo "Tool jpegtran not found" && exit
fi
# If $INPUT is empty, then we use current directory
if [[ "$INPUT" == "" ]]; then
INPUT=$(pwd)
@ -81,6 +102,8 @@ main()
OUTPUT='/tmp/optimize'
fi
echo "Mode is $INPLACE (1=Images are replaced, 0=New images are stored into $OUTPUT)"
# We create the output directory
mkdir -p $OUTPUT
@ -96,6 +119,7 @@ main()
# Search of all jpg/jpeg/png in $INPUT
# We remove images from $OUTPUT if $OUTPUT is a subdirectory of $INPUT
echo "Scan $INPUT to find images"
IMAGES=$(find $INPUT -regextype posix-extended -regex '.*\.(jpg|jpeg|png)' | grep -v $OUTPUT)
if [ "$QUIET" == "0" ]; then
@ -103,6 +127,7 @@ main()
echo
fi
for CURRENT_IMAGE in $IMAGES; do
echo "Process $CURRENT_IMAGE"
filename=$(basename $CURRENT_IMAGE)
if [ "$QUIET" == "0" ]; then
printf '%s ' "$filename"
@ -155,6 +180,13 @@ SHORTOPTS="h,i:,o:,q,s,p"
LONGOPTS="help,input:,output:,quiet,no-stats,inplace"
ARGS=$(getopt -s bash --options $SHORTOPTS --longoptions $LONGOPTS --name $PROGNAME -- "$@")
# Syntax
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
then
echo "Usage: optimize_images.sh (list|fix) -i dirtoscan"
exit
fi
eval set -- "$ARGS"
while true; do
case $1 in
@ -191,5 +223,11 @@ while true; do
shift
done
# To convert
if [ "x$1" = "xlist" ]
then
INPLACE=0
fi
main

View File

@ -45,13 +45,13 @@ else
$obj_facturation->calculTotaux(); // Redefine prix_total_ttc, prix_total_ht et montant_tva from $_SESSION['poscart']
$obj_facturation->calculTotaux(); // Redefine prix_total_ttc, prix_total_ht et montant_tva from $_SESSION['poscart']
$total_ttc = $obj_facturation->prixTotalTtc();
$total_ttc = $obj_facturation->prixTotalTtc();
/*var_dump($obj_facturation);
/*var_dump($obj_facturation);
var_dump($_SESSION['poscart']);
var_dump($total_ttc);
var_dump($total_ttc);
exit;*/

View File

@ -32,7 +32,7 @@ $conf_db_base = $dolibarr_main_db_name;
$conf_fksoc = (! empty($_SESSION["CASHDESK_ID_THIRDPARTY"]))?$_SESSION["CASHDESK_ID_THIRDPARTY"]:($conf->global->CASHDESK_ID_THIRDPARTY>0?$conf->global->CASHDESK_ID_THIRDPARTY:0);
// Identifiant unique correspondant a l'entrepot a utiliser
$conf_fkentrepot = (! empty($_SESSION["CASHDESK_ID_WAREHOUSE"]))?$_SESSION["CASHDESK_ID_WAREHOUSE"]:($conf->global->CASHDESK_ID_WAREHOUSE>0?$conf->global->CASHDESK_ID_WAREHOUSE:0);
if (! empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $conf_fkentrepot = 0; // If option to disable stock decrease is on, we set warehouse id to 0.
if (! empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $conf_fkentrepot = 0; // If option to disable stock decrease is on, we set warehouse id to 0.
// Identifiant unique correspondant au compte caisse / liquide
$conf_fkaccount_cash = (! empty($_SESSION["CASHDESK_ID_BANKACCOUNT_CASH"]))?$_SESSION["CASHDESK_ID_BANKACCOUNT_CASH"]:($conf->global->CASHDESK_ID_BANKACCOUNT_CASH>0?$conf->global->CASHDESK_ID_BANKACCOUNT_CASH:0);

View File

@ -226,25 +226,25 @@ switch ($action)
if ($warehouseidtodecrease > 0)
{
// Decrease
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
$langs->load("agenda");
// Loop on each line
$cpt=count($invoice->lines);
for ($i = 0; $i < $cpt; $i++)
{
if ($invoice->lines[$i]->fk_product > 0)
{
$mouvP = new MouvementStock($db);
$mouvP->origin = &$invoice;
// We decrease stock for product
if ($invoice->type == $invoice::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
else $result=$mouvP->livraison($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
if ($result < 0) {
$error++;
}
}
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
$langs->load("agenda");
// Loop on each line
$cpt=count($invoice->lines);
for ($i = 0; $i < $cpt; $i++)
{
if ($invoice->lines[$i]->fk_product > 0)
{
$mouvP = new MouvementStock($db);
$mouvP->origin = &$invoice;
// We decrease stock for product
if ($invoice->type == $invoice::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
else $result=$mouvP->livraison($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
if ($result < 0) {
$error++;
}
}
}
}
}
}
else
{
@ -263,28 +263,28 @@ switch ($action)
$resultvalid=$invoice->validate($user, $obj_facturation->numInvoice(), 0);
if ($warehouseidtodecrease > 0)
{
// Decrease
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
$langs->load("agenda");
// Loop on each line
$cpt=count($invoice->lines);
for ($i = 0; $i < $cpt; $i++)
{
if ($invoice->lines[$i]->fk_product > 0)
{
$mouvP = new MouvementStock($db);
$mouvP->origin = &$invoice;
// We decrease stock for product
if ($invoice->type == $invoice::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
else $result=$mouvP->livraison($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
if ($result < 0) {
$error++;
}
}
}
}
if ($warehouseidtodecrease > 0)
{
// Decrease
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
$langs->load("agenda");
// Loop on each line
$cpt=count($invoice->lines);
for ($i = 0; $i < $cpt; $i++)
{
if ($invoice->lines[$i]->fk_product > 0)
{
$mouvP = new MouvementStock($db);
$mouvP->origin = &$invoice;
// We decrease stock for product
if ($invoice->type == $invoice::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
else $result=$mouvP->livraison($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
if ($result < 0) {
$error++;
}
}
}
}
$id = $invoice->id;

View File

@ -1998,7 +1998,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$rowspan ++;
// Bank Account
if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && ! empty($conf->banque->enabled))
if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && ! empty($conf->banque->enabled))
{
print '<tr><td class="nowrap">';
print '<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';

View File

View File

@ -1544,7 +1544,7 @@ elseif (! empty($object->id))
print '</td></tr>';
// Bank Account
if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && ! empty($conf->banque->enabled))
if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && ! empty($conf->banque->enabled))
{
print '<tr><td class="nowrap">';
print '<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';

0
htdocs/install/upgrade.php Executable file → Normal file
View File

0
htdocs/install/upgrade2.php Executable file → Normal file
View File

View File

@ -1039,7 +1039,6 @@ YesInSummer=Yes in summer
OnlyFollowingModulesAreOpenedToExternalUsers=Note, only following modules are opened to external users (whatever are permission of such users):
SuhosinSessionEncrypt=Session storage encrypted by Suhosin
ConditionIsCurrently=Condition is currently %s
TestNotPossibleWithCurrentBrowsers=Automatic detection not possible
YouUseBestDriver=You use driver %s that is best driver available currently.
YouDoNotUseBestDriver=You use drive %s but driver %s is recommended.
NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization.
@ -1548,7 +1547,6 @@ MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your
NbMajMin=Minimum number of uppercase characters
NbNumMin=Minimum number of numeric characters
NbSpeMin=Minimum number of special characters
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

View File

@ -137,8 +137,6 @@ BillFrom=From
BillTo=To
ActionsOnBill=Actions on invoice
NewBill=New invoice
Prélèvements=Standing order
Prélèvements=Standing orders
LastBills=Last %s invoices
LastCustomersBills=Last %s customers invoices
LastSuppliersBills=Last %s suppliers invoices
@ -219,7 +217,6 @@ NoInvoice=No invoice
ClassifyBill=Classify invoice
SupplierBillsToPay=Suppliers invoices to pay
CustomerBillsUnpaid=Unpaid customers invoices
DispenseMontantLettres=The bill drafted by mechanographical are exempt from the order in letters
DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters
NonPercuRecuperable=Non-recoverable
SetConditions=Set payment terms

View File

@ -101,9 +101,6 @@ CatSupLinks=Links between suppliers and categories
CatCusLinks=Links between customers/prospects and categories
CatProdLinks=Links between products/services and categories
CatMemberLinks=Links between members and categories
CatProdLinks=Products
CatCusLinks=Customer/Prospects
CatSupLinks=Suppliers
DeleteFromCat=Remove from category
DeletePicture=Picture delete
ConfirmDeletePicture=Confirm picture deletion?

View File

@ -1,7 +1,7 @@
# Dolibarr language file - Source file is en_US - contracts
ContractsArea=Contracts area
ListOfContracts=List of contracts
LastContracts=Last %s modified contracts
LastModifiedContracts=Last %s modified contracts
AllContracts=All contracts
ContractCard=Contract card
ContractStatus=Contract status

View File

@ -18,9 +18,8 @@ CronExplainHowToRunUnix=On Unix environment you should use crontab to run Comman
CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run Command line each minutes
# Menu
CronJobs=Scheduled jobs
CronListActive= List of active jobs
CronListInactive= List of disabled jobs
CronListActive= List of scheduled jobs
CronListActive=List of active/scheduled jobs
CronListInactive=List of disabled jobs
# Page list
CronDateLastRun=Last run
CronLastOutput=Last run output

View File

@ -53,7 +53,7 @@ ShippingExist=A shipment exists
DraftOrWaitingApproved=Draft or approved not yet ordered
DraftOrWaitingShipped=Draft or validated not yet shipped
MenuOrdersToBill=Orders delivered
MenuOrdersToBill2=Orders to bill
MenuOrdersToBill2=Billable orders
SearchOrder=Search order
SearchACustomerOrder=Search a customer order
ShipProduct=Ship product
@ -154,7 +154,6 @@ OrderByPhone=Phone
CreateInvoiceForThisCustomer=Bill orders
NoOrdersToInvoice=No orders billable
CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders.
MenuOrdersToBill2=Billables orders
OrderCreation=Order creation
Ordered=Ordered
OrderCreated=Your orders have been created

View File

@ -16,11 +16,8 @@ ResourceType=Resource type
ResourceFormLabel_description=Resource description
ResourcesLinkedToElement=Resources linked to element
RessourceLineSuccessfullyUpdated=Resource successfully updated
RessourceLineSuccessfullyDeleted=Resource successfully deleted
ShowResourcePlanning=Show resource planning
NoResourceInDatabase=No resource in database
GotoDate=Go to date
ResourceElementPage=Element resources

View File

@ -63,7 +63,6 @@ ShowGroup=Show group
ShowUser=Show user
NonAffectedUsers=Non assigned users
UserModified=User modified successfully
GroupModified=Group modified successfully
PhotoFile=Photo file
UserWithDolibarrAccess=User with Dolibarr access
ListOfUsersInGroup=List of users in this group

View File

@ -41,14 +41,13 @@ TransMetod=Transmission method
Send=Send
Lines=Lines
StandingOrderReject=Issue a rejection
InvoiceRefused=Invoice refused
WithdrawalRefused=Withdrawal refused
WithdrawalRefusedConfirm=Are you sure you want to enter a withdrawal rejection for society
RefusedData=Date of rejection
RefusedReason=Reason for rejection
RefusedInvoicing=Billing the rejection
NoInvoiceRefused=Do not charge the rejection
InvoiceRefused=Charge the rejection to customer
InvoiceRefused=Invoice refused (Charge the rejection to customer)
Status=Status
StatusUnknown=Unknown
StatusWaiting=Waiting

View File

@ -82,7 +82,7 @@ if ($action == 'add' && $user->rights->stock->creer)
if (! empty($backtopage))
{
header("Location: ".$backtopage);
header("Location: ".$backtopage);
exit;
}
else
@ -93,7 +93,7 @@ if ($action == 'add' && $user->rights->stock->creer)
}
else
{
$action = 'create';
$action = 'create';
setEventMessage($object->error, 'errors');
}
}
@ -179,7 +179,7 @@ if ($action == 'create')
print "<form action=\"card.php\" method=\"post\">\n";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
dol_fiche_head();

View File

@ -824,32 +824,32 @@ class FunctionsLibTest extends PHPUnit_Framework_TestCase
$this->assertEquals(dol_nl2br($string, 1, 1), "a<br />a");
}
/**
* testDolPrice2Num
*
* @return boolean
*/
public function testDolPrice2Num()
/**
* testDolPrice2Num
*
* @return boolean
*/
public function testDolPrice2Num()
{
$this->assertEquals(1000, price2num('1 000.0'));
$this->assertEquals(1000, price2num('1 000','MT'));
$this->assertEquals(1000, price2num('1 000','MU'));
$this->assertEquals(1000, price2num('1 000.0'));
$this->assertEquals(1000, price2num('1 000','MT'));
$this->assertEquals(1000, price2num('1 000','MU'));
$this->assertEquals(1000.123456, price2num('1 000.123456'));
// Round down
$this->assertEquals(1000.12, price2num('1 000.123452','MT'));
$this->assertEquals(1000.12345, price2num('1 000.123452','MU'),"Test MU");
$this->assertEquals(1000.12, price2num('1 000.123452','MT'));
$this->assertEquals(1000.12345, price2num('1 000.123452','MU'),"Test MU");
// Round up
$this->assertEquals(1000.13, price2num('1 000.125456','MT'));
$this->assertEquals(1000.12546, price2num('1 000.125456','MU'),"Test MU");
// Round up
$this->assertEquals(1000.13, price2num('1 000.125456','MT'));
$this->assertEquals(1000.12546, price2num('1 000.125456','MU'),"Test MU");
// Text can't be converted
$this->assertEquals('12.4$',price2num('12.4$'));
$this->assertEquals('12r.4$',price2num('12r.4$'));
$this->assertEquals('12r.4$',price2num('12r.4$'));
return true;
return true;
}
}