Skip to content

Commit 75b31f7

Browse files
new feature : automatic time creation
1 parent baaded7 commit 75b31f7

File tree

6 files changed

+84
-251
lines changed

6 files changed

+84
-251
lines changed

bin/module_doliproject-1.0.zip

-65.9 KB
Binary file not shown.

class/actions_doliproject.class.php

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,7 @@ public function doActions($parameters, &$object, &$action, $hookmanager)
312312
//Filling of the llx_facture_extrafields table
313313
$req = 'INSERT INTO '.MAIN_DB_PREFIX.'facture_extrafields(fk_object, fk_task) VALUES('.$object->lines[0]->fk_facture.', '.$rowid_last_task[0].')';
314314
$this->db->query($req);
315-
//
316-
setEventMessages('<a href="'.DOL_URL_ROOT.'/projet/tasks/task.php?id='.$rowid_last_task[0].'">'.$langs->trans("MessageInfo").' : '.$ref.'</a>', null, 'mesgs');
315+
setEventMessages($langs->trans("MessageInfo").' : '.'<a href="'.DOL_URL_ROOT.'/projet/tasks/task.php?id='.$rowid_last_task[0].'">'.$ref.'</a>', null, 'mesgs');
317316
}
318317
//Error messages
319318
else {
@@ -483,7 +482,42 @@ public function addMoreActionsButtons($parameters, &$object, &$action, $hookmana
483482
return -1;
484483
}
485484
}
486-
487-
/* Add here any other hooked methods... */
488485

486+
public function printCommonFooter($parameters, &$object, &$action, $hookmanager)
487+
{
488+
global $conf, $user, $langs;
489+
$langs->load('projects');
490+
if (in_array('ticketcard', explode(':', $parameters['context'])))
491+
{
492+
if (GETPOST('action') == 'presend_addmessage') {
493+
$ticket = new Ticket($this->db);
494+
$result = $ticket->fetch('',GETPOST('ref','alpha'),GETPOST('track_id','alpha'));
495+
dol_syslog(var_export($ticket, true), LOG_DEBUG);
496+
if ($result > 0 && ((int)$ticket->id) > 0) {
497+
if ( is_array($ticket->array_options) && array_key_exists('options_fk_task',$ticket->array_options) && $ticket->array_options['options_fk_task']>0) {
498+
?>
499+
<script>
500+
let InputTime = document.createElement("input");
501+
InputTime.id = "timespent";
502+
InputTime.name = "timespent";
503+
InputTime.type = "number";
504+
InputTime.value = 15;
505+
let $tr = $('<tr>');
506+
$tr.append($('<td>').append('<?php echo $langs->trans('NewTimeSpent');?>'));
507+
$tr.append($('<td>').append(InputTime));
508+
509+
let currElement = $("form[name='ticket'] > table tbody");
510+
currElement.append($tr);
511+
</script>
512+
<?php
513+
} else {
514+
setEventMessage($langs->trans('MessageNoTaskLink'),'warnings');
515+
}
516+
} else {
517+
setEventMessages($ticket->error,$ticket->errors,'errors');
518+
}
519+
}
520+
}
521+
}
522+
/* Add here any other hooked methods... */
489523
}

core/modules/modDoliproject.class.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public function __construct($db)
5252
$this->descriptionlong = "Doliproject description (Long)";
5353
$this->editor_name = 'Editor name';
5454
$this->editor_url = 'https://www.example.com';
55-
$this->version = '1.0';
55+
$this->version = '1.1.0';
5656
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
5757
$this->picto = 'generic';
5858
$this->module_parts = array(
@@ -167,6 +167,9 @@ public function init($options = '')
167167
unset($param);
168168
$param['options']['Facture:compta/facture/class/facture.class.php'] = NULL;
169169
$extra_fields->addExtraField('fk_facture_name', 'Facture', 'link', 100, NULL, 'projet_task', 1, 0, NULL, $param, 1, 1, 1); //extrafields task
170+
unset($param);
171+
$param['options']['Task:projet/class/task.class.php'] = NULL;
172+
$extra_fields->addExtraField('fk_task', 'Tâche', 'link', 100, NULL, 'ticket', 0, 0, NULL, $param, 1, 1, 1); //extrafields ticket
170173

171174
// Permissions
172175
$this->remove($options);

core/triggers/interface_99_modDoliproject_DoliprojectTriggers.class.php

Lines changed: 37 additions & 207 deletions
Original file line numberDiff line numberDiff line change
@@ -103,219 +103,49 @@ public function runTrigger($action, $object, User $user, Translate $langs, Conf
103103
// Data and type of action are stored into $object and $action
104104

105105
switch ($action) {
106-
// Users
107-
//case 'USER_CREATE':
108-
//case 'USER_MODIFY':
109-
//case 'USER_NEW_PASSWORD':
110-
//case 'USER_ENABLEDISABLE':
111-
//case 'USER_DELETE':
112-
//case 'USER_SETINGROUP':
113-
//case 'USER_REMOVEFROMGROUP':
114-
115106
// Actions
116-
//case 'ACTION_MODIFY':
117-
//case 'ACTION_CREATE':
118-
//case 'ACTION_DELETE':
119-
120-
// Groups
121-
//case 'USERGROUP_CREATE':
122-
//case 'USERGROUP_MODIFY':
123-
//case 'USERGROUP_DELETE':
124-
125-
// Companies
126-
//case 'COMPANY_CREATE':
127-
//case 'COMPANY_MODIFY':
128-
//case 'COMPANY_DELETE':
129-
130-
// Contacts
131-
//case 'CONTACT_CREATE':
132-
//case 'CONTACT_MODIFY':
133-
//case 'CONTACT_DELETE':
134-
//case 'CONTACT_ENABLEDISABLE':
135-
136-
// Products
137-
//case 'PRODUCT_CREATE':
138-
//case 'PRODUCT_MODIFY':
139-
//case 'PRODUCT_DELETE':
140-
//case 'PRODUCT_PRICE_MODIFY':
141-
//case 'PRODUCT_SET_MULTILANGS':
142-
//case 'PRODUCT_DEL_MULTILANGS':
143-
144-
//Stock mouvement
145-
//case 'STOCK_MOVEMENT':
146-
147-
//MYECMDIR
148-
//case 'MYECMDIR_CREATE':
149-
//case 'MYECMDIR_MODIFY':
150-
//case 'MYECMDIR_DELETE':
151-
152-
// Customer orders
153-
//case 'ORDER_CREATE':
154-
//case 'ORDER_MODIFY':
155-
//case 'ORDER_VALIDATE':
156-
//case 'ORDER_DELETE':
157-
//case 'ORDER_CANCEL':
158-
//case 'ORDER_SENTBYMAIL':
159-
//case 'ORDER_CLASSIFY_BILLED':
160-
//case 'ORDER_SETDRAFT':
161-
//case 'LINEORDER_INSERT':
162-
//case 'LINEORDER_UPDATE':
163-
//case 'LINEORDER_DELETE':
164-
165-
// Supplier orders
166-
//case 'ORDER_SUPPLIER_CREATE':
167-
//case 'ORDER_SUPPLIER_MODIFY':
168-
//case 'ORDER_SUPPLIER_VALIDATE':
169-
//case 'ORDER_SUPPLIER_DELETE':
170-
//case 'ORDER_SUPPLIER_APPROVE':
171-
//case 'ORDER_SUPPLIER_REFUSE':
172-
//case 'ORDER_SUPPLIER_CANCEL':
173-
//case 'ORDER_SUPPLIER_SENTBYMAIL':
174-
//case 'ORDER_SUPPLIER_DISPATCH':
175-
//case 'LINEORDER_SUPPLIER_DISPATCH':
176-
//case 'LINEORDER_SUPPLIER_CREATE':
177-
//case 'LINEORDER_SUPPLIER_UPDATE':
178-
//case 'LINEORDER_SUPPLIER_DELETE':
179-
180-
// Proposals
181-
//case 'PROPAL_CREATE':
182-
//case 'PROPAL_MODIFY':
183-
//case 'PROPAL_VALIDATE':
184-
//case 'PROPAL_SENTBYMAIL':
185-
//case 'PROPAL_CLOSE_SIGNED':
186-
//case 'PROPAL_CLOSE_REFUSED':
187-
//case 'PROPAL_DELETE':
188-
//case 'LINEPROPAL_INSERT':
189-
//case 'LINEPROPAL_UPDATE':
190-
//case 'LINEPROPAL_DELETE':
191-
192-
// SupplierProposal
193-
//case 'SUPPLIER_PROPOSAL_CREATE':
194-
//case 'SUPPLIER_PROPOSAL_MODIFY':
195-
//case 'SUPPLIER_PROPOSAL_VALIDATE':
196-
//case 'SUPPLIER_PROPOSAL_SENTBYMAIL':
197-
//case 'SUPPLIER_PROPOSAL_CLOSE_SIGNED':
198-
//case 'SUPPLIER_PROPOSAL_CLOSE_REFUSED':
199-
//case 'SUPPLIER_PROPOSAL_DELETE':
200-
//case 'LINESUPPLIER_PROPOSAL_INSERT':
201-
//case 'LINESUPPLIER_PROPOSAL_UPDATE':
202-
//case 'LINESUPPLIER_PROPOSAL_DELETE':
203-
204-
// Contracts
205-
//case 'CONTRACT_CREATE':
206-
//case 'CONTRACT_MODIFY':
207-
//case 'CONTRACT_ACTIVATE':
208-
//case 'CONTRACT_CANCEL':
209-
//case 'CONTRACT_CLOSE':
210-
//case 'CONTRACT_DELETE':
211-
//case 'LINECONTRACT_INSERT':
212-
//case 'LINECONTRACT_UPDATE':
213-
//case 'LINECONTRACT_DELETE':
214-
215-
// Bills
216-
//case 'BILL_CREATE':
217-
//case 'BILL_MODIFY':
218-
//case 'BILL_VALIDATE':
219-
//case 'BILL_UNVALIDATE':
220-
//case 'BILL_SENTBYMAIL':
221-
//case 'BILL_CANCEL':
222-
//case 'BILL_DELETE':
223-
//case 'BILL_PAYED':
224-
//case 'LINEBILL_INSERT':
225-
//case 'LINEBILL_UPDATE':
226-
//case 'LINEBILL_DELETE':
227-
228-
//Supplier Bill
229-
//case 'BILL_SUPPLIER_CREATE':
230-
//case 'BILL_SUPPLIER_UPDATE':
231-
//case 'BILL_SUPPLIER_DELETE':
232-
//case 'BILL_SUPPLIER_PAYED':
233-
//case 'BILL_SUPPLIER_UNPAYED':
234-
//case 'BILL_SUPPLIER_VALIDATE':
235-
//case 'BILL_SUPPLIER_UNVALIDATE':
236-
//case 'LINEBILL_SUPPLIER_CREATE':
237-
//case 'LINEBILL_SUPPLIER_UPDATE':
238-
//case 'LINEBILL_SUPPLIER_DELETE':
239-
240-
// Payments
241-
//case 'PAYMENT_CUSTOMER_CREATE':
242-
//case 'PAYMENT_SUPPLIER_CREATE':
243-
//case 'PAYMENT_ADD_TO_BANK':
244-
//case 'PAYMENT_DELETE':
245-
246-
// Online
247-
//case 'PAYMENT_PAYBOX_OK':
248-
//case 'PAYMENT_PAYPAL_OK':
249-
//case 'PAYMENT_STRIPE_OK':
250-
251-
// Donation
252-
//case 'DON_CREATE':
253-
//case 'DON_UPDATE':
254-
//case 'DON_DELETE':
255-
256-
// Interventions
257-
//case 'FICHINTER_CREATE':
258-
//case 'FICHINTER_MODIFY':
259-
//case 'FICHINTER_VALIDATE':
260-
//case 'FICHINTER_DELETE':
261-
//case 'LINEFICHINTER_CREATE':
262-
//case 'LINEFICHINTER_UPDATE':
263-
//case 'LINEFICHINTER_DELETE':
264-
265-
// Members
266-
//case 'MEMBER_CREATE':
267-
//case 'MEMBER_VALIDATE':
268-
//case 'MEMBER_SUBSCRIPTION':
269-
//case 'MEMBER_MODIFY':
270-
//case 'MEMBER_NEW_PASSWORD':
271-
//case 'MEMBER_RESILIATE':
272-
//case 'MEMBER_DELETE':
273-
274-
// Categories
275-
//case 'CATEGORY_CREATE':
276-
//case 'CATEGORY_MODIFY':
277-
//case 'CATEGORY_DELETE':
278-
//case 'CATEGORY_SET_MULTILANGS':
279-
280-
// Projects
281-
//case 'PROJECT_CREATE':
282-
//case 'PROJECT_MODIFY':
283-
//case 'PROJECT_DELETE':
284-
285-
// Project tasks
286-
//case 'TASK_CREATE':
287-
//case 'TASK_MODIFY':
288-
//case 'TASK_DELETE':
289-
290-
// Task time spent
291-
//case 'TASK_TIMESPENT_CREATE':
292-
//case 'TASK_TIMESPENT_MODIFY':
293-
//case 'TASK_TIMESPENT_DELETE':
294-
//case 'PROJECT_ADD_CONTACT':
295-
//case 'PROJECT_DELETE_CONTACT':
296-
//case 'PROJECT_DELETE_RESOURCE':
297-
298-
// Shipping
299-
//case 'SHIPPING_CREATE':
300-
//case 'SHIPPING_MODIFY':
301-
//case 'SHIPPING_VALIDATE':
302-
//case 'SHIPPING_SENTBYMAIL':
303-
//case 'SHIPPING_BILLED':
304-
//case 'SHIPPING_CLOSED':
305-
//case 'SHIPPING_REOPEN':
306-
//case 'SHIPPING_DELETE':
307-
308-
// and more...
309-
310-
// case 'add_message':
311-
// echo 'bj';
312-
// exit;
107+
case 'ACTION_CREATE':
108+
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
109+
if (((int)$object->fk_element) > 0 && $object->elementtype == 'ticket' && preg_match('/^TICKET_/s',$object->code)) {
110+
dol_syslog("Add time spent");
111+
$result= 0;
112+
$ticket = new Ticket($this->db);
113+
$result = $ticket->fetch($object->fk_element);
114+
dol_syslog(var_export($ticket, true), LOG_DEBUG);
115+
if ($result > 0 && ((int)$ticket->id) > 0) {
116+
if (is_array($ticket->array_options) && array_key_exists('options_fk_task',$ticket->array_options) && $ticket->array_options['options_fk_task']>0) {
117+
require_once DOL_DOCUMENT_ROOT .'/projet/class/task.class.php';
118+
$task = new Task($this->db);
119+
$result = $task->fetch($ticket->array_options['options_fk_task']);
120+
dol_syslog(var_export($task, true), LOG_DEBUG);
121+
if ($result > 0 && ((int)$task->id) > 0) {
122+
$task->timespent_note = $object->note_private;
123+
$task->timespent_duration = GETPOST('timespent','int') * 60; // We store duration in seconds
124+
$task->timespent_date = dol_now();
125+
$task->timespent_withhour = 1;
126+
$task->timespent_fk_user = $user->id;
127+
128+
$id_message = $task->id;
129+
$name_message = $task->ref;
130+
131+
$result = $task->addTimeSpent($user);
132+
setEventMessages($langs->trans("MessageTimeSpentCreate").' : '.'<a href="'.DOL_URL_ROOT.'/projet/tasks/time.php?id='.$id_message.'">'.$name_message.'</a>', null, 'mesgs');
133+
} else {
134+
setEventMessages($task->error,$task->errors,'errors');
135+
return -1;
136+
}
137+
}
138+
} else {
139+
setEventMessages($ticket->error,$ticket->errors,'errors');
140+
return -1;
141+
}
142+
}
143+
break;
313144

314145
default:
315146
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
316147
break;
317148
}
318-
319149
return 0;
320150
}
321151
}

langs/en_US/doliproject.lang

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -52,25 +52,6 @@ MyPageName = My page name
5252
MyWidget = My widget
5353
MyWidgetDescription = My widget description
5454

55-
#
56-
# logging doliproject
57-
#
58-
StartTask = Start of task creation
59-
ConnectionDBSuccess = Connection to the db established
60-
ConnectionDBFailed = Connection to the db failed at line
61-
StartVariable = Start of variable generation
62-
VRef = Varibale : ref =
63-
Vfk_projet = Varibale : fk_projet =
64-
Vlabel = Varibale : label =
65-
Vdescription = Varibale : description =
66-
Vdateo = Varibale : dateo =
67-
Vdatee = Varibale : datee =
68-
Vplanned_workload = Variable : planned_workload =
69-
TaskCreated = Task :
70-
TaskCreated2 = create successfully
71-
TaskCreatedFailed = Task not create
72-
EndTask = End of task creation
73-
7455
#
7556
# module doliproject
7657
#
@@ -83,4 +64,6 @@ MessageInfoNoCreatedate = No task has been created because the service has no da
8364
ErrorNoProject = Project not linked
8465
ErrorDateStart = No date start
8566
ErrorDateEnd = No date end
86-
ErrorServiceTime = Service(s) time is zero
67+
ErrorServiceTime = Service(s) time is zero
68+
MessageTimeSpentCreate = Time spent created
69+
MessageNoTaskLink = No task affected, no time passed available

0 commit comments

Comments
 (0)