Selaa lähdekoodia

Merge pull request #20872 from FHenry/dev_event_factrec

NEW: Add event block on facture_rec #20870
Laurent Destailleur 3 vuotta sitten
vanhempi
commit
732c03b22a

+ 3 - 0
htdocs/admin/agenda.php

@@ -173,6 +173,9 @@ if (!empty($triggers)) {
 		if ($module == 'contact') {
 			$module = 'societe';
 		}
+		if ($module == 'facturerec') {
+			$module = 'facture';
+		}
 
 		// If 'element' value is myobject@mymodule instead of mymodule
 		$tmparray = explode('@', $module);

+ 14 - 1
htdocs/compta/facture/card-rec.php

@@ -1695,7 +1695,20 @@ if ($action == 'create') {
 		$somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
 
 
-		print '</div></div>';
+		print '</div>';
+		print '<div class="fichehalfright">';
+
+		$MAXEVENT = 10;
+
+		//$morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-list-alt imgforviewmode', dol_buildpath('/mymodule/myobject_agenda.php', 1).'?id='.$object->id);
+
+		// List of actions on element
+		include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
+		$formactions = new FormActions($db);
+		$somethingshown = $formactions->showactions($object, $object->element, (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlcenter);
+
+		print '</div>';
+		print '</div>';
 	}
 }
 

+ 100 - 8
htdocs/compta/facture/class/facture-rec.class.php

@@ -270,6 +270,7 @@ class FactureRec extends CommonInvoice
 		if ($result > 0) {
 			// On positionne en mode brouillon la facture
 			$this->brouillon = 1;
+			$this->fk_soc = $facsrc->socid;
 
 			$sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_rec (";
 			$sql .= "titre";
@@ -301,7 +302,7 @@ class FactureRec extends CommonInvoice
 			$sql .= ", suspended";
 			$sql .= ") VALUES (";
 			$sql .= "'".$this->db->escape($this->titre ? $this->titre : $this->title)."'";
-			$sql .= ", ".((int) $facsrc->socid);
+			$sql .= ", ".((int) $this->fk_soc);
 			$sql .= ", ".((int) $conf->entity);
 			$sql .= ", '".$this->db->idate($now)."'";
 			$sql .= ", ".(!empty($facsrc->total_ttc) ? ((float) $facsrc->total_ttc) : '0');
@@ -1256,9 +1257,10 @@ class FactureRec extends CommonInvoice
 	 *
 	 *  @param	int		$restrictioninvoiceid		0=All qualified template invoices found. > 0 = restrict action on invoice ID
 	 *  @param	int		$forcevalidation		1=Force validation of invoice whatever is template auto_validate flag.
+	 *	@param     	int 	$notrigger 			Disable the trigger
 	 *  @return	int								0 if OK, < 0 if KO (this function is used also by cron so only 0 is OK)
 	 */
-	public function createRecurringInvoices($restrictioninvoiceid = 0, $forcevalidation = 0)
+	public function createRecurringInvoices($restrictioninvoiceid = 0, $forcevalidation = 0, $notrigger = 0)
 	{
 		global $conf, $langs, $db, $user, $hookmanager;
 
@@ -1338,6 +1340,8 @@ class FactureRec extends CommonInvoice
 						$this->error = $facture->error;
 						$error++;
 					}
+
+
 					if (!$error && ($facturerec->auto_validate || $forcevalidation)) {
 						$result = $facture->validate($user);
 						if ($result <= 0) {
@@ -1356,6 +1360,16 @@ class FactureRec extends CommonInvoice
 							$error++;
 						}
 					}
+					if (!$error && !$notrigger) {
+						// Call trigger
+						$result = $facturerec->call_trigger('BILLREC_CREATEBILL', $user);
+						if ($result < 0) {
+							$this->errors = $facturerec->errors;
+							$this->error = $facturerec->error;
+							$error++;
+						}
+						// End call triggers
+					}
 				} else {
 					$error++;
 					$this->error = "Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity."\n";
@@ -1788,10 +1802,13 @@ class FactureRec extends CommonInvoice
 	 *
 	 *	@param     	int		$frequency		value of frequency
 	 *	@param     	string	$unit 			unit of frequency  (d, m, y)
+	 *	@param     	int 	$notrigger 		Disable the trigger
 	 *	@return		int						<0 if KO, >0 if OK
 	 */
-	public function setFrequencyAndUnit($frequency, $unit)
+	public function setFrequencyAndUnit($frequency, $unit, $notrigger = 0)
 	{
+		global $user;
+
 		if (!$this->table_element) {
 			dol_syslog(get_class($this)."::setFrequencyAndUnit was called on objet with property table_element not defined", LOG_ERR);
 			return -1;
@@ -1815,6 +1832,16 @@ class FactureRec extends CommonInvoice
 			if (!empty($unit)) {
 				$this->unit_frequency = $unit;
 			}
+
+			if (!$notrigger) {
+				// Call trigger
+				$result = $this->call_trigger('BILLREC_MODIFY', $user);
+				if ($result < 0) {
+					return $result;
+				}
+				// End call triggers
+			}
+
 			return 1;
 		} else {
 			dol_print_error($this->db);
@@ -1827,10 +1854,14 @@ class FactureRec extends CommonInvoice
 	 *
 	 *	@param     	datetime	$date					date of execution
 	 *	@param     	int			$increment_nb_gen_done	0 do nothing more, >0 increment nb_gen_done
+	 *	@param     	int 	    $notrigger		 		Disable the trigger
 	 *	@return		int									<0 if KO, >0 if OK
 	 */
-	public function setNextDate($date, $increment_nb_gen_done = 0)
+	public function setNextDate($date, $increment_nb_gen_done = 0, $notrigger = 0)
 	{
+
+		global $user;
+
 		if (!$this->table_element) {
 			dol_syslog(get_class($this)."::setNextDate was called on objet with property table_element not defined", LOG_ERR);
 			return -1;
@@ -1848,6 +1879,15 @@ class FactureRec extends CommonInvoice
 			if ($increment_nb_gen_done > 0) {
 				$this->nb_gen_done++;
 			}
+
+			if (!$notrigger) {
+				// Call trigger
+				$result = $this->call_trigger('BILLREC_MODIFY', $user);
+				if ($result < 0) {
+					return $result;
+				}
+				// End call triggers
+			}
 			return 1;
 		} else {
 			dol_print_error($this->db);
@@ -1859,10 +1899,14 @@ class FactureRec extends CommonInvoice
 	 *	Update the maximum period
 	 *
 	 *	@param     	int		$nb		number of maximum period
+	 *	@param     	int 	$notrigger Disable the trigger
 	 *	@return		int				<0 if KO, >0 if OK
 	 */
-	public function setMaxPeriod($nb)
+	public function setMaxPeriod($nb, $notrigger = 0)
 	{
+
+		global $user;
+
 		if (!$this->table_element) {
 			dol_syslog(get_class($this)."::setMaxPeriod was called on objet with property table_element not defined", LOG_ERR);
 			return -1;
@@ -1879,6 +1923,16 @@ class FactureRec extends CommonInvoice
 		dol_syslog(get_class($this)."::setMaxPeriod", LOG_DEBUG);
 		if ($this->db->query($sql)) {
 			$this->nb_gen_max = $nb;
+
+			if (!$notrigger) {
+				// Call trigger
+				$result = $this->call_trigger('BILLREC_MODIFY', $user);
+				if ($result < 0) {
+					return $result;
+				}
+				// End call triggers
+			}
+
 			return 1;
 		} else {
 			dol_print_error($this->db);
@@ -1890,10 +1944,13 @@ class FactureRec extends CommonInvoice
 	 *	Update the auto validate flag of invoice
 	 *
 	 *	@param     	int		$validate		0 to create in draft, 1 to create and validate invoice
+	 *	@param     	int 	$notrigger 		Disable the trigger
 	 *	@return		int						<0 if KO, >0 if OK
 	 */
-	public function setAutoValidate($validate)
+	public function setAutoValidate($validate, $notrigger = 0)
 	{
+		global $user;
+
 		if (!$this->table_element) {
 			dol_syslog(get_class($this)."::setAutoValidate was called on objet with property table_element not defined", LOG_ERR);
 			return -1;
@@ -1906,6 +1963,16 @@ class FactureRec extends CommonInvoice
 		dol_syslog(get_class($this)."::setAutoValidate", LOG_DEBUG);
 		if ($this->db->query($sql)) {
 			$this->auto_validate = $validate;
+
+			if (!$notrigger) {
+				// Call trigger
+				$result = $this->call_trigger('BILLREC_MODIFY', $user);
+				if ($result < 0) {
+					return $result;
+				}
+				// End call triggers
+			}
+
 			return 1;
 		} else {
 			dol_print_error($this->db);
@@ -1917,10 +1984,13 @@ class FactureRec extends CommonInvoice
 	 *	Update the auto generate documents
 	 *
 	 *	@param     	int		$validate		0 no document, 1 to generate document
+	 *	@param     	int 	$notrigger 		Disable the trigger
 	 *	@return		int						<0 if KO, >0 if OK
 	 */
-	public function setGeneratePdf($validate)
+	public function setGeneratePdf($validate, $notrigger = 0)
 	{
+		global $user;
+
 		if (!$this->table_element) {
 			dol_syslog(get_class($this)."::setGeneratePdf was called on objet with property table_element not defined", LOG_ERR);
 			return -1;
@@ -1933,6 +2003,16 @@ class FactureRec extends CommonInvoice
 		dol_syslog(get_class($this)."::setGeneratePdf", LOG_DEBUG);
 		if ($this->db->query($sql)) {
 			$this->generate_pdf = $validate;
+
+			if (!$notrigger) {
+				// Call trigger
+				$result = $this->call_trigger('BILLREC_MODIFY', $user);
+				if ($result < 0) {
+					return $result;
+				}
+				// End call triggers
+			}
+
 			return 1;
 		} else {
 			dol_print_error($this->db);
@@ -1944,10 +2024,12 @@ class FactureRec extends CommonInvoice
 	 *  Update the model for documents
 	 *
 	 *  @param     	string		$model		model of document generator
+	 *	@param     	int 	$notrigger 		Disable the trigger
 	 *  @return		int						<0 if KO, >0 if OK
 	 */
-	public function setModelPdf($model)
+	public function setModelPdf($model, $notrigger = 0)
 	{
+		global $user;
 		if (!$this->table_element) {
 			dol_syslog(get_class($this)."::setModelPdf was called on objet with property table_element not defined", LOG_ERR);
 			return -1;
@@ -1960,6 +2042,16 @@ class FactureRec extends CommonInvoice
 		dol_syslog(get_class($this)."::setModelPdf", LOG_DEBUG);
 		if ($this->db->query($sql)) {
 			$this->model_pdf = $model;
+
+			if (!$notrigger) {
+				// Call trigger
+				$result = $this->call_trigger('BILLREC_MODIFY', $user);
+				if ($result < 0) {
+					return $result;
+				}
+				// End call triggers
+			}
+
 			return 1;
 		} else {
 			dol_print_error($this->db);

+ 5 - 0
htdocs/core/lib/functions2.lib.php

@@ -2229,6 +2229,11 @@ function dolGetElementUrl($objectid, $objecttype, $withpicto = 0, $option = '')
 		$classpath = 'product/stock/class';
 		$classfile = 'entrepot';
 		$classname = 'Entrepot';
+	} elseif ($objecttype == 'facturerec') {
+		$classpath = 'compta/facture/class';
+		$classfile = 'facture-rec';
+		$classname = 'FactureRec';
+		$module='facture';
 	}
 
 	if (!empty($conf->$module->enabled)) {

+ 7 - 1
htdocs/install/mysql/data/llx_c_action_trigger.sql

@@ -167,10 +167,16 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
 insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_DELETE','Task deleted','Executed when a project task is deleted','project',152);
 insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ACTION_CREATE','Action added','Executed when an action is added to the agenda','agenda',700);
 
--- oliday
+-- holiday
 insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_CREATE','Holiday created','Executed when a holiday is created','holiday',800);
 insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_MODIFY','Holiday modified','Executed when a holiday is modified','holiday',801);
 insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_VALIDATE','Holiday validated','Executed when a holiday is validated','holiday',802);
 insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_APPROVE','Holiday aprouved','Executed when a holiday is aprouved','holiday',803);
 insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_CANCEL','Holiday canceled','Executed when a holiday is canceled','holiday',802);
 insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_DELETE','Holiday deleted','Executed when a holiday is deleted','holiday',804);
+
+-- facture rec
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_CREATE','Template invoices created','Executed when a Template invoices is created','facturerec',900);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_MODIFY','Template invoices update','Executed when a Template invoices is updated','facturerec',901);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_DELETE','Template invoices deleted','Executed when a Template invoices is deleted','facturerec',902);
+insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_AUTOCREATEBILL','Template invoices use to create invoices with auto batch','Executed when a Template invoices is use to create invoice with auto batch','facturerec',903);

+ 2 - 1
htdocs/user/class/user.class.php

@@ -717,7 +717,8 @@ class User extends CommonObject
 			'knowledgerecord' => 'knowledgerecord@knowledgemanagement',
 			'skill@hrm' => 'all@hrm', // skill / job / position objects rights are for the moment grouped into right level "all"
 			'job@hrm' => 'all@hrm', // skill / job / position objects rights are for the moment grouped into right level "all"
-			'position@hrm' => 'all@hrm' // skill / job / position objects rights are for the moment grouped into right level "all"
+			'position@hrm' => 'all@hrm', // skill / job / position objects rights are for the moment grouped into right level "all"
+			'facturerec' => 'facture'
 		);
 		if (!empty($moduletomoduletouse[$module])) {
 			$module = $moduletomoduletouse[$module];