153 $this->accountancy_codes = array();
154 foreach ($this->accountancy_codes_fields as $mode_key => $mode_info) {
155 $this->accountancy_codes[$mode_key] = array();
156 foreach ($mode_info[
'fields'] as $field_key => $field_info) {
157 $accountancy_code =
GETPOST($mode_key .
'_' . $field_key,
'aZ09');
158 if (empty($accountancy_code) || $accountancy_code ==
'-1') {
159 $accountancy_code =
'';
161 $this->accountancy_codes[$mode_key][$field_key] = $accountancy_code;
164 return $this->accountancy_codes;
176 global $langs, $hookmanager;
177 dol_syslog(__METHOD__ .
" asset_id=$asset_id, asset_model_id=$asset_model_id");
180 $this->errors = array();
181 $this->accountancy_codes = array();
184 $asset_id = $asset_id > 0 ? $asset_id : 0;
185 $asset_model_id = $asset_model_id > 0 ? $asset_model_id : 0;
187 $hookmanager->initHooks(array(
'assetaccountancycodesdao'));
188 $parameters = array(
'asset_id' => $asset_id,
'asset_model_id' => $asset_model_id);
189 $reshook = $hookmanager->executeHooks(
'fetchAccountancyCodes', $parameters, $this);
190 if (!empty($reshook)) {
195 if (empty($asset_id) && empty($asset_model_id)) {
196 $this->errors[] = $langs->trans(
'AssetErrorAssetOrAssetModelIDNotProvide');
204 $accountancy_codes = array();
205 foreach ($this->accountancy_codes_fields as $mode_key => $mode_info) {
206 $sql =
"SELECT " . implode(
',', array_keys($mode_info[
'fields']));
207 $sql .=
" FROM " . MAIN_DB_PREFIX . $mode_info[
'table'];
208 $sql .=
" WHERE " . ($asset_id > 0 ?
" fk_asset = " . (int) $asset_id :
" fk_asset_model = " . (int) $asset_model_id);
210 $resql = $this->db->query($sql);
212 if ($obj = $this->db->fetch_object($resql)) {
213 $accountancy_codes[$mode_key] = array();
214 foreach ($mode_info[
'fields'] as $field_key => $field_info) {
215 $accountancy_codes[$mode_key][$field_key] = $obj->$field_key;
219 $this->errors[] = $langs->trans(
'AssetErrorFetchAccountancyCodesForMode', $mode_key) .
': ' . $this->db->lasterror();
228 $this->accountancy_codes = $accountancy_codes;
244 global $langs, $hookmanager;
245 dol_syslog(__METHOD__ .
" user_id=".$user->id.
", asset_id=".$asset_id.
", asset_model_id=".$asset_model_id.
", notrigger=".$notrigger);
248 $this->errors = array();
251 $asset_id = $asset_id > 0 ? $asset_id : 0;
252 $asset_model_id = $asset_model_id > 0 ? $asset_model_id : 0;
254 $hookmanager->initHooks(array(
'assetaccountancycodesdao'));
255 $parameters = array(
'user' => $user,
'asset_id' => $asset_id,
'asset_model_id' => $asset_model_id);
256 $reshook = $hookmanager->executeHooks(
'updateAccountancyCodes', $parameters, $this);
257 if (!empty($reshook)) {
262 if (empty($asset_id) && empty($asset_model_id)) {
263 $this->errors[] = $langs->trans(
'AssetErrorAssetOrAssetModelIDNotProvide');
274 foreach ($this->accountancy_codes_fields as $mode_key => $mode_info) {
276 $sql =
"DELETE FROM " . MAIN_DB_PREFIX . $mode_info[
'table'];
277 $sql .=
" WHERE " . ($asset_id > 0 ?
" fk_asset = " . (int) $asset_id :
" fk_asset_model = " . (int) $asset_model_id);
278 $resql = $this->db->query($sql);
280 $this->errors[] = $langs->trans(
'AssetErrorDeleteAccountancyCodesForMode', $mode_key) .
': ' . $this->db->lasterror();
284 if (!$error && !empty($this->accountancy_codes[$mode_key])) {
286 $sql =
"INSERT INTO " . MAIN_DB_PREFIX . $mode_info[
'table'] .
"(";
287 $sql .= $asset_id > 0 ?
"fk_asset," :
"fk_asset_model,";
288 $sql .= implode(
',', array_keys($mode_info[
'fields']));
289 $sql .=
", tms, fk_user_modif";
291 $sql .= $asset_id > 0 ? $asset_id : $asset_model_id;
292 foreach ($mode_info[
'fields'] as $field_key => $field_info) {
293 $sql .=
', ' . (empty($this->accountancy_codes[$mode_key][$field_key]) ?
'NULL' :
"'" . $this->db->escape($this->accountancy_codes[$mode_key][$field_key]) .
"'");
295 $sql .=
", '" . $this->db->idate($now) .
"'";
296 $sql .=
", " . $user->id;
299 $resql = $this->db->query($sql);
301 $this->errors[] = $langs->trans(
'AssetErrorInsertAccountancyCodesForMode', $mode_key) .
': ' . $this->db->lasterror();
307 if (!$error && $asset_id > 0) {
309 require_once DOL_DOCUMENT_ROOT .
'/asset/class/asset.class.php';
310 $asset =
new Asset($this->db);
311 $result = $asset->fetch($asset_id);
313 $result = $asset->calculationDepreciation();
316 $this->errors[] = $langs->trans(
'AssetErrorCalculationDepreciationLines');
317 $this->errors[] = $asset->errorsToString();
322 if (!$error && !$notrigger) {
324 $result = $this->call_trigger(
'ASSET_ACCOUNTANCY_CODES_MODIFY', $user);
335 $this->db->rollback();