Work on incomplete code on BOM module
This commit is contained in:
parent
7d2cedfdcf
commit
a143dba9f8
@ -40,6 +40,7 @@ $confirm = GETPOST('confirm', 'alpha');
|
|||||||
$cancel = GETPOST('cancel', 'aZ09');
|
$cancel = GETPOST('cancel', 'aZ09');
|
||||||
$contextpage= GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'bomcard'; // To manage different context of search
|
$contextpage= GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'bomcard'; // To manage different context of search
|
||||||
$backtopage = GETPOST('backtopage', 'alpha');
|
$backtopage = GETPOST('backtopage', 'alpha');
|
||||||
|
$lineid = GETPOST('lineid', 'int');
|
||||||
|
|
||||||
// Initialize technical objects
|
// Initialize technical objects
|
||||||
$object=new BOM($db);
|
$object=new BOM($db);
|
||||||
@ -149,14 +150,12 @@ if (empty($reshook))
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
*
|
|
||||||
* Put here all code to build page
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$form=new Form($db);
|
$form=new Form($db);
|
||||||
$formfile=new FormFile($db);
|
$formfile=new FormFile($db);
|
||||||
|
|
||||||
llxHeader('', 'NewBOM', '');
|
llxHeader('', $langs->trans("BOM"), '');
|
||||||
|
|
||||||
// Example : Adding jquery code
|
// Example : Adding jquery code
|
||||||
print '<script type="text/javascript" language="javascript">
|
print '<script type="text/javascript" language="javascript">
|
||||||
@ -254,7 +253,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
{
|
{
|
||||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteBillOfMaterials'), $langs->trans('ConfirmDeleteBillOfMaterials'), 'confirm_delete', '', 0, 1);
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteBillOfMaterials'), $langs->trans('ConfirmDeleteBillOfMaterials'), 'confirm_delete', '', 0, 1);
|
||||||
}
|
}
|
||||||
|
// Confirmation to delete line
|
||||||
|
if ($action == 'deleteline')
|
||||||
|
{
|
||||||
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
|
||||||
|
}
|
||||||
// Clone confirmation
|
// Clone confirmation
|
||||||
if ($action == 'clone') {
|
if ($action == 'clone') {
|
||||||
// Create an array for form
|
// Create an array for form
|
||||||
@ -387,7 +390,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
|
|
||||||
if (! empty($object->lines))
|
if (! empty($object->lines))
|
||||||
{
|
{
|
||||||
$object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1);
|
$object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1, '/bom/tpl');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Form to add new line
|
// Form to add new line
|
||||||
|
|||||||
@ -395,6 +395,24 @@ class BOM extends CommonObject
|
|||||||
//return $this->deleteCommon($user, $notrigger, 1);
|
//return $this->deleteCommon($user, $notrigger, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a line of object in database
|
||||||
|
*
|
||||||
|
* @param User $user User that delete
|
||||||
|
* @param int $idline Id of line to delete
|
||||||
|
* @param bool $notrigger false=launch triggers after, true=disable triggers
|
||||||
|
* @return int >0 if OK, <0 if KO
|
||||||
|
*/
|
||||||
|
public function deleteLine(User $user, $idline, $notrigger = false)
|
||||||
|
{
|
||||||
|
if ($this->status < 0)
|
||||||
|
{
|
||||||
|
$this->error = 'ErrorDeleteLineNotAllowedByObjectStatus';
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->deleteLineCommon($user, $idline, $notrigger);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the reference to the following non used BOM depending on the active numbering module
|
* Returns the reference to the following non used BOM depending on the active numbering module
|
||||||
@ -851,6 +869,40 @@ class BOM extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a document onto disk according to template module.
|
||||||
|
*
|
||||||
|
* @param string $modele Force template to use ('' to not force)
|
||||||
|
* @param Translate $outputlangs objet lang a utiliser pour traduction
|
||||||
|
* @param int $hidedetails Hide details of lines
|
||||||
|
* @param int $hidedesc Hide description
|
||||||
|
* @param int $hideref Hide ref
|
||||||
|
* @param null|array $moreparams Array to provide more information
|
||||||
|
* @return int 0 if KO, 1 if OK
|
||||||
|
*/
|
||||||
|
public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = null)
|
||||||
|
{
|
||||||
|
global $conf,$langs;
|
||||||
|
|
||||||
|
$langs->load("mrp");
|
||||||
|
|
||||||
|
if (! dol_strlen($modele)) {
|
||||||
|
|
||||||
|
$modele = 'standard';
|
||||||
|
|
||||||
|
if ($this->modelpdf) {
|
||||||
|
$modele = $this->modelpdf;
|
||||||
|
} elseif (! empty($conf->global->BOM_ADDON_PDF)) {
|
||||||
|
$modele = $conf->global->BOM_ADDON_PDF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$modelpath = "core/modules/bom/doc/";
|
||||||
|
|
||||||
|
//return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialise object with example values
|
* Initialise object with example values
|
||||||
* Id must be 0 if object instance is a specimen
|
* Id must be 0 if object instance is a specimen
|
||||||
|
|||||||
84
htdocs/bom/tpl/objectline_title.tpl.php
Normal file
84
htdocs/bom/tpl/objectline_title.tpl.php
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2010-2013 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
|
* Copyright (C) 2010-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||||
|
* Copyright (C) 2012 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||||
|
* Copyright (C) 2012-2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
|
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||||
|
* Copyright (C) 2017 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/>.
|
||||||
|
*
|
||||||
|
* Need to have following variables defined:
|
||||||
|
* $object (invoice, order, ...)
|
||||||
|
* $conf
|
||||||
|
* $langs
|
||||||
|
* $element (used to test $user->rights->$element->creer)
|
||||||
|
* $permtoedit (used to replace test $user->rights->$element->creer)
|
||||||
|
* $inputalsopricewithtax (0 by default, 1 to also show column with unit price including tax)
|
||||||
|
* $outputalsopricetotalwithtax
|
||||||
|
* $usemargins (0 to disable all margins columns, 1 to show according to margin setup)
|
||||||
|
*
|
||||||
|
* $type, $text, $description, $line
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Protection to avoid direct call of template
|
||||||
|
if (empty($object) || ! is_object($object))
|
||||||
|
{
|
||||||
|
print "Error, template page can't be called as URL";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<!-- BEGIN PHP TEMPLATE objectline_title.tpl.php -->
|
||||||
|
<?php
|
||||||
|
// Title line
|
||||||
|
print "<thead>\n";
|
||||||
|
|
||||||
|
print '<tr class="liste_titre nodrag nodrop">';
|
||||||
|
|
||||||
|
// Adds a line numbering column
|
||||||
|
if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) print '<td class="linecolnum center"> </td>';
|
||||||
|
|
||||||
|
// Description
|
||||||
|
print '<td class="linecoldescription">'.$langs->trans('Description').'</td>';
|
||||||
|
|
||||||
|
// Qty
|
||||||
|
print '<td class="linecolqty right">'.$langs->trans('Qty').'</td>';
|
||||||
|
|
||||||
|
if ($conf->global->PRODUCT_USE_UNITS)
|
||||||
|
{
|
||||||
|
print '<td class="linecoluseunit left">'.$langs->trans('Unit').'</td>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<td class="linecollost right">'.$form->textwithpicto($langs->trans('ManufacturingEfficiency'), $langs->trans('ValueOfMeansLoss')).'</td>';
|
||||||
|
|
||||||
|
print '<td class="linecoledit"></td>'; // No width to allow autodim
|
||||||
|
|
||||||
|
print '<td class="linecoldelete" style="width: 10px"></td>';
|
||||||
|
|
||||||
|
print '<td class="linecolmove" style="width: 10px"></td>';
|
||||||
|
|
||||||
|
if ($action == 'selectlines')
|
||||||
|
{
|
||||||
|
print '<td class="linecolcheckall center">';
|
||||||
|
print '<input type="checkbox" class="linecheckboxtoggle" />';
|
||||||
|
print '<script>$(document).ready(function() {$(".linecheckboxtoggle").click(function() {var checkBoxes = $(".linecheckbox");checkBoxes.prop("checked", this.checked);})});</script>';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print "</tr>\n";
|
||||||
|
print "</thead>\n";
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!-- END PHP TEMPLATE objectline_title.tpl.php -->
|
||||||
@ -24,11 +24,9 @@
|
|||||||
* $object (invoice, order, ...)
|
* $object (invoice, order, ...)
|
||||||
* $conf
|
* $conf
|
||||||
* $langs
|
* $langs
|
||||||
* $dateSelector
|
|
||||||
* $forceall (0 by default, 1 for supplier invoices/orders)
|
* $forceall (0 by default, 1 for supplier invoices/orders)
|
||||||
* $element (used to test $user->rights->$element->creer)
|
* $element (used to test $user->rights->$element->creer)
|
||||||
* $permtoedit (used to replace test $user->rights->$element->creer)
|
* $permtoedit (used to replace test $user->rights->$element->creer)
|
||||||
* $senderissupplier (0 by default, 1 for supplier invoices/orders)
|
|
||||||
* $inputalsopricewithtax (0 by default, 1 to also show column with unit price including tax)
|
* $inputalsopricewithtax (0 by default, 1 to also show column with unit price including tax)
|
||||||
* $object_rights->creer initialized from = $object->getRights()
|
* $object_rights->creer initialized from = $object->getRights()
|
||||||
* $disableedit, $disablemove, $disableremove
|
* $disableedit, $disablemove, $disableremove
|
||||||
@ -76,7 +74,6 @@ $objectline = new BOMLine($this->db);
|
|||||||
{
|
{
|
||||||
print (! empty($line->description) && $line->description!=$line->product_label)?'<br>'.dol_htmlentitiesbr($line->description):'';
|
print (! empty($line->description) && $line->description!=$line->product_label)?'<br>'.dol_htmlentitiesbr($line->description):'';
|
||||||
}
|
}
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
</td>
|
</td>
|
||||||
<td class="linecolqty nowrap right"><?php $coldisplay++; ?>
|
<td class="linecolqty nowrap right"><?php $coldisplay++; ?>
|
||||||
@ -96,43 +93,14 @@ $objectline = new BOMLine($this->db);
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
<td class="linecolqty nowrap right"><?php $coldisplay++; ?>
|
||||||
<?php if (!empty($line->remise_percent) && $line->special_code != 3) { ?>
|
<?php
|
||||||
<td class="linecoldiscount right"><?php
|
echo $line->efficiency;
|
||||||
$coldisplay++;
|
?>
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
</td>
|
||||||
echo dol_print_reduction($line->remise_percent, $langs);
|
|
||||||
?></td>
|
|
||||||
<?php } else { ?>
|
|
||||||
<td class="linecoldiscount"><?php $coldisplay++; ?> </td>
|
|
||||||
<?php }
|
|
||||||
|
|
||||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT);
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
||||||
<td class="linecolht nowrap right"><?php
|
|
||||||
$coldisplay++;
|
|
||||||
if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
|
|
||||||
{
|
|
||||||
print '<span class="classfortooltip" title="';
|
|
||||||
print $langs->transcountry("TotalHT", $mysoc->country_code).'='.price($line->total_ht);
|
|
||||||
print '<br>'.$langs->transcountry("TotalVAT", ($senderissupplier?$object->thirdparty->country_code:$mysoc->country_code)).'='.price($line->total_tva);
|
|
||||||
if (price2num($line->total_localtax1)) print '<br>'.$langs->transcountry("TotalLT1", ($senderissupplier?$object->thirdparty->country_code:$mysoc->country_code)).'='.price($line->total_localtax1);
|
|
||||||
if (price2num($line->total_localtax2)) print '<br>'.$langs->transcountry("TotalLT2", ($senderissupplier?$object->thirdparty->country_code:$mysoc->country_code)).'='.price($line->total_localtax2);
|
|
||||||
print '<br>'.$langs->transcountry("TotalTTC", $mysoc->country_code).'='.price($line->total_ttc);
|
|
||||||
print '">';
|
|
||||||
}
|
|
||||||
print price($line->total_ht);
|
|
||||||
if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
|
|
||||||
{
|
|
||||||
print '</span>';
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
if ($this->statut == 0 && ($object_rights->creer) && $action != 'selectlines' ) { ?>
|
|
||||||
|
if ($this->statut == 0 && ($object_rights->write) && $action != 'selectlines' ) { ?>
|
||||||
<td class="linecoledit center"><?php $coldisplay++; ?>
|
<td class="linecoledit center"><?php $coldisplay++; ?>
|
||||||
<?php if (($line->info_bits & 2) == 2 || ! empty($disableedit)) { ?>
|
<?php if (($line->info_bits & 2) == 2 || ! empty($disableedit)) { ?>
|
||||||
<?php } else { ?>
|
<?php } else { ?>
|
||||||
@ -145,7 +113,7 @@ $objectline = new BOMLine($this->db);
|
|||||||
<td class="linecoldelete center"><?php $coldisplay++; ?>
|
<td class="linecoldelete center"><?php $coldisplay++; ?>
|
||||||
<?php
|
<?php
|
||||||
if (($line->fk_prev_id == null ) && empty($disableremove)) { //La suppression n'est autorisée que si il n'y a pas de ligne dans une précédente situation
|
if (($line->fk_prev_id == null ) && empty($disableremove)) { //La suppression n'est autorisée que si il n'y a pas de ligne dans une précédente situation
|
||||||
print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $this->id . '&action=ask_deleteline&lineid=' . $line->id . '">';
|
print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $this->id . '&action=deleteline&lineid=' . $line->id . '">';
|
||||||
print img_delete();
|
print img_delete();
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1752,7 +1752,6 @@ class Contrat extends CommonObject
|
|||||||
|
|
||||||
if ($this->statut >= 0)
|
if ($this->statut >= 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Call trigger
|
// Call trigger
|
||||||
$result=$this->call_trigger('LINECONTRACT_DELETE', $user);
|
$result=$this->call_trigger('LINECONTRACT_DELETE', $user);
|
||||||
if ($result < 0) return -1;
|
if ($result < 0) return -1;
|
||||||
@ -1760,10 +1759,10 @@ class Contrat extends CommonObject
|
|||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."contratdet";
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element_line;
|
||||||
$sql.= " WHERE rowid=".$idline;
|
$sql.= " WHERE rowid=".$idline;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
dol_syslog(get_class($this)."::deleteline", LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql)
|
||||||
{
|
{
|
||||||
@ -1781,7 +1780,7 @@ class Contrat extends CommonObject
|
|||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
$this->error="Error ".get_class($this)."::delete deleteExtraFields error -4 ".$contractline->error;
|
$this->error="Error ".get_class($this)."::deleteline deleteExtraFields error -4 ".$contractline->error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1790,7 +1789,7 @@ class Contrat extends CommonObject
|
|||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
dol_syslog(get_class($this)."::delete ERROR:".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::deleteline ERROR:".$this->error, LOG_ERR);
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -195,8 +195,45 @@ if ($action == 'confirm_delete' && ! empty($permissiontodelete))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove a line
|
||||||
|
if ($action == 'confirm_deleteline' && $confirm == 'yes' && ! empty($permissiontoadd))
|
||||||
|
{
|
||||||
|
$result = $object->deleteline($user, $lineid);
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09'))
|
||||||
|
{
|
||||||
|
$newlang = GETPOST('lang_id', 'aZ09');
|
||||||
|
}
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && is_object($object->thirdparty))
|
||||||
|
{
|
||||||
|
$newlang = $object->thirdparty->default_lang;
|
||||||
|
}
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
|
||||||
|
$ret = $object->fetch($object->id); // Reload to get new records
|
||||||
|
$object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
|
||||||
|
setEventMessages($langs->trans('RecordDeleted'), null, 'mesgs');
|
||||||
|
header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Action clone object
|
// Action clone object
|
||||||
if ($action == 'confirm_clone' && $confirm == 'yes' && $permissiontoadd)
|
if ($action == 'confirm_clone' && $confirm == 'yes' && ! empty($permissiontoadd))
|
||||||
{
|
{
|
||||||
if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers'))
|
if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers'))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -3916,7 +3916,7 @@ abstract class CommonObject
|
|||||||
*/
|
*/
|
||||||
public function printObjectLines($action, $seller, $buyer, $selected = 0, $dateSelector = 0, $defaulttpldir = '/core/tpl')
|
public function printObjectLines($action, $seller, $buyer, $selected = 0, $dateSelector = 0, $defaulttpldir = '/core/tpl')
|
||||||
{
|
{
|
||||||
global $conf, $hookmanager, $langs, $user, $object;
|
global $conf, $hookmanager, $langs, $user, $object, $form;
|
||||||
// TODO We should not use global var for this
|
// TODO We should not use global var for this
|
||||||
global $inputalsopricewithtax, $usemargins, $disableedit, $disablemove, $disableremove, $outputalsopricetotalwithtax;
|
global $inputalsopricewithtax, $usemargins, $disableedit, $disablemove, $disableremove, $outputalsopricetotalwithtax;
|
||||||
|
|
||||||
@ -4075,7 +4075,7 @@ abstract class CommonObject
|
|||||||
|
|
||||||
// Output template part (modules that overwrite templates must declare this into descriptor)
|
// Output template part (modules that overwrite templates must declare this into descriptor)
|
||||||
// Use global variables + $dateSelector + $seller and $buyer
|
// Use global variables + $dateSelector + $seller and $buyer
|
||||||
$dirtpls=array_merge($conf->modules_parts['tpl'], array('/core/tpl'));
|
$dirtpls=array_merge($conf->modules_parts['tpl'], array($defaulttpldir));
|
||||||
foreach($dirtpls as $module => $reldir)
|
foreach($dirtpls as $module => $reldir)
|
||||||
{
|
{
|
||||||
if (!empty($module))
|
if (!empty($module))
|
||||||
@ -7529,6 +7529,66 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a line of object in database
|
||||||
|
*
|
||||||
|
* @param User $user User that delete
|
||||||
|
* @param int $idline Id of line to delete
|
||||||
|
* @param bool $notrigger false=launch triggers after, true=disable triggers
|
||||||
|
* @return int >0 if OK, <0 if KO
|
||||||
|
*/
|
||||||
|
public function deleteLineCommon(User $user, $idline, $notrigger = false)
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
$tmpforobjectclass = get_class($this);
|
||||||
|
$tmpforobjectlineclass = ucfirst($tmpforobjectclass).'Line';
|
||||||
|
|
||||||
|
// Call trigger
|
||||||
|
$result=$this->call_trigger('LINE'.strtoupper($tmpforobjectclass).'_DELETE', $user);
|
||||||
|
if ($result < 0) return -1;
|
||||||
|
// End call triggers
|
||||||
|
|
||||||
|
$this->db->begin();
|
||||||
|
|
||||||
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element_line;
|
||||||
|
$sql.= " WHERE rowid=".$idline;
|
||||||
|
|
||||||
|
dol_syslog(get_class($this)."::deleteLineCommon", LOG_DEBUG);
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if (! $resql)
|
||||||
|
{
|
||||||
|
$this->error="Error ".$this->db->lasterror();
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($error)) {
|
||||||
|
// Remove extrafields
|
||||||
|
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||||
|
{
|
||||||
|
$tmpobjectline = new $tmpforobjectlineclass($this->db);
|
||||||
|
$tmpobjectline->id= $idline;
|
||||||
|
$result=$tmpobjectline->deleteExtraFields();
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$this->error="Error ".get_class($this)."::deleteLineCommon deleteExtraFields error -4 ".$tmpobjectline->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($error)) {
|
||||||
|
$this->db->commit();
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
dol_syslog(get_class($this)."::deleteLineCommon ERROR:".$this->error, LOG_ERR);
|
||||||
|
$this->db->rollback();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialise object with example values
|
* Initialise object with example values
|
||||||
* Id must be 0 if object instance is a specimen
|
* Id must be 0 if object instance is a specimen
|
||||||
|
|||||||
@ -445,6 +445,25 @@ class MyObject extends CommonObject
|
|||||||
//return $this->deleteCommon($user, $notrigger, 1);
|
//return $this->deleteCommon($user, $notrigger, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a line of object in database
|
||||||
|
*
|
||||||
|
* @param User $user User that delete
|
||||||
|
* @param int $idline Id of line to delete
|
||||||
|
* @param bool $notrigger false=launch triggers after, true=disable triggers
|
||||||
|
* @return int >0 if OK, <0 if KO
|
||||||
|
*/
|
||||||
|
public function deleteLine(User $user, $idline, $notrigger = false)
|
||||||
|
{
|
||||||
|
if ($this->status < 0)
|
||||||
|
{
|
||||||
|
$this->error = 'ErrorDeleteLineNotAllowedByObjectStatus';
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->deleteLineCommon($user, $idline, $notrigger);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a link to the object card (with optionaly the picto)
|
* Return a link to the object card (with optionaly the picto)
|
||||||
*
|
*
|
||||||
@ -667,6 +686,39 @@ class MyObject extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a document onto disk according to template module.
|
||||||
|
*
|
||||||
|
* @param string $modele Force template to use ('' to not force)
|
||||||
|
* @param Translate $outputlangs objet lang a utiliser pour traduction
|
||||||
|
* @param int $hidedetails Hide details of lines
|
||||||
|
* @param int $hidedesc Hide description
|
||||||
|
* @param int $hideref Hide ref
|
||||||
|
* @param null|array $moreparams Array to provide more information
|
||||||
|
* @return int 0 if KO, 1 if OK
|
||||||
|
*/
|
||||||
|
public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = null)
|
||||||
|
{
|
||||||
|
global $conf,$langs;
|
||||||
|
|
||||||
|
$langs->load("mymodule@mymodule");
|
||||||
|
|
||||||
|
if (! dol_strlen($modele)) {
|
||||||
|
|
||||||
|
$modele = 'standard';
|
||||||
|
|
||||||
|
if ($this->modelpdf) {
|
||||||
|
$modele = $this->modelpdf;
|
||||||
|
} elseif (! empty($conf->global->MYOBJECT_ADDON_PDF)) {
|
||||||
|
$modele = $conf->global->MYOBJECT_ADDON_PDF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$modelpath = "core/modules/mymodule/doc/";
|
||||||
|
|
||||||
|
return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action executed by scheduler
|
* Action executed by scheduler
|
||||||
* CAN BE A CRON TASK. In such a case, parameters come from the schedule job setup field 'Parameters'
|
* CAN BE A CRON TASK. In such a case, parameters come from the schedule job setup field 'Parameters'
|
||||||
|
|||||||
@ -73,6 +73,7 @@ $confirm = GETPOST('confirm', 'alpha');
|
|||||||
$cancel = GETPOST('cancel', 'aZ09');
|
$cancel = GETPOST('cancel', 'aZ09');
|
||||||
$contextpage= GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'myobjectcard'; // To manage different context of search
|
$contextpage= GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'myobjectcard'; // To manage different context of search
|
||||||
$backtopage = GETPOST('backtopage', 'alpha');
|
$backtopage = GETPOST('backtopage', 'alpha');
|
||||||
|
//$lineid = GETPOST('lineid', 'int');
|
||||||
|
|
||||||
// Initialize technical objects
|
// Initialize technical objects
|
||||||
$object=new MyObject($db);
|
$object=new MyObject($db);
|
||||||
@ -159,7 +160,7 @@ if (empty($reshook))
|
|||||||
$form=new Form($db);
|
$form=new Form($db);
|
||||||
$formfile=new FormFile($db);
|
$formfile=new FormFile($db);
|
||||||
|
|
||||||
llxHeader('', 'MyObject', '');
|
llxHeader('', $langs->trans('MyObject'), '');
|
||||||
|
|
||||||
// Example : Adding jquery code
|
// Example : Adding jquery code
|
||||||
print '<script type="text/javascript" language="javascript">
|
print '<script type="text/javascript" language="javascript">
|
||||||
@ -257,7 +258,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
{
|
{
|
||||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteMyObject'), $langs->trans('ConfirmDeleteMyObject'), 'confirm_delete', '', 0, 1);
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteMyObject'), $langs->trans('ConfirmDeleteMyObject'), 'confirm_delete', '', 0, 1);
|
||||||
}
|
}
|
||||||
|
// Confirmation to delete line
|
||||||
|
if ($action == 'deleteline')
|
||||||
|
{
|
||||||
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
|
||||||
|
}
|
||||||
// Clone confirmation
|
// Clone confirmation
|
||||||
if ($action == 'clone') {
|
if ($action == 'clone') {
|
||||||
// Create an array for form
|
// Create an array for form
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user