| Conditions | 180 |
| Paths | > 20000 |
| Total Lines | 712 |
| Code Lines | 435 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 2 | ||
| Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 157 | public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf) |
||
| 158 | { |
||
| 159 | // Put here code you want to execute when a Dolibarr business events occurs. |
||
| 160 | // Data and type of action are stored into $object and $action |
||
| 161 | // Users |
||
| 162 | dol_include_once('/subtotal/class/subtotal.class.php'); |
||
| 163 | $langs->load('subtotal@subtotal'); |
||
| 164 | |||
| 165 | if (!empty($conf->global->SUBTOTAL_ALLOW_ADD_LINE_UNDER_TITLE) && in_array($action, array('LINEPROPAL_INSERT', 'LINEORDER_INSERT', 'LINEBILL_INSERT'))) |
||
| 166 | { |
||
| 167 | $rang = GETPOST('under_title', 'int'); // Rang du titre |
||
| 168 | if ($rang > 0) |
||
| 169 | { |
||
| 170 | switch ($action) { |
||
| 171 | case 'LINEPROPAL_INSERT': |
||
| 172 | $parent = new Propal($this->db); |
||
| 173 | $parent->fetch($object->fk_propal); |
||
| 174 | break; |
||
| 175 | case 'LINEORDER_INSERT': |
||
| 176 | $parent = new Commande($this->db); |
||
| 177 | $parent->fetch($object->fk_commande); |
||
| 178 | break; |
||
| 179 | case 'LINEBILL_INSERT': |
||
| 180 | $parent = new Facture($this->db); |
||
| 181 | $parent->fetch($object->fk_facture); |
||
| 182 | break; |
||
| 183 | case 'LINEBILL_SUPPLIER_CREATE': |
||
| 184 | $parent = new FactureFournisseur($this->db); |
||
| 185 | $parent->fetch($object->fk_facture_fourn); |
||
|
|
|||
| 186 | default: |
||
| 187 | $parent = $object; |
||
| 188 | break; |
||
| 189 | } |
||
| 190 | |||
| 191 | if (!empty($conf->global->SUBTOTAL_ADD_LINE_UNDER_TITLE_AT_END_BLOCK)) $this->addToEnd($parent, $object, $rang); |
||
| 192 | else $this->addToBegin($parent, $object, $rang); |
||
| 193 | |||
| 194 | } |
||
| 195 | |||
| 196 | } |
||
| 197 | |||
| 198 | |||
| 199 | if ($action == 'LINEBILL_INSERT' || $action == 'LINEBILL_SUPPLIER_CREATE') |
||
| 200 | { |
||
| 201 | $is_supplier = $action == 'LINEBILL_SUPPLIER_CREATE' ? true : false; |
||
| 202 | /** @var bool $subtotal_skip Permet d'éviter de faire du traitement en double sur les titres est sous-totaux car ils ont automatiquement le bon rang, il ne faut donc pas faire un addline pour en suite update le rang ici */ |
||
| 203 | global $subtotal_skip; |
||
| 204 | |||
| 205 | if ($subtotal_skip) |
||
| 206 | { |
||
| 207 | $subtotal_skip = false; |
||
| 208 | } |
||
| 209 | else |
||
| 210 | { |
||
| 211 | $subtotal_add_title_bloc_from_orderstoinvoice = GETPOST('subtotal_add_title_bloc_from_orderstoinvoice', 'none'); |
||
| 212 | if (!empty($subtotal_add_title_bloc_from_orderstoinvoice)) |
||
| 213 | { |
||
| 214 | global $subtotal_current_rang, $subtotal_bloc_previous_fk_commande, $subtotal_bloc_already_add_title, $subtotal_bloc_already_add_st; |
||
| 215 | |||
| 216 | $current_fk_commande = TSubtotal::getOrderIdFromLineId($this->db, $object->origin_id, $is_supplier); |
||
| 217 | $last_fk_commandedet = TSubtotal::getLastLineOrderId($this->db, $current_fk_commande, $is_supplier); |
||
| 218 | |||
| 219 | if (!$is_supplier){ |
||
| 220 | $facture = new Facture($this->db); |
||
| 221 | $ret = $facture->fetch($object->fk_facture); |
||
| 222 | } |
||
| 223 | else |
||
| 224 | { |
||
| 225 | $facture = new FactureFournisseur($this->db); |
||
| 226 | $ret = $facture->fetch($object->fk_facture_fourn); |
||
| 227 | } |
||
| 228 | |||
| 229 | if ($ret > 0 && !$subtotal_bloc_already_add_st) |
||
| 230 | { |
||
| 231 | $rang = !empty($subtotal_current_rang) ? $subtotal_current_rang : $object->rang; |
||
| 232 | // Si le fk_commande courrant est différent alors on change de commande => ajout d'un titre |
||
| 233 | if ($current_fk_commande != $subtotal_bloc_previous_fk_commande ) { |
||
| 234 | if (!$is_supplier) $commande = new Commande($this->db); |
||
| 235 | else $commande = new CommandeFournisseur($this->db); |
||
| 236 | $commande->fetch($current_fk_commande); |
||
| 237 | |||
| 238 | $label = $conf->global->SUBTOTAL_TEXT_FOR_TITLE_ORDETSTOINVOICE; |
||
| 239 | if (empty($label)) { |
||
| 240 | $label = 'Commande [__REFORDER__]'; |
||
| 241 | if (!$is_supplier) $label .= ' - Référence client : [__REFCUSTOMER__]'; |
||
| 242 | } |
||
| 243 | $label = str_replace(array('__REFORDER__', '__REFCUSTOMER__'), array($commande->ref, $commande->ref_client), $label); |
||
| 244 | |||
| 245 | if(!empty($current_fk_commande)) { |
||
| 246 | $subtotal_skip = true; |
||
| 247 | TSubtotal::addTitle($facture, $label, 1, $rang); |
||
| 248 | $rang++; |
||
| 249 | } |
||
| 250 | } |
||
| 251 | |||
| 252 | $object->rang = $rang; |
||
| 253 | $facture->updateRangOfLine($object->id, $rang); |
||
| 254 | $rang++; |
||
| 255 | // Est-ce qu'il s'agit de la dernière ligne de la commande d'origine ? Si oui alors on ajout un sous-total |
||
| 256 | if ($last_fk_commandedet === (int) $object->origin_id && !empty($current_fk_commande)) |
||
| 257 | { |
||
| 258 | $subtotal_skip = true; |
||
| 259 | $subtotal_bloc_already_add_st = 1; |
||
| 260 | TSubtotal::addTotal($facture, $langs->trans('SubTotal'), 1, $rang); |
||
| 261 | $subtotal_bloc_already_add_st = 0; |
||
| 262 | $rang++; |
||
| 263 | } |
||
| 264 | } |
||
| 265 | |||
| 266 | $subtotal_bloc_previous_fk_commande = $current_fk_commande; |
||
| 267 | $subtotal_current_rang = $rang; |
||
| 268 | } |
||
| 269 | } |
||
| 270 | |||
| 271 | } |
||
| 272 | |||
| 273 | if ($action == 'LINEBILL_UPDATE') |
||
| 274 | { |
||
| 275 | if (GETPOST('all_progress', 'none') && TSubtotal::isModSubtotalLine($object)) |
||
| 276 | { |
||
| 277 | $object->situation_percent = 0; |
||
| 278 | $object->update($user, true); // notrigger pour éviter la boucle infinie |
||
| 279 | } |
||
| 280 | } |
||
| 281 | |||
| 282 | if (!empty($conf->global->SUBTOTAL_MANAGE_COMPRIS_NONCOMPRIS) && in_array($action, array('LINEPROPAL_INSERT', 'LINEPROPAL_UPDATE', 'LINEORDER_INSERT', 'LINEORDER_UPDATE', 'LINEBILL_INSERT', 'LINEBILL_UPDATE', 'LINEBILL_SUPPLIER_CREATE', 'LINEBILL_SUPPLIER_UPDATE'))) |
||
| 283 | { |
||
| 284 | if(! function_exists('_updateLineNC')) dol_include_once('/subtotal/lib/subtotal.lib.php'); |
||
| 285 | |||
| 286 | $doli_action = GETPOST('action', 'none'); |
||
| 287 | $set = GETPOST('set', 'none'); |
||
| 288 | if ( (in_array($doli_action, array('updateligne', 'updateline', 'addline', 'add', 'create', 'setstatut', 'save_nomenclature')) || $set == 'defaultTVA') && !TSubtotal::isTitle($object) && !TSubtotal::isSubtotal($object) && in_array($object->element, array('propaldet', 'commandedet', 'facturedet'))) |
||
| 289 | { |
||
| 290 | dol_syslog( |
||
| 291 | "[SUBTOTAL_MANAGE_COMPRIS_NONCOMPRIS] Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". object=".$object->element." id=" . $object->id |
||
| 292 | ); |
||
| 293 | |||
| 294 | $TTitle = TSubtotal::getAllTitleFromLine($object); |
||
| 295 | foreach ($TTitle as &$line) |
||
| 296 | { |
||
| 297 | if (!empty($line->array_options['options_subtotal_nc'])) |
||
| 298 | { |
||
| 299 | $object->total_ht = $object->total_tva = $object->total_ttc = $object->total_localtax1 = $object->total_localtax2 = |
||
| 300 | $object->multicurrency_total_ht = $object->multicurrency_total_tva = $object->multicurrency_total_ttc = 0; |
||
| 301 | |||
| 302 | if ($object->element == 'propal') $res = $object->update(1); |
||
| 303 | else $res = $object->update($user, 1); |
||
| 304 | |||
| 305 | if ($res > 0) setEventMessage($langs->trans('subtotal_update_nc_success')); |
||
| 306 | break; |
||
| 307 | } |
||
| 308 | } |
||
| 309 | |||
| 310 | // $object correspond à la ligne ajoutée |
||
| 311 | if(empty($object->array_options)) $object->fetch_optionals(); |
||
| 312 | |||
| 313 | if(! empty($object->array_options['options_subtotal_nc'])) { |
||
| 314 | $object->total_ht = $object->total_tva = $object->total_ttc = $object->total_localtax1 = $object->total_localtax2 = |
||
| 315 | $object->multicurrency_total_ht = $object->multicurrency_total_tva = $object->multicurrency_total_ttc = 0; |
||
| 316 | |||
| 317 | if ($object->element == 'propaldet') $res = $object->update(1); |
||
| 318 | else $res = $object->update($user, 1); |
||
| 319 | |||
| 320 | if ($res > 0) setEventMessage($langs->trans('subtotal_update_nc_success')); |
||
| 321 | } |
||
| 322 | |||
| 323 | // Correction d'un bug lors de la création d'une commande depuis une propale qui a, au moins, une ligne NC |
||
| 324 | $parent_element = ''; |
||
| 325 | if($object->element == 'propaldet') $parent_element = 'propal'; |
||
| 326 | if($object->element == 'commandedet') $parent_element = 'commande'; |
||
| 327 | if($object->element == 'facturedet') $parent_element = 'facture'; |
||
| 328 | |||
| 329 | if(! empty($parent_element) && ! empty($object->array_options['options_subtotal_nc'])) { |
||
| 330 | _updateLineNC($parent_element, $object->{'fk_'.$parent_element}, $object->id, $object->array_options['options_subtotal_nc'], 1); |
||
| 331 | } |
||
| 332 | } |
||
| 333 | } |
||
| 334 | |||
| 335 | // Les lignes libres (y compris les sous-totaux) créées à partir d'une facture modèle n'ont pas la TVA de la ligne du modèle mais la TVA par défaut |
||
| 336 | if ($action == 'BILL_CREATE' && $object->fac_rec > 0) { |
||
| 337 | dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id); |
||
| 338 | |||
| 339 | $object->fetch_lines(); // Lignes pas rajoutées à $object->lines par les appels à addline(); |
||
| 340 | |||
| 341 | foreach($object->lines as &$line) { |
||
| 342 | if(TSubtotal::isSubtotal($line) && ! empty($line->tva_tx)) { |
||
| 343 | $line->tva_tx = 0; |
||
| 344 | $line->update(); |
||
| 345 | } |
||
| 346 | } |
||
| 347 | } |
||
| 348 | |||
| 349 | // Gestion des titres et sous-totaux dans les expéditions |
||
| 350 | // Il faut supprimer de l'expédition les titres et sous-totaux s'ils n'ont pas de lignes de produits / services entre eux |
||
| 351 | if ($action == 'SHIPPING_CREATE') { |
||
| 352 | $object->fetch_lines(); // Obligé de fetch les lines car au retour de la création, les lignes n'ont pas leur id... |
||
| 353 | |||
| 354 | // Parcours des lignes et lorsque un tire et un sous-total de même niveau, ou 2 titres de même niveau sont à la suite, on les supprime |
||
| 355 | foreach ($object->lines as &$line) { |
||
| 356 | $orderline = new OrderLine($this->db); |
||
| 357 | $orderline->fetch($line->origin_line_id); |
||
| 358 | |||
| 359 | if(TSubtotal::isTitle($orderline) || TSubtotal::isSubtotal($orderline)) { // Nous sommes sur une ligne titre, si la ligne précédente est un titre de même niveau, on supprime la ligne précédente |
||
| 360 | $line->special_code = TSubtotal::$module_number; |
||
| 361 | } |
||
| 362 | } |
||
| 363 | $TLinesToDelete = array(); |
||
| 364 | foreach ($object->lines as &$line) { |
||
| 365 | if(TSubtotal::isTitle($line)) { |
||
| 366 | $TLines = TSubtotal::getLinesFromTitleId($object, $line->id, true); |
||
| 367 | $TBlocks = array(); |
||
| 368 | $isThereProduct = false; |
||
| 369 | foreach($TLines as $lineInBlock) { |
||
| 370 | if(TSubtotal::isTitle($lineInBlock) || TSubtotal::isSubtotal($lineInBlock)) $TBlocks[$lineInBlock->id] = $lineInBlock; |
||
| 371 | else $isThereProduct = true; |
||
| 372 | } |
||
| 373 | if(!$isThereProduct) { |
||
| 374 | $TLinesToDelete = array_merge($TLinesToDelete, $TBlocks); |
||
| 375 | } |
||
| 376 | } |
||
| 377 | } |
||
| 378 | if (!empty($TLinesToDelete)) { |
||
| 379 | foreach ($TLinesToDelete as $lineToDelete) { |
||
| 380 | $lineToDelete->delete($user); |
||
| 381 | } |
||
| 382 | } |
||
| 383 | //exit; |
||
| 384 | } |
||
| 385 | |||
| 386 | if ($action == 'USER_LOGIN') { |
||
| 387 | dol_syslog( |
||
| 388 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 389 | ); |
||
| 390 | } elseif ($action == 'USER_UPDATE_SESSION') { |
||
| 391 | // Warning: To increase performances, this action is triggered only if |
||
| 392 | // constant MAIN_ACTIVATE_UPDATESESSIONTRIGGER is set to 1. |
||
| 393 | dol_syslog( |
||
| 394 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 395 | ); |
||
| 396 | } elseif ($action == 'USER_CREATE') { |
||
| 397 | dol_syslog( |
||
| 398 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 399 | ); |
||
| 400 | } elseif ($action == 'USER_CREATE_FROM_CONTACT') { |
||
| 401 | dol_syslog( |
||
| 402 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 403 | ); |
||
| 404 | } elseif ($action == 'USER_MODIFY') { |
||
| 405 | dol_syslog( |
||
| 406 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 407 | ); |
||
| 408 | } elseif ($action == 'USER_NEW_PASSWORD') { |
||
| 409 | dol_syslog( |
||
| 410 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 411 | ); |
||
| 412 | } elseif ($action == 'USER_ENABLEDISABLE') { |
||
| 413 | dol_syslog( |
||
| 414 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 415 | ); |
||
| 416 | } elseif ($action == 'USER_DELETE') { |
||
| 417 | dol_syslog( |
||
| 418 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 419 | ); |
||
| 420 | } elseif ($action == 'USER_LOGOUT') { |
||
| 421 | dol_syslog( |
||
| 422 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 423 | ); |
||
| 424 | } elseif ($action == 'USER_SETINGROUP') { |
||
| 425 | dol_syslog( |
||
| 426 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 427 | ); |
||
| 428 | } elseif ($action == 'USER_REMOVEFROMGROUP') { |
||
| 429 | dol_syslog( |
||
| 430 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 431 | ); |
||
| 432 | } |
||
| 433 | |||
| 434 | // Groups |
||
| 435 | elseif ($action == 'GROUP_CREATE') { |
||
| 436 | dol_syslog( |
||
| 437 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 438 | ); |
||
| 439 | } elseif ($action == 'GROUP_MODIFY') { |
||
| 440 | dol_syslog( |
||
| 441 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 442 | ); |
||
| 443 | } elseif ($action == 'GROUP_DELETE') { |
||
| 444 | dol_syslog( |
||
| 445 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 446 | ); |
||
| 447 | } |
||
| 448 | |||
| 449 | // Companies |
||
| 450 | elseif ($action == 'COMPANY_CREATE') { |
||
| 451 | dol_syslog( |
||
| 452 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 453 | ); |
||
| 454 | } elseif ($action == 'COMPANY_MODIFY') { |
||
| 455 | dol_syslog( |
||
| 456 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 457 | ); |
||
| 458 | } elseif ($action == 'COMPANY_DELETE') { |
||
| 459 | dol_syslog( |
||
| 460 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 461 | ); |
||
| 462 | } |
||
| 463 | |||
| 464 | // Contacts |
||
| 465 | elseif ($action == 'CONTACT_CREATE') { |
||
| 466 | dol_syslog( |
||
| 467 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 468 | ); |
||
| 469 | } elseif ($action == 'CONTACT_MODIFY') { |
||
| 470 | dol_syslog( |
||
| 471 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 472 | ); |
||
| 473 | } elseif ($action == 'CONTACT_DELETE') { |
||
| 474 | dol_syslog( |
||
| 475 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 476 | ); |
||
| 477 | } |
||
| 478 | |||
| 479 | // Products |
||
| 480 | elseif ($action == 'PRODUCT_CREATE') { |
||
| 481 | dol_syslog( |
||
| 482 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 483 | ); |
||
| 484 | } elseif ($action == 'PRODUCT_MODIFY') { |
||
| 485 | dol_syslog( |
||
| 486 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 487 | ); |
||
| 488 | } elseif ($action == 'PRODUCT_DELETE') { |
||
| 489 | dol_syslog( |
||
| 490 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 491 | ); |
||
| 492 | } |
||
| 493 | |||
| 494 | // Customer orders |
||
| 495 | elseif ($action == 'ORDER_VALIDATE') { |
||
| 496 | dol_syslog( |
||
| 497 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 498 | ); |
||
| 499 | } elseif ($action == 'ORDER_DELETE') { |
||
| 500 | dol_syslog( |
||
| 501 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 502 | ); |
||
| 503 | } elseif ($action == 'ORDER_BUILDDOC') { |
||
| 504 | dol_syslog( |
||
| 505 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 506 | ); |
||
| 507 | } elseif ($action == 'ORDER_SENTBYMAIL') { |
||
| 508 | dol_syslog( |
||
| 509 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 510 | ); |
||
| 511 | } elseif ($action == 'LINEORDER_INSERT') { |
||
| 512 | dol_syslog( |
||
| 513 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 514 | ); |
||
| 515 | } elseif ($action == 'LINEORDER_DELETE') { |
||
| 516 | dol_syslog( |
||
| 517 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 518 | ); |
||
| 519 | } |
||
| 520 | |||
| 521 | // Supplier orders |
||
| 522 | elseif ($action == 'ORDER_SUPPLIER_CREATE') { |
||
| 523 | dol_syslog( |
||
| 524 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 525 | ); |
||
| 526 | } elseif ($action == 'ORDER_SUPPLIER_VALIDATE') { |
||
| 527 | dol_syslog( |
||
| 528 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 529 | ); |
||
| 530 | } elseif ($action == 'ORDER_SUPPLIER_SENTBYMAIL') { |
||
| 531 | dol_syslog( |
||
| 532 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 533 | ); |
||
| 534 | } elseif ($action == 'SUPPLIER_ORDER_BUILDDOC') { |
||
| 535 | dol_syslog( |
||
| 536 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 537 | ); |
||
| 538 | } |
||
| 539 | |||
| 540 | // Proposals |
||
| 541 | elseif ((floatval(DOL_VERSION) <= 7.0 && in_array($action, array('PROPAL_CLONE', 'ORDER_CLONE', 'BILL_CLONE'))) || |
||
| 542 | (floatval(DOL_VERSION) >= 8.0 && ! empty($object->context) && in_array('createfromclone', $object->context) && in_array($action, array('PROPAL_CREATE', 'ORDER_CREATE', 'BILL_CREATE')))) { |
||
| 543 | dol_syslog( |
||
| 544 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 545 | ); |
||
| 546 | |||
| 547 | $doli_action = GETPOST('action', 'none'); |
||
| 548 | |||
| 549 | if (!empty($conf->global->SUBTOTAL_MANAGE_COMPRIS_NONCOMPRIS) && in_array($doli_action, array('confirm_clone'))) |
||
| 550 | { |
||
| 551 | dol_syslog( |
||
| 552 | "[SUBTOTAL_MANAGE_COMPRIS_NONCOMPRIS] Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". object=".$object->element." id=" . $object->id |
||
| 553 | ); |
||
| 554 | |||
| 555 | // En fonction de l'objet et de la version, les lignes conservent l'id de l'objet d'origine |
||
| 556 | if (method_exists($object, 'fetch_lines')) $object->fetch_lines(); |
||
| 557 | else $object->fetch($object->id); |
||
| 558 | |||
| 559 | foreach ($object->lines as &$line) |
||
| 560 | { |
||
| 561 | if (empty($line->array_options)) $line->fetch_optionals(); |
||
| 562 | |||
| 563 | if (!TSubtotal::isModSubtotalLine($line) && !empty($line->array_options['options_subtotal_nc'])) |
||
| 564 | { |
||
| 565 | $line->total_ht = $line->total_tva = $line->total_ttc = $line->total_localtax1 = $line->total_localtax2 = |
||
| 566 | $line->multicurrency_total_ht = $line->multicurrency_total_tva = $line->multicurrency_total_ttc = 0; |
||
| 567 | |||
| 568 | if ($line->element == 'propaldet') $res = $line->update(1); |
||
| 569 | else $res = $line->update($user, 1); |
||
| 570 | |||
| 571 | if ($res > 0) setEventMessage($langs->trans('subtotal_update_nc_success')); |
||
| 572 | } |
||
| 573 | } |
||
| 574 | |||
| 575 | if (!empty($line)) $object->update_price(1); |
||
| 576 | } |
||
| 577 | |||
| 578 | } elseif ($action == 'PROPAL_MODIFY') { |
||
| 579 | dol_syslog( |
||
| 580 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 581 | ); |
||
| 582 | } elseif ($action == 'PROPAL_VALIDATE') { |
||
| 583 | dol_syslog( |
||
| 584 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 585 | ); |
||
| 586 | } elseif ($action == 'PROPAL_BUILDDOC') { |
||
| 587 | dol_syslog( |
||
| 588 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 589 | ); |
||
| 590 | } elseif ($action == 'PROPAL_SENTBYMAIL') { |
||
| 591 | dol_syslog( |
||
| 592 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 593 | ); |
||
| 594 | } elseif ($action == 'PROPAL_CLOSE_SIGNED') { |
||
| 595 | dol_syslog( |
||
| 596 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 597 | ); |
||
| 598 | } elseif ($action == 'PROPAL_CLOSE_REFUSED') { |
||
| 599 | dol_syslog( |
||
| 600 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 601 | ); |
||
| 602 | } elseif ($action == 'PROPAL_DELETE') { |
||
| 603 | dol_syslog( |
||
| 604 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 605 | ); |
||
| 606 | } elseif ($action == 'LINEPROPAL_INSERT') { |
||
| 607 | dol_syslog( |
||
| 608 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 609 | ); |
||
| 610 | } elseif ($action == 'LINEPROPAL_MODIFY') { |
||
| 611 | dol_syslog( |
||
| 612 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 613 | ); |
||
| 614 | } elseif ($action == 'LINEPROPAL_DELETE') { |
||
| 615 | dol_syslog( |
||
| 616 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 617 | ); |
||
| 618 | } |
||
| 619 | |||
| 620 | // Contracts |
||
| 621 | elseif ($action == 'CONTRACT_CREATE') { |
||
| 622 | dol_syslog( |
||
| 623 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 624 | ); |
||
| 625 | } elseif ($action == 'CONTRACT_MODIFY') { |
||
| 626 | dol_syslog( |
||
| 627 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 628 | ); |
||
| 629 | } elseif ($action == 'CONTRACT_ACTIVATE') { |
||
| 630 | dol_syslog( |
||
| 631 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 632 | ); |
||
| 633 | } elseif ($action == 'CONTRACT_CANCEL') { |
||
| 634 | dol_syslog( |
||
| 635 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 636 | ); |
||
| 637 | } elseif ($action == 'CONTRACT_CLOSE') { |
||
| 638 | dol_syslog( |
||
| 639 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 640 | ); |
||
| 641 | } elseif ($action == 'CONTRACT_DELETE') { |
||
| 642 | dol_syslog( |
||
| 643 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 644 | ); |
||
| 645 | } |
||
| 646 | |||
| 647 | elseif ($action == 'BILL_MODIFY') { |
||
| 648 | dol_syslog( |
||
| 649 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 650 | ); |
||
| 651 | |||
| 652 | |||
| 653 | global $conf; |
||
| 654 | |||
| 655 | if (!empty($conf->global->INVOICE_USE_SITUATION) && $object->element == 'facture' && $object->type == Facture::TYPE_SITUATION) |
||
| 656 | { |
||
| 657 | $object->situation_final = 1; |
||
| 658 | foreach($object->lines as $i => $line) { |
||
| 659 | if(!TSubtotal::isModSubtotalLine($line) && $line->situation_percent != 100){ |
||
| 660 | $object->situation_final = 0; |
||
| 661 | break; |
||
| 662 | } |
||
| 663 | } |
||
| 664 | // ne pas utiliser $object->setFinal ne peut pas marcher |
||
| 665 | $sql = 'UPDATE ' . MAIN_DB_PREFIX . 'facture SET situation_final = ' . $object->situation_final . ' where rowid = ' . $object->id; |
||
| 666 | $resql=$object->db->query($sql); |
||
| 667 | } |
||
| 668 | |||
| 669 | |||
| 670 | } elseif ($action == 'BILL_VALIDATE') { |
||
| 671 | dol_syslog( |
||
| 672 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 673 | ); |
||
| 674 | } elseif ($action == 'BILL_BUILDDOC') { |
||
| 675 | dol_syslog( |
||
| 676 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 677 | ); |
||
| 678 | } elseif ($action == 'BILL_SENTBYMAIL') { |
||
| 679 | dol_syslog( |
||
| 680 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 681 | ); |
||
| 682 | } elseif ($action == 'BILL_CANCEL') { |
||
| 683 | dol_syslog( |
||
| 684 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 685 | ); |
||
| 686 | } elseif ($action == 'BILL_DELETE') { |
||
| 687 | dol_syslog( |
||
| 688 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 689 | ); |
||
| 690 | } elseif ($action == 'LINEBILL_INSERT') { |
||
| 691 | |||
| 692 | dol_syslog( |
||
| 693 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 694 | ); |
||
| 695 | } elseif ($action == 'LINEBILL_DELETE') { |
||
| 696 | dol_syslog( |
||
| 697 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 698 | ); |
||
| 699 | } |
||
| 700 | |||
| 701 | // Payments |
||
| 702 | elseif ($action == 'PAYMENT_CUSTOMER_CREATE') { |
||
| 703 | dol_syslog( |
||
| 704 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 705 | ); |
||
| 706 | } elseif ($action == 'PAYMENT_SUPPLIER_CREATE') { |
||
| 707 | dol_syslog( |
||
| 708 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 709 | ); |
||
| 710 | } elseif ($action == 'PAYMENT_ADD_TO_BANK') { |
||
| 711 | dol_syslog( |
||
| 712 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 713 | ); |
||
| 714 | } elseif ($action == 'PAYMENT_DELETE') { |
||
| 715 | dol_syslog( |
||
| 716 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 717 | ); |
||
| 718 | } |
||
| 719 | |||
| 720 | // Interventions |
||
| 721 | elseif ($action == 'FICHEINTER_CREATE') { |
||
| 722 | dol_syslog( |
||
| 723 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 724 | ); |
||
| 725 | } elseif ($action == 'FICHEINTER_MODIFY') { |
||
| 726 | dol_syslog( |
||
| 727 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 728 | ); |
||
| 729 | } elseif ($action == 'FICHEINTER_VALIDATE') { |
||
| 730 | dol_syslog( |
||
| 731 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 732 | ); |
||
| 733 | } elseif ($action == 'FICHEINTER_DELETE') { |
||
| 734 | dol_syslog( |
||
| 735 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 736 | ); |
||
| 737 | } |
||
| 738 | |||
| 739 | // Members |
||
| 740 | elseif ($action == 'MEMBER_CREATE') { |
||
| 741 | dol_syslog( |
||
| 742 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 743 | ); |
||
| 744 | } elseif ($action == 'MEMBER_VALIDATE') { |
||
| 745 | dol_syslog( |
||
| 746 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 747 | ); |
||
| 748 | } elseif ($action == 'MEMBER_SUBSCRIPTION') { |
||
| 749 | dol_syslog( |
||
| 750 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 751 | ); |
||
| 752 | } elseif ($action == 'MEMBER_MODIFY') { |
||
| 753 | dol_syslog( |
||
| 754 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 755 | ); |
||
| 756 | } elseif ($action == 'MEMBER_NEW_PASSWORD') { |
||
| 757 | dol_syslog( |
||
| 758 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 759 | ); |
||
| 760 | } elseif ($action == 'MEMBER_RESILIATE') { |
||
| 761 | dol_syslog( |
||
| 762 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 763 | ); |
||
| 764 | } elseif ($action == 'MEMBER_DELETE') { |
||
| 765 | dol_syslog( |
||
| 766 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 767 | ); |
||
| 768 | } |
||
| 769 | |||
| 770 | // Categories |
||
| 771 | elseif ($action == 'CATEGORY_CREATE') { |
||
| 772 | dol_syslog( |
||
| 773 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 774 | ); |
||
| 775 | } elseif ($action == 'CATEGORY_MODIFY') { |
||
| 776 | dol_syslog( |
||
| 777 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 778 | ); |
||
| 779 | } elseif ($action == 'CATEGORY_DELETE') { |
||
| 780 | dol_syslog( |
||
| 781 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 782 | ); |
||
| 783 | } |
||
| 784 | |||
| 785 | // Projects |
||
| 786 | elseif ($action == 'PROJECT_CREATE') { |
||
| 787 | dol_syslog( |
||
| 788 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 789 | ); |
||
| 790 | } elseif ($action == 'PROJECT_MODIFY') { |
||
| 791 | dol_syslog( |
||
| 792 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 793 | ); |
||
| 794 | } elseif ($action == 'PROJECT_DELETE') { |
||
| 795 | dol_syslog( |
||
| 796 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 797 | ); |
||
| 798 | } |
||
| 799 | |||
| 800 | // Project tasks |
||
| 801 | elseif ($action == 'TASK_CREATE') { |
||
| 802 | dol_syslog( |
||
| 803 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 804 | ); |
||
| 805 | } elseif ($action == 'TASK_MODIFY') { |
||
| 806 | dol_syslog( |
||
| 807 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 808 | ); |
||
| 809 | } elseif ($action == 'TASK_DELETE') { |
||
| 810 | dol_syslog( |
||
| 811 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 812 | ); |
||
| 813 | } |
||
| 814 | |||
| 815 | // Task time spent |
||
| 816 | elseif ($action == 'TASK_TIMESPENT_CREATE') { |
||
| 817 | dol_syslog( |
||
| 818 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 819 | ); |
||
| 820 | } elseif ($action == 'TASK_TIMESPENT_MODIFY') { |
||
| 821 | dol_syslog( |
||
| 822 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 823 | ); |
||
| 824 | } elseif ($action == 'TASK_TIMESPENT_DELETE') { |
||
| 825 | dol_syslog( |
||
| 826 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 827 | ); |
||
| 828 | } |
||
| 829 | |||
| 830 | // Shipping |
||
| 831 | elseif ($action == 'SHIPPING_CREATE') { |
||
| 832 | dol_syslog( |
||
| 833 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 834 | ); |
||
| 835 | } elseif ($action == 'SHIPPING_MODIFY') { |
||
| 836 | dol_syslog( |
||
| 837 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 838 | ); |
||
| 839 | } elseif ($action == 'SHIPPING_VALIDATE') { |
||
| 840 | dol_syslog( |
||
| 841 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 842 | ); |
||
| 843 | } elseif ($action == 'SHIPPING_SENTBYMAIL') { |
||
| 844 | dol_syslog( |
||
| 845 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 846 | ); |
||
| 847 | } elseif ($action == 'SHIPPING_DELETE') { |
||
| 848 | dol_syslog( |
||
| 849 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 850 | ); |
||
| 851 | } elseif ($action == 'SHIPPING_BUILDDOC') { |
||
| 852 | dol_syslog( |
||
| 853 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 854 | ); |
||
| 855 | } |
||
| 856 | |||
| 857 | // File |
||
| 858 | elseif ($action == 'FILE_UPLOAD') { |
||
| 859 | dol_syslog( |
||
| 860 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 861 | ); |
||
| 862 | } elseif ($action == 'FILE_DELETE') { |
||
| 863 | dol_syslog( |
||
| 864 | "Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id |
||
| 865 | ); |
||
| 866 | } |
||
| 867 | |||
| 868 | return 0; |
||
| 869 | } |
||
| 871 |