This add hook `setLinkedObjectSourceTargetType` in
`CommonObject::showLinkToObjectBlock()` and in
`CommonObject::fetchObjectLinked()` to allow overiding sourcetype and
targettype by custom modules.
This fix the invoice create form when we provide `origin` element in
url. The actual create form overide the value for origin field with
`$objectsrc->element`. This make creation of invoice originating from a custom
module module impossible because we need the module part to instantiate
the class for the custom module object.
This also modify Common Object::fetch Object Linked() to append the
module part for `$sourcetype` and `$targettype` if it not set and object
have module property and it not in core module.
When Dynamic price module active and an a math expression is used to compute buy price on supplier product card, the calculated price does not update on the card when saved.
Changing line 849 appears to solve this without any ill effect.
This set the correct `modulepart` parameter for link generated to
`document.php` of ecm auto index page if `src_object_type` for
ecm document has a module suffix (`@modulename`).
Files added to `llx_ecm_files` for externals modules never be removed on
object deletion.
When `CommonObject::deleteEcmFiles()` is called with `mode=1`, it use
this sql filter to find the file related to the object which is removed
:
```
$sql .= " WHERE fk_object IN (SELECT rowid FROM ".MAIN_DB_PREFIX."ecm_files WHERE src_object_type = '".$this->db->escape($this->table_element.(empty($this->module) ? '' : '@'.$this->module))."' AND src_object_id = ".((int) $this->id).")";
```
We see it append `'@'.$this->module` to `$this->table_element` but when
file is add to the `llx_ecm_files` by
`CommonObject::commonGenerateDocument()` , it added whiteout the
`'@'.$this->module` suffix. So the file is never remove from
`llx_ecm_files` when object is deleted.
This fix it by appending module suffix on `src_object_type` if object
has `module` property when add document to the `llx_ecm_files`.