';
+$coldisplay++;
+echo $line->disable_stock_change ? yn($line->disable_stock_change) : ''; // Yes, it is a quantity, not a price, but we just want the formating role of function price
+print '
';
+
print '
';
$coldisplay++;
echo $line->efficiency;
diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php
index d618a0702c8..72ad67db52e 100644
--- a/htdocs/core/actions_addupdatedelete.inc.php
+++ b/htdocs/core/actions_addupdatedelete.inc.php
@@ -56,7 +56,7 @@ if ($action == 'add' && ! empty($permissiontoadd))
$value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year'));
} elseif ($object->fields[$key]['type']=='datetime') {
$value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year'));
- } elseif ($object->fields[$key]['type']=='price') {
+ } elseif (in_array($object->fields[$key]['type'], array('price', 'real'))) {
$value = price2num(GETPOST($key));
} else {
$value = GETPOST($key, 'alpha');
@@ -108,7 +108,7 @@ if ($action == 'update' && ! empty($permissiontoadd))
{
if (! GETPOSTISSET($key)) continue; // The field was not submited to be edited
if (in_array($key, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat', 'fk_user_modif', 'import_key'))) continue; // Ignore special fields
-
+ var_dump($object->fields[$key]['type']);
// Set value to update
if (in_array($object->fields[$key]['type'], array('text', 'html'))) {
$value = GETPOST($key, 'none');
@@ -116,7 +116,7 @@ if ($action == 'update' && ! empty($permissiontoadd))
$value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year'));
} elseif ($object->fields[$key]['type']=='datetime') {
$value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year'));
- } elseif ($object->fields[$key]['type']=='price') {
+ } elseif (in_array($object->fields[$key]['type'], array('price', 'real'))) {
$value = price2num(GETPOST($key));
} else {
$value = GETPOST($key, 'alpha');
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index b331c479670..01ed67cce3e 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -7476,6 +7476,7 @@ abstract class CommonObject
{
$sql="UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET ref = '(PROV".$this->id.")' WHERE ref = '(PROV)' AND rowid = ".$this->id;
$resqlupdate = $this->db->query($sql);
+
if ($resqlupdate===false)
{
$error++;
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 865e06a4478..ca285642b2a 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -2416,10 +2416,12 @@ class Form
// Units
$outvalUnits = '';
- if ($conf->global->PRODUCT_USE_UNITS) {
+ if (! empty($conf->global->PRODUCT_USE_UNITS)) {
if (!empty($objp->unit_short)) {
$outvalUnits .= ' - ' . $objp->unit_short;
}
+ }
+ if (! empty($conf->global->PRODUCT_SHOW_DIMENSIONS_IN_COMBO)) {
if (!empty($objp->weight) && $objp->weight_units!==null) {
$unitToShow = showDimensionInBestUnit($objp->weight, $objp->weight_units, 'weight', $langs);
$outvalUnits .= ' - ' . $unitToShow;
@@ -2436,17 +2438,17 @@ class Form
$unitToShow = showDimensionInBestUnit($objp->volume, $objp->volume_units, 'volume', $langs);
$outvalUnits .= ' - ' . $unitToShow;
}
- if ($outdurationvalue && $outdurationunit) {
- $da = array(
- 'h' => $langs->trans('Hour'),
- 'd' => $langs->trans('Day'),
- 'w' => $langs->trans('Week'),
- 'm' => $langs->trans('Month'),
- 'y' => $langs->trans('Year')
- );
- if (isset($da[$outdurationunit])) {
- $outvalUnits .= ' - ' . $outdurationvalue . ' ' . $langs->transnoentities($da[$outdurationunit].($outdurationvalue > 1 ? 's' : ''));
- }
+ }
+ if ($outdurationvalue && $outdurationunit) {
+ $da = array(
+ 'h' => $langs->trans('Hour'),
+ 'd' => $langs->trans('Day'),
+ 'w' => $langs->trans('Week'),
+ 'm' => $langs->trans('Month'),
+ 'y' => $langs->trans('Year')
+ );
+ if (isset($da[$outdurationunit])) {
+ $outvalUnits .= ' - ' . $outdurationvalue . ' ' . $langs->transnoentities($da[$outdurationunit].($outdurationvalue > 1 ? 's' : ''));
}
}
@@ -2458,8 +2460,10 @@ class Form
}
if (! empty($conf->stock->enabled) && isset($objp->stock) && ($objp->fk_product_type == Product::TYPE_PRODUCT || ! empty($conf->global->STOCK_SUPPORTS_SERVICES)))
{
- if ($objp->stock > 0) $opt.= ' class="product_line_stock_ok"';
- elseif ($objp->stock <= 0) $opt.= ' class="product_line_stock_too_low"';
+ if (! empty($user->rights->stock->lire)) {
+ if ($objp->stock > 0) $opt.= ' class="product_line_stock_ok"';
+ elseif ($objp->stock <= 0) $opt.= ' class="product_line_stock_too_low"';
+ }
}
$opt.= '>';
$opt.= $objp->ref;
@@ -2602,37 +2606,39 @@ class Form
if (! empty($conf->stock->enabled) && isset($objp->stock) && ($objp->fk_product_type == Product::TYPE_PRODUCT || ! empty($conf->global->STOCK_SUPPORTS_SERVICES)))
{
- $opt.= ' - '.$langs->trans("Stock").':'.$objp->stock;
+ if (! empty($user->rights->stock->lire)) {
+ $opt.= ' - '.$langs->trans("Stock").':'.$objp->stock;
- if ($objp->stock > 0) {
- $outval.= ' - ';
- }elseif ($objp->stock <= 0) {
- $outval.= ' - ';
- }
- $outval.= $langs->transnoentities("Stock").':'.$objp->stock;
- $outval.= '';
- if (! empty($conf->global->STOCK_SHOW_VIRTUAL_STOCK_IN_PRODUCTS_COMBO)) // Warning, this option may slow down combo list generation
- {
- $langs->load("stocks");
+ if ($objp->stock > 0) {
+ $outval.= ' - ';
+ }elseif ($objp->stock <= 0) {
+ $outval.= ' - ';
+ }
+ $outval.= $langs->transnoentities("Stock").':'.$objp->stock;
+ $outval.= '';
+ if (! empty($conf->global->STOCK_SHOW_VIRTUAL_STOCK_IN_PRODUCTS_COMBO)) // Warning, this option may slow down combo list generation
+ {
+ $langs->load("stocks");
- $tmpproduct=new Product($this->db);
- $tmpproduct->fetch($objp->rowid);
- $tmpproduct->load_virtual_stock();
- $virtualstock = $tmpproduct->stock_theorique;
+ $tmpproduct=new Product($this->db);
+ $tmpproduct->fetch($objp->rowid);
+ $tmpproduct->load_virtual_stock();
+ $virtualstock = $tmpproduct->stock_theorique;
- $opt.= ' - '.$langs->trans("VirtualStock").':'.$virtualstock;
+ $opt.= ' - '.$langs->trans("VirtualStock").':'.$virtualstock;
- $outval.=' - '.$langs->transnoentities("VirtualStock").':';
- if ($virtualstock > 0) {
- $outval.= ' - ';
- }elseif ($virtualstock <= 0) {
- $outval.= ' - ';
- }
- $outval.=$virtualstock;
- $outval.='';
+ $outval.=' - '.$langs->transnoentities("VirtualStock").':';
+ if ($virtualstock > 0) {
+ $outval.= ' - ';
+ }elseif ($virtualstock <= 0) {
+ $outval.= ' - ';
+ }
+ $outval.=$virtualstock;
+ $outval.='';
- unset($tmpproduct);
- }
+ unset($tmpproduct);
+ }
+ }
}
$opt.= "\n";
diff --git a/htdocs/install/mysql/data/llx_c_action_trigger.sql b/htdocs/install/mysql/data/llx_c_action_trigger.sql
index abc961b49d5..406bfe88dbc 100644
--- a/htdocs/install/mysql/data/llx_c_action_trigger.sql
+++ b/htdocs/install/mysql/data/llx_c_action_trigger.sql
@@ -119,6 +119,14 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_MODIFY','Intervention modified','Executed when a intervention is modified','ficheinter',19);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROJECT_CREATE','Project creation','Executed when a project is created','project',140);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROJECT_MODIFY','Project modified','Executed when a project is modified','project',142);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_VALIDATE','BOM validated','Executed when a BOM is validated','bom',400);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_UNVALIDATE','BOM unvalidated','Executed when a BOM is unvalidated','bom',401);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_CLOSE','BOM disabled','Executed when a BOM is disabled','bom',402);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_REOPEN','BOM reopen','Executed when a BOM is re-open','bom',403);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_DELETE','BOM deleted','Executed when a BOM deleted','bom',404);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_VALIDATE','MO validated','Executed when a MO is validated','bom',410);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_PRODUCED','MO disabled','Executed when a MO is produced','bom',411);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_DELETE','MO deleted','Executed when a MO is deleted','bom',412);
-- actions not enabled by default : they are excluded when we enable the module Agenda (except TASK_...)
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_CREATE','Task created','Executed when a project task is created','project',150);
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_MODIFY','Task modified','Executed when a project task is modified','project',151);
diff --git a/htdocs/install/mysql/migration/10.0.0-11.0.0.sql b/htdocs/install/mysql/migration/10.0.0-11.0.0.sql
index 0fd18a841f4..97383de9051 100644
--- a/htdocs/install/mysql/migration/10.0.0-11.0.0.sql
+++ b/htdocs/install/mysql/migration/10.0.0-11.0.0.sql
@@ -58,6 +58,9 @@ UPDATE llx_rights_def SET subperms = 'write' WHERE perms = 'fiscalyear' AND modu
ALTER TABLE llx_bom_bom ADD COLUMN duration double(8,4) DEFAULT NULL;
ALTER TABLE llx_bom_bomline ADD COLUMN position integer NOT NULL DEFAULT 0;
+ALTER TABLE llx_bom_bomline ADD COLUMN qty_frozen smallint DEFAULT 0;
+ALTER TABLE llx_bom_bomline ADD COLUMN disable_stock_change smallint DEFAULT 0;
+
ALTER TABLE llx_bom_bomline DROP COLUMN rank;
create table llx_categorie_warehouse
@@ -358,3 +361,61 @@ create table llx_c_shipment_package_type
entity integer DEFAULT 1 NOT NULL -- Multi company id
)ENGINE=innodb;
+
+CREATE TABLE llx_mrp_mo(
+ -- BEGIN MODULEBUILDER FIELDS
+ rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL,
+ ref varchar(128) DEFAULT '(PROV)' NOT NULL,
+ entity integer DEFAULT 1 NOT NULL,
+ label varchar(255),
+ qty real NOT NULL,
+ fk_soc integer,
+ note_public text,
+ note_private text,
+ date_creation datetime NOT NULL,
+ tms timestamp,
+ fk_user_creat integer NOT NULL,
+ fk_user_modif integer,
+ import_key varchar(14),
+ status integer NOT NULL,
+ fk_product integer NOT NULL,
+ date_start_planned datetime,
+ date_end_planned datetime,
+ fk_bom integer,
+ fk_project integer
+ -- END MODULEBUILDER FIELDS
+) ENGINE=innodb;
+
+
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_ref (ref);
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_entity (entity);
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_fk_soc (fk_soc);
+ALTER TABLE llx_mrp_mo ADD CONSTRAINT llx_mrp_mo_fk_user_creat FOREIGN KEY (fk_user_creat) REFERENCES user(rowid);
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_status (status);
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_fk_product (fk_product);
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_date_start_planned (date_start_planned);
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_date_end_planned (date_end_planned);
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_fk_bom (fk_bom);
+ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_fk_project (fk_project);
+
+
+create table llx_mrp_myobject_extrafields
+(
+ rowid integer AUTO_INCREMENT PRIMARY KEY,
+ tms timestamp,
+ fk_object integer NOT NULL,
+ import_key varchar(14) -- import key
+) ENGINE=innodb;
+
+ALTER TABLE llx_mrp_myobject_extrafields ADD INDEX idx_fk_object(fk_object);
+
+
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_VALIDATE','BOM validated','Executed when a BOM is validated','bom',400);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_UNVALIDATE','BOM unvalidated','Executed when a BOM is unvalidated','bom',401);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_CLOSE','BOM disabled','Executed when a BOM is disabled','bom',402);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_REOPEN','BOM reopen','Executed when a BOM is re-open','bom',403);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_DELETE','BOM deleted','Executed when a BOM deleted','bom',404);
+
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_VALIDATE','MO validated','Executed when a MO is validated','bom',410);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_PRODUCED','MO disabled','Executed when a MO is produced','bom',411);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MO_DELETE','MO deleted','Executed when a MO is deleted','bom',412);
diff --git a/htdocs/install/mysql/tables/llx_bom_bomline.sql b/htdocs/install/mysql/tables/llx_bom_bomline.sql
index 330f1bb18d6..3fa1c2be528 100644
--- a/htdocs/install/mysql/tables/llx_bom_bomline.sql
+++ b/htdocs/install/mysql/tables/llx_bom_bomline.sql
@@ -22,6 +22,8 @@ CREATE TABLE llx_bom_bomline(
description text,
import_key varchar(14),
qty double(24,8) NOT NULL,
+ qty_frozen smallint DEFAULT 0,
+ disable_stock_change smallint DEFAULT 0,
efficiency double(8,4) NOT NULL DEFAULT 1,
position integer NOT NULL DEFAULT 0
-- END MODULEBUILDER FIELDS
diff --git a/htdocs/mrp/sql/llx_mrp_mo.key.sql b/htdocs/install/mysql/tables/llx_mrp_mo.key.sql
similarity index 93%
rename from htdocs/mrp/sql/llx_mrp_mo.key.sql
rename to htdocs/install/mysql/tables/llx_mrp_mo.key.sql
index 071a663dd56..8cda73f9450 100644
--- a/htdocs/mrp/sql/llx_mrp_mo.key.sql
+++ b/htdocs/install/mysql/tables/llx_mrp_mo.key.sql
@@ -15,10 +15,8 @@
-- BEGIN MODULEBUILDER INDEXES
-ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_rowid (rowid);
ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_ref (ref);
ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_entity (entity);
-ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_qty (qty);
ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_fk_soc (fk_soc);
ALTER TABLE llx_mrp_mo ADD CONSTRAINT llx_mrp_mo_fk_user_creat FOREIGN KEY (fk_user_creat) REFERENCES user(rowid);
ALTER TABLE llx_mrp_mo ADD INDEX idx_mrp_mo_status (status);
diff --git a/htdocs/mrp/sql/llx_mrp_mo.sql b/htdocs/install/mysql/tables/llx_mrp_mo.sql
similarity index 100%
rename from htdocs/mrp/sql/llx_mrp_mo.sql
rename to htdocs/install/mysql/tables/llx_mrp_mo.sql
diff --git a/htdocs/mrp/sql/llx_mrp_mo_extrafields.key.sql b/htdocs/install/mysql/tables/llx_mrp_mo_extrafields.key.sql
similarity index 100%
rename from htdocs/mrp/sql/llx_mrp_mo_extrafields.key.sql
rename to htdocs/install/mysql/tables/llx_mrp_mo_extrafields.key.sql
diff --git a/htdocs/mrp/sql/llx_mrp_mo_extrafields.sql b/htdocs/install/mysql/tables/llx_mrp_mo_extrafields.sql
similarity index 100%
rename from htdocs/mrp/sql/llx_mrp_mo_extrafields.sql
rename to htdocs/install/mysql/tables/llx_mrp_mo_extrafields.sql
diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang
index 5d51be56e56..08073ac4364 100644
--- a/htdocs/langs/en_US/mrp.lang
+++ b/htdocs/langs/en_US/mrp.lang
@@ -31,4 +31,9 @@ EstimatedDuration=Estimated duration
EstimatedDurationDesc=Estimated duration to manufacture this product using this BOM
ConfirmValidateBom=Are you sure you want to validate the BOM with the reference %s (you will be able to use it to build new Manufacturing Orders)
ConfirmCloseBom=Are you sure you want to cancel this BOM (you won't be able to use it to build new Manufacturing Orders anymore) ?
-ConfirmReopenBom=Are you sure you want to re-open this BOM (you will be able to use it to build new Manufacturing Orders)
\ No newline at end of file
+ConfirmReopenBom=Are you sure you want to re-open this BOM (you will be able to use it to build new Manufacturing Orders)
+StatusMOProduced=Produced
+QtyFrozen=Frozen Qty
+QuantityConsumedInvariable=When this flag is set, the quantity consumed is always the value defined and is not relative to the quantity produced.
+DisableStockChange=Disable stock change
+DisableStockChangeHelp=When this flag is set, there is no stock change on this product, whatever is the quantity produced
diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php
index d6474a480dc..4fbdd101c35 100644
--- a/htdocs/modulebuilder/template/class/myobject.class.php
+++ b/htdocs/modulebuilder/template/class/myobject.class.php
@@ -283,8 +283,9 @@ class MyObject extends CommonObject
// Clear fields
- $object->ref = "copy_of_".$object->ref;
- $object->title = $langs->trans("CopyOf")." ".$object->title;
+ $object->ref = empty($this->fields['ref']['default']) ? "copy_of_".$object->ref: $this->fields['ref']['default'];
+ $object->label = empty($this->fields['label']['default']) ? $langs->trans("CopyOf")." ".$object->label: $this->fields['label']['default'];
+ $object->status = self::STATUS_DRAFT;
// ...
// Clear extrafields that are unique
if (is_array($object->array_options) && count($object->array_options) > 0)
diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php
index 4f069e885bd..b013d300845 100644
--- a/htdocs/mrp/class/mo.class.php
+++ b/htdocs/mrp/class/mo.class.php
@@ -61,7 +61,7 @@ class Mo extends CommonObject
const STATUS_DRAFT = 0;
const STATUS_VALIDATED = 1; // To produce
const STATUS_INPROGRESS = 2;
- const STATUS_DONE = 3;
+ const STATUS_PRODUCED = 3;
const STATUS_CANCELED = -1;
@@ -92,10 +92,10 @@ class Mo extends CommonObject
*/
public $fields=array(
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",),
- 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object", 'showoncombobox'=>'1',),
- 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>-1, 'position'=>20, 'notnull'=>1, 'default'=>'1', 'index'=>1,),
+ 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object", 'showoncombobox'=>'1',),
+ 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'position'=>20, 'notnull'=>1, 'default'=>'1', 'index'=>1,),
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>-1, 'searchall'=>1, 'showoncombobox'=>'1',),
- 'qty' => array('type'=>'real', 'label'=>'QtyToProduce', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'notnull'=>1, 'index'=>1, 'comment'=>"Qty to produce",),
+ 'qty' => array('type'=>'real', 'label'=>'QtyToProduce', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'notnull'=>1, 'comment'=>"Qty to produce",),
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1', 'label'=>'ThirdParty', 'enabled'=>1, 'visible'=>-1, 'position'=>50, 'notnull'=>-1, 'index'=>1),
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>61, 'notnull'=>-1,),
'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>62, 'notnull'=>-1,),
@@ -109,7 +109,7 @@ class Mo extends CommonObject
'date_end_planned' => array('type'=>'datetime', 'label'=>'DateEndPlannedMo', 'enabled'=>1, 'visible'=>1, 'position'=>56, 'notnull'=>-1, 'index'=>1,),
'fk_bom' => array('type'=>'integer:Bom:bom/class/bom.class.php:0:t.status=1', 'filter'=>'active=1', 'label'=>'BOM', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>-1, 'index'=>1, 'comment'=>"Original BOM",),
'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'enabled'=>1, 'visible'=>-1, 'position'=>52, 'notnull'=>-1, 'index'=>1,),
- 'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>4, 'position'=>1000, 'default'=>0, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Brouillon', '1'=>'Validated', '2'=>'InProgress', '3'=>'Done', '-1'=>'Canceled')),
+ 'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>4, 'position'=>1000, 'default'=>0, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Brouillon', '1'=>'Validated', '2'=>'InProgress', '3'=>'StatusMOProduced', '-1'=>'Canceled')),
);
public $rowid;
public $ref;
@@ -246,10 +246,10 @@ class Mo extends CommonObject
unset($object->fk_user_creat);
unset($object->import_key);
-
// Clear fields
- $object->ref = "copy_of_".$object->ref;
- $object->title = $langs->trans("CopyOf")." ".$object->title;
+ $object->ref = empty($this->fields['ref']['default']) ? "copy_of_".$object->ref: $this->fields['ref']['default'];
+ $object->label = empty($this->fields['label']['default']) ? $langs->trans("CopyOf")." ".$object->label: $this->fields['label']['default'];
+ $object->status = self::STATUS_DRAFT;
// ...
// Clear extrafields that are unique
if (is_array($object->array_options) && count($object->array_options) > 0)
@@ -549,8 +549,10 @@ class Mo extends CommonObject
global $langs;
//$langs->load("mrp");
$this->labelstatus[self::STATUS_DRAFT] = $langs->trans('Draft');
- $this->labelstatus[self::STATUS_VALIDATED] = $langs->trans('Enabled');
- $this->labelstatus[self::STATUS_CANCELED] = $langs->trans('Disabled');
+ $this->labelstatus[self::STATUS_VALIDATED] = $langs->trans('Validated');
+ $this->labelstatus[self::STATUS_INPROGRESS] = $langs->trans('InProgress');
+ $this->labelstatus[self::STATUS_PRODUCED] = $langs->trans('StatusMOProduced');
+ $this->labelstatus[self::STATUS_CANCELED] = $langs->trans('Canceled');
}
$statusType = 'status'.$status;