Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur 2014-10-09 17:06:13 +02:00
commit 60a6e2a579
6 changed files with 74 additions and 19 deletions

View File

@ -5,6 +5,7 @@ English Dolibarr ChangeLog
***** ChangeLog for 3.7 compared to 3.6.* *****
For users:
- New: Can add product into category from category card.
- New: PDF event report show project and status of event.
- New: Can filter on status on interventions.
- New: Add help info of field type into dictionary of payment types.

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="dolibarr" default="hudson" basedir=".">
fdfds
<!-- Exclude/ignore paths -->
<property name="ignorepaths" value="${basedir}/htdocs/conf,${basedir}/htdocs/core/filemanagerdol,${basedir}/htdocs/includes" />
<property name="ignoreregexp" value="**/PEAR/*,**/NET/*,**/HTTP/*,**/zendgdata/*,**/reportico/*" />

View File

@ -207,8 +207,7 @@ if (empty($reshook))
}
else
{
setEventMessage($cat->error,'errors');
setEventMessage($cat->errors,'errors');
setEventMessages($cat->error,$this->errors,'errors');
}
}
}
@ -628,7 +627,7 @@ function formCategory($db,$object,$typeid,$socid=0,$showclassifyform=1)
// Form to add record into a category
if ($showclassifyform)
{
print '<form method="post" action="'.DOL_URL_ROOT.'/categories/categorie.php">';
print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="typeid" value="'.$typeid.'">';
print '<input type="hidden" name="type" value="'.$typeid.'">';

View File

@ -38,6 +38,7 @@ $type=GETPOST('type');
$action=GETPOST('action');
$confirm=GETPOST('confirm');
$removeelem = GETPOST('removeelem','int');
$elemid=GETPOST('elemid');
if ($id == "")
{
@ -120,6 +121,33 @@ if ($user->rights->categorie->supprimer && $action == 'confirm_delete' && $confi
}
}
if ($type==0 && $elemid && $action == 'addintocategory' && ($user->rights->produit->creer || $user->rights->service->creer))
{
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
$newobject = new Product($db);
$result = $newobject->fetch($elemid);
$elementtype = 'product';
// TODO Add into categ
$result=$object->add_type($newobject,$elementtype);
if ($result >= 0)
{
setEventMessage($langs->trans("WasAddedSuccessfully",$newobject->ref));
}
else
{
if ($cat->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{
setEventMessage($langs->trans("ObjectAlreadyLinkedToCategory"),'warnings');
}
else
{
setEventMessages($object->error,$object->errors,'errors');
}
}
}
/*
@ -144,6 +172,7 @@ dol_fiche_head($head, 'card', $title, 0, 'category');
/*
* Confirmation suppression
*/
if ($action == 'delete')
{
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;type='.$type,$langs->trans('DeleteCategory'),$langs->trans('ConfirmDeleteCategory'),'confirm_delete');
@ -251,10 +280,9 @@ else
print "</table>\n";
}
// List of products
// List of products or services (type is type of category)
if ($object->type == 0)
{
$prods = $object->getObjectsInCateg("product");
if ($prods < 0)
{
@ -262,6 +290,29 @@ if ($object->type == 0)
}
else
{
$showclassifyform=1; $typeid=0;
// Form to add record into a category
if ($showclassifyform)
{
print '<br>';
print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="typeid" value="'.$typeid.'">';
print '<input type="hidden" name="type" value="'.$typeid.'">';
print '<input type="hidden" name="id" value="'.$object->id.'">';
print '<input type="hidden" name="action" value="addintocategory">';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td width="40%">';
print $langs->trans("AddProductServiceIntoCategory").' &nbsp;';
print $form->select_produits('','elemid','',0,0,-1,2,'',1);
print '</td><td>';
print '<input type="submit" class="button" value="'.$langs->trans("ClassifyInCategory").'"></td>';
print '</tr>';
print '</table>';
print '</form>';
}
print "<br>";
print "<table class='noborder' width='100%'>\n";
print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("ProductsAndServices")."</td></tr>\n";

View File

@ -111,3 +111,4 @@ ExtraFieldsCategories=Complementary attributes
CategoriesSetup=Categories setup
CategorieRecursiv=Link with parent category automatically
CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory
AddProductServiceIntoCategory=Add the following product/service

View File

@ -341,21 +341,23 @@ if ($isphoto) {
print '</tr>';
// MultiPrix
if (! empty($conf->global->PRODUIT_MULTIPRICES)) {
if (! empty($socid)) {
if (! empty($conf->global->PRODUIT_MULTIPRICES))
{
if (! empty($socid))
{
$soc = new Societe($db);
$soc->id = $socid;
$soc->fetch($socid);
print '<tr><td>' . $langs->trans("SellingPrice") . '</td>';
if ($object->multiprices_base_type ["$soc->price_level"] == 'TTC') {
if ($object->multiprices_base_type["$soc->price_level"] == 'TTC') {
print '<td>' . price($object->multiprices_ttc ["$soc->price_level"]);
} else {
print '<td>' . price($object->multiprices ["$soc->price_level"]);
}
if ($object->multiprices_base_type ["$soc->price_level"]) {
if ($object->multiprices_base_type["$soc->price_level"]) {
print ' ' . $langs->trans($object->multiprices_base_type ["$soc->price_level"]);
} else {
print ' ' . $langs->trans($object->price_base_type);
@ -364,15 +366,16 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) {
// Prix mini
print '<tr><td>' . $langs->trans("MinPrice") . '</td><td>';
if ($object->multiprices_base_type ["$soc->price_level"] == 'TTC') {
print price($object->multiprices_min_ttc ["$soc->price_level"]) . ' ' . $langs->trans($object->multiprices_base_type ["$soc->price_level"]);
if ($object->multiprices_base_type["$soc->price_level"] == 'TTC')
{
print price($object->multiprices_min_ttc["$soc->price_level"]) . ' ' . $langs->trans($object->multiprices_base_type["$soc->price_level"]);
} else {
print price($object->multiprices_min ["$soc->price_level"]) . ' ' . $langs->trans($object->multiprices_base_type ["$soc->price_level"]);
print price($object->multiprices_min["$soc->price_level"]) . ' ' . $langs->trans(empty($object->multiprices_base_type["$soc->price_level"])?'HT':$object->multiprices_base_type["$soc->price_level"]);
}
print '</td></tr>';
// TVA
print '<tr><td>' . $langs->trans("VATRate") . '</td><td>' . vatrate($object->multiprices_tva_tx ["$soc->price_level"], true) . '</td></tr>';
print '<tr><td>' . $langs->trans("VATRate") . '</td><td>' . vatrate($object->multiprices_tva_tx["$soc->price_level"], true) . '</td></tr>';
}
else
{
@ -393,12 +396,12 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) {
print '</td>';
if ($object->multiprices_base_type ["$i"] == 'TTC') {
print '<td>' . price($object->multiprices_ttc ["$i"]);
print '<td>' . price($object->multiprices_ttc["$i"]);
} else {
print '<td>' . price($object->multiprices ["$i"]);
print '<td>' . price($object->multiprices["$i"]);
}
if ($object->multiprices_base_type ["$i"]) {
if ($object->multiprices_base_type["$i"]) {
print ' ' . $langs->trans($object->multiprices_base_type ["$i"]);
} else {
print ' ' . $langs->trans($object->price_base_type);
@ -408,9 +411,9 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) {
// Prix mini
print '<tr><td>' . $langs->trans("MinPrice") . ' ' . $i . '</td><td>';
if ($object->multiprices_base_type ["$i"] == 'TTC') {
print price($object->multiprices_min_ttc ["$i"]) . ' ' . $langs->trans($object->multiprices_base_type ["$i"]);
print price($object->multiprices_min_ttc["$i"]) . ' ' . $langs->trans($object->multiprices_base_type["$i"]);
} else {
print price($object->multiprices_min ["$i"]) . ' ' . $langs->trans($object->multiprices_base_type ["$i"]);
print price($object->multiprices_min["$i"]) . ' ' . $langs->trans(empty($object->multiprices_base_type["$i"])?'HT':$object->multiprices_base_type["$i"]);
}
print '</td></tr>';