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

This commit is contained in:
Peter Fontaine 2013-10-21 15:18:59 +02:00
commit 77f7bd62cd
26 changed files with 275 additions and 79 deletions

View File

@ -64,6 +64,7 @@ For users:
- New: Can choose contact on event (action com) creation, and filtred by thirdparty.
- New: Add hidden option MAIN_FORCE_DEFAULT_STATE_ID.
- New: Add page to make mass stock movement.
- New: Add field oustanding limit into thirdparty properties.
For translators:
- Qual: Normalized sort order of all languages files with english reference files.
@ -315,7 +316,7 @@ For users:
- New: Can list elements (invoices, orders or proposals) on a particular
user contact). This allow to view a "basket" of its elements.
- New: Show bank account on payment list of invoice card.
- New: Cloning project allow to clones task, notes, files, contacts.
- New: Cloning project allow to clones task, notes, projects files, tasks files, contacts.
- New: Enhance default style.
- New: Can edit and resiliate member status from list.
- New: Can insert URL links into elements lines. Also reported into PDF.

View File

@ -128,6 +128,14 @@ if ($action == 'cstc')
if ($result < 0) setEventMessage($object->error,'errors');
}
// Update communication level
if ($action == 'setOutstandingBill')
{
$object->fetch($id);
$object->outstanding_limit=GETPOST('OutstandingBill');
$result=$object->set_OutstandingBill($user);
if ($result < 0) setEventMessage($object->error,'errors');
}
/*
@ -369,6 +377,18 @@ if ($id > 0)
print '</td>';
print '</tr>';
if ($object->client)
{
print '<tr>';
print '<td>';
print $form->editfieldkey("OutstandingBill",'OutstandingBill',$object->outstanding_limit,$object,$user->rights->societe->creer);
print '</td><td colspan="3">';
print $form->editfieldval("OutstandingBill",'OutstandingBill',$object->outstanding_limit,$object,$user->rights->societe->creer);
print '</td>';
print '</tr>';
}
// Multiprice level
if (! empty($conf->global->PRODUIT_MULTIPRICES))
{
@ -898,4 +918,4 @@ dol_htmloutput_mesg('',$mesgs);
// End of page
llxFooter();
$db->close();
?>
?>

View File

@ -1885,6 +1885,18 @@ else
print '</tr>';
}
if ($soc->outstanding_limit)
{
// Outstanding Bill
print '<tr><td>';
print $langs->trans('OutstandingBill');
print '</td><td align=right colspan=3>';
print price($soc->get_OutstandingBill()).' / ';
print price($soc->outstanding_limit, 0, '', 1, -1, -1, $conf->currency);
print '</td>';
print '</tr>';
}
// Other attributes
$res=$object->fetch_optionals($object->id,$extralabels);
$parameters=array('colspan' => ' colspan="3"');

View File

@ -2195,6 +2195,19 @@ else
print '</td></tr>';
}
if ($soc->outstanding_limit)
{
// Outstanding Bill
print '<tr><td>';
print $langs->trans('OutstandingBill');
print '</td><td align=right colspan=3>';
print price($soc->get_OutstandingBill()).' / ';
print price($soc->outstanding_limit, 0, '', 1, -1, -1, $conf->currency);
print '</td>';
print '</tr>';
}
// Other attributes
$res=$object->fetch_optionals($object->id,$extralabels);
$parameters=array('colspan' => ' colspan="3"');

View File

@ -2318,6 +2318,18 @@ if ($action == 'create')
print '</td></tr>';
}
if ($soc->outstanding_limit)
{
// Outstanding Bill
print '<tr><td>';
print $langs->trans('OutstandingBill');
print '</td><td align=right>';
print price($soc->get_OutstandingBill()).' / ';
print price($soc->outstanding_limit).'</td><td colspan=2>';
print '</td>';
print '</tr>';
}
// Other attributes
$parameters=array('objectsrc' => $objectsrc, 'colspan' => ' colspan="3"');
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
@ -3034,6 +3046,7 @@ else if ($id > 0 || ! empty($ref))
$nbrows=8; $nbcols=2;
if (! empty($conf->projet->enabled)) $nbrows++;
if (! empty($conf->banque->enabled)) $nbcols++;
if (! empty($soc->outstandingbill)) $nbrows++;
if($mysoc->localtax1_assuj=="1") $nbrows++;
if($mysoc->localtax2_assuj=="1") $nbrows++;
if ($selleruserevenustamp) $nbrows++;
@ -3305,6 +3318,18 @@ else if ($id > 0 || ! empty($ref))
}
print '</td></tr>';
if ($soc->outstandingbill)
{
// Outstanding Bill
print '<tr><td>';
print $langs->trans('OutstandingBill');
print '</td><td align=right>';
print price($soc->get_OutstandingBill()).' / ';
print price($soc->outstandingbill);
print '</td>';
print '</tr>';
}
// Amount
print '<tr><td>'.$langs->trans('AmountHT').'</td>';
print '<td align="right" colspan="3" nowrap>'.price($object->total_ht,1,'',1,-1,-1,$conf->currency).'</td></tr>';
@ -3955,4 +3980,4 @@ dol_htmloutput_mesg('',$mesgs);
llxFooter();
$db->close();
?>
?>

View File

@ -103,6 +103,7 @@ 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->stock->enabled', __HANDLER__, 'left', 3103__+MAX_llx_menu__, 'products', '', 3100__+MAX_llx_menu__, '/product/stock/valo.php', 'EnhancedValue', 1, 'stocks', '$user->rights->stock->lire', '', 2, 2, __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->stock->enabled', __HANDLER__, 'left', 3104__+MAX_llx_menu__, 'products', '', 3100__+MAX_llx_menu__, '/product/stock/mouvement.php', 'Movements', 1, 'stocks', '$user->rights->stock->mouvement->lire', '', 2, 3, __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->stock->enabled && $conf->fournisseur->enabled', __HANDLER__, 'left', 3105__+MAX_llx_menu__, 'products', '', 3100__+MAX_llx_menu__, '/product/stock/replenish.php', 'Replenishments', 1, 'stocks', '$user->rights->stock->mouvement->lire && $user->rights->fournisseur->lire', '', 2, 4, __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->stock->enabled && $conf->fournisseur->enabled', __HANDLER__, 'left', 3106__+MAX_llx_menu__, 'products', '', 3100__+MAX_llx_menu__, '/product/stock/massstockmove.php', 'StockTransfer', 1, 'stocks', '$user->rights->stock->mouvement->lire && $user->rights->fournisseur->lire', '', 2, 5, __ENTITY__);
-- Product - Categories
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->categorie->enabled', __HANDLER__, 'left', 3200__+MAX_llx_menu__, 'products', 'cat', 3__+MAX_llx_menu__, '/categories/index.php?leftmenu=cat&amp;type=0', 'Categories', 0, 'categories', '$user->rights->categorie->lire', '', 2, 4, __ENTITY__);

View File

@ -565,7 +565,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
/*
* Menu TIERS
* Menu THIRDPARTIES
*/
if ($mainmenu == 'companies')
{
@ -598,7 +598,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
//$newmenu->add("/contact/list.php?leftmenu=customers&amp;type=p", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire);
}
// Clients
// Customers/Prospects
if (! empty($conf->societe->enabled) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))
{
$langs->load("commercial");
@ -608,7 +608,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
//$newmenu->add("/contact/list.php?leftmenu=customers&amp;type=c", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire);
}
// Fournisseurs
// Suppliers
if (! empty($conf->societe->enabled) && ! empty($conf->fournisseur->enabled))
{
$langs->load("suppliers");
@ -1008,6 +1008,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
if (empty($leftmenu) || $leftmenu=="stock") $newmenu->add("/product/stock/valo.php", $langs->trans("EnhancedValue"), 1, $user->rights->stock->lire);
if (empty($leftmenu) || $leftmenu=="stock") $newmenu->add("/product/stock/mouvement.php", $langs->trans("Movements"), 1, $user->rights->stock->mouvement->lire);
if ($conf->fournisseur->enabled) if (empty($leftmenu) || $leftmenu=="stock") $newmenu->add("/product/stock/replenish.php", $langs->trans("Replenishment"), 1, $user->rights->stock->mouvement->lire && $user->rights->fournisseur->lire);
if ($conf->fournisseur->enabled) if (empty($leftmenu) || $leftmenu=="stock") $newmenu->add("/product/stock/massstockmove.php", $langs->trans("StockTransfer"), 1, $user->rights->stock->mouvement->lire && $user->rights->fournisseur->lire);
}
// Expeditions

View File

@ -16,6 +16,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Javascript code to activate drag and drop on lines
* You can use this if you want to be abale to drag and drop rows of a table.
* You must add id="tablelines" ont table level tag and have count($object->lines) or count($taskarray) > 0
*/
?>
@ -26,6 +28,7 @@ $fk_element=$object->fk_element;
$table_element_line=$object->table_element_line;
$nboflines=(isset($object->lines)?count($object->lines):(isset($tasksarray)?count($tasksarray):0));
$forcereloadpage=empty($conf->global->MAIN_FORCE_RELOAD_PAGE)?0:1;
$tagidfortablednd=(empty($tagidfortablednd)?'tablelines':$tagidfortablednd);
if (GETPOST('action') != 'editline' && $nboflines > 1) { ?>
<script type="text/javascript">
@ -37,10 +40,10 @@ $(document).ready(function(){
$(".tdlineupdown").css("background-repeat","no-repeat");
$(".tdlineupdown").css("background-position","center center");
$("#tablelines").tableDnD({
$("#<?php echo $tagidfortablednd; ?>").tableDnD({
onDrop: function(table, row) {
var reloadpage = "<?php echo $forcereloadpage; ?>";
var roworder = cleanSerialize($("#tablelines").tableDnDSerialize());
var roworder = cleanSerialize($("#<?php echo $tagidfortablednd; ?>").tableDnDSerialize());
var table_element_line = "<?php echo $table_element_line; ?>";
var fk_element = "<?php echo $fk_element; ?>";
var element_id = "<?php echo $id; ?>";
@ -55,7 +58,7 @@ $(document).ready(function(){
if (reloadpage == 1) {
location.href = '<?php echo $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; ?>';
} else {
$("#tablelines .drag").each(
$("#<?php echo $tagidfortablednd; ?> .drag").each(
function( intIndex ) {
$(this).removeClass("pair impair");
if (intIndex % 2 == 0) $(this).addClass('impair');

View File

@ -299,7 +299,8 @@ ALTER TABLE llx_facture_fourn MODIFY COLUMN fk_mode_reglement integer NULL;
ALTER TABLE llx_facture_fourn MODIFY COLUMN fk_cond_reglement integer NULL;
insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (9,'COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1);
INSERT INTO llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (9,'COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1);
ALTER TABLE llx_contratdet ADD column product_type integer DEFAULT 1 after total_ttc;
@ -311,3 +312,7 @@ create table llx_contrat_extrafields
import_key varchar(14) -- import key
) ENGINE=innodb;
-- add outstanding bill
ALTER TABLE llx_societe ADD outstanding_limit double(24,8) DEFAULT NULL AFTER mode_reglement_supplier;

View File

@ -52,7 +52,7 @@ create table llx_societe
fk_effectif integer DEFAULT 0, --
fk_typent integer DEFAULT 0, --
fk_forme_juridique integer DEFAULT 0, -- juridical status
fk_currency integer DEFAULT 0, -- currency
fk_currency integer DEFAULT 0, -- currency
siren varchar(128), -- IDProf1: siren or RCS for france
siret varchar(128), -- IDProf2: siret for france
ape varchar(128), -- IDProf3: code ape for france
@ -61,7 +61,7 @@ create table llx_societe
idprof6 varchar(128), -- IDProf6: nu for france
tva_intra varchar(20), -- tva
capital real, -- capital de la societe
fk_stcomm integer DEFAULT 0 NOT NULL, -- commercial statut
fk_stcomm integer DEFAULT 0 NOT NULL, -- commercial statut
note_private text, --
note_public text, --
prefix_comm varchar(5), -- prefix commercial
@ -85,6 +85,7 @@ create table llx_societe
barcode varchar(255), -- barcode
fk_barcode_type integer NULL DEFAULT 0, -- barcode type
price_level integer NULL, -- level of price for multiprices
outstanding_limit double(24,8) DEFAULT NULL, -- allowed outstanding limit
default_lang varchar(6), -- default language
logo varchar(255),
canvas varchar(32), -- type of canvas if used (null by default)

View File

@ -397,7 +397,7 @@ InActivity=Open
ActivityCeased=Closed
ActivityStateFilter=Activity status
ProductsIntoElements=List of products into
OutstandingBill=Outstanding Bill
# Monkey
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.
# Leopard

View File

@ -89,7 +89,8 @@ CloneProject=Clone project
CloneTasks=Clone tasks
CloneContacts=Clone contacts
CloneNotes=Clone notes
CloneFiles=Clone joined files
CloneProjectFiles=Clone project joined files
CloneTaskFiles=Clone task(s) joined files (if task(s) cloned)
ConfirmCloneProject=Are you sure to clone this project ?
ProjectReportDate=Change task date according project start date
ErrorShiftTaskDate=Impossible to shift task date according to new project start date

View File

@ -397,7 +397,7 @@ InActivity=En activité
ActivityCeased=Clos
ActivityStateFilter=Statut d'activité
ProductsIntoElements=Liste des produits dans les %s
OutstandingBill=Encours de facturation
# Monkey
MonkeyNumRefModelDesc=Renvoie le numéro sous la forme %syymm-nnnn pour les codes clients et %syymm-nnnn pour les codes fournisseurs où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0.
# Leopard

View File

@ -89,7 +89,8 @@ CloneProject=Cloner le projet
CloneTasks=Cloner les tâches
CloneContacts=Cloner les contacts
CloneNotes=Cloner les notes
CloneFiles=Cloner les pièces jointes
CloneProjectFiles=Cloner les pièces jointes du projet
CloneTaskFiles=Cloner les pièces jointes des tâche(s) (si tâche(s) cloner)
ConfirmCloneProject=Êtes-vous sûr de vouloir cloner ce projet ?
ProjectReportDate=Reporter les dates des tâches en fonction de la date de départ.
ErrorShiftTaskDate=Une erreur c'est produite dans le report des dates des tâches.
@ -104,7 +105,7 @@ TypeContact_project_task_internal_TASKEXECUTIVE=Responsable
TypeContact_project_task_external_TASKEXECUTIVE=Responsable
TypeContact_project_task_internal_CONTRIBUTOR=Intervenant
TypeContact_project_task_external_CONTRIBUTOR=Intervenant
SelectElement=Eléments associable au projet :
SelectElement=Eléments associables au projet :
AddElement=Associer
# Documents models
DocumentModelBaleine=Modèle de rapport de projet complet (logo...)

View File

@ -18,8 +18,8 @@
/**
* \file htdocs/product/stock/massstockmove.php
* \ingroup stock
* \brief This page allows to select several products, then incoming warehouse and
* outgoing warehouse and create all stock movements for this.
* \brief This page allows to select several products, then incoming warehouse and
* outgoing warehouse and create all stock movements for this.
*/
require '../../main.inc.php';
@ -74,7 +74,7 @@ if (! empty($_SESSION['massstockmove'])) $listofdata=dol_json_decode($_SESSION['
if ($action == 'addline')
{
if (! ($id_product > 0))
if (! ($id_product > 0))
{
$error++;
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Product")),'errors');
@ -94,20 +94,20 @@ if ($action == 'addline')
$error++;
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("WarehouseTarget")),'errors');
}
if ($id_sw > 0 && $id_tw == $id_sw)
if ($id_sw > 0 && $id_tw == $id_sw)
{
$error++;
$langs->load("errors");
setEventMessage($langs->trans("ErrorWarehouseMustDiffers"),'errors');
}
if (! $error)
{
if (count(array_keys($listofdata)) > 0) $id=max(array_keys($listofdata)) + 1;
else $id=1;
$listofdata[$id]=array('id'=>$id, 'id_product'=>$id_product, 'qty'=>$qty, 'id_sw'=>$id_sw, 'id_tw'=>$id_tw);
$_SESSION['massstockmove']=dol_json_encode($listofdata);
unset($id_product);
//unset($id_sw);
//unset($id_tw);
@ -125,27 +125,27 @@ if ($action == 'delline' && $idline != '')
if ($action == 'createmovements')
{
$error=0;
if (! GETPOST("label"))
{
$error++;
setEventMessage($langs->trans("ErrorFieldRequired"),$langs->transnoentitiesnoconv("LabelMovement"));
}
$db->begin();
if (! $error)
{
$product = new Product($db);
foreach($listofdata as $key => $val) // Loop on each movement to do
{
{
$id=$val['id'];
$id_product=$val['id_product'];
$id_sw=$val['id_sw'];
$id_tw=$val['id_tw'];
$qty=price2num($val['qty']);
if (! $error && $id_sw <> $id_tw && is_numeric($qty) && $id_product)
{
$result=$product->fetch($id_product);
@ -171,9 +171,9 @@ if ($action == 'createmovements')
if ($result1 < 0)
{
$error++;
setEventMessage($product->errors,'errors');
setEventMessage($product->errors,'errors');
}
// Add stock
$result2=$product->correct_stock(
$user,
@ -186,21 +186,21 @@ if ($action == 'createmovements')
if ($result2 < 0)
{
$error++;
setEventMessage($product->errors,'errors');
setEventMessage($product->errors,'errors');
}
}
else
{
dol_print_error('',"Bad value saved into sessions");
$error++;
$error++;
}
}
}
if (! $error)
{
unset($_SESSION['massstockmove']);
$db->commit();
setEventMessage($langs->trans("StockMovementRecorded"),'mesgs');
header("Location: ".DOL_URL_ROOT.'/product/stock/index.php'); // Redirect to avoid pb when using back
@ -238,7 +238,7 @@ $titletoaddnoent=$langs->transnoentitiesnoconv("Select");
$buttonrecord=$langs->trans("RecordMovement");
$buttonrecordnoent=$langs->trans("RecordMovement");
print $langs->trans("SelectProductInAndOutWareHouse",$titletoaddnoent,$buttonrecordnoent).'<br>';
print '<br>'."\n";
print '<br>'."\n";
$var=true;
@ -286,11 +286,11 @@ print '</tr>';
foreach($listofdata as $key => $val)
{
$var=!$var;
$productstatic->fetch($val['id_product']);
$warehousestatics->fetch($val['id_sw']);
$warehousestatict->fetch($val['id_tw']);
print '<tr '.$bc[$var].'>';
print '<td>'.$productstatic->getNomUrl(1).'</td>';
print '<td>';
@ -307,7 +307,7 @@ foreach($listofdata as $key => $val)
print '</td>';
print '<td align="center">'.$val['qty'].'</td>';
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=delline&idline='.$val['id'].'">'.img_delete($langs->trans("Remove")).'</a></td>';
print '</tr>';
}
@ -324,7 +324,7 @@ print '<input type="hidden" name="token" value="' .$_SESSION['newtoken'] . '">';
print '<input type="hidden" name="action" value="createmovements">';
// Button to record mass movement
$labelmovement=GETPOST("label")?GETPOST('label'):$langs->trans("MassStockMovement").' '.dol_print_date($now,'%Y-%m-%d %H:%M');
$labelmovement=GETPOST("label")?GETPOST('label'):$langs->trans("StockTransfer").' '.dol_print_date($now,'%Y-%m-%d %H:%M');
print '<table class="border" width="100%">';
print '<tr>';
@ -333,7 +333,7 @@ print '<table class="border" width="100%">';
print '<input type="text" name="label" size="80" value="'.dol_escape_htmltag($labelmovement).'">';
print '</td>';
print '</tr>';
print '</table>';
print '</table>';
print '<div class="center"><input class="button" type="submit" name="valid" value="'.dol_escape_htmltag($buttonrecord).'"></div>';

View File

@ -540,7 +540,7 @@ while ($i < min($num, $limit))
}
$i++;
}
print '</table>'.
print '</table>';
$value=$langs->trans("CreateOrders");

View File

@ -970,11 +970,13 @@ class Project extends CommonObject
* @param int $fromid Id of object to clone
* @param bool $clone_contact clone contact of project
* @param bool $clone_task clone task of project
* @param bool $clone_file clone file of project
* @param bool $clone_project_file clone file of project
* @param bool $clone_task_file clone file of task (if task are copied)
* @param bool $clone_note clone note of project
* @param bool $notrigger no trigger flag
* @return int New id of clone
*/
function createFromClone($fromid,$clone_contact=false,$clone_task=true,$clone_file=false,$clone_note=true)
function createFromClone($fromid,$clone_contact=false,$clone_task=true,$clone_project_file=false,$clone_task_file=false,$clone_note=true,$notrigger=0)
{
global $user,$langs,$conf;
@ -1025,7 +1027,7 @@ class Project extends CommonObject
$clone_project->ref=$defaultref;
// Create clone
$result=$clone_project->create($user);
$result=$clone_project->create($user,$notrigger);
// Other options
if ($result < 0)
@ -1088,7 +1090,7 @@ class Project extends CommonObject
foreach ($tab as $contacttoadd)
{
$clone_project->add_contact($contacttoadd['id'], $contacttoadd['code'], $contacttoadd['source']);
$clone_project->add_contact($contacttoadd['id'], $contacttoadd['code'], $contacttoadd['source'],$notrigger);
if ($clone_project->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{
$langs->load("errors");
@ -1108,7 +1110,7 @@ class Project extends CommonObject
}
//Duplicate file
if ($clone_file)
if ($clone_project_file)
{
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
@ -1151,7 +1153,7 @@ class Project extends CommonObject
foreach ($tasksarray as $tasktoclone)
{
$result_clone = $taskstatic->createFromClone($tasktoclone->id,$clone_project_id,$tasktoclone->fk_parent,true,true,false,true,true,false);
$result_clone = $taskstatic->createFromClone($tasktoclone->id,$clone_project_id,$tasktoclone->fk_parent,true,true,false,$clone_task_file,true,false);
if ($result_clone <= 0)
{
$this->error.=$result_clone->error;
@ -1181,7 +1183,7 @@ class Project extends CommonObject
{
$taskstatic->fk_task_parent=$tab_conv_child_parent[$taskstatic->fk_task_parent];
}
$res=$taskstatic->update($user);
$res=$taskstatic->update($user,$notrigger);
if ($result_clone <= 0)
{
$this->error.=$taskstatic->error;

View File

@ -1083,6 +1083,7 @@ class Task extends CommonObject
$this->db->commit();
$clone_task_id=$clone_task->id;
$clone_task_ref = $clone_task->ref;
//Note Update
if (!$clone_note)
@ -1139,7 +1140,7 @@ class Task extends CommonObject
$clone_project_ref=$ori_project_ref;
}
$clone_task_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($clone_project_ref). "/" . dol_sanitizeFileName($clone_task_id);
$clone_task_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($clone_project_ref). "/" . dol_sanitizeFileName($clone_task_ref);
$ori_task_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($ori_project_ref). "/" . dol_sanitizeFileName($fromid);
$filearray=dol_dir_list($ori_task_dir,"files",0,'','\.meta$','',SORT_ASC,1);

View File

@ -314,9 +314,10 @@ if ($action == 'confirm_clone' && $user->rights->projet->creer && GETPOST('confi
{
$clone_contacts=GETPOST('clone_contacts')?1:0;
$clone_tasks=GETPOST('clone_tasks')?1:0;
$clone_files=GETPOST('clone_files')?1:0;
$clone_project_files = GETPOST('clone_project_files') ? 1 : 0;
$clone_task_files = GETPOST('clone_task_files') ? 1 : 0;
$clone_notes=GETPOST('clone_notes')?1:0;
$result=$object->createFromClone($object->id,$clone_contacts,$clone_tasks,$clone_files,$clone_notes);
$result=$object->createFromClone($object->id,$clone_contacts,$clone_tasks,$clone_project_files,$clone_task_files,$clone_notes);
if ($result <= 0)
{
$mesg='<div class="error">'.$object->error.'</div>';
@ -479,10 +480,11 @@ else
{
$formquestion=array(
'text' => $langs->trans("ConfirmClone"),
array('type' => 'checkbox', 'name' => 'clone_contacts','label' => $langs->trans("CloneContacts"), 'value' => true),
array('type' => 'checkbox', 'name' => 'clone_tasks', 'label' => $langs->trans("CloneTasks"), 'value' => true),
array('type' => 'checkbox', 'name' => 'clone_notes', 'label' => $langs->trans("CloneNotes"), 'value' => true),
array('type' => 'checkbox', 'name' => 'clone_files', 'label' => $langs->trans("CloneFiles"), 'value' => false)
array('type' => 'checkbox', 'name' => 'clone_contacts', 'label' => $langs->trans("CloneContacts"), 'value' => true),
array('type' => 'checkbox', 'name' => 'clone_tasks', 'label' => $langs->trans("CloneTasks"), 'value' => true),
array('type' => 'checkbox', 'name' => 'clone_notes', 'label' => $langs->trans("CloneNotes"), 'value' => true),
array('type' => 'checkbox', 'name' => 'clone_project_files','label' => $langs->trans("CloneProjectFiles"), 'value' => false),
array('type' => 'checkbox', 'name' => 'clone_task_files', 'label' => $langs->trans("CloneTaskFiles"), 'value' => false)
);
print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id, $langs->trans("CloneProject"), $langs->trans("ConfirmCloneProject"), "confirm_clone", $formquestion, '', 1, 240);

View File

@ -4,12 +4,13 @@ define("NOCSRFCHECK",1); // We accept to go on this page from external web site.
require '../../main.inc.php';
if (empty($conf->global->MAIN_FEATURES_LEVEL))
if (!empty($conf->global->MAIN_FEATURES_LEVEL))
{
print "Page available onto dev environment only";
exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
@ -17,7 +18,7 @@ if (empty($conf->global->MAIN_FEATURES_LEVEL))
<meta name="robots" content="noindex,nofollow" />
<meta name="author" content="Dolibarr Development Team">
<link rel="shortcut icon" type="image/x-icon" href="<?php echo DOL_URL_ROOT ?>/theme/eldy/img/favicon.ico"/>
<title>Login Dolibarr 3.4.0-alpha</title>
<title>Test page</title>
<!-- Includes for JQuery (Ajax library) -->
<link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/css/smoothness/jquery-ui-latest.custom.css" />
<link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/css/jquery.dataTables.css" />
@ -25,6 +26,7 @@ if (empty($conf->global->MAIN_FEATURES_LEVEL))
<link rel="stylesheet" type="text/css" title="default" href="<?php echo DOL_URL_ROOT ?>/theme/eldy/style.css.php?dol_use_jmobile=1" />
<!-- Includes JS for JQuery -->
<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery-latest.min.js"></script>
<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/tablednd/jquery.tablednd.0.6.min.js"></script>
<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/js/jquery.dataTables.js"></script>
<!--<script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/mobile/jquery.mobile-latest.min.js"></script>-->
</head>
@ -37,32 +39,43 @@ if (empty($conf->global->MAIN_FEATURES_LEVEL))
This page is a sample of page using tables. To make test with<br>
- css (edit page to change)<br>
- jmobile (edit page to enable/disable)<br>
- dataTables.<br>
- dataTables<br>
- tablednd<br>
<br>
<br>
Example 1 : Table using tags: div.tagtable+form+div or div.tagtable+div.tagtr+div.tagtd<br>
<?php
$tasksarray=array(1,2,3); // To force having several lines
$tagidfortablednd='tablelines';
if (! empty($conf->use_javascript_ajax) && $object->statut == 0) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
?>
<div class="tagtable centpercent" id="abc">
<form class="liste_titre" method="POST" action="1.php">
<div>snake<input type="hidden" name="cartitem" value="1"></div>
<div class="tagtable centpercent" id="tablelines">
<form class="liste_titre" method="POST" action="1.php">
<div>line1<input type="hidden" name="cartitem" value="1"></div>
<div><label><input type="checkbox" name="hidedetails" value="2"> A checkbox inside a cell</label></div>
<div><input name="count" value="4"></div>
<div><input type="submit" name="count" class="button noshadow" value="aaa"></div>
</form>
<form class="impair" method="POST" action="2.php">
<div>snagfdgfd gd fgf ke<input type="hidden" name="cartitem" value="2"></div>
<div>line2<input type="hidden" name="cartitem" value="2"></div>
<div>dfsdf</div>
<div><input name="count" value="4"></div>
<div><input type="submit" value="xxx" class="button"></div>
<div class="tdlineupdown"><input type="submit" value="xxx" class="button"></div>
</form>
<div class="pair tagtr" method="GET" action="3.php">
<div>snagfdgfd gd fgf ke<input type="hidden" name="cartitem" value="3"></div>
<div>line3<input type="hidden" name="cartitem" value="3"></div>
<div>dfsdf</div>
<div><input name="count" value="4"></div>
<div><input type="submit" value="zzz" class="button"></div>
<div class="tdlineupdown"><input type="submit" value="zzz" class="button"></div>
</div>
<div class="pair tagtr" method="GET" action="3.php">
<div>line4<input type="hidden" name="cartitem" value="3"></div>
<div>dfsdf</div>
<div><input name="count" value="4"></div>
<div class="tdlineupdown"><input type="submit" value="zzz" class="button"></div>
</div>
</div>
@ -133,68 +146,89 @@ $('xxxth').replaceWith(
</thead>
<tbody>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line1</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line2</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line3</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line4</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line5</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line6</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line7</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line8</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line9</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line10</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line11</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
<tr>
<td>snagfdgfd gd fgf ke</td>
<td>line12</td>
<td>dfsdf</td>
<td> xxx </td>
</tr>
</tbody>
</table>
<br><br>
<br>
Example 3 : Standard table<br>
<?php
$tasksarray=array(1,2,3); // To force having several lines
$tagidfortablednd='tablelines3';
if (! empty($conf->use_javascript_ajax) && $object->statut == 0) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
?>
<table class="tagtable centpercent centpercent" id="tablelines3">
<tr class="liste_titre"><td>title1</td><td class="tdlineupdown">title2</td></tr>
<tr class="pair"><td class="pair">a1</td><td class="tdlineupdown pair">b1</td></tr>
<tr class="impair"><td class="impair">a2</td><td class="tdlineupdown impair">b2</td></tr>
</table>
<br>
</div>
</body>
</html>

View File

@ -124,6 +124,7 @@ class Societe extends CommonObject
var $statut_commercial;
var $price_level;
var $outstanding_limit;
var $datec;
var $date_update;
@ -707,7 +708,7 @@ class Societe extends CommonObject
$sql .= ', s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur, s.parent, s.barcode';
$sql .= ', s.fk_departement, s.fk_pays as country_id, s.fk_stcomm, s.remise_client, s.mode_reglement, s.cond_reglement, s.tva_assuj';
$sql .= ', s.mode_reglement_supplier, s.cond_reglement_supplier, s.localtax1_assuj, s.localtax2_assuj, s.fk_prospectlevel, s.default_lang, s.logo';
$sql .= ', s.import_key, s.canvas';
$sql .= ', s.outstanding_limit, s.import_key, s.canvas';
$sql .= ', fj.libelle as forme_juridique';
$sql .= ', e.libelle as effectif';
$sql .= ', p.code as country_code, p.libelle as country';
@ -836,6 +837,8 @@ class Societe extends CommonObject
$this->default_lang = $obj->default_lang;
$this->logo = $obj->logo;
$this->outstanding_limit = $obj->outstanding_limit;
// multiprix
$this->price_level = $obj->price_level;
@ -2767,6 +2770,71 @@ class Societe extends CommonObject
}
}
/**
* Set outstanding value
*
* @param User $user User making change
* @return int <0 if KO, >0 if OK
*/
function set_outstanding($user)
{
if ($this->id)
{
$this->db->begin();
$now=dol_now();
$outstanding = price2num($this->outstanding_limit);
// Positionne l'encours de facturaiton
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET ";
$sql.= " outstanding_limit=".$outstanding;
$sql.= " WHERE rowid = ".$this->id;
dol_syslog(get_class($this)."::set_outstanding sql=".$sql);
$resql=$this->db->query($sql);
if (! $resql)
{
$this->db->rollback();
$this->error=$this->db->error();
return -1;
}
$this->db->commit();
return 1;
}
}
/**
* return amount of bill not paid
*
* @return boolean Yes or no
*/
function get_OutstandingBill()
{
/* Accurate value of remain to pay is to sum remaintopay for each invoice
$paiement = $invoice->getSommePaiement();
$creditnotes=$invoice->getSumCreditNotesUsed();
$deposits=$invoice->getSumDepositsUsed();
$alreadypayed=price2num($paiement + $creditnotes + $deposits,'MT');
$remaintopay=price2num($invoice->total_ttc - $paiement - $creditnotes - $deposits,'MT');
*/
$sql = "SELECT sum(total) as amount FROM ".MAIN_DB_PREFIX."facture as f";
$sql .= " WHERE fk_soc = ". $this->id;
$sql .= " AND paye = 0";
$sql .= " AND fk_statut <> 0";
dol_syslog("get_OutstandingBill sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
$obj=$this->db->fetch_object($resql);
return ($obj->amount);
}
else
return 0;
}
/**
* Return label of status customer is prospect/customer
*

View File

@ -374,6 +374,7 @@ td.showDragHandle {
}
.tdlineupdown {
white-space: nowrap;
min-width: 10px;
}
/* ============================================================================== */

View File

@ -256,6 +256,7 @@ td.showDragHandle {
}
.tdlineupdown {
white-space: nowrap;
min-width: 10px;
}

View File

@ -282,6 +282,7 @@ td.showDragHandle {
}
.tdlineupdown {
white-space: nowrap;
min-width: 10px;
}

View File

@ -256,6 +256,7 @@ td.showDragHandle {
}
.tdlineupdown {
white-space: nowrap;
min-width: 10px;
}

View File

@ -426,6 +426,7 @@ td.showDragHandle {
}
.tdlineupdown {
white-space: nowrap;
min-width: 10px;
}