clean triggers

This commit is contained in:
Frédéric FRANCE 2020-10-26 18:31:45 +01:00
parent 82db2636f0
commit 3e686e167c
No known key found for this signature in database
GPG Key ID: 06809324E4B2ABC1
4 changed files with 111 additions and 168 deletions

View File

@ -70,8 +70,19 @@ abstract class DolibarrTriggers
*/ */
public $errors = array(); public $errors = array();
/**
* @var string module is in development
*/
const VERSION_DEVELOPMENT = 'development'; const VERSION_DEVELOPMENT = 'development';
/**
* @var string module is experimental
*/
const VERSION_EXPERIMENTAL = 'experimental'; const VERSION_EXPERIMENTAL = 'experimental';
/**
* @var string module is dolibarr
*/
const VERSION_DOLIBARR = 'dolibarr'; const VERSION_DOLIBARR = 'dolibarr';
/** /**
@ -84,8 +95,7 @@ abstract class DolibarrTriggers
$this->db = $db; $this->db = $db;
if (empty($this->name)) if (empty($this->name)) {
{
$this->name = preg_replace('/^Interface/i', '', get_class($this)); $this->name = preg_replace('/^Interface/i', '', get_class($this));
} }
} }

View File

@ -31,20 +31,27 @@ require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php';
*/ */
class InterfaceLogevents extends DolibarrTriggers class InterfaceLogevents extends DolibarrTriggers
{ {
/** /**
* @var string Image of the trigger * @var DoliDB Database handler
*/ */
public $picto = 'technic'; protected $db;
public $family = 'core'; /**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
{
$this->db = $db;
public $description = "Triggers of this module allows to add security event records inside Dolibarr."; $this->name = preg_replace('/^Interface/i', '', get_class($this));
$this->family = "core";
/** $this->description = "Triggers of this module allows to add security event records inside Dolibarr.";
* Version of the trigger // 'development', 'experimental', 'dolibarr' or version
* @var string $this->version = self::VERSION_DOLIBARR;
*/ $this->picto = 'technic';
public $version = self::VERSION_DOLIBARR; }
/** /**
* Function called when a Dolibarrr security audit event is done. * Function called when a Dolibarrr security audit event is done.
@ -70,8 +77,7 @@ class InterfaceLogevents extends DolibarrTriggers
$date = dol_now(); $date = dol_now();
// Actions // Actions
if ($action == 'USER_LOGIN') if ($action == 'USER_LOGIN') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
@ -81,16 +87,14 @@ class InterfaceLogevents extends DolibarrTriggers
$desc = "(UserLogged,".$object->login.")"; $desc = "(UserLogged,".$object->login.")";
$desc .= (empty($object->trigger_mesg) ? '' : ' - '.$object->trigger_mesg); $desc .= (empty($object->trigger_mesg) ? '' : ' - '.$object->trigger_mesg);
} }
if ($action == 'USER_LOGIN_FAILED') if ($action == 'USER_LOGIN_FAILED') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$text = $object->trigger_mesg; // Message direct $text = $object->trigger_mesg; // Message direct
$desc = $object->trigger_mesg; // Message direct $desc = $object->trigger_mesg; // Message direct
} }
if ($action == 'USER_LOGOUT') if ($action == 'USER_LOGOUT') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
@ -98,47 +102,40 @@ class InterfaceLogevents extends DolibarrTriggers
$text = "(UserLogoff,".$object->login.")"; $text = "(UserLogoff,".$object->login.")";
$desc = "(UserLogoff,".$object->login.")"; $desc = "(UserLogoff,".$object->login.")";
} }
if ($action == 'USER_CREATE') if ($action == 'USER_CREATE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$text = $langs->transnoentities("NewUserCreated", $object->login); $text = $langs->transnoentities("NewUserCreated", $object->login);
$desc = $langs->transnoentities("NewUserCreated", $object->login); $desc = $langs->transnoentities("NewUserCreated", $object->login);
} elseif ($action == 'USER_MODIFY') } elseif ($action == 'USER_MODIFY') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$text = $langs->transnoentities("EventUserModified", $object->login); $text = $langs->transnoentities("EventUserModified", $object->login);
$desc = $langs->transnoentities("EventUserModified", $object->login); $desc = $langs->transnoentities("EventUserModified", $object->login);
} elseif ($action == 'USER_NEW_PASSWORD') } elseif ($action == 'USER_NEW_PASSWORD') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$text = $langs->transnoentities("NewUserPassword", $object->login); $text = $langs->transnoentities("NewUserPassword", $object->login);
$desc = $langs->transnoentities("NewUserPassword", $object->login); $desc = $langs->transnoentities("NewUserPassword", $object->login);
} elseif ($action == 'USER_ENABLEDISABLE') } elseif ($action == 'USER_ENABLEDISABLE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
if ($object->statut == 0) if ($object->statut == 0) {
{
$text = $langs->transnoentities("UserEnabled", $object->login); $text = $langs->transnoentities("UserEnabled", $object->login);
$desc = $langs->transnoentities("UserEnabled", $object->login); $desc = $langs->transnoentities("UserEnabled", $object->login);
} }
if ($object->statut == 1) if ($object->statut == 1) {
{
$text = $langs->transnoentities("UserDisabled", $object->login); $text = $langs->transnoentities("UserDisabled", $object->login);
$desc = $langs->transnoentities("UserDisabled", $object->login); $desc = $langs->transnoentities("UserDisabled", $object->login);
} }
} elseif ($action == 'USER_DELETE') } elseif ($action == 'USER_DELETE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
@ -147,22 +144,19 @@ class InterfaceLogevents extends DolibarrTriggers
} }
// Groupes // Groupes
elseif ($action == 'USERGROUP_CREATE') elseif ($action == 'USERGROUP_CREATE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$text = $langs->transnoentities("NewGroupCreated", $object->name); $text = $langs->transnoentities("NewGroupCreated", $object->name);
$desc = $langs->transnoentities("NewGroupCreated", $object->name); $desc = $langs->transnoentities("NewGroupCreated", $object->name);
} elseif ($action == 'USERGROUP_MODIFY') } elseif ($action == 'USERGROUP_MODIFY') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$text = $langs->transnoentities("GroupModified", $object->name); $text = $langs->transnoentities("GroupModified", $object->name);
$desc = $langs->transnoentities("GroupModified", $object->name); $desc = $langs->transnoentities("GroupModified", $object->name);
} elseif ($action == 'USERGROUP_DELETE') } elseif ($action == 'USERGROUP_DELETE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
@ -193,8 +187,7 @@ class InterfaceLogevents extends DolibarrTriggers
$event->user_agent = $_SERVER["HTTP_USER_AGENT"]; $event->user_agent = $_SERVER["HTTP_USER_AGENT"];
$result = $event->create($user); $result = $event->create($user);
if ($result > 0) if ($result > 0) {
{
return 1; return 1;
} else { } else {
$error = "Failed to insert security event: ".$event->error; $error = "Failed to insert security event: ".$event->error;

View File

@ -32,19 +32,27 @@ require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php';
class InterfaceWorkflowManager extends DolibarrTriggers class InterfaceWorkflowManager extends DolibarrTriggers
{ {
/** /**
* @var string Image of the trigger * @var DoliDB Database handler
*/ */
public $picto = 'technic'; protected $db;
public $family = 'core'; /**
public $description = "Triggers of this module allows to manage workflows"; * Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
{
$this->db = $db;
/** $this->name = preg_replace('/^Interface/i', '', get_class($this));
* Version of the trigger $this->family = "core";
* @var string $this->description = "Triggers of this module allows to manage workflows";
*/ // 'development', 'experimental', 'dolibarr' or version
public $version = self::VERSION_DOLIBARR; $this->version = self::VERSION_DOLIBARR;
$this->picto = 'technic';
}
/** /**
* Function called when a Dolibarrr business event is done. * Function called when a Dolibarrr business event is done.
@ -62,11 +70,9 @@ class InterfaceWorkflowManager extends DolibarrTriggers
if (empty($conf->workflow->enabled)) return 0; // Module not active, we do nothing if (empty($conf->workflow->enabled)) return 0; // Module not active, we do nothing
// Proposals to order // Proposals to order
if ($action == 'PROPAL_CLOSE_SIGNED') if ($action == 'PROPAL_CLOSE_SIGNED') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); 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)) if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER)) {
{
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
$newobject = new Commande($this->db); $newobject = new Commande($this->db);
@ -81,11 +87,9 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
// Order to invoice // Order to invoice
if ($action == 'ORDER_CLOSE') if ($action == 'ORDER_CLOSE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); 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)) if (!empty($conf->facture->enabled) && !empty($conf->global->WORKFLOW_ORDER_AUTOCREATE_INVOICE)) {
{
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$newobject = new Facture($this->db); $newobject = new Facture($this->db);
@ -100,24 +104,18 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
// Order classify billed proposal // Order classify billed proposal
if ($action == 'ORDER_CLASSIFY_BILLED') if ($action == 'ORDER_CLASSIFY_BILLED') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
if (!empty($conf->propal->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL)) if (!empty($conf->propal->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL)) {
{
$object->fetchObjectLinked('', 'propal', $object->id, $object->element); $object->fetchObjectLinked('', 'propal', $object->id, $object->element);
if (!empty($object->linkedObjects)) if (!empty($object->linkedObjects)) {
{
$totalonlinkedelements = 0; $totalonlinkedelements = 0;
foreach ($object->linkedObjects['propal'] as $element) foreach ($object->linkedObjects['propal'] as $element) {
{
if ($element->statut == Propal::STATUS_SIGNED || $element->statut == Propal::STATUS_BILLED) $totalonlinkedelements += $element->total_ht; if ($element->statut == Propal::STATUS_SIGNED || $element->statut == Propal::STATUS_BILLED) $totalonlinkedelements += $element->total_ht;
} }
dol_syslog("Amount of linked proposals = ".$totalonlinkedelements.", of order = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht)); dol_syslog("Amount of linked proposals = ".$totalonlinkedelements.", of order = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht));
if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) {
{ foreach ($object->linkedObjects['propal'] as $element) {
foreach ($object->linkedObjects['propal'] as $element)
{
$ret = $element->classifyBilled($user); $ret = $element->classifyBilled($user);
} }
} }
@ -127,27 +125,21 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
// classify billed order & billed propososal // classify billed order & billed propososal
if ($action == 'BILL_VALIDATE') if ($action == 'BILL_VALIDATE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$ret = 0; $ret = 0;
// First classify billed the order to allow the proposal classify process // First classify billed the order to allow the proposal classify process
if (!empty($conf->commande->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER)) if (!empty($conf->commande->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER)) {
{
$object->fetchObjectLinked('', 'commande', $object->id, $object->element); $object->fetchObjectLinked('', 'commande', $object->id, $object->element);
if (!empty($object->linkedObjects)) if (!empty($object->linkedObjects)) {
{
$totalonlinkedelements = 0; $totalonlinkedelements = 0;
foreach ($object->linkedObjects['commande'] as $element) foreach ($object->linkedObjects['commande'] as $element) {
{
if ($element->statut == Commande::STATUS_VALIDATED || $element->statut == Commande::STATUS_SHIPMENTONPROCESS || $element->statut == Commande::STATUS_CLOSED) $totalonlinkedelements += $element->total_ht; if ($element->statut == Commande::STATUS_VALIDATED || $element->statut == Commande::STATUS_SHIPMENTONPROCESS || $element->statut == Commande::STATUS_CLOSED) $totalonlinkedelements += $element->total_ht;
} }
dol_syslog("Amount of linked orders = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht)); dol_syslog("Amount of linked orders = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht));
if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) {
{ foreach ($object->linkedObjects['commande'] as $element) {
foreach ($object->linkedObjects['commande'] as $element)
{
$ret = $element->classifyBilled($user); $ret = $element->classifyBilled($user);
} }
} }
@ -155,21 +147,16 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
// Second classify billed the proposal. // Second classify billed the proposal.
if (!empty($conf->propal->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL)) if (!empty($conf->propal->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL)) {
{
$object->fetchObjectLinked('', 'propal', $object->id, $object->element); $object->fetchObjectLinked('', 'propal', $object->id, $object->element);
if (!empty($object->linkedObjects)) if (!empty($object->linkedObjects)) {
{
$totalonlinkedelements = 0; $totalonlinkedelements = 0;
foreach ($object->linkedObjects['propal'] as $element) foreach ($object->linkedObjects['propal'] as $element) {
{
if ($element->statut == Propal::STATUS_SIGNED || $element->statut == Propal::STATUS_BILLED) $totalonlinkedelements += $element->total_ht; if ($element->statut == Propal::STATUS_SIGNED || $element->statut == Propal::STATUS_BILLED) $totalonlinkedelements += $element->total_ht;
} }
dol_syslog("Amount of linked proposals = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht)); dol_syslog("Amount of linked proposals = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht));
if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) {
{ foreach ($object->linkedObjects['propal'] as $element) {
foreach ($object->linkedObjects['propal'] as $element)
{
$ret = $element->classifyBilled($user); $ret = $element->classifyBilled($user);
} }
} }
@ -180,26 +167,20 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
// classify billed order & billed propososal // classify billed order & billed propososal
if ($action == 'BILL_SUPPLIER_VALIDATE') if ($action == 'BILL_SUPPLIER_VALIDATE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
// First classify billed the order to allow the proposal classify process // First classify billed the order to allow the proposal classify process
if (!empty($conf->fournisseur->enabled) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER)) if (!empty($conf->fournisseur->enabled) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER)) {
{
$object->fetchObjectLinked('', 'order_supplier', $object->id, $object->element); $object->fetchObjectLinked('', 'order_supplier', $object->id, $object->element);
if (!empty($object->linkedObjects)) if (!empty($object->linkedObjects)) {
{
$totalonlinkedelements = 0; $totalonlinkedelements = 0;
foreach ($object->linkedObjects['order_supplier'] as $element) foreach ($object->linkedObjects['order_supplier'] as $element) {
{
if ($element->statut == CommandeFournisseur::STATUS_ACCEPTED || $element->statut == CommandeFournisseur::STATUS_ORDERSENT || $element->statut == CommandeFournisseur::STATUS_RECEIVED_PARTIALLY || $element->statut == CommandeFournisseur::STATUS_RECEIVED_COMPLETELY) $totalonlinkedelements += $element->total_ht; if ($element->statut == CommandeFournisseur::STATUS_ACCEPTED || $element->statut == CommandeFournisseur::STATUS_ORDERSENT || $element->statut == CommandeFournisseur::STATUS_RECEIVED_PARTIALLY || $element->statut == CommandeFournisseur::STATUS_RECEIVED_COMPLETELY) $totalonlinkedelements += $element->total_ht;
} }
dol_syslog("Amount of linked orders = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht)); dol_syslog("Amount of linked orders = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht));
if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) {
{ foreach ($object->linkedObjects['order_supplier'] as $element) {
foreach ($object->linkedObjects['order_supplier'] as $element)
{
$ret = $element->classifyBilled($user); $ret = $element->classifyBilled($user);
} }
} }
@ -208,21 +189,16 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
// Second classify billed the proposal. // Second classify billed the proposal.
if (!empty($conf->supplier_proposal->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_SUPPLIER_PROPOSAL)) if (!empty($conf->supplier_proposal->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_SUPPLIER_PROPOSAL)) {
{
$object->fetchObjectLinked('', 'supplier_proposal', $object->id, $object->element); $object->fetchObjectLinked('', 'supplier_proposal', $object->id, $object->element);
if (!empty($object->linkedObjects)) if (!empty($object->linkedObjects)) {
{
$totalonlinkedelements = 0; $totalonlinkedelements = 0;
foreach ($object->linkedObjects['supplier_proposal'] as $element) foreach ($object->linkedObjects['supplier_proposal'] as $element) {
{
if ($element->statut == SupplierProposal::STATUS_SIGNED || $element->statut == SupplierProposal::STATUS_BILLED) $totalonlinkedelements += $element->total_ht; if ($element->statut == SupplierProposal::STATUS_SIGNED || $element->statut == SupplierProposal::STATUS_BILLED) $totalonlinkedelements += $element->total_ht;
} }
dol_syslog("Amount of linked supplier proposals = ".$totalonlinkedelements.", of supplier invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht)); dol_syslog("Amount of linked supplier proposals = ".$totalonlinkedelements.", of supplier invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht));
if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) {
{ foreach ($object->linkedObjects['supplier_proposal'] as $element) {
foreach ($object->linkedObjects['supplier_proposal'] as $element)
{
$ret = $element->classifyBilled($user); $ret = $element->classifyBilled($user);
} }
} }
@ -232,25 +208,19 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
// Invoice classify billed order // Invoice classify billed order
if ($action == 'BILL_PAYED') if ($action == 'BILL_PAYED') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); 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)) if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER)) {
{
$object->fetchObjectLinked('', 'commande', $object->id, $object->element); $object->fetchObjectLinked('', 'commande', $object->id, $object->element);
if (!empty($object->linkedObjects)) if (!empty($object->linkedObjects)) {
{
$totalonlinkedelements = 0; $totalonlinkedelements = 0;
foreach ($object->linkedObjects['commande'] as $element) foreach ($object->linkedObjects['commande'] as $element) {
{
if ($element->statut == Commande::STATUS_VALIDATED || $element->statut == Commande::STATUS_SHIPMENTONPROCESS || $element->statut == Commande::STATUS_CLOSED) $totalonlinkedelements += $element->total_ht; if ($element->statut == Commande::STATUS_VALIDATED || $element->statut == Commande::STATUS_SHIPMENTONPROCESS || $element->statut == Commande::STATUS_CLOSED) $totalonlinkedelements += $element->total_ht;
} }
dol_syslog("Amount of linked orders = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht)); dol_syslog("Amount of linked orders = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht));
if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) {
{ foreach ($object->linkedObjects['commande'] as $element) {
foreach ($object->linkedObjects['commande'] as $element)
{
$ret = $element->classifyBilled($user); $ret = $element->classifyBilled($user);
} }
} }
@ -259,12 +229,10 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
} }
if ($action == 'SHIPPING_VALIDATE') if ($action == 'SHIPPING_VALIDATE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
if (!empty($conf->commande->enabled) && !empty($conf->expedition->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING)) if (!empty($conf->commande->enabled) && !empty($conf->expedition->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING)) {
{
$qtyshipped = array(); $qtyshipped = array();
$qtyordred = array(); $qtyordred = array();
require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
@ -318,25 +286,19 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
} }
// classify billed reception // classify billed reception
if ($action == 'BILL_SUPPLIER_VALIDATE') if ($action == 'BILL_SUPPLIER_VALIDATE') {
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id, LOG_DEBUG); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id, LOG_DEBUG);
if (!empty($conf->reception->enabled) && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) if (!empty($conf->reception->enabled) && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) {
{
$object->fetchObjectLinked('', 'reception', $object->id, $object->element); $object->fetchObjectLinked('', 'reception', $object->id, $object->element);
if (!empty($object->linkedObjects)) if (!empty($object->linkedObjects)) {
{
$totalonlinkedelements = 0; $totalonlinkedelements = 0;
foreach ($object->linkedObjects['reception'] as $element) foreach ($object->linkedObjects['reception'] as $element) {
{
if ($element->statut == Reception::STATUS_VALIDATED) $totalonlinkedelements += $element->total_ht; if ($element->statut == Reception::STATUS_VALIDATED) $totalonlinkedelements += $element->total_ht;
} }
dol_syslog("Amount of linked proposals = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht), LOG_DEBUG); dol_syslog("Amount of linked proposals = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht), LOG_DEBUG);
if ($totalonlinkedelements == $object->total_ht) if ($totalonlinkedelements == $object->total_ht) {
{ foreach ($object->linkedObjects['reception'] as $element) {
foreach ($object->linkedObjects['reception'] as $element)
{
$ret = $element->set_billed(); $ret = $element->set_billed();
} }
} }

View File

@ -57,31 +57,10 @@ class InterfaceZapierTriggers extends DolibarrTriggers
$this->family = "technic"; $this->family = "technic";
$this->description = "Zapier triggers."; $this->description = "Zapier triggers.";
// 'development', 'experimental', 'dolibarr' or version // 'development', 'experimental', 'dolibarr' or version
$this->version = 'development'; $this->version = self::VERSION_DEVELOPMENT;
$this->picto = 'zapier'; $this->picto = 'zapier';
} }
/**
* Trigger name
*
* @return string Name of trigger file
*/
public function getName()
{
return $this->name;
}
/**
* Trigger description
*
* @return string Description of trigger file
*/
public function getDesc()
{
return $this->description;
}
/** /**
* Function called when a Dolibarrr business event is done. * Function called when a Dolibarrr business event is done.
* All functions "runTrigger" are triggered if file * All functions "runTrigger" are triggered if file
@ -96,7 +75,6 @@ class InterfaceZapierTriggers extends DolibarrTriggers
*/ */
public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf) public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf)
{ {
global $db;
if (empty($conf->zapier->enabled)) { if (empty($conf->zapier->enabled)) {
// Module not active, we do nothing // Module not active, we do nothing
return 0; return 0;