/**
  * Function called when a Dolibarrr business event is done.
  * All functions "runTrigger" are triggered if file is inside directory htdocs/core/triggers or htdocs/module/code/triggers (and declared)
  *
  * @param string		$action		Event action code
  * @param Object		$object     Object
  * @param User		    $user       Object user
  * @param Translate 	$langs      Object langs
  * @param conf		    $conf       Object conf
  * @return int         				<0 if KO, 0 if no triggered ran, >0 if OK
  */
 public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf)
 {
     if (empty($conf->workflow->enabled)) {
         return 0;
     }
     // Module not active, we do nothing
     // Proposals to order
     if ($action == 'PROPAL_CLOSE_SIGNED') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER)) {
             include_once DOL_DOCUMENT_ROOT . '/commande/class/commande.class.php';
             $newobject = new Commande($this->db);
             $newobject->context['createfrompropal'] = 'createfrompropal';
             $newobject->context['origin'] = $object->element;
             $newobject->context['origin_id'] = $object->id;
             $ret = $newobject->createFromProposal($object);
             if ($ret < 0) {
                 $this->error = $newobject->error;
                 $this->errors[] = $newobject->error;
             }
             return $ret;
         }
     }
     // Order to invoice
     if ($action == 'ORDER_CLOSE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->facture->enabled) && !empty($conf->global->WORKFLOW_ORDER_AUTOCREATE_INVOICE)) {
             include_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php';
             $newobject = new Facture($this->db);
             $newobject->context['createfromorder'] = 'createfromorder';
             $newobject->context['origin'] = $object->element;
             $newobject->context['origin_id'] = $object->id;
             $ret = $newobject->createFromOrder($object);
             if ($ret < 0) {
                 $this->error = $newobject->error;
                 $this->errors[] = $newobject->error;
             }
             return $ret;
         }
     }
     // Order classify billed proposal
     if ($action == 'ORDER_CLASSIFY_BILLED') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->propal->enabled) && !empty($conf->global->WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL)) {
             $object->fetchObjectLinked('', 'propal', $object->id, $object->element);
             if (!empty($object->linkedObjects)) {
                 foreach ($object->linkedObjects['propal'] as $element) {
                     $ret = $element->classifyBilled();
                 }
             }
             return $ret;
         }
     }
     // Invoice classify billed order
     if ($action == 'BILL_PAYED') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER)) {
             $object->fetchObjectLinked('', 'commande', $object->id, $object->element);
             if (!empty($object->linkedObjects)) {
                 foreach ($object->linkedObjects['commande'] as $element) {
                     $ret = $element->classifyBilled();
                 }
             }
             return $ret;
         }
     }
     // classify billed order
     if ($action == 'BILL_VALIDATE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER)) {
             $object->fetchObjectLinked('', 'commande', $object->id, $object->element);
             if (!empty($object->linkedObjects)) {
                 foreach ($object->linkedObjects['commande'] as $element) {
                     $ret = $element->classifyBilled();
                 }
             }
             return $ret;
         }
     }
     return 0;
 }
    /**
     *      Function called when a Dolibarrr business event is done.
     *      All functions "run_trigger" are triggered if file is inside directory htdocs/includes/triggers
     *      @param      action      Event code (COMPANY_CREATE, PROPAL_VALIDATE, ...)
     *      @param      object      Object action is done on
     *      @param      user        Object user
     *      @param      langs       Object langs
     *      @param      conf        Object conf
     *      @return     int         <0 if KO, 0 if no action are done, >0 if OK
     */
	function run_trigger($action,$object,$user,$langs,$conf)
    {
        if (empty($conf->workflow->enabled)) return 0;     // Module not active, we do nothing

        // Proposals to order
        if ($action == 'PROPAL_CLOSE_SIGNED')
        {
        	dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
            if (! empty($conf->commande->enabled) && ! empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER))
            {
                include_once(DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php');
                $order = new Commande($this->db);
                $ret=$order->createFromProposal($object,0);
                if ($ret < 0) { $this->error=$invoice->error; $this->errors[]=$invoice->error; }
                return $ret;
            }
        }

        // Order to invoice
        if ($action == 'ORDER_CLOSE')
        {
            dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
            if (! empty($conf->facture->enabled) && ! empty($conf->global->WORKFLOW_ORDER_AUTOCREATE_INVOICE))
            {
                include_once(DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php');
                $invoice = new Facture($this->db);
                $ret=$invoice->createFromOrder($object,0);
                if ($ret < 0) { $this->error=$invoice->error; $this->errors[]=$invoice->error; }
                return $ret;
            }
        }

        return 0;
    }